@m4l/components 9.67.2 → 9.68.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.
@@ -1,5 +1,5 @@
1
1
  import { getTypographyStyles as t } from "../../utils/getTypographyStyles.js";
2
- import { ICON_SVG_SHAPE_SELECTOR as e } from "@m4l/base";
2
+ import { ICON_SVG_SHAPE_SELECTOR as i } from "@m4l/base";
3
3
  import { getSizeStyles as n } from "../../utils/getSizeStyles/getSizeStyles.js";
4
4
  function s(o, a) {
5
5
  return `calc(${typeof o == "number" ? `${o}px` : o} + ${a})`;
@@ -44,8 +44,12 @@ const d = {
44
44
  border: `1px solid ${o.vars.palette?.border.secondary}`,
45
45
  borderRadius: o.vars.size.borderRadius.r3,
46
46
  ...a?.selected && {
47
- boxShadow: o.vars.customShadows.z4,
48
- border: `1px solid ${o.vars.palette?.primary.activeOpacity}`
47
+ // Figma draws this shadow with its own geometry and color tokens; no `customShadows` token matches it.
48
+ // Layers: inner glow, primary halo and the `customShadowsColors.sh1` gray.
49
+ // `sh1` (rgba(146, 156, 171, 0.08)) has no theme token: `grey[500_8]` (rgba(145, 158, 171, 0.08)) is the closest one.
50
+ boxShadow: `inset 0 8px 16px 0 ${o.vars.palette.primary.opacity}, 0 8px 24px -12px ${o.vars.palette.primary.selectedOpacity}, 0 20px 60px 0 ${o.vars.palette.grey[5008]}`,
51
+ border: o.vars.size.borderStroke.container,
52
+ borderColor: o.vars.palette.primary.toneOpacity
49
53
  }
50
54
  }
51
55
  },
