@gravity-ui/dashkit 10.2.0 → 10.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 (120) hide show
  1. package/README.md +95 -19
  2. package/build/cjs/components/DashKit/DashKit.d.ts +11 -1
  3. package/build/cjs/components/DashKit/DashKit.js +55 -7
  4. package/build/cjs/components/DashKit/DashKit.js.map +1 -1
  5. package/build/cjs/components/DashKit/__tests__/controlled-layout.test.d.ts +4 -0
  6. package/build/cjs/components/DashKit/__tests__/controlled-layout.test.js +196 -0
  7. package/build/cjs/components/DashKit/__tests__/controlled-layout.test.js.map +1 -0
  8. package/build/cjs/components/DashKit/__tests__/events.test.d.ts +1 -0
  9. package/build/cjs/components/DashKit/__tests__/events.test.js +227 -0
  10. package/build/cjs/components/DashKit/__tests__/events.test.js.map +1 -0
  11. package/build/cjs/components/DashKitView/DashKitView.d.ts +1 -1
  12. package/build/cjs/components/DashKitView/DashKitView.js +1 -3
  13. package/build/cjs/components/DashKitView/DashKitView.js.map +1 -1
  14. package/build/cjs/components/GridLayout/GroupLayout.js +2 -2
  15. package/build/cjs/components/GridLayout/GroupLayout.js.map +1 -1
  16. package/build/cjs/components/GridLayout/ReactGridLayout.d.ts +1 -0
  17. package/build/cjs/components/GridLayout/ReactGridLayout.js +37 -0
  18. package/build/cjs/components/GridLayout/ReactGridLayout.js.map +1 -1
  19. package/build/cjs/components/OverlayControls/OverlayControls.js +1 -1
  20. package/build/cjs/components/OverlayControls/OverlayControls.js.map +1 -1
  21. package/build/cjs/context/DashKitContext.d.ts +1 -0
  22. package/build/cjs/context/DashKitContext.js.map +1 -1
  23. package/build/cjs/context/DashkitOverlayControlsContext.d.ts +1 -1
  24. package/build/cjs/context/DashkitOverlayControlsContext.js +2 -2
  25. package/build/cjs/context/DashkitOverlayControlsContext.js.map +1 -1
  26. package/build/cjs/hocs/withContext.d.ts +2 -2
  27. package/build/cjs/hocs/withContext.js +61 -31
  28. package/build/cjs/hocs/withContext.js.map +1 -1
  29. package/build/cjs/package.json +1 -1
  30. package/build/cjs/plugins/Text/Text.js +1 -1
  31. package/build/cjs/plugins/Text/Text.js.map +1 -1
  32. package/build/cjs/shared/types/config.d.ts +2 -0
  33. package/build/cjs/shared/types/config.js +9 -0
  34. package/build/cjs/shared/types/config.js.map +1 -1
  35. package/build/cjs/typings/events.d.ts +34 -0
  36. package/build/cjs/typings/events.js +3 -0
  37. package/build/cjs/typings/events.js.map +1 -0
  38. package/build/cjs/typings/index.d.ts +1 -0
  39. package/build/cjs/typings/index.js +1 -0
  40. package/build/cjs/typings/index.js.map +1 -1
  41. package/build/cjs/utils/__tests__/get-layout-patches.test.d.ts +1 -0
  42. package/build/cjs/utils/__tests__/get-layout-patches.test.js +51 -0
  43. package/build/cjs/utils/__tests__/get-layout-patches.test.js.map +1 -0
  44. package/build/cjs/utils/enrichLayoutWithDefaults.d.ts +5 -0
  45. package/build/cjs/utils/enrichLayoutWithDefaults.js +29 -0
  46. package/build/cjs/utils/enrichLayoutWithDefaults.js.map +1 -0
  47. package/build/cjs/utils/events.d.ts +10 -0
  48. package/build/cjs/utils/events.js +34 -0
  49. package/build/cjs/utils/events.js.map +1 -0
  50. package/build/cjs/utils/get-layout-patches.d.ts +3 -0
  51. package/build/cjs/utils/get-layout-patches.js +23 -0
  52. package/build/cjs/utils/get-layout-patches.js.map +1 -0
  53. package/build/cjs/utils/index.d.ts +3 -0
  54. package/build/cjs/utils/index.js +3 -0
  55. package/build/cjs/utils/index.js.map +1 -1
  56. package/build/cjs/utils/update-manager.js +2 -2
  57. package/build/cjs/utils/update-manager.js.map +1 -1
  58. package/build/esm/components/DashKit/DashKit.d.ts +11 -1
  59. package/build/esm/components/DashKit/DashKit.js +54 -6
  60. package/build/esm/components/DashKit/DashKit.js.map +1 -1
  61. package/build/esm/components/DashKit/__tests__/controlled-layout.test.d.ts +4 -0
  62. package/build/esm/components/DashKit/__tests__/controlled-layout.test.js +193 -0
  63. package/build/esm/components/DashKit/__tests__/controlled-layout.test.js.map +1 -0
  64. package/build/esm/components/DashKit/__tests__/events.test.d.ts +1 -0
  65. package/build/esm/components/DashKit/__tests__/events.test.js +225 -0
  66. package/build/esm/components/DashKit/__tests__/events.test.js.map +1 -0
  67. package/build/esm/components/DashKitView/DashKitView.d.ts +1 -1
  68. package/build/esm/components/DashKitView/DashKitView.js +1 -3
  69. package/build/esm/components/DashKitView/DashKitView.js.map +1 -1
  70. package/build/esm/components/GridLayout/GroupLayout.js +2 -2
  71. package/build/esm/components/GridLayout/GroupLayout.js.map +1 -1
  72. package/build/esm/components/GridLayout/ReactGridLayout.d.ts +1 -0
  73. package/build/esm/components/GridLayout/ReactGridLayout.js +37 -0
  74. package/build/esm/components/GridLayout/ReactGridLayout.js.map +1 -1
  75. package/build/esm/components/OverlayControls/OverlayControls.js +2 -2
  76. package/build/esm/components/OverlayControls/OverlayControls.js.map +1 -1
  77. package/build/esm/context/DashKitContext.d.ts +1 -0
  78. package/build/esm/context/DashKitContext.js.map +1 -1
  79. package/build/esm/context/DashkitOverlayControlsContext.d.ts +1 -1
  80. package/build/esm/context/DashkitOverlayControlsContext.js +1 -1
  81. package/build/esm/context/DashkitOverlayControlsContext.js.map +1 -1
  82. package/build/esm/hocs/withContext.d.ts +2 -2
  83. package/build/esm/hocs/withContext.js +64 -34
  84. package/build/esm/hocs/withContext.js.map +1 -1
  85. package/build/esm/package.json +1 -1
  86. package/build/esm/plugins/Text/Text.js +1 -1
  87. package/build/esm/plugins/Text/Text.js.map +1 -1
  88. package/build/esm/shared/types/config.d.ts +2 -0
  89. package/build/esm/shared/types/config.js +8 -1
  90. package/build/esm/shared/types/config.js.map +1 -1
  91. package/build/esm/typings/events.d.ts +34 -0
  92. package/build/esm/typings/events.js +2 -0
  93. package/build/esm/typings/events.js.map +1 -0
  94. package/build/esm/typings/index.d.ts +1 -0
  95. package/build/esm/typings/index.js +1 -0
  96. package/build/esm/typings/index.js.map +1 -1
  97. package/build/esm/utils/__tests__/get-layout-patches.test.d.ts +1 -0
  98. package/build/esm/utils/__tests__/get-layout-patches.test.js +49 -0
  99. package/build/esm/utils/__tests__/get-layout-patches.test.js.map +1 -0
  100. package/build/esm/utils/enrichLayoutWithDefaults.d.ts +5 -0
  101. package/build/esm/utils/enrichLayoutWithDefaults.js +25 -0
  102. package/build/esm/utils/enrichLayoutWithDefaults.js.map +1 -0
  103. package/build/esm/utils/events.d.ts +10 -0
  104. package/build/esm/utils/events.js +30 -0
  105. package/build/esm/utils/events.js.map +1 -0
  106. package/build/esm/utils/get-layout-patches.d.ts +3 -0
  107. package/build/esm/utils/get-layout-patches.js +19 -0
  108. package/build/esm/utils/get-layout-patches.js.map +1 -0
  109. package/build/esm/utils/index.d.ts +3 -0
  110. package/build/esm/utils/index.js +3 -0
  111. package/build/esm/utils/index.js.map +1 -1
  112. package/build/esm/utils/update-manager.js +3 -3
  113. package/build/esm/utils/update-manager.js.map +1 -1
  114. package/package.json +4 -1
  115. package/build/cjs/hooks/useCalcLayout.d.ts +0 -3
  116. package/build/cjs/hooks/useCalcLayout.js +0 -40
  117. package/build/cjs/hooks/useCalcLayout.js.map +0 -1
  118. package/build/esm/hooks/useCalcLayout.d.ts +0 -3
  119. package/build/esm/hooks/useCalcLayout.js +0 -35
  120. package/build/esm/hooks/useCalcLayout.js.map +0 -1
@@ -3,11 +3,10 @@ import React from 'react';
3
3
  import isEqual from "lodash/isEqual.js";
4
4
  import pick from "lodash/pick.js";
5
5
  import { COMPACT_TYPE_HORIZONTAL_NOWRAP, DEFAULT_GROUP, DEFAULT_WIDGET_HEIGHT, DEFAULT_WIDGET_WIDTH, TEMPORARY_ITEM_ID, } from "../constants/common.js";
6
- import { DashKitContext, DashKitDnDContext, DashkitOvelayControlsContext } from "../context/index.js";
6
+ import { DashKitContext, DashKitDnDContext, DashkitOverlayControlsContext } from "../context/index.js";
7
7
  import { useDeepEqualMemo } from "../hooks/useDeepEqualMemo.js";