@@ -99,7 +103,7 @@ const d = {
99
103
  * Styles for the header of the window base component.
100
104
  */
101
105
  headerWindowComponent: ({ theme: o, ownerState: a }) => {
102
- const i = a?.hasDescription;
106
+ const r = a?.hasDescription;
103
107
  return {
104
108
  width: "100%",
105
109
  display: "flex",
@@ -108,7 +112,7 @@ const d = {
108
112
  ...(a?.emergeType === "popup" || a?.emergeType === "modal" || a?.emergeType === "panel") && {
109
113
  padding: `${o.vars.size.baseSpacings["sp2-5"]} ${o.vars.size.baseSpacings.sp2} 0 ${o.vars.size.baseSpacings.sp2}`
110
114
  },
111
- alignItems: i ? "flex-start" : "center",
115
+ alignItems: r ? "flex-start" : "center",
112
116
  justifyContent: "space-between",
113
117
  flexShrink: 0,
114
118
  alignSelf: "stretch",
@@ -118,9 +122,9 @@ const d = {
118
122
  o,
119
123
  a?.size || "medium",
120
124
  "container",
121
- (r) => ({
122
- minHeight: i ? s(r, o.vars.size.baseSpacings.sp2) : r,
123
- ...i && {
125
+ (e) => ({
126
+ minHeight: r ? s(e, o.vars.size.baseSpacings.sp2) : e,
127
+ ...r && {
124
128
  height: "auto"
125
129
  }
126
130
  })
@@ -129,8 +133,8 @@ const d = {
129
133
  o,
130
134
  a?.size || "medium",
131
135
  "action",
132
- (r) => ({
133
- minHeight: i ? s(r, o.vars.size.baseSpacings.sp2) : r,
136
+ (e) => ({
137
+ minHeight: r ? s(e, o.vars.size.baseSpacings.sp2) : e,
134
138
  height: "auto"
135
139
  })
136
140
  )
@@ -170,7 +174,8 @@ const d = {
170
174
  headerTitleWindowBase: ({ theme: o, ownerState: a }) => ({
171
175
  minWidth: "30px",
172
176
  ...a?.selected && a?.emergeType !== "modal" ? {
173
- color: `${o.vars.palette.primary.semanticText} !important`
177
+ // In Figma the selected popup keeps its title dark; the accent stays on the icon, dot and subtitle.
178
+ color: `${a?.emergeType === "popup" ? o.vars.palette.text.primary : o.vars.palette.primary.semanticText} !important`
174
179
  } : {
175
180
  color: `${o.vars.palette.text.secondary} !important`
176
181
  },
@@ -252,14 +257,14 @@ const d = {
252
257
  * Styles for the icon of the header of the window base component.
253
258
  */
254
259
  headerIconWindowBase: ({ theme: o, ownerState: a }) => {
255
- const i = a?.selected && a?.emergeType !== "modal" ? o.vars.palette.primary.semanticText : o.vars.palette.text.secondary;
260
+ const r = a?.selected && a?.emergeType !== "modal" ? o.vars.palette.primary.semanticText : o.vars.palette.text.secondary;
256
261
  return {
257
262
  "& .M4LIcon-icon": {
258
- backgroundColor: `${i} !important`
263
+ backgroundColor: `${r} !important`
259
264
  },
260
265
  "& .MuiSvgIcon-root": {
261
- [e]: {
262
- fill: `${i} !important`,
266
+ [i]: {
267
+ fill: `${r} !important`,
263
268
  stroke: "none"
264
269
  }
265
270
  }
@@ -283,9 +288,9 @@ const d = {
283
288
  o,
284
289
  a?.size || "medium",
285
290
  "base",
286
- (i) => ({
287
- height: `${i}!important`,
288
- width: `${i}!important`
291
+ (r) => ({
292
+ height: `${r}!important`,
293
+ width: `${r}!important`
289
294
  })
290
295
  ),
291
296
  marginLeft: o.vars.size.baseSpacings.sp1,
@@ -297,9 +302,9 @@ const d = {
297
302
  o,
298
303
  a?.size || "medium",
299
304
  "base",
300
- (i) => ({
301
- height: `${i}!important`,
302
- width: `${i}!important`
305
+ (r) => ({
306
+ height: `${r}!important`,
307
+ width: `${r}!important`
303
308
  })
304
309
  ),
305
310
  marginLeft: o.vars.size.baseSpacings.sp1,
@@ -315,7 +320,7 @@ const d = {
315
320
  backgroundColor: `${o.vars.palette.chips.orange.contained.backgroundColorTone} !important`
316
321
  },
317
322
  "& .MuiSvgIcon-root": {
318
- [e]: {
323
+ [i]: {
319
324
  fill: `${o.vars.palette.chips.orange.contained.backgroundColorTone} !important`,
320
325
  stroke: "none"
321
326
  }
@@ -327,7 +332,7 @@ const d = {
327
332
  backgroundColor: `${o.vars.palette.chips.orange.contained.backgroundColorTone} !important`
328
333
  },
329
334
  "& .MuiSvgIcon-root": {
330
- [e]: {
335
+ [i]: {
331
336
  fill: `${o.vars.palette.chips.orange.contained.backgroundColorTone} !important`,
332
337
  stroke: "none"
333
338
  }
@@ -344,7 +349,7 @@ const d = {
344
349
  backgroundColor: `${o.vars.palette.chips.forest.contained.backgroundColorTone} !important`
345
350
  },
346
351
  "& .MuiSvgIcon-root": {
347
- [e]: {
352
+ [i]: {
348
353
  fill: `${o.vars.palette.chips.forest.contained.backgroundColorTone} !important`,
349
354
  stroke: "none"
350
355
  }
@@ -356,7 +361,7 @@ const d = {
356
361
  backgroundColor: `${o.vars.palette.chips.forest.contained.backgroundColorTone} !important`
357
362
  },
358
363
  "& .MuiSvgIcon-root": {
359
- [e]: {
364
+ [i]: {
360
365
  fill: `${o.vars.palette.chips.forest.contained.backgroundColorTone} !important`,
361
366
  stroke: "none"
362
367
  }
@@ -370,7 +375,7 @@ const d = {
370
375
  backgroundColor: `${o.vars.palette.chips.info.contained.backgroundColorTone} !important`
371
376
  },
372
377
  "& .MuiSvgIcon-root": {
373
- [e]: {
378
+ [i]: {
374
379
  fill: `${o.vars.palette.chips.info.contained.backgroundColorTone} !important`,
375
380
  stroke: "none"
376
381
  }
@@ -382,7 +387,7 @@ const d = {
382
387
  backgroundColor: `${o.vars.palette.chips.info.contained.backgroundColorTone} !important`
383
388
  },
384
389
  "& .MuiSvgIcon-root": {
385
- [e]: {
390
+ [i]: {
386
391
  fill: `${o.vars.palette.chips.info.contained.backgroundColorTone} !important`,
387
392
  stroke: "none"
388
393
  }
@@ -396,7 +401,7 @@ const d = {
396
401
  backgroundColor: `${o.vars.palette.chips.error.contained.backgroundColorTone} !important`
397
402
  },
398
403
  "& .MuiSvgIcon-root": {
399
- [e]: {
404
+ [i]: {
400
405
  fill: `${o.vars.palette.chips.error.contained.backgroundColorTone} !important`,
401
406
  stroke: "none"
402
407
  }
@@ -408,7 +413,7 @@ const d = {
408
413
  backgroundColor: `${o.vars.palette.chips.error.contained.backgroundColorTone} !important`
409
414
  },
410
415
  "& .MuiSvgIcon-root": {
411
- [e]: {
416
+ [i]: {
412
417
  fill: `${o.vars.palette.chips.error.contained.backgroundColorTone} !important`,
413
418
  stroke: "none"
414
419
  }
@@ -419,7 +424,7 @@ const d = {
419
424
  backgroundColor: `${o.vars.palette.text.disabled} !important`
420
425
  },
421
426
  "&.MuiButtonBase-root:not(:hover, :active, :focus, .M4LIconButton-selected) .M4LIcon-root .MuiSvgIcon-root": {
422
- [e]: {
427
+ [i]: {
423
428
  fill: `${o.vars.palette.text.disabled} !important`,
424
429
  stroke: "none"
425
430
  }
@@ -441,7 +446,7 @@ const d = {
441
446
  * instead, so the separator loads like the title and subtitle around it.
442
447
  */
443
448
  pointIcon: ({ theme: o, ownerState: a }) => {
444
- const i = a?.selected && a?.emergeType !== "modal" && a?.variant === "outlined" ? o.vars.palette.primary.semanticText : o.vars.palette.text.secondary;
449
+ const r = a?.selected && a?.emergeType !== "modal" && (a?.variant === "outlined" || a?.emergeType === "popup") ? o.vars.palette.primary.semanticText : o.vars.palette.text.secondary;
445
450
  return {
446
451
  display: "flex",
447
452
  alignItems: "center",
@@ -454,15 +459,15 @@ const d = {
454
459
  width: o.vars.size.baseSpacings["sp1-5"],
455
460
  height: o.vars.size.baseSpacings["sp1-5"],
456
461
  borderRadius: "50%",
457
- backgroundColor: i
462
+ backgroundColor: r
458
463
  }
459
464
  },
460
465
  ...n(
461
466
  o,
462
467
  a?.size || "medium",
463
468
  "base",
464
- (r) => ({
465
- width: r
469
+ (e) => ({
470
+ width: e
466
471
  })
467
472
  )
468
473
  };
@@ -548,9 +553,9 @@ const d = {
548
553
  gap: o.vars.size.baseSpacings.sp1,
549
554
  alignItems: "center",
550
555
  "& .M4LIconButton-styledMUIIconButton": {
551
- ...n(o, a?.size || "medium", "case", (i) => ({
552
- width: `${i}!important`,
553
- height: `${i}!important`
556
+ ...n(o, a?.size || "medium", "case", (r) => ({
557
+ width: `${r}!important`,
558
+ height: `${r}!important`
554
559
  }))
555
560
  },
556
561
  ...a?.collapsed && {
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderWindowBase.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/components/src/components/WindowBase/subcomponents/Header/HeaderWindowBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAetC,OAAO,EAAoB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAcrE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,WAAW,GAAG,oBAAoB,qDA4LzE,CAAC"}
1
+ {"version":3,"file":"HeaderWindowBase.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/components/src/components/WindowBase/subcomponents/Header/HeaderWindowBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAetC,OAAO,EAAoB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAcrE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,WAAW,GAAG,oBAAoB,qDAkMzE,CAAC"}
@@ -1,50 +1,50 @@
1
- import { jsxs as a, jsx as n } from "@emotion/react/jsx-runtime";
2
- import { useState as f, useEffect as P, useMemo as _ } from "react";
1
+ import { jsxs as s, jsx as n } from "@emotion/react/jsx-runtime";
2
+ import { useState as f, useEffect as _, useMemo as U } from "react";
3
3
  import { WINDOW_BASE_ICON_COMPONENTS as h, ICONS as S } from "../../icons.js";
4
- import { dragResizeWindowRNDClasses as A } from "../../../DragResizeWindowRND/classes/index.js";
4
+ import { dragResizeWindowRNDClasses as N } from "../../../DragResizeWindowRND/classes/index.js";
5
5
  import { deepEqual as y } from "fast-equals";
6
- import { useFormatter as U } from "@m4l/graphics";
6
+ import { useFormatter as V } from "@m4l/graphics";
7
7
  import { useModuleSkeleton as j } from "@m4l/core";
8
- import { useButtonActions as N } from "./useButtonActions.js";
9
- import { HeaderWindowComponentStyled as V, HeaderContentStyled as $, IconWindowStyled as q, ContainerTitleDescriptionStyled as J, ContainerTitleSubtitleStyled as K, TitleWindowStyled as G, PointIconStyled as Q, PointIconSkeletonStyled as X, SubtitleWindowStyled as Y, DescriptionWindowStyled as Z, IconsWrapperStyled as ee, ContainerLeftActionsStyled as te, MenuActionsWindowsStyled as oe } from "../../slots/WindowBaseSlots.js";
10
- import { windowBaseClasses as B } from "../../constants.js";
11
- import ne from "clsx";
12
- import { IconButton as ie } from "../../../extended/mui/IconButton/IconButton.js";
13
- const ye = (D) => {
8
+ import { useButtonActions as B } from "./useButtonActions.js";
9
+ import { HeaderWindowComponentStyled as $, HeaderContentStyled as q, IconWindowStyled as J, ContainerTitleDescriptionStyled as K, ContainerTitleSubtitleStyled as G, TitleWindowStyled as Q, PointIconStyled as X, PointIconSkeletonStyled as Y, SubtitleWindowStyled as Z, DescriptionWindowStyled as ee, IconsWrapperStyled as te, ContainerLeftActionsStyled as oe, MenuActionsWindowsStyled as ne } from "../../slots/WindowBaseSlots.js";
10
+ import { windowBaseClasses as D } from "../../constants.js";
11
+ import ie from "clsx";
12
+ import { IconButton as re } from "../../../extended/mui/IconButton/IconButton.js";
13
+ const be = (O) => {
14
14
  const {
15
- title: O,
15
+ title: T,
16
16
  subTitle: d,
17
17
  description: m,
18
18
  onClose: b,
19
19
  iconUrl: C,
20
- size: r,
21
- selected: T,
20
+ size: l,
21
+ selected: w,
22
22
  maximized: E,
23
23
  version: c,
24
24
  buildTime: p,
25
25
  variant: x,
26
- actions: s = [],
27
- collapsed: w,
28
- emergeType: l,
29
- draggable: I
30
- } = D, { dateFormatter: u } = U(), g = j(), [R, z] = f(() => s.filter((t) => t.place === "left")), [v, L] = f(() => s.filter((t) => t.place === "right")), [W, M] = f(() => s.filter((t) => t.place === "inside"));
31
- P(() => {
32
- const t = s.reduce(
33
- (e, i) => (e[i.place]?.push(i), e),
26
+ actions: a = [],
27
+ collapsed: I,
28
+ emergeType: i,
29
+ draggable: g
30
+ } = O, { dateFormatter: u } = V(), W = j(), [R, z] = f(() => a.filter((t) => t.place === "left")), [v, L] = f(() => a.filter((t) => t.place === "right")), [k, M] = f(() => a.filter((t) => t.place === "inside"));
31
+ _(() => {
32
+ const t = a.reduce(
33
+ (e, r) => (e[r.place]?.push(r), e),
34
34
  { left: [], right: [], inside: [] }
35
35
  );
36
36
  z((e) => y(e, t.left) ? e : t.left), L((e) => y(e, t.right) ? e : t.right), M((e) => y(e, t.inside) ? e : t.inside);
37
- }, [s]);
38
- const k = _(() => {
37
+ }, [a]);
38
+ const A = U(() => {
39
39
  const t = [
40
- ...W.map((e) => e.type === "groupActions" ? e.actions.map((i) => ({
40
+ ...k.map((e) => e.type === "groupActions" ? e.actions.map((r) => ({
41
41
  type: "menuItem",
42
- startIcon: i.iconUrl,
43
- label: i.label,
44
- onClick: i.onClick,
45
- disabled: i.disabled,
42
+ startIcon: r.iconUrl,
43
+ label: r.label,
44
+ onClick: r.onClick,
45
+ disabled: r.disabled,
46
46
  checkable: !0,
47
- checked: i.key === e.selectedActionKey
47
+ checked: r.key === e.selectedActionKey
48
48
  })) : {
49
49
  type: "menuItem",
50
50
  startIcon: e.iconUrl,
@@ -65,40 +65,40 @@ const ye = (D) => {
65
65
  color: "default"
66
66
  //className: 'version-action',
67
67
  }), t;
68
- }, [W, c, p, u]), o = {
69
- selected: T,
68
+ }, [k, c, p, u]), F = i === "popup" && w || !(i === "popup" || i === "modal" || i === "panel") ? "captionDens" : "bodyStandard", o = {
69
+ selected: w,
70
70
  maximized: E,
71
71
  variant: x,
72
- size: r,
73
- emergeType: l,
74
- collapsed: w,
75
- draggable: I,
72
+ size: l,
73
+ emergeType: i,
74
+ collapsed: I,
75
+ draggable: g,
76
76
  hasDescription: !!m,
77
- isSkeleton: g
78
- }, F = N(R), H = N(v);
79
- return /* @__PURE__ */ a(V, { className: ne(I && A.draggableHandle, B.headerWindowComponent), ownerState: o, children: [
80
- /* @__PURE__ */ a($, { ownerState: o, className: B.headerContentWindowBase, children: [
81
- C && /* @__PURE__ */ n(q, { size: r, ownerState: o, src: C, "aria-label": "main icon" }),
82
- /* @__PURE__ */ a(J, { size: r, ownerState: o, children: [
83
- /* @__PURE__ */ a(K, { size: r, ownerState: o, children: [
84
- /* @__PURE__ */ n(G, { variant: l === "popup" || l === "modal" || l === "panel" ? "bodyStandard" : "captionDens", size: r, skeletonWidth: 100, ownerState: o, children: O }),
77
+ isSkeleton: W
78
+ }, H = B(R), P = B(v);
79
+ return /* @__PURE__ */ s($, { className: ie(g && N.draggableHandle, D.headerWindowComponent), ownerState: o, children: [
80
+ /* @__PURE__ */ s(q, { ownerState: o, className: D.headerContentWindowBase, children: [
81
+ C && /* @__PURE__ */ n(J, { size: l, ownerState: o, src: C, "aria-label": "main icon" }),
82
+ /* @__PURE__ */ s(K, { size: l, ownerState: o, children: [
83
+ /* @__PURE__ */ s(G, { size: l, ownerState: o, children: [
84
+ /* @__PURE__ */ n(Q, { variant: F, size: l, skeletonWidth: 100, ownerState: o, children: T }),
85
85
  d && /* @__PURE__ */ n(
86
- Q,
86
+ X,
87
87
  {
88
88
  ownerState: o,
89
89
  "aria-hidden": "true",
90
- children: g && /* @__PURE__ */ n(X, { variant: "circular" })
90
+ children: W && /* @__PURE__ */ n(Y, { variant: "circular" })
91
91
  }
92
92
  ),
93
- d && /* @__PURE__ */ n(Y, { variant: l === "popup" || l === "modal" || l === "panel" ? "bodyStandard" : "captionDens", size: r, skeletonWidth: 100, ownerState: o, children: d })
93
+ d && /* @__PURE__ */ n(Z, { variant: i === "popup" || i === "modal" || i === "panel" ? "bodyStandard" : "captionDens", size: l, skeletonWidth: 100, ownerState: o, children: d })
94
94
  ] }),
95
95
  m && /* @__PURE__ */ n(
96
- Z,
96
+ ee,
97
97
  {
98
98
  color: "text.secondary",
99
99
  fontFamily: "Jura",
100
100
  ownerState: o,
101
- size: r,
101
+ size: l,
102
102
  skeletonWidth: 100,
103
103
  variant: "microDens",
104
104
  children: m
@@ -106,16 +106,16 @@ const ye = (D) => {
106
106
  )
107
107
  ] })
108
108
  ] }),
109
- /* @__PURE__ */ a(
110
- ee,
109
+ /* @__PURE__ */ s(
110
+ te,
111
111
  {
112
112
  id: "icons-wrapper",
113
- className: A.draggableCancel,
113
+ className: N.draggableCancel,
114
114
  ownerState: o,
115
115
  children: [
116
- /* @__PURE__ */ n(te, { ownerState: { collapsed: w }, children: F }),
117
- k.length > 0 && /* @__PURE__ */ n(
118
- oe,
116
+ /* @__PURE__ */ n(oe, { ownerState: { collapsed: I }, children: H }),
117
+ A.length > 0 && /* @__PURE__ */ n(
118
+ ne,
119
119
  {
120
120
  type: "menuItem",
121
121
  ownerState: o,
@@ -125,12 +125,12 @@ const ye = (D) => {
125
125
  anchorOrigin: { vertical: "bottom", horizontal: "right" },
126
126
  transformOrigin: { vertical: "top", horizontal: "right" },
127
127
  paperProps: { style: { marginTop: "12px" } },
128
- menuActions: k
128
+ menuActions: A
129
129
  }
130
130
  ),
131
- H,
131
+ P,
132
132
  b && /* @__PURE__ */ n(
133
- ie,
133
+ re,
134
134
  {
135
135
  icon: h[S.CLOSE],
136
136
  onClick: b,
@@ -145,5 +145,5 @@ const ye = (D) => {
145
145
  ] });
146
146
  };
147
147
  export {
148
- ye as HeaderWindowBase
148
+ be as HeaderWindowBase
149
149
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m4l/components",
3
- "version": "9.67.2",
3
+ "version": "9.68.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -53,15 +53,13 @@
53
53
  "@hookform/resolvers": "2.9.11",
54
54
  "nprogress": "0.2.0",
55
55
  "react-transition-group": "4.4.5",
56
- "react-rnd": "10.5.2",
57
56
  "@tanstack/react-virtual": "3.13.23",
58
- "react-draggable": "4.5.0",
59
- "react-dropzone": "14.4.1",
57
+ "@mui/x-date-pickers": "6.20.2",
60
58
  "react-spinners": "0.13.8",
59
+ "react-draggable": "4.5.0",
61
60
  "react-color": "2.19.3",
62
- "@mui/x-date-pickers": "6.20.2",
63
- "react-simple-code-editor": "0.14.1",
64
- "react-resizable-panels": "2.1.9",
61
+ "react-rnd": "10.5.2",
62
+ "react-dropzone": "14.4.1",
65
63
  "simplebar-react": "3.2.6",
66
64
  "chart.js": "4.5.1",
67
65
  "chartjs-chart-error-bars": "4.4.5",
@@ -69,6 +67,8 @@
69
67
  "react-data-grid": "7.0.0-beta.47",
70
68
  "react-dnd": "16.0.1",
71
69
  "react-dnd-html5-backend": "16.0.1",
70
+ "react-resizable-panels": "2.1.9",
71
+ "react-simple-code-editor": "0.14.1",
72
72
  "date-fns": "2.30.0",
73
73
  "react-resizable": "3.1.3",
74
74
  "react-window": "1.8.11"