8
- import { getAllConfigItems, getItemsParams, getItemsState } from "../shared/index.js";
9
- import { UpdateManager, resolveLayoutGroup } from "../utils/index.js";
10
- const ITEM_PROPS = ['i', 'h', 'w', 'x', 'y', 'parent'];
8
+ import { CONFIG_LAYOUT_FIELDS, getAllConfigItems, getItemsParams, getItemsState } from "../shared/index.js";
9
+ import { UpdateManager, convertEnrichedLayoutToConfigLayout, emitDashKitChangeEvent, enrichLayoutWithDefaults, resolveLayoutGroup, } from "../utils/index.js";
11
10
  const hasGetMeta = (value) => {
12
11
  return (typeof value === 'object' &&
13
12
  value !== null &&
@@ -21,14 +20,24 @@ const hasReload = (value) => {
21
20
  typeof value.reload === 'function');
22
21
  };
23
22
  function useMemoStateContext(props) {
24
- // так как мы не хотим хранить параметры виджета с активированной автовысотой в сторе и на сервере, актуальный
25
- // (видимый юзером в конкретный момент времени) лэйаут (массив объектов с данными о ширине, высоте,
26
- // расположении конкретного виджета на сетке) будет храниться в стейте, но, для того, чтобы в стор попадал
27
- // лэйаут без учета вижетов с активированной автовысотой, в момент "подстройки" высоты виджета значение h
28
- // (высота) из конфига будет запоминаться в originalLayouts, новое значение высоты в adjustedLayouts
23
+ // Since we don't want to store widget parameters with auto-height enabled in the store or server,
24
+ // the actual layout (visible to the user at any moment) will be stored in state.
25
+ // However, to ensure the store gets the layout without considering auto-height widgets,
26
+ // when a widget's height is adjusted, the original h (height) value is saved in originalLayouts,
27
+ // and the new adjusted height is stored in adjustedLayouts.
29
28
  const originalLayouts = React.useRef({});
30
29
  const adjustedLayouts = React.useRef({});
31
30
  const nowrapAdjustedLayouts = React.useRef({});
31
+ // Enrich layout with default values from plugins.
32
+ // This ensures backward compatibility: if props.layout is already enriched (old flow),
33
+ // enrichLayoutWithDefaults will just merge and return similar result.
34
+ // If props.layout comes directly from config (new flow), it gets properly enriched.
35
+ const enrichedPropsLayout = React.useMemo(() => enrichLayoutWithDefaults(props.config, props.registerManager),
36
+ // eslint-disable-next-line react-hooks/exhaustive-deps
37
+ [props.config.layout, props.registerManager]);
38
+ const internalBaselineLayoutRef = React.useRef(enrichedPropsLayout);
39
+ const [visualLayout, setVisualLayout] = React.useState(enrichedPropsLayout);
40
+ const [externalLayoutRevision, setExternalLayoutRevision] = React.useState(0);
32
41
  const [temporaryLayout, setTemporaryLayout] = React.useState(null);
33
42
  const resetTemporaryLayout = React.useCallback(() => setTemporaryLayout(null), [setTemporaryLayout]);
34
43
  const dndContext = React.useContext(DashKitDnDContext);
@@ -42,17 +51,14 @@ function useMemoStateContext(props) {
42
51
  props.onChange({ config, itemsStateAndParams, groups });
43
52
  }
44
53
  }, [props.config, props.groups, props.itemsStateAndParams, props.onChange]);
45
- // каллбэк вызывающийся при изменение лэйаута сетки, первым аргументом приходит актуальный конфиг лэйаута,
46
- // т.е. если на текущей сетке есть виджеты, с активированной опцией автовысоты, их параметр "h" будет
47
- // "подстроенный"; чтобы, для сохранения в сторе "ушли" значения без учёта подстройки (как если бы у этих
48
- // виджетов автовысота была деактивирована) корректируем их используя this.originalLayouts
54
+ // Callback invoked when grid layout changes. The first argument is the actual layout config,
55
+ // which includes adjusted "h" values for items with auto-height enabled. To ensure that
56
+ // values stored are not adjusted (as if auto-height was disabled), we correct them using
57
+ // the originalLayouts stored without adjustments.
49
58
  const onLayoutChange = React.useCallback((layout) => {
50
59
  const currentInnerLayout = layout.map((item) => {
51
60
  if (item.i in originalLayouts.current) {
52
- // eslint-disable-next-line no-unused-vars
53
61
  const _a = originalLayouts.current[item.i], { parent: _parent } = _a, originalCopy = __rest(_a, ["parent"]);
54
- // Updating original if parent has changed and saving copy as original
55
- // or leaving default
56
62
  if (item.parent) {
57
63
  originalCopy.parent = item.parent;
58
64
  }
@@ -65,17 +71,25 @@ function useMemoStateContext(props) {
65
71
  return Object.assign({}, item);
66
72
  }
67
73
  });
74
+ const baselineConfig = Object.assign(Object.assign({}, props.config), { layout: internalBaselineLayoutRef.current });
68
75
  const newConfig = UpdateManager.updateLayout({
69
76
  layout: currentInnerLayout,
70
- config: props.config,
77
+ config: baselineConfig,
71
78
  });
72
- if (!isEqual(newConfig.layout, props.config.layout)) {
73
- onChange({ config: newConfig });
74
- }
75
- }, [props.config, onChange]);
79
+ emitDashKitChangeEvent({
80
+ config: baselineConfig,
81
+ newConfig,
82
+ onChange,
83
+ emitDashKitEvent: props.emitDashKitEvent,
84
+ });
85
+ internalBaselineLayoutRef.current = newConfig.layout;
86
+ }, [props.config, props.emitDashKitEvent, onChange]);
76
87
  const getLayoutItem = React.useCallback((id) => {
77
- return props.config.layout.find(({ i }) => i === id);
78
- }, [props.config.layout]);
88
+ return internalBaselineLayoutRef.current.find(({ i }) => i === id);
89
+ }, []);
90
+ const getOuterLayout = React.useCallback(() => {
91
+ return convertEnrichedLayoutToConfigLayout(internalBaselineLayoutRef.current);
92
+ }, []);
79
93
  // to calculate items, only memorization of items and globalItems is important
80
94
  const configItems = React.useMemo(() => getAllConfigItems(props.config), [props.config.items, props.config.globalItems]);
81
95
  const onItemRemove = React.useCallback((id) => {
@@ -91,7 +105,7 @@ function useMemoStateContext(props) {
91
105
  }
92
106
  onChange(UpdateManager.removeItem({
93
107
  id,
94
- config: props.config,
108
+ config: Object.assign(Object.assign({}, props.config), { layout: getOuterLayout() }),
95
109
  itemsStateAndParams: props.itemsStateAndParams,
96
110
  }));
97
111
  }
@@ -101,19 +115,22 @@ function useMemoStateContext(props) {
101
115
  onChange,
102
116
  props.config,
103
117
  props.itemsStateAndParams,
104
- setTemporaryLayout,
118
+ getOuterLayout,
105
119
  ]);
106
120
  const onItemStateAndParamsChange = React.useCallback((id, stateAndParams, options) => {
121
+ const currentConfig = Object.assign(Object.assign({}, props.config), { layout: getOuterLayout() });
107
122
  onChange({
123
+ config: currentConfig,
124
+ // config is not strictly required here; ideally it should be removed along with the default props
108
125
  itemsStateAndParams: UpdateManager.changeStateAndParams({
109
126
  id,
110
- config: props.config,
127
+ config: currentConfig,
111
128
  stateAndParams,
112
129
  itemsStateAndParams: props.itemsStateAndParams,
113
130
  options,
114
131
  }),
115
132
  });
116
- }, [props.config, props.itemsStateAndParams, onChange]);
133
+ }, [props.config, props.itemsStateAndParams, getOuterLayout, onChange]);
117
134
  const memorizeOriginalLayout = React.useCallback((widgetId, preAutoHeightLayout, postAutoHeightLayout) => {
118
135
  let needUpdateLayout = false;
119
136
  if (!(widgetId in originalLayouts.current)) {
@@ -138,7 +155,8 @@ function useMemoStateContext(props) {
138
155
  }, []);
139
156
  React.useMemo(() => {
140
157
  const groups = props.groups;
141
- const layout = props.layout;
158
+ // Use visualLayout instead of props.layout (which is now optional)
159
+ const layout = visualLayout;
142
160
  const defaultProps = props.registerManager.gridLayout || {};
143
161
  const nowrapGroups = {};
144
162
  let hasNowrapGroups = false;
@@ -186,7 +204,17 @@ function useMemoStateContext(props) {
186
204
  });
187
205
  });
188
206
  }
189
- }, [props.registerManager, props.groups, props.layout]);
207
+ }, [props.registerManager, props.groups, visualLayout]);
208
+ // Synchronize internal baseline and visual layout when external props.layout changes re-init.
209
+ // When props.config.layout reference changes, external update occurred re-init.
210
+ React.useEffect(() => {
211
+ const internalNotEqualProps = !isEqual(internalBaselineLayoutRef.current, enrichedPropsLayout);
212
+ if (internalNotEqualProps) {
213
+ internalBaselineLayoutRef.current = enrichedPropsLayout;
214
+ setVisualLayout(enrichedPropsLayout);
215
+ setExternalLayoutRevision((r) => r + 1);
216
+ }
217
+ }, [enrichedPropsLayout]);
190
218
  const itemsParams = useDeepEqualMemo(() => getItemsParams({
191
219
  defaultGlobalParams: props.defaultGlobalParams,
192
220
  globalParams: props.globalParams,
@@ -218,7 +246,7 @@ function useMemoStateContext(props) {
218
246
  const adjusted = adjustedLayouts.current;
219
247
  const original = originalLayouts.current;
220
248
  const nowrapAdjust = nowrapAdjustedLayouts.current;
221
- return props.layout.map((item) => {
249
+ return visualLayout.map((item) => {
222
250
  const widgetId = item.i;
223
251
  if (widgetId in adjusted || widgetId in nowrapAdjust) {
224
252
  original[widgetId] = item;
@@ -242,7 +270,7 @@ function useMemoStateContext(props) {
242
270
  return item;
243
271
  }
244
272
  });
245
- }, [props.layout, layoutUpdateCounter]);
273
+ }, [visualLayout, layoutUpdateCounter]);
246
274
  const reloadItems = React.useCallback((pluginsRefs, data) => {
247
275
  pluginsRefs.forEach((ref) => ref && hasReload(ref) && ref.reload(data));
248
276
  }, []);
@@ -325,16 +353,17 @@ function useMemoStateContext(props) {
325
353
  onDropProp === null || onDropProp === void 0 ? void 0 : onDropProp({
326
354
  newLayout: newLayout.reduce((memo, l) => {
327
355
  if (l.i !== item.i) {
328
- memo.push(pick(l, ITEM_PROPS));
356
+ memo.push(pick(l, CONFIG_LAYOUT_FIELDS));
329
357
  }
330
358
  return memo;
331
359
  }, []),
332
- itemLayout: pick(item, ITEM_PROPS),
360
+ itemLayout: pick(item, CONFIG_LAYOUT_FIELDS),
333
361
  commit: resetTemporaryLayout,
334
362
  dragProps: dragPropsContext,
335
363
  });
336
364
  }, [dragPropsContext, onDropProp, setTemporaryLayout, resetTemporaryLayout]);
337
365
  const dashkitContextValue = React.useMemo(() => ({
366
+ externalLayoutRevision,
338
367
  config: props.config,
339
368
  configItems,
340
369
  groups: props.groups,
@@ -374,6 +403,7 @@ function useMemoStateContext(props) {
374
403
  onResize: props.onResize,
375
404
  onResizeStop: props.onResizeStop,
376
405
  }), [
406
+ externalLayoutRevision,
377
407
  resultLayout,
378
408
  temporaryLayout,
379
409
  props.config,
@@ -443,7 +473,7 @@ export function withContext(Component) {
443
473
  const WithContext = (props) => {
444
474
  const { dashkitContextValue, controlsContextValue } = useMemoStateContext(props);
445
475
  return (React.createElement(DashKitContext.Provider, { value: dashkitContextValue },
446
- React.createElement(DashkitOvelayControlsContext.Provider, { value: controlsContextValue },
476
+ React.createElement(DashkitOverlayControlsContext.Provider, { value: controlsContextValue },
447
477
  React.createElement(Component, null))));
448
478
  };
449
479
  WithContext.displayName = `withContext(${Component.displayName || Component.name || 'Component'})`;
@@ -1 +1 @@
1
- {"version":3,"file":"withContext.js","sourceRoot":"../../../src","sources":["hocs/withContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport isEqual from 'lodash/isEqual';\nimport pick from 'lodash/pick';\n\nimport type {DashKitProps} from '../components/DashKit';\nimport {\n COMPACT_TYPE_HORIZONTAL_NOWRAP,\n DEFAULT_GROUP,\n DEFAULT_WIDGET_HEIGHT,\n DEFAULT_WIDGET_WIDTH,\n TEMPORARY_ITEM_ID,\n} from '../constants/common';\nimport {DashKitContext, DashKitDnDContext, DashkitOvelayControlsContext} from '../context';\nimport type {\n DashKitCtxShape,\n DashkitPropsPassedToCtx,\n OverlayControlsCtxShape,\n TemporaryLayout,\n} from '../context';\nimport {useDeepEqualMemo} from '../hooks/useDeepEqualMemo';\nimport type {ConfigLayout} from '../shared';\nimport {getAllConfigItems, getItemsParams, getItemsState} from '../shared';\nimport type {PluginRef} from '../typings';\nimport type {RegisterManager, RegisterManagerPlugin} from '../utils';\nimport {UpdateManager, resolveLayoutGroup} from '../utils';\n\nconst ITEM_PROPS = ['i', 'h', 'w', 'x', 'y', 'parent'] as const;\n\nexport type DashKitWithContextProps = DashkitPropsPassedToCtx &\n Pick<\n DashKitProps,\n 'overlayControls' | 'overlayMenuItems' | 'getPreparedCopyItemOptions' | 'onCopyFulfill'\n > &\n Required<\n Pick<\n DashKitProps,\n | 'itemsStateAndParams'\n | 'defaultGlobalParams'\n | 'globalParams'\n | 'context'\n | 'settings'\n | 'onItemEdit'\n | 'onChange'\n | 'onDrop'\n >\n > & {\n layout: ConfigLayout[];\n registerManager: RegisterManager;\n forwardedMetaRef: React.ForwardedRef<any>;\n };\n\ntype OriginalLayouts = Record<string, ConfigLayout>;\n\ntype AdjustedLayouts = Record<string, ConfigLayout>;\n\ntype NowrapAdjustedLayouts = Record<string, number>;\n\ntype UseMemoStateContextResult = {\n dashkitContextValue: DashKitCtxShape;\n controlsContextValue: OverlayControlsCtxShape;\n};\n\nconst hasGetMeta = (value: PluginRef): value is {getMeta: () => Promise<any>} => {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'getMeta' in value &&\n typeof value.getMeta === 'function'\n );\n};\n\nconst hasReload = (\n value: PluginRef,\n): value is {reload: (data: {silentLoading: boolean; noVeil: boolean}) => void} => {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'reload' in value &&\n typeof value.reload === 'function'\n );\n};\n\nfunction useMemoStateContext(props: DashKitWithContextProps): UseMemoStateContextResult {\n // так как мы не хотим хранить параметры виджета с активированной автовысотой в сторе и на сервере, актуальный\n // (видимый юзером в конкретный момент времени) лэйаут (массив объектов с данными о ширине, высоте,\n // расположении конкретного виджета на сетке) будет храниться в стейте, но, для того, чтобы в стор попадал\n // лэйаут без учета вижетов с активированной автовысотой, в момент \"подстройки\" высоты виджета значение h\n // (высота) из конфига будет запоминаться в originalLayouts, новое значение высоты в adjustedLayouts\n\n const originalLayouts = React.useRef<OriginalLayouts>({});\n const adjustedLayouts = React.useRef<AdjustedLayouts>({});\n const nowrapAdjustedLayouts = React.useRef<NowrapAdjustedLayouts>({});\n\n const [temporaryLayout, setTemporaryLayout] = React.useState<TemporaryLayout | null>(null);\n const resetTemporaryLayout = React.useCallback(\n () => setTemporaryLayout(null),\n [setTemporaryLayout],\n );\n\n const dndContext = React.useContext(DashKitDnDContext);\n const outerDnDEnable = Boolean(dndContext);\n\n // TODO: need move originalLayouts, adjustedLayouts to state\n const [layoutUpdateCounter, forceUpdateLayout] = React.useState(0);\n\n const onChange = React.useCallback(\n ({\n config = props.config,\n itemsStateAndParams = props.itemsStateAndParams,\n groups = props.groups,\n }) => {\n if (\n !(\n isEqual(config, props.config) &&\n isEqual(itemsStateAndParams, props.itemsStateAndParams) &&\n isEqual(groups, props.groups)\n )\n ) {\n props.onChange({config, itemsStateAndParams, groups});\n }\n },\n [props.config, props.groups, props.itemsStateAndParams, props.onChange],\n );\n\n // каллбэк вызывающийся при изменение лэйаута сетки, первым аргументом приходит актуальный конфиг лэйаута,\n // т.е. если на текущей сетке есть виджеты, с активированной опцией автовысоты, их параметр \"h\" будет\n // \"подстроенный\"; чтобы, для сохранения в сторе \"ушли\" значения без учёта подстройки (как если бы у этих\n // виджетов автовысота была деактивирована) корректируем их используя this.originalLayouts\n const onLayoutChange = React.useCallback(\n (layout: ConfigLayout[]) => {\n const currentInnerLayout = layout.map((item) => {\n if (item.i in originalLayouts.current) {\n // eslint-disable-next-line no-unused-vars\n const {parent: _parent, ...originalCopy} = originalLayouts.current[item.i];\n\n // Updating original if parent has changed and saving copy as original\n // or leaving default\n if (item.parent) {\n (originalCopy as ConfigLayout).parent = item.parent;\n }\n originalCopy.w = item.w;\n originalCopy.x = item.x;\n originalCopy.y = item.y;\n\n return originalCopy satisfies ConfigLayout;\n } else {\n return {...item};\n }\n });\n\n const newConfig = UpdateManager.updateLayout({\n layout: currentInnerLayout,\n config: props.config,\n });\n\n if (!isEqual(newConfig.layout, props.config.layout)) {\n onChange({config: newConfig});\n }\n },\n [props.config, onChange],\n );\n\n const getLayoutItem = React.useCallback(\n (id: string) => {\n return props.config.layout.find(({i}) => i === id);\n },\n [props.config.layout],\n );\n\n // to calculate items, only memorization of items and globalItems is important\n const configItems = React.useMemo(\n () => getAllConfigItems(props.config),\n [props.config.items, props.config.globalItems],\n );\n\n const onItemRemove = React.useCallback(\n (id: string) => {\n delete nowrapAdjustedLayouts.current[id];\n delete adjustedLayouts.current[id];\n delete originalLayouts.current[id];\n\n if (id === TEMPORARY_ITEM_ID) {\n resetTemporaryLayout();\n } else {\n if (temporaryLayout) {\n setTemporaryLayout({\n ...temporaryLayout,\n data: temporaryLayout.data.filter(({i}) => i !== id),\n });\n }\n\n onChange(\n UpdateManager.removeItem({\n id,\n config: props.config,\n itemsStateAndParams: props.itemsStateAndParams,\n }),\n );\n }\n },\n [\n resetTemporaryLayout,\n temporaryLayout,\n onChange,\n props.config,\n props.itemsStateAndParams,\n setTemporaryLayout,\n ],\n );\n\n const onItemStateAndParamsChange = React.useCallback<\n DashKitCtxShape['onItemStateAndParamsChange']\n >(\n (id, stateAndParams, options) => {\n onChange({\n itemsStateAndParams: UpdateManager.changeStateAndParams({\n id,\n config: props.config,\n stateAndParams,\n itemsStateAndParams: props.itemsStateAndParams,\n options,\n }),\n });\n },\n [props.config, props.itemsStateAndParams, onChange],\n );\n\n const memorizeOriginalLayout = React.useCallback<DashKitCtxShape['memorizeOriginalLayout']>(\n (widgetId, preAutoHeightLayout, postAutoHeightLayout) => {\n let needUpdateLayout = false;\n if (!(widgetId in originalLayouts.current)) {\n originalLayouts.current[widgetId] = preAutoHeightLayout;\n needUpdateLayout = true;\n }\n if (adjustedLayouts.current[widgetId] !== postAutoHeightLayout) {\n adjustedLayouts.current[widgetId] = postAutoHeightLayout;\n needUpdateLayout = true;\n }\n\n if (needUpdateLayout) {\n forceUpdateLayout((prev) => prev + 1);\n }\n },\n [],\n );\n\n const revertToOriginalLayout = React.useCallback((widgetId: string) => {\n const needUpdateLayout =\n widgetId in adjustedLayouts.current || widgetId in originalLayouts.current;\n delete adjustedLayouts.current[widgetId];\n delete originalLayouts.current[widgetId];\n if (needUpdateLayout) {\n forceUpdateLayout((prev) => prev + 1);\n }\n }, []);\n\n React.useMemo(() => {\n const groups = props.groups;\n const layout = props.layout;\n const defaultProps = props.registerManager.gridLayout || {};\n const nowrapGroups: Record<string, {items: ConfigLayout[]; leftSpace: number}> = {};\n let hasNowrapGroups = false;\n\n if (\n defaultProps.compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP &&\n defaultProps.cols !== undefined\n ) {\n nowrapGroups[DEFAULT_GROUP] = {\n items: [],\n leftSpace: defaultProps.cols,\n };\n hasNowrapGroups = true;\n }\n\n if (groups) {\n groups.forEach((group) => {\n const resultProps = group.gridProperties?.(defaultProps) || {};\n\n if (\n resultProps.compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP &&\n resultProps.cols !== undefined &&\n group.id\n ) {\n nowrapGroups[group.id] = {\n items: [],\n leftSpace: resultProps.cols,\n };\n hasNowrapGroups = true;\n }\n });\n }\n\n if (hasNowrapGroups) {\n layout.forEach((item) => {\n const widgetId = item.i;\n const parentId = resolveLayoutGroup(item);\n\n if (nowrapGroups[parentId]) {\n // Collecting nowrap elements\n nowrapGroups[parentId].items.push(item);\n nowrapGroups[parentId].leftSpace -= item.w;\n } else if (nowrapAdjustedLayouts.current[widgetId]) {\n // If element is not in horizontal-nowrap cleaning up and reverting adjustLayout values\n delete nowrapAdjustedLayouts.current[widgetId];\n }\n });\n\n Object.entries(nowrapGroups).forEach(([, {items, leftSpace}]) => {\n items.forEach((item) => {\n // setting maxW with adjustLayout fields and saving previous\n nowrapAdjustedLayouts.current[item.i] = item.w + leftSpace;\n });\n });\n }\n }, [props.registerManager, props.groups, props.layout]);\n\n const itemsParams = useDeepEqualMemo(\n () =>\n getItemsParams({\n defaultGlobalParams: props.defaultGlobalParams,\n globalParams: props.globalParams,\n config: props.config,\n itemsStateAndParams: props.itemsStateAndParams,\n plugins: props.registerManager.getPlugins(),\n }),\n [\n props.defaultGlobalParams,\n props.globalParams,\n props.config,\n props.itemsStateAndParams,\n props.registerManager,\n ],\n );\n\n const itemsState = useDeepEqualMemo(\n () =>\n getItemsState({\n config: props.config,\n itemsStateAndParams: props.itemsStateAndParams,\n }),\n [props.config, props.itemsStateAndParams],\n );\n\n const getItemsMeta = React.useCallback<DashKitCtxShape['getItemsMeta']>((pluginsRefs) => {\n return pluginsRefs\n .map((ref) => {\n if (!(ref && hasGetMeta(ref))) {\n return undefined;\n }\n return ref.getMeta();\n })\n .filter((item): item is Promise<any> => item !== undefined);\n }, []);\n\n const resultLayout = React.useMemo(() => {\n const adjusted = adjustedLayouts.current;\n const original = originalLayouts.current;\n const nowrapAdjust = nowrapAdjustedLayouts.current;\n\n return props.layout.map((item) => {\n const widgetId = item.i;\n\n if (widgetId in adjusted || widgetId in nowrapAdjust) {\n original[widgetId] = item;\n // eslint-disable-next-line no-unused-vars\n const {parent: _parent2, ...adjustedItem} = adjusted[widgetId] || item;\n\n adjustedItem.w = item.w;\n adjustedItem.x = item.x;\n adjustedItem.y = item.y;\n\n if (item.parent) {\n (adjustedItem as ConfigLayout).parent = item.parent;\n }\n\n if (widgetId in nowrapAdjust) {\n (adjustedItem as ConfigLayout & {maxW?: number}).maxW = nowrapAdjust[widgetId];\n }\n\n return adjustedItem satisfies ConfigLayout;\n } else {\n if (widgetId in original) {\n delete original[widgetId];\n }\n return item;\n }\n });\n }, [props.layout, layoutUpdateCounter]);\n\n const reloadItems = React.useCallback<DashKitCtxShape['reloadItems']>((pluginsRefs, data) => {\n pluginsRefs.forEach((ref) => ref && hasReload(ref) && ref.reload(data));\n }, []);\n\n const dragPropsContext = dndContext?.dragProps;\n const onDropDragOverContext = dndContext?.onDropDragOver;\n\n const dragOverPlugin = React.useMemo(() => {\n if (!dragPropsContext) {\n return null;\n }\n\n const pluginType = dragPropsContext.type;\n\n if (props.registerManager.check(pluginType)) {\n return props.registerManager.getItem(pluginType);\n } else {\n // eslint-disable-next-line no-console\n console.error(`Uknown pluginType: ${pluginType}`);\n return null;\n }\n }, [dragPropsContext, props.registerManager]);\n\n const onDropDragOver = React.useCallback<DashKitCtxShape['onDropDragOver']>(\n (_e, group, gridProps, groupLayout, sharedItem) => {\n if (temporaryLayout) {\n resetTemporaryLayout();\n return false;\n }\n\n let dragItemType: string;\n let defaultLayout: RegisterManagerPlugin['defaultLayout'] | {h: number; w: number};\n if (sharedItem) {\n const {type, h, w} = sharedItem;\n dragItemType = type;\n const _defaults = props.registerManager.getItem(type);\n defaultLayout = _defaults ? {..._defaults.defaultLayout, h, w} : {h, w};\n } else if (dragOverPlugin) {\n dragItemType = dragOverPlugin.type;\n defaultLayout = dragOverPlugin.defaultLayout;\n } else {\n return false;\n }\n\n let maxW = gridProps.cols;\n const maxH = Math.min(\n gridProps.maxRows || Infinity,\n 'maxH' in defaultLayout && defaultLayout.maxH ? defaultLayout.maxH : Infinity,\n );\n\n if (gridProps.compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP && gridProps.cols) {\n maxW = groupLayout.reduce((memo, item) => memo - item.w, gridProps.cols);\n }\n\n if (\n maxW === 0 ||\n maxH === 0 ||\n ('minW' in defaultLayout &&\n defaultLayout.minW &&\n maxW &&\n maxW < defaultLayout.minW) ||\n ('minH' in defaultLayout && defaultLayout.minH && maxH < defaultLayout.minH)\n ) {\n return false;\n }\n\n const {\n h = defaultLayout?.h || DEFAULT_WIDGET_HEIGHT,\n w = defaultLayout?.w || DEFAULT_WIDGET_WIDTH,\n } = dragPropsContext?.layout || {};\n\n const itemLayout = {\n h: maxH ? Math.min(h, maxH) : h,\n w: maxW ? Math.min(w, maxW) : w,\n };\n\n if (\n onDropDragOverContext?.(\n {\n ...sharedItem,\n ...itemLayout,\n parent: group,\n type: dragItemType,\n },\n sharedItem ?? null,\n ) === false\n ) {\n return false;\n }\n\n return itemLayout;\n },\n [\n props.registerManager,\n resetTemporaryLayout,\n temporaryLayout,\n dragOverPlugin,\n dragPropsContext,\n onDropDragOverContext,\n ],\n );\n\n const onDropProp = props.onDrop;\n const onDrop = React.useCallback<DashKitCtxShape['onDrop']>(\n (newLayout, item) => {\n if (!dragPropsContext) {\n return;\n }\n\n setTemporaryLayout({\n data: [...newLayout, item],\n dragProps: dragPropsContext,\n });\n\n onDropProp?.({\n newLayout: newLayout.reduce<ConfigLayout[]>((memo, l) => {\n if (l.i !== item.i) {\n memo.push(pick(l, ITEM_PROPS));\n }\n\n return memo;\n }, []),\n itemLayout: pick(item, ITEM_PROPS),\n commit: resetTemporaryLayout,\n dragProps: dragPropsContext,\n });\n },\n [dragPropsContext, onDropProp, setTemporaryLayout, resetTemporaryLayout],\n );\n\n const dashkitContextValue = React.useMemo(\n () => ({\n config: props.config,\n configItems,\n groups: props.groups,\n context: props.context,\n noOverlay: props.noOverlay,\n focusable: props.focusable,\n defaultGlobalParams: props.globalParams,\n globalParams: props.globalParams,\n editMode: props.editMode,\n settings: props.settings,\n onItemMountChange: props.onItemMountChange,\n onItemRender: props.onItemRender,\n draggableHandleClassName: props.draggableHandleClassName,\n\n registerManager: props.registerManager,\n forwardedMetaRef: props.forwardedMetaRef,\n\n layout: resultLayout,\n temporaryLayout,\n layoutChange: onLayoutChange,\n memorizeOriginalLayout,\n revertToOriginalLayout,\n\n itemsState,\n itemsParams,\n onItemStateAndParamsChange,\n\n getItemsMeta,\n reloadItems,\n\n onDrop,\n onDropDragOver,\n outerDnDEnable,\n dragOverPlugin,\n\n onItemFocus: props.onItemFocus,\n onItemBlur: props.onItemBlur,\n\n /* default handlers bypass */\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragStop: props.onDragStop,\n onResizeStart: props.onResizeStart,\n onResize: props.onResize,\n onResizeStop: props.onResizeStop,\n }),\n [\n resultLayout,\n temporaryLayout,\n props.config,\n configItems,\n props.groups,\n props.context,\n props.noOverlay,\n props.focusable,\n props.globalParams,\n props.editMode,\n props.settings,\n itemsState,\n itemsParams,\n props.registerManager,\n onItemStateAndParamsChange,\n onDrop,\n onDropDragOver,\n onLayoutChange,\n props.onItemMountChange,\n props.onItemRender,\n getItemsMeta,\n reloadItems,\n memorizeOriginalLayout,\n revertToOriginalLayout,\n props.forwardedMetaRef,\n props.draggableHandleClassName,\n outerDnDEnable,\n dragOverPlugin,\n\n props.onItemFocus,\n props.onItemBlur,\n\n props.onDragStart,\n props.onDrag,\n props.onDragStop,\n props.onResizeStart,\n props.onResize,\n props.onResizeStop,\n ],\n );\n\n const overlayMenuItems = props.overlayMenuItems || props.registerManager.settings.menu;\n const controlsContextValue = React.useMemo(\n () => ({\n overlayControls: props.overlayControls,\n context: props.context,\n\n itemsStateAndParams: props.itemsStateAndParams,\n itemsState,\n itemsParams,\n\n getPreparedCopyItemOptions: props.getPreparedCopyItemOptions,\n onCopyFulfill: props.onCopyFulfill,\n\n menu: overlayMenuItems,\n\n editItem: props.onItemEdit,\n removeItem: onItemRemove,\n getLayoutItem: getLayoutItem,\n }),\n [\n props.overlayControls,\n props.context,\n props.itemsStateAndParams,\n props.onItemEdit,\n props.getPreparedCopyItemOptions,\n props.onCopyFulfill,\n overlayMenuItems,\n itemsState,\n itemsParams,\n onItemRemove,\n getLayoutItem,\n ],\n );\n\n return {controlsContextValue, dashkitContextValue};\n}\n\nexport function withContext(Component: React.ComponentType) {\n const WithContext = (props: DashKitWithContextProps) => {\n const {dashkitContextValue, controlsContextValue} = useMemoStateContext(props);\n\n return (\n <DashKitContext.Provider value={dashkitContextValue}>\n <DashkitOvelayControlsContext.Provider value={controlsContextValue}>\n <Component />\n </DashkitOvelayControlsContext.Provider>\n </DashKitContext.Provider>\n );\n };\n\n WithContext.displayName = `withContext(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return WithContext;\n}\n"]}
1
+ {"version":3,"file":"withContext.js","sourceRoot":"../../../src","sources":["hocs/withContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport isEqual from 'lodash/isEqual';\nimport pick from 'lodash/pick';\n\nimport type {DashKitProps} from '../components/DashKit';\nimport {\n COMPACT_TYPE_HORIZONTAL_NOWRAP,\n DEFAULT_GROUP,\n DEFAULT_WIDGET_HEIGHT,\n DEFAULT_WIDGET_WIDTH,\n TEMPORARY_ITEM_ID,\n} from '../constants/common';\nimport {DashKitContext, DashKitDnDContext, DashkitOverlayControlsContext} from '../context';\nimport type {\n DashKitCtxShape,\n DashkitPropsPassedToCtx,\n OverlayControlsCtxShape,\n TemporaryLayout,\n} from '../context';\nimport {useDeepEqualMemo} from '../hooks/useDeepEqualMemo';\nimport type {ConfigLayout} from '../shared';\nimport {CONFIG_LAYOUT_FIELDS, getAllConfigItems, getItemsParams, getItemsState} from '../shared';\nimport type {DashKitEventMap, DashKitEventName, PluginRef} from '../typings';\nimport type {RegisterManager, RegisterManagerPlugin} from '../utils';\nimport {\n UpdateManager,\n convertEnrichedLayoutToConfigLayout,\n emitDashKitChangeEvent,\n enrichLayoutWithDefaults,\n resolveLayoutGroup,\n} from '../utils';\n\nexport type DashKitWithContextProps = DashkitPropsPassedToCtx &\n Pick<\n DashKitProps,\n 'overlayControls' | 'overlayMenuItems' | 'getPreparedCopyItemOptions' | 'onCopyFulfill'\n > &\n Required<\n Pick<\n DashKitProps,\n | 'itemsStateAndParams'\n | 'defaultGlobalParams'\n | 'globalParams'\n | 'context'\n | 'settings'\n | 'onItemEdit'\n | 'onChange'\n | 'onDrop'\n >\n > & {\n registerManager: RegisterManager;\n forwardedMetaRef: React.ForwardedRef<any>;\n emitDashKitEvent: <T extends DashKitEventName>(\n eventName: T,\n event: DashKitEventMap[T],\n ) => void;\n };\n\ntype OriginalLayouts = Record<string, ConfigLayout>;\n\ntype AdjustedLayouts = Record<string, ConfigLayout>;\n\ntype NowrapAdjustedLayouts = Record<string, number>;\n\ntype UseMemoStateContextResult = {\n dashkitContextValue: DashKitCtxShape;\n controlsContextValue: OverlayControlsCtxShape;\n};\n\nconst hasGetMeta = (value: PluginRef): value is {getMeta: () => Promise<any>} => {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'getMeta' in value &&\n typeof value.getMeta === 'function'\n );\n};\n\nconst hasReload = (\n value: PluginRef,\n): value is {reload: (data: {silentLoading: boolean; noVeil: boolean}) => void} => {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'reload' in value &&\n typeof value.reload === 'function'\n );\n};\n\nfunction useMemoStateContext(props: DashKitWithContextProps): UseMemoStateContextResult {\n // Since we don't want to store widget parameters with auto-height enabled in the store or server,\n // the actual layout (visible to the user at any moment) will be stored in state.\n // However, to ensure the store gets the layout without considering auto-height widgets,\n // when a widget's height is adjusted, the original h (height) value is saved in originalLayouts,\n // and the new adjusted height is stored in adjustedLayouts.\n\n const originalLayouts = React.useRef<OriginalLayouts>({});\n const adjustedLayouts = React.useRef<AdjustedLayouts>({});\n const nowrapAdjustedLayouts = React.useRef<NowrapAdjustedLayouts>({});\n\n // Enrich layout with default values from plugins.\n // This ensures backward compatibility: if props.layout is already enriched (old flow),\n // enrichLayoutWithDefaults will just merge and return similar result.\n // If props.layout comes directly from config (new flow), it gets properly enriched.\n const enrichedPropsLayout = React.useMemo(\n () => enrichLayoutWithDefaults(props.config, props.registerManager),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.config.layout, props.registerManager],\n );\n\n const internalBaselineLayoutRef = React.useRef<ConfigLayout[]>(enrichedPropsLayout);\n const [visualLayout, setVisualLayout] = React.useState<ConfigLayout[]>(enrichedPropsLayout);\n\n const [externalLayoutRevision, setExternalLayoutRevision] = React.useState(0);\n const [temporaryLayout, setTemporaryLayout] = React.useState<TemporaryLayout | null>(null);\n const resetTemporaryLayout = React.useCallback(\n () => setTemporaryLayout(null),\n [setTemporaryLayout],\n );\n\n const dndContext = React.useContext(DashKitDnDContext);\n const outerDnDEnable = Boolean(dndContext);\n\n // TODO: need move originalLayouts, adjustedLayouts to state\n const [layoutUpdateCounter, forceUpdateLayout] = React.useState(0);\n\n const onChange = React.useCallback(\n ({\n config = props.config,\n itemsStateAndParams = props.itemsStateAndParams,\n groups = props.groups,\n }) => {\n if (\n !(\n isEqual(config, props.config) &&\n isEqual(itemsStateAndParams, props.itemsStateAndParams) &&\n isEqual(groups, props.groups)\n )\n ) {\n props.onChange({config, itemsStateAndParams, groups});\n }\n },\n [props.config, props.groups, props.itemsStateAndParams, props.onChange],\n );\n\n // Callback invoked when grid layout changes. The first argument is the actual layout config,\n // which includes adjusted \"h\" values for items with auto-height enabled. To ensure that\n // values stored are not adjusted (as if auto-height was disabled), we correct them using\n // the originalLayouts stored without adjustments.\n const onLayoutChange = React.useCallback(\n (layout: ConfigLayout[]) => {\n const currentInnerLayout = layout.map((item) => {\n if (item.i in originalLayouts.current) {\n const {parent: _parent, ...originalCopy} = originalLayouts.current[item.i];\n\n if (item.parent) {\n (originalCopy as ConfigLayout).parent = item.parent;\n }\n originalCopy.w = item.w;\n originalCopy.x = item.x;\n originalCopy.y = item.y;\n\n return originalCopy satisfies ConfigLayout;\n } else {\n return {...item};\n }\n });\n\n const baselineConfig = {\n ...props.config,\n layout: internalBaselineLayoutRef.current,\n };\n\n const newConfig = UpdateManager.updateLayout({\n layout: currentInnerLayout,\n config: baselineConfig,\n });\n\n emitDashKitChangeEvent({\n config: baselineConfig,\n newConfig,\n onChange,\n emitDashKitEvent: props.emitDashKitEvent,\n });\n\n internalBaselineLayoutRef.current = newConfig.layout;\n },\n [props.config, props.emitDashKitEvent, onChange],\n );\n\n const getLayoutItem = React.useCallback((id: string) => {\n return internalBaselineLayoutRef.current.find(({i}) => i === id);\n }, []);\n\n const getOuterLayout = React.useCallback((): ConfigLayout[] => {\n return convertEnrichedLayoutToConfigLayout(internalBaselineLayoutRef.current);\n }, []);\n\n // to calculate items, only memorization of items and globalItems is important\n const configItems = React.useMemo(\n () => getAllConfigItems(props.config),\n [props.config.items, props.config.globalItems],\n );\n\n const onItemRemove = React.useCallback(\n (id: string) => {\n delete nowrapAdjustedLayouts.current[id];\n delete adjustedLayouts.current[id];\n delete originalLayouts.current[id];\n\n if (id === TEMPORARY_ITEM_ID) {\n resetTemporaryLayout();\n } else {\n if (temporaryLayout) {\n setTemporaryLayout({\n ...temporaryLayout,\n data: temporaryLayout.data.filter(({i}) => i !== id),\n });\n }\n\n onChange(\n UpdateManager.removeItem({\n id,\n config: {...props.config, layout: getOuterLayout()},\n itemsStateAndParams: props.itemsStateAndParams,\n }),\n );\n }\n },\n [\n resetTemporaryLayout,\n temporaryLayout,\n onChange,\n props.config,\n props.itemsStateAndParams,\n getOuterLayout,\n ],\n );\n\n const onItemStateAndParamsChange = React.useCallback<\n DashKitCtxShape['onItemStateAndParamsChange']\n >(\n (id, stateAndParams, options) => {\n const currentConfig = {...props.config, layout: getOuterLayout()};\n onChange({\n config: currentConfig,\n // config is not strictly required here; ideally it should be removed along with the default props\n itemsStateAndParams: UpdateManager.changeStateAndParams({\n id,\n config: currentConfig,\n stateAndParams,\n itemsStateAndParams: props.itemsStateAndParams,\n options,\n }),\n });\n },\n [props.config, props.itemsStateAndParams, getOuterLayout, onChange],\n );\n\n const memorizeOriginalLayout = React.useCallback<DashKitCtxShape['memorizeOriginalLayout']>(\n (widgetId, preAutoHeightLayout, postAutoHeightLayout) => {\n let needUpdateLayout = false;\n if (!(widgetId in originalLayouts.current)) {\n originalLayouts.current[widgetId] = preAutoHeightLayout;\n needUpdateLayout = true;\n }\n if (adjustedLayouts.current[widgetId] !== postAutoHeightLayout) {\n adjustedLayouts.current[widgetId] = postAutoHeightLayout;\n needUpdateLayout = true;\n }\n\n if (needUpdateLayout) {\n forceUpdateLayout((prev) => prev + 1);\n }\n },\n [],\n );\n\n const revertToOriginalLayout = React.useCallback((widgetId: string) => {\n const needUpdateLayout =\n widgetId in adjustedLayouts.current || widgetId in originalLayouts.current;\n delete adjustedLayouts.current[widgetId];\n delete originalLayouts.current[widgetId];\n if (needUpdateLayout) {\n forceUpdateLayout((prev) => prev + 1);\n }\n }, []);\n\n React.useMemo(() => {\n const groups = props.groups;\n // Use visualLayout instead of props.layout (which is now optional)\n const layout = visualLayout;\n const defaultProps = props.registerManager.gridLayout || {};\n const nowrapGroups: Record<string, {items: ConfigLayout[]; leftSpace: number}> = {};\n let hasNowrapGroups = false;\n\n if (\n defaultProps.compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP &&\n defaultProps.cols !== undefined\n ) {\n nowrapGroups[DEFAULT_GROUP] = {\n items: [],\n leftSpace: defaultProps.cols,\n };\n hasNowrapGroups = true;\n }\n\n if (groups) {\n groups.forEach((group) => {\n const resultProps = group.gridProperties?.(defaultProps) || {};\n\n if (\n resultProps.compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP &&\n resultProps.cols !== undefined &&\n group.id\n ) {\n nowrapGroups[group.id] = {\n items: [],\n leftSpace: resultProps.cols,\n };\n hasNowrapGroups = true;\n }\n });\n }\n\n if (hasNowrapGroups) {\n layout.forEach((item) => {\n const widgetId = item.i;\n const parentId = resolveLayoutGroup(item);\n\n if (nowrapGroups[parentId]) {\n // Collecting nowrap elements\n nowrapGroups[parentId].items.push(item);\n nowrapGroups[parentId].leftSpace -= item.w;\n } else if (nowrapAdjustedLayouts.current[widgetId]) {\n // If element is not in horizontal-nowrap cleaning up and reverting adjustLayout values\n delete nowrapAdjustedLayouts.current[widgetId];\n }\n });\n\n Object.entries(nowrapGroups).forEach(([, {items, leftSpace}]) => {\n items.forEach((item) => {\n // setting maxW with adjustLayout fields and saving previous\n nowrapAdjustedLayouts.current[item.i] = item.w + leftSpace;\n });\n });\n }\n }, [props.registerManager, props.groups, visualLayout]);\n\n // Synchronize internal baseline and visual layout when external props.layout changes re-init.\n // When props.config.layout reference changes, external update occurred re-init.\n React.useEffect(() => {\n const internalNotEqualProps = !isEqual(\n internalBaselineLayoutRef.current,\n enrichedPropsLayout,\n );\n\n if (internalNotEqualProps) {\n internalBaselineLayoutRef.current = enrichedPropsLayout;\n setVisualLayout(enrichedPropsLayout);\n setExternalLayoutRevision((r) => r + 1);\n }\n }, [enrichedPropsLayout]);\n\n const itemsParams = useDeepEqualMemo(\n () =>\n getItemsParams({\n defaultGlobalParams: props.defaultGlobalParams,\n globalParams: props.globalParams,\n config: props.config,\n itemsStateAndParams: props.itemsStateAndParams,\n plugins: props.registerManager.getPlugins(),\n }),\n [\n props.defaultGlobalParams,\n props.globalParams,\n props.config,\n props.itemsStateAndParams,\n props.registerManager,\n ],\n );\n\n const itemsState = useDeepEqualMemo(\n () =>\n getItemsState({\n config: props.config,\n itemsStateAndParams: props.itemsStateAndParams,\n }),\n [props.config, props.itemsStateAndParams],\n );\n\n const getItemsMeta = React.useCallback<DashKitCtxShape['getItemsMeta']>((pluginsRefs) => {\n return pluginsRefs\n .map((ref) => {\n if (!(ref && hasGetMeta(ref))) {\n return undefined;\n }\n return ref.getMeta();\n })\n .filter((item): item is Promise<any> => item !== undefined);\n }, []);\n\n const resultLayout = React.useMemo(() => {\n const adjusted = adjustedLayouts.current;\n const original = originalLayouts.current;\n const nowrapAdjust = nowrapAdjustedLayouts.current;\n\n return visualLayout.map((item) => {\n const widgetId = item.i;\n\n if (widgetId in adjusted || widgetId in nowrapAdjust) {\n original[widgetId] = item;\n // eslint-disable-next-line no-unused-vars\n const {parent: _parent2, ...adjustedItem} = adjusted[widgetId] || item;\n\n adjustedItem.w = item.w;\n adjustedItem.x = item.x;\n adjustedItem.y = item.y;\n\n if (item.parent) {\n (adjustedItem as ConfigLayout).parent = item.parent;\n }\n\n if (widgetId in nowrapAdjust) {\n (adjustedItem as ConfigLayout & {maxW?: number}).maxW = nowrapAdjust[widgetId];\n }\n\n return adjustedItem satisfies ConfigLayout;\n } else {\n if (widgetId in original) {\n delete original[widgetId];\n }\n return item;\n }\n });\n }, [visualLayout, layoutUpdateCounter]);\n\n const reloadItems = React.useCallback<DashKitCtxShape['reloadItems']>((pluginsRefs, data) => {\n pluginsRefs.forEach((ref) => ref && hasReload(ref) && ref.reload(data));\n }, []);\n\n const dragPropsContext = dndContext?.dragProps;\n const onDropDragOverContext = dndContext?.onDropDragOver;\n\n const dragOverPlugin = React.useMemo(() => {\n if (!dragPropsContext) {\n return null;\n }\n\n const pluginType = dragPropsContext.type;\n\n if (props.registerManager.check(pluginType)) {\n return props.registerManager.getItem(pluginType);\n } else {\n // eslint-disable-next-line no-console\n console.error(`Uknown pluginType: ${pluginType}`);\n return null;\n }\n }, [dragPropsContext, props.registerManager]);\n\n const onDropDragOver = React.useCallback<DashKitCtxShape['onDropDragOver']>(\n (_e, group, gridProps, groupLayout, sharedItem) => {\n if (temporaryLayout) {\n resetTemporaryLayout();\n return false;\n }\n\n let dragItemType: string;\n let defaultLayout: RegisterManagerPlugin['defaultLayout'] | {h: number; w: number};\n if (sharedItem) {\n const {type, h, w} = sharedItem;\n dragItemType = type;\n const _defaults = props.registerManager.getItem(type);\n defaultLayout = _defaults ? {..._defaults.defaultLayout, h, w} : {h, w};\n } else if (dragOverPlugin) {\n dragItemType = dragOverPlugin.type;\n defaultLayout = dragOverPlugin.defaultLayout;\n } else {\n return false;\n }\n\n let maxW = gridProps.cols;\n const maxH = Math.min(\n gridProps.maxRows || Infinity,\n 'maxH' in defaultLayout && defaultLayout.maxH ? defaultLayout.maxH : Infinity,\n );\n\n if (gridProps.compactType === COMPACT_TYPE_HORIZONTAL_NOWRAP && gridProps.cols) {\n maxW = groupLayout.reduce((memo, item) => memo - item.w, gridProps.cols);\n }\n\n if (\n maxW === 0 ||\n maxH === 0 ||\n ('minW' in defaultLayout &&\n defaultLayout.minW &&\n maxW &&\n maxW < defaultLayout.minW) ||\n ('minH' in defaultLayout && defaultLayout.minH && maxH < defaultLayout.minH)\n ) {\n return false;\n }\n\n const {\n h = defaultLayout?.h || DEFAULT_WIDGET_HEIGHT,\n w = defaultLayout?.w || DEFAULT_WIDGET_WIDTH,\n } = dragPropsContext?.layout || {};\n\n const itemLayout = {\n h: maxH ? Math.min(h, maxH) : h,\n w: maxW ? Math.min(w, maxW) : w,\n };\n\n if (\n onDropDragOverContext?.(\n {\n ...sharedItem,\n ...itemLayout,\n parent: group,\n type: dragItemType,\n },\n sharedItem ?? null,\n ) === false\n ) {\n return false;\n }\n\n return itemLayout;\n },\n [\n props.registerManager,\n resetTemporaryLayout,\n temporaryLayout,\n dragOverPlugin,\n dragPropsContext,\n onDropDragOverContext,\n ],\n );\n\n const onDropProp = props.onDrop;\n const onDrop = React.useCallback<DashKitCtxShape['onDrop']>(\n (newLayout, item) => {\n if (!dragPropsContext) {\n return;\n }\n\n setTemporaryLayout({\n data: [...newLayout, item],\n dragProps: dragPropsContext,\n });\n\n onDropProp?.({\n newLayout: newLayout.reduce<ConfigLayout[]>((memo, l) => {\n if (l.i !== item.i) {\n memo.push(pick(l, CONFIG_LAYOUT_FIELDS));\n }\n\n return memo;\n }, []),\n itemLayout: pick(item, CONFIG_LAYOUT_FIELDS),\n commit: resetTemporaryLayout,\n dragProps: dragPropsContext,\n });\n },\n [dragPropsContext, onDropProp, setTemporaryLayout, resetTemporaryLayout],\n );\n\n const dashkitContextValue = React.useMemo(\n () => ({\n externalLayoutRevision,\n config: props.config,\n configItems,\n groups: props.groups,\n context: props.context,\n noOverlay: props.noOverlay,\n focusable: props.focusable,\n defaultGlobalParams: props.globalParams,\n globalParams: props.globalParams,\n editMode: props.editMode,\n settings: props.settings,\n onItemMountChange: props.onItemMountChange,\n onItemRender: props.onItemRender,\n draggableHandleClassName: props.draggableHandleClassName,\n\n registerManager: props.registerManager,\n forwardedMetaRef: props.forwardedMetaRef,\n\n layout: resultLayout,\n temporaryLayout,\n layoutChange: onLayoutChange,\n memorizeOriginalLayout,\n revertToOriginalLayout,\n\n itemsState,\n itemsParams,\n onItemStateAndParamsChange,\n\n getItemsMeta,\n reloadItems,\n\n onDrop,\n onDropDragOver,\n outerDnDEnable,\n dragOverPlugin,\n\n onItemFocus: props.onItemFocus,\n onItemBlur: props.onItemBlur,\n\n /* default handlers bypass */\n onDragStart: props.onDragStart,\n onDrag: props.onDrag,\n onDragStop: props.onDragStop,\n onResizeStart: props.onResizeStart,\n onResize: props.onResize,\n onResizeStop: props.onResizeStop,\n }),\n [\n externalLayoutRevision,\n resultLayout,\n temporaryLayout,\n props.config,\n configItems,\n props.groups,\n props.context,\n props.noOverlay,\n props.focusable,\n props.globalParams,\n props.editMode,\n props.settings,\n itemsState,\n itemsParams,\n props.registerManager,\n onItemStateAndParamsChange,\n onDrop,\n onDropDragOver,\n onLayoutChange,\n props.onItemMountChange,\n props.onItemRender,\n getItemsMeta,\n reloadItems,\n memorizeOriginalLayout,\n revertToOriginalLayout,\n props.forwardedMetaRef,\n props.draggableHandleClassName,\n outerDnDEnable,\n dragOverPlugin,\n\n props.onItemFocus,\n props.onItemBlur,\n\n props.onDragStart,\n props.onDrag,\n props.onDragStop,\n props.onResizeStart,\n props.onResize,\n props.onResizeStop,\n ],\n );\n\n const overlayMenuItems = props.overlayMenuItems || props.registerManager.settings.menu;\n const controlsContextValue = React.useMemo(\n () => ({\n overlayControls: props.overlayControls,\n context: props.context,\n\n itemsStateAndParams: props.itemsStateAndParams,\n itemsState,\n itemsParams,\n\n getPreparedCopyItemOptions: props.getPreparedCopyItemOptions,\n onCopyFulfill: props.onCopyFulfill,\n\n menu: overlayMenuItems,\n\n editItem: props.onItemEdit,\n removeItem: onItemRemove,\n getLayoutItem: getLayoutItem,\n }),\n [\n props.overlayControls,\n props.context,\n props.itemsStateAndParams,\n props.onItemEdit,\n props.getPreparedCopyItemOptions,\n props.onCopyFulfill,\n overlayMenuItems,\n itemsState,\n itemsParams,\n onItemRemove,\n getLayoutItem,\n ],\n );\n\n return {controlsContextValue, dashkitContextValue};\n}\n\nexport function withContext(Component: React.ComponentType) {\n const WithContext = (props: DashKitWithContextProps) => {\n const {dashkitContextValue, controlsContextValue} = useMemoStateContext(props);\n\n return (\n <DashKitContext.Provider value={dashkitContextValue}>\n <DashkitOverlayControlsContext.Provider value={controlsContextValue}>\n <Component />\n </DashkitOverlayControlsContext.Provider>\n </DashKitContext.Provider>\n );\n };\n\n WithContext.displayName = `withContext(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return WithContext;\n}\n"]}
@@ -1 +1 @@
1
- {"version":"10.2.0","type":"module","sideEffects":["*.scss","*.css"]}
1
+ {"version":"10.3.0","type":"module","sideEffects":["*.scss","*.css"]}
@@ -92,7 +92,7 @@ export class PluginText extends React.PureComponent {
92
92
  status: LoadStatus.Success,
93
93
  });
94
94
  }
95
- catch (e) {
95
+ catch (_a) {
96
96
  if (this._isUnmounted) {
97
97
  return;
98
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","sourceRoot":"../../../../src","sources":["plugins/Text/Text.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {Button, Loader} from '@gravity-ui/uikit';\n\nimport {i18n} from '../../i18n';\nimport {Plugin, PluginWidgetProps} from '../../typings';\nimport {cn} from '../../utils/cn';\nimport {PLUGIN_ROOT_ATTR_NAME} from '../constants';\n\nimport './Text.scss';\n\n// need to set markdown styles separately\n// for instance can use yfm-transform\n\nconst b = cn('dashkit-plugin-text');\n\nenum LoadStatus {\n Pending = 'pending',\n Success = 'success',\n Fail = 'fail',\n}\n\nexport type PluginTextApiHandler = (data: {text: string}) => Promise<{result: string}>;\n\nexport interface PluginTextProps extends PluginWidgetProps {\n apiHandler?: PluginTextApiHandler;\n data: {\n text: string;\n } & PluginWidgetProps['data'];\n onBeforeRender: () => () => void;\n qa?: string;\n}\n\ninterface PluginTextState {\n htmlText: string;\n status: LoadStatus;\n needUpdate?: boolean;\n text?: string;\n}\n\nexport class PluginText extends React.PureComponent<PluginTextProps, PluginTextState> {\n static getDerivedStateFromProps(props: PluginTextProps, state: PluginTextState) {\n const {\n data: {text},\n } = props;\n const needUpdate = text !== state.text;\n return {\n text,\n needUpdate,\n };\n }\n\n state: PluginTextState = {\n htmlText: '',\n status: this.withMarkdown ? LoadStatus.Pending : LoadStatus.Success,\n };\n\n private _isUnmounted = false;\n\n componentDidMount() {\n this._isUnmounted = false;\n this.getMarkdown();\n }\n\n componentDidUpdate() {\n if (this.state.needUpdate) {\n this.getMarkdown();\n }\n }\n\n componentWillUnmount() {\n this._isUnmounted = true;\n }\n\n render() {\n switch (this.state.status) {\n case LoadStatus.Success:\n return this.renderText();\n case LoadStatus.Pending:\n return this.renderLoader();\n default:\n return this.renderError();\n }\n }\n\n private renderLoader() {\n return (\n <div className={b({loading: true})}>\n <div className={b('loader')}>\n <div className={b('loader-view')}>\n <Loader size=\"m\" />\n </div>\n </div>\n </div>\n );\n }\n\n private renderError() {\n return (\n <div className={b({error: true})}>\n <div className={b('error')}>{i18n('label_render-markdown-error')}</div>\n <br />\n <Button view=\"action\" size=\"m\" onClick={this.onRetryClick}>\n {i18n('button_retry')}\n </Button>\n <br />\n </div>\n );\n }\n\n private renderText() {\n return (\n <div\n className={b({withMarkdown: this.withMarkdown})}\n data-qa={this.props.qa}\n {...{[PLUGIN_ROOT_ATTR_NAME]: 'text'}}\n >\n {this.withMarkdown ? (\n <div\n className=\"yfm\" // className из стилей для markdown\n dangerouslySetInnerHTML={{__html: this.state.htmlText}}\n />\n ) : (\n this.state.text\n )}\n </div>\n );\n }\n\n private async getMarkdown() {\n if (typeof this.props.apiHandler !== 'function') {\n return;\n }\n this.setState({status: LoadStatus.Pending});\n\n const onLoadComplete = this.props.onBeforeLoad();\n\n try {\n let htmlText = '';\n if (this.state.text && this.state.text.trim()) {\n const loadedData = await this.props.apiHandler({text: this.state.text});\n htmlText = loadedData.result;\n }\n if (this._isUnmounted) {\n return;\n }\n this.setState({\n htmlText,\n status: LoadStatus.Success,\n });\n } catch (e) {\n if (this._isUnmounted) {\n return;\n }\n this.setState({status: LoadStatus.Fail});\n }\n onLoadComplete();\n }\n\n private onRetryClick = () => {\n this.getMarkdown();\n };\n\n get withMarkdown() {\n return typeof this.props.apiHandler === 'function';\n }\n}\n\ntype PluginDataProps = Omit<PluginTextProps, 'apiHandler'>;\n\nexport type PluginTextObjectSettings = {apiHandler?: PluginTextApiHandler};\n\nexport type PluginTextObject = Plugin<PluginDataProps> & {\n setSettings: (settings: PluginTextObjectSettings) => PluginTextObject;\n _apiHandler?: PluginTextApiHandler;\n};\n\nconst plugin: PluginTextObject = {\n type: 'text',\n defaultLayout: {w: 12, h: 6},\n setSettings(settings) {\n const {apiHandler} = settings;\n plugin._apiHandler = apiHandler;\n return plugin;\n },\n renderer(props, forwardedRef) {\n return <PluginText {...props} apiHandler={plugin._apiHandler} ref={forwardedRef} />;\n },\n};\n\nexport default plugin;\n"]}
1
+ {"version":3,"file":"Text.js","sourceRoot":"../../../../src","sources":["plugins/Text/Text.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {Button, Loader} from '@gravity-ui/uikit';\n\nimport {i18n} from '../../i18n';\nimport {Plugin, PluginWidgetProps} from '../../typings';\nimport {cn} from '../../utils/cn';\nimport {PLUGIN_ROOT_ATTR_NAME} from '../constants';\n\nimport './Text.scss';\n\n// need to set markdown styles separately\n// for instance can use yfm-transform\n\nconst b = cn('dashkit-plugin-text');\n\nenum LoadStatus {\n Pending = 'pending',\n Success = 'success',\n Fail = 'fail',\n}\n\nexport type PluginTextApiHandler = (data: {text: string}) => Promise<{result: string}>;\n\nexport interface PluginTextProps extends PluginWidgetProps {\n apiHandler?: PluginTextApiHandler;\n data: {\n text: string;\n } & PluginWidgetProps['data'];\n onBeforeRender: () => () => void;\n qa?: string;\n}\n\ninterface PluginTextState {\n htmlText: string;\n status: LoadStatus;\n needUpdate?: boolean;\n text?: string;\n}\n\nexport class PluginText extends React.PureComponent<PluginTextProps, PluginTextState> {\n static getDerivedStateFromProps(props: PluginTextProps, state: PluginTextState) {\n const {\n data: {text},\n } = props;\n const needUpdate = text !== state.text;\n return {\n text,\n needUpdate,\n };\n }\n\n state: PluginTextState = {\n htmlText: '',\n status: this.withMarkdown ? LoadStatus.Pending : LoadStatus.Success,\n };\n\n private _isUnmounted = false;\n\n componentDidMount() {\n this._isUnmounted = false;\n this.getMarkdown();\n }\n\n componentDidUpdate() {\n if (this.state.needUpdate) {\n this.getMarkdown();\n }\n }\n\n componentWillUnmount() {\n this._isUnmounted = true;\n }\n\n render() {\n switch (this.state.status) {\n case LoadStatus.Success:\n return this.renderText();\n case LoadStatus.Pending:\n return this.renderLoader();\n default:\n return this.renderError();\n }\n }\n\n private renderLoader() {\n return (\n <div className={b({loading: true})}>\n <div className={b('loader')}>\n <div className={b('loader-view')}>\n <Loader size=\"m\" />\n </div>\n </div>\n </div>\n );\n }\n\n private renderError() {\n return (\n <div className={b({error: true})}>\n <div className={b('error')}>{i18n('label_render-markdown-error')}</div>\n <br />\n <Button view=\"action\" size=\"m\" onClick={this.onRetryClick}>\n {i18n('button_retry')}\n </Button>\n <br />\n </div>\n );\n }\n\n private renderText() {\n return (\n <div\n className={b({withMarkdown: this.withMarkdown})}\n data-qa={this.props.qa}\n {...{[PLUGIN_ROOT_ATTR_NAME]: 'text'}}\n >\n {this.withMarkdown ? (\n <div\n className=\"yfm\" // className из стилей для markdown\n dangerouslySetInnerHTML={{__html: this.state.htmlText}}\n />\n ) : (\n this.state.text\n )}\n </div>\n );\n }\n\n private async getMarkdown() {\n if (typeof this.props.apiHandler !== 'function') {\n return;\n }\n this.setState({status: LoadStatus.Pending});\n\n const onLoadComplete = this.props.onBeforeLoad();\n\n try {\n let htmlText = '';\n if (this.state.text && this.state.text.trim()) {\n const loadedData = await this.props.apiHandler({text: this.state.text});\n htmlText = loadedData.result;\n }\n if (this._isUnmounted) {\n return;\n }\n this.setState({\n htmlText,\n status: LoadStatus.Success,\n });\n } catch {\n if (this._isUnmounted) {\n return;\n }\n this.setState({status: LoadStatus.Fail});\n }\n onLoadComplete();\n }\n\n private onRetryClick = () => {\n this.getMarkdown();\n };\n\n get withMarkdown() {\n return typeof this.props.apiHandler === 'function';\n }\n}\n\ntype PluginDataProps = Omit<PluginTextProps, 'apiHandler'>;\n\nexport type PluginTextObjectSettings = {apiHandler?: PluginTextApiHandler};\n\nexport type PluginTextObject = Plugin<PluginDataProps> & {\n setSettings: (settings: PluginTextObjectSettings) => PluginTextObject;\n _apiHandler?: PluginTextApiHandler;\n};\n\nconst plugin: PluginTextObject = {\n type: 'text',\n defaultLayout: {w: 12, h: 6},\n setSettings(settings) {\n const {apiHandler} = settings;\n plugin._apiHandler = apiHandler;\n return plugin;\n },\n renderer(props, forwardedRef) {\n return <PluginText {...props} apiHandler={plugin._apiHandler} ref={forwardedRef} />;\n },\n};\n\nexport default plugin;\n"]}
@@ -9,6 +9,8 @@ export interface ConfigLayout extends AdditionalWidgetLayout {
9
9
  x: number;
10
10
  y: number;
11
11
  }
12
+ export declare const CONFIG_LAYOUT_FIELDS: readonly ["i", "h", "w", "x", "y", "parent"];
13
+ export type ConfigLayoutField = (typeof CONFIG_LAYOUT_FIELDS)[number];
12
14
  type ImpactType = 'allTabs' | 'asGroup' | 'selectedTabs' | 'currentTab';
13
15
  type ImpactTabsIds = string[] | null;
14
16
  export type ConfigItemGroup = {
@@ -1,2 +1,9 @@
1
- export {};
1
+ export const CONFIG_LAYOUT_FIELDS = [
2
+ 'i',
3
+ 'h',
4
+ 'w',
5
+ 'x',
6
+ 'y',
7
+ 'parent',
8
+ ];
2
9
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"../../../../src","sources":["shared/types/config.ts"],"names":[],"mappings":"","sourcesContent":["import {StringParams} from './common';\n\nexport interface AdditionalWidgetLayout {\n parent?: string;\n}\n\nexport interface ConfigLayout extends AdditionalWidgetLayout {\n i: string;\n h: number;\n w: number;\n x: number;\n y: number;\n}\n\ntype ImpactType = 'allTabs' | 'asGroup' | 'selectedTabs' | 'currentTab';\ntype ImpactTabsIds = string[] | null;\n\nexport type ConfigItemGroup = {\n id: string;\n defaults?: StringParams;\n namespace: string;\n impactType?: ImpactType;\n impactTabsIds?: ImpactTabsIds;\n [key: string]: unknown;\n};\n\nexport interface ConfigItemData {\n _editActive?: boolean;\n tabs?: {\n id: string;\n isDefault?: boolean;\n params?: StringParams;\n [key: string]: unknown;\n }[];\n group?: ConfigItemGroup[];\n impactType?: Exclude<ImpactType, 'asGroup'>;\n impactTabsIds?: ImpactTabsIds;\n [key: string]: unknown;\n}\n\nexport interface ConfigItemDataWithTabs extends Omit<ConfigItemData, 'tabs'> {\n tabs: NonNullable<ConfigItemData['tabs']>;\n}\n\nexport interface ConfigItemDataWithGroup extends Omit<ConfigItemData, 'group'> {\n group: NonNullable<ConfigItemData['group']>;\n}\n\nexport interface ConfigItem {\n id: string;\n data: ConfigItemData;\n type: string;\n namespace: string;\n defaults?: StringParams;\n orderId?: number;\n defaultOrderId?: number;\n}\n\nexport interface ConfigItemWithTabs extends Omit<ConfigItem, 'data'> {\n data: ConfigItemDataWithTabs;\n}\n\nexport interface ConfigItemWithGroup extends Omit<ConfigItem, 'data'> {\n data: ConfigItemDataWithGroup;\n}\n\nexport interface ConfigAliases {\n [namespace: string]: string[][]; // в массивах имена параметров\n}\n\nexport interface ConfigConnection {\n from: string;\n to: string;\n kind: 'ignore'; // пока один kind\n}\n\nexport interface Config {\n id?: string;\n salt: string;\n counter: number;\n items: ConfigItem[];\n globalItems?: ConfigItem[];\n layout: ConfigLayout[];\n aliases: ConfigAliases;\n connections: ConfigConnection[];\n}\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"../../../../src","sources":["shared/types/config.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAChC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,QAAQ;CAC0C,CAAC","sourcesContent":["import {StringParams} from './common';\n\nexport interface AdditionalWidgetLayout {\n parent?: string;\n}\n\nexport interface ConfigLayout extends AdditionalWidgetLayout {\n i: string;\n h: number;\n w: number;\n x: number;\n y: number;\n}\n\nexport const CONFIG_LAYOUT_FIELDS = [\n 'i',\n 'h',\n 'w',\n 'x',\n 'y',\n 'parent',\n] as const satisfies ReadonlyArray<keyof ConfigLayout>;\nexport type ConfigLayoutField = (typeof CONFIG_LAYOUT_FIELDS)[number];\n\ntype ImpactType = 'allTabs' | 'asGroup' | 'selectedTabs' | 'currentTab';\ntype ImpactTabsIds = string[] | null;\n\nexport type ConfigItemGroup = {\n id: string;\n defaults?: StringParams;\n namespace: string;\n impactType?: ImpactType;\n impactTabsIds?: ImpactTabsIds;\n [key: string]: unknown;\n};\n\nexport interface ConfigItemData {\n _editActive?: boolean;\n tabs?: {\n id: string;\n isDefault?: boolean;\n params?: StringParams;\n [key: string]: unknown;\n }[];\n group?: ConfigItemGroup[];\n impactType?: Exclude<ImpactType, 'asGroup'>;\n impactTabsIds?: ImpactTabsIds;\n [key: string]: unknown;\n}\n\nexport interface ConfigItemDataWithTabs extends Omit<ConfigItemData, 'tabs'> {\n tabs: NonNullable<ConfigItemData['tabs']>;\n}\n\nexport interface ConfigItemDataWithGroup extends Omit<ConfigItemData, 'group'> {\n group: NonNullable<ConfigItemData['group']>;\n}\n\nexport interface ConfigItem {\n id: string;\n data: ConfigItemData;\n type: string;\n namespace: string;\n defaults?: StringParams;\n orderId?: number;\n defaultOrderId?: number;\n}\n\nexport interface ConfigItemWithTabs extends Omit<ConfigItem, 'data'> {\n data: ConfigItemDataWithTabs;\n}\n\nexport interface ConfigItemWithGroup extends Omit<ConfigItem, 'data'> {\n data: ConfigItemDataWithGroup;\n}\n\nexport interface ConfigAliases {\n [namespace: string]: string[][]; // в массивах имена параметров\n}\n\nexport interface ConfigConnection {\n from: string;\n to: string;\n kind: 'ignore'; // пока один kind\n}\n\nexport interface Config {\n id?: string;\n salt: string;\n counter: number;\n items: ConfigItem[];\n globalItems?: ConfigItem[];\n layout: ConfigLayout[];\n aliases: ConfigAliases;\n connections: ConfigConnection[];\n}\n"]}
@@ -0,0 +1,34 @@
1
+ import type { ConfigLayout } from "../shared/index.js";
2
+ /**
3
+ * @experimental This API can change in minor releases.
4
+ */
5
+ export type DashKitLayoutPatch = Pick<ConfigLayout, 'i'> & Partial<Pick<ConfigLayout, 'x' | 'y' | 'w' | 'h' | 'parent'>>;
6
+ /**
7
+ * @experimental This API can change in minor releases.
8
+ */
9
+ export type DashKitBaseEvent = {
10
+ preventDefault: () => void;
11
+ readonly defaultPrevented: boolean;
12
+ };
13
+ /**
14
+ * @experimental This API can change in minor releases.
15
+ */
16
+ export type DashKitChangeEvent = DashKitBaseEvent & {
17
+ patches: DashKitLayoutPatch[];
18
+ layout: ConfigLayout[];
19
+ previousLayout: ConfigLayout[];
20
+ };
21
+ /**
22
+ * @experimental This API can change in minor releases.
23
+ */
24
+ export type DashKitEventMap = {
25
+ change: DashKitChangeEvent;
26
+ };
27
+ /**
28
+ * @experimental This API can change in minor releases.
29
+ */
30
+ export type DashKitEventName = keyof DashKitEventMap;
31
+ /**
32
+ * @experimental This API can change in minor releases.
33
+ */
34
+ export type DashKitEventHandler<T extends DashKitEventName> = (event: DashKitEventMap[T]) => void;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"../../../src","sources":["typings/events.ts"],"names":[],"mappings":"","sourcesContent":["import type {ConfigLayout} from '../shared';\n\n/**\n * @experimental This API can change in minor releases.\n */\nexport type DashKitLayoutPatch = Pick<ConfigLayout, 'i'> &\n Partial<Pick<ConfigLayout, 'x' | 'y' | 'w' | 'h' | 'parent'>>;\n\n/**\n * @experimental This API can change in minor releases.\n */\nexport type DashKitBaseEvent = {\n preventDefault: () => void;\n readonly defaultPrevented: boolean;\n};\n\n/**\n * @experimental This API can change in minor releases.\n */\nexport type DashKitChangeEvent = DashKitBaseEvent & {\n patches: DashKitLayoutPatch[];\n layout: ConfigLayout[];\n previousLayout: ConfigLayout[];\n};\n\n/**\n * @experimental This API can change in minor releases.\n */\nexport type DashKitEventMap = {\n change: DashKitChangeEvent;\n};\n\n/**\n * @experimental This API can change in minor releases.\n */\nexport type DashKitEventName = keyof DashKitEventMap;\n\n/**\n * @experimental This API can change in minor releases.\n */\nexport type DashKitEventHandler<T extends DashKitEventName> = (event: DashKitEventMap[T]) => void;\n"]}
@@ -1,3 +1,4 @@
1
1
  export * from "./common.js";
2
2
  export * from "./plugin.js";
3
3
  export * from "./config.js";
4
+ export * from "./events.js";
@@ -1,4 +1,5 @@
1
1
  export * from "./common.js";
2
2
  export * from "./plugin.js";
3
3
  export * from "./config.js";
4
+ export * from "./events.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["typings/index.ts"],"names":[],"mappings":"AAAA,4BAAyB;AACzB,4BAAyB;AACzB,4BAAyB","sourcesContent":["export * from './common';\nexport * from './plugin';\nexport * from './config';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["typings/index.ts"],"names":[],"mappings":"AAAA,4BAAyB;AACzB,4BAAyB;AACzB,4BAAyB;AACzB,4BAAyB","sourcesContent":["export * from './common';\nexport * from './plugin';\nexport * from './config';\nexport * from './events';\n"]}