@dxos/react-ui-editor 0.8.2-main.12df754 → 0.8.2-main.30e4dbb

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 (100) hide show
  1. package/dist/lib/browser/index.mjs +1178 -1110
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/testing/index.mjs.map +2 -2
  5. package/dist/lib/node/index.cjs +1386 -1319
  6. package/dist/lib/node/index.cjs.map +4 -4
  7. package/dist/lib/node/meta.json +1 -1
  8. package/dist/lib/node/testing/index.cjs.map +2 -2
  9. package/dist/lib/node-esm/index.mjs +1178 -1110
  10. package/dist/lib/node-esm/index.mjs.map +4 -4
  11. package/dist/lib/node-esm/meta.json +1 -1
  12. package/dist/lib/node-esm/testing/index.mjs.map +2 -2
  13. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts +1 -1
  14. package/dist/types/src/components/EditorToolbar/EditorToolbar.d.ts.map +1 -1
  15. package/dist/types/src/{stories/InputMode.stories.d.ts → components/EditorToolbar/EditorToolbar.stories.d.ts} +3 -7
  16. package/dist/types/src/components/EditorToolbar/EditorToolbar.stories.d.ts.map +1 -0
  17. package/dist/types/src/components/EditorToolbar/blocks.d.ts +4 -3
  18. package/dist/types/src/components/EditorToolbar/blocks.d.ts.map +1 -1
  19. package/dist/types/src/components/EditorToolbar/comment.d.ts +4 -3
  20. package/dist/types/src/components/EditorToolbar/comment.d.ts.map +1 -1
  21. package/dist/types/src/components/EditorToolbar/formatting.d.ts +4 -3
  22. package/dist/types/src/components/EditorToolbar/formatting.d.ts.map +1 -1
  23. package/dist/types/src/components/EditorToolbar/headings.d.ts +4 -3
  24. package/dist/types/src/components/EditorToolbar/headings.d.ts.map +1 -1
  25. package/dist/types/src/components/EditorToolbar/image.d.ts +16 -0
  26. package/dist/types/src/components/EditorToolbar/image.d.ts.map +1 -0
  27. package/dist/types/src/components/EditorToolbar/lists.d.ts +4 -3
  28. package/dist/types/src/components/EditorToolbar/lists.d.ts.map +1 -1
  29. package/dist/types/src/components/EditorToolbar/search.d.ts +17 -0
  30. package/dist/types/src/components/EditorToolbar/search.d.ts.map +1 -0
  31. package/dist/types/src/components/EditorToolbar/util.d.ts +11 -17
  32. package/dist/types/src/components/EditorToolbar/util.d.ts.map +1 -1
  33. package/dist/types/src/components/EditorToolbar/view-mode.d.ts +4 -3
  34. package/dist/types/src/components/EditorToolbar/view-mode.d.ts.map +1 -1
  35. package/dist/types/src/defaults.d.ts.map +1 -1
  36. package/dist/types/src/extensions/annotations.d.ts.map +1 -1
  37. package/dist/types/src/extensions/autocomplete.d.ts.map +1 -1
  38. package/dist/types/src/extensions/automerge/automerge.d.ts.map +1 -1
  39. package/dist/types/src/extensions/automerge/cursor.d.ts.map +1 -1
  40. package/dist/types/src/extensions/automerge/defs.d.ts.map +1 -1
  41. package/dist/types/src/extensions/automerge/update-automerge.d.ts.map +1 -1
  42. package/dist/types/src/extensions/automerge/update-codemirror.d.ts.map +1 -1
  43. package/dist/types/src/extensions/awareness/awareness.d.ts.map +1 -1
  44. package/dist/types/src/extensions/blast.d.ts.map +1 -1
  45. package/dist/types/src/extensions/command/command.d.ts.map +1 -1
  46. package/dist/types/src/extensions/command/hint.d.ts.map +1 -1
  47. package/dist/types/src/extensions/command/menu.d.ts.map +1 -1
  48. package/dist/types/src/extensions/comments.d.ts.map +1 -1
  49. package/dist/types/src/extensions/debug.d.ts.map +1 -1
  50. package/dist/types/src/extensions/dnd.d.ts.map +1 -1
  51. package/dist/types/src/extensions/factories.d.ts.map +1 -1
  52. package/dist/types/src/extensions/folding.d.ts.map +1 -1
  53. package/dist/types/src/extensions/listener.d.ts.map +1 -1
  54. package/dist/types/src/extensions/markdown/bundle.d.ts.map +1 -1
  55. package/dist/types/src/extensions/markdown/changes.d.ts.map +1 -1
  56. package/dist/types/src/extensions/markdown/debug.d.ts.map +1 -1
  57. package/dist/types/src/extensions/markdown/decorate.d.ts.map +1 -1
  58. package/dist/types/src/extensions/markdown/formatting.d.ts.map +1 -1
  59. package/dist/types/src/extensions/markdown/highlight.d.ts.map +1 -1
  60. package/dist/types/src/extensions/markdown/image.d.ts.map +1 -1
  61. package/dist/types/src/extensions/markdown/link.d.ts.map +1 -1
  62. package/dist/types/src/extensions/markdown/table.d.ts.map +1 -1
  63. package/dist/types/src/extensions/mention.d.ts.map +1 -1
  64. package/dist/types/src/extensions/modes.d.ts +5 -5
  65. package/dist/types/src/extensions/modes.d.ts.map +1 -1
  66. package/dist/types/src/extensions/preview/preview.d.ts.map +1 -1
  67. package/dist/types/src/extensions/selection.d.ts.map +1 -1
  68. package/dist/types/src/extensions/typewriter.d.ts.map +1 -1
  69. package/dist/types/src/hooks/index.d.ts +0 -1
  70. package/dist/types/src/hooks/index.d.ts.map +1 -1
  71. package/dist/types/src/hooks/useTextEditor.d.ts.map +1 -1
  72. package/dist/types/src/stories/story-utils.d.ts.map +1 -1
  73. package/dist/types/src/testing/RefPopover.d.ts.map +1 -1
  74. package/dist/types/src/util/cursor.d.ts.map +1 -1
  75. package/dist/types/src/util/debug.d.ts.map +1 -1
  76. package/dist/types/src/util/dom.d.ts.map +1 -1
  77. package/dist/types/src/util/facet.d.ts.map +1 -1
  78. package/dist/types/src/util/react.d.ts.map +1 -1
  79. package/dist/types/tsconfig.tsbuildinfo +1 -1
  80. package/package.json +30 -28
  81. package/src/components/EditorToolbar/EditorToolbar.stories.tsx +90 -0
  82. package/src/components/EditorToolbar/EditorToolbar.tsx +30 -31
  83. package/src/components/EditorToolbar/blocks.ts +27 -6
  84. package/src/components/EditorToolbar/comment.ts +11 -4
  85. package/src/components/EditorToolbar/formatting.ts +34 -7
  86. package/src/components/EditorToolbar/headings.ts +9 -8
  87. package/src/components/EditorToolbar/image.ts +16 -0
  88. package/src/components/EditorToolbar/lists.ts +26 -7
  89. package/src/components/EditorToolbar/search.ts +19 -0
  90. package/src/components/EditorToolbar/util.ts +14 -14
  91. package/src/components/EditorToolbar/view-mode.ts +9 -8
  92. package/src/extensions/modes.ts +5 -6
  93. package/src/extensions/preview/preview.ts +1 -1
  94. package/src/hooks/index.ts +0 -1
  95. package/src/testing/RefPopover.tsx +4 -4
  96. package/dist/types/src/hooks/useActionHandler.d.ts +0 -4
  97. package/dist/types/src/hooks/useActionHandler.d.ts.map +0 -1
  98. package/dist/types/src/stories/InputMode.stories.d.ts.map +0 -1
  99. package/src/hooks/useActionHandler.ts +0 -12
  100. package/src/stories/InputMode.stories.tsx +0 -124
@@ -2,21 +2,23 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { type EditorView } from '@codemirror/view';
5
6
  import { useMemo } from 'react';
6
7
 
8
+ import { type Action } from '@dxos/app-graph';
7
9
  import { live, type Live } from '@dxos/live-object';
8
- import { type Label, type ThemedClassName } from '@dxos/react-ui';
10
+ import { type ThemedClassName } from '@dxos/react-ui';
9
11
  import {
10
12
  type MenuSeparator,
11
13
  type MenuItemGroup,
12
14
  type ToolbarMenuActionGroupProperties,
13
- type MenuActionProperties,
14
15
  createMenuAction,
15
16
  createMenuItemGroup,
16
17
  type ActionGraphProps,
18
+ type MenuActionProperties,
17
19
  } from '@dxos/react-ui-menu';
18
20
 
19
- import type { EditorAction, EditorActionPayload, EditorViewMode, Formatting } from '../../extensions';
21
+ import type { EditorAction, EditorViewMode, Formatting } from '../../extensions';
20
22
  import { translationKey } from '../../translations';
21
23
 
22
24
  export type EditorToolbarState = Formatting &
@@ -31,16 +33,18 @@ export type EditorToolbarFeatureFlags = Partial<{
31
33
  formatting: boolean;
32
34
  lists: boolean;
33
35
  blocks: boolean;
34
- comment: boolean;
35
36
  search: boolean;
36
- viewMode: boolean;
37
+ // TODO(wittjosiah): Factor out. Depend on plugin-level capabilities.
38
+ comment: boolean;
39
+ image: () => void;
40
+ viewMode: (mode: EditorViewMode) => void;
37
41
  }>;
38
42
 
39
43
  export type EditorToolbarActionGraphProps = {
40
44
  state: Live<EditorToolbarState>;
45
+ getView: () => EditorView;
41
46
  // TODO(wittjosiah): Control positioning.
42
47
  customActions?: () => ActionGraphProps;
43
- onAction: (action: EditorAction) => void;
44
48
  };
45
49
 
46
50
  export type EditorToolbarProps = ThemedClassName<
@@ -49,17 +53,13 @@ export type EditorToolbarProps = ThemedClassName<
49
53
 
50
54
  export type EditorToolbarItem = EditorAction | MenuItemGroup | MenuSeparator;
51
55
 
52
- export const createEditorAction = (
53
- payload: EditorActionPayload & Partial<MenuActionProperties>,
54
- icon: string,
55
- label: Label = [`${payload.type} label`, { ns: translationKey }],
56
- id: string = payload.type,
57
- ) => createMenuAction(id, { icon, label, ...payload }) as EditorAction;
56
+ export const createEditorAction = (id: string, invoke: () => void, properties: Partial<MenuActionProperties>) => {
57
+ const { label = [`${id} label`, { ns: translationKey }], ...rest } = properties;
58
+ return createMenuAction(id, invoke, { label, ...rest }) as Action<MenuActionProperties>;
59
+ };
58
60
 
59
61
  export const createEditorActionGroup = (
60
62
  id: string,
61
63
  props: Omit<ToolbarMenuActionGroupProperties, 'icon'>,
62
64
  icon?: string,
63
65
  ) => createMenuItemGroup(id, { icon, iconOnly: true, ...props });
64
-
65
- export const editorToolbarSearch = createEditorAction({ type: 'search' }, 'ph--magnifying-glass--regular');
@@ -6,6 +6,7 @@ import { type NodeArg } from '@dxos/app-graph';
6
6
  import { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';
7
7
 
8
8
  import { createEditorAction, createEditorActionGroup, type EditorToolbarState } from './util';
9
+ import { type EditorViewMode } from '../../extensions';
9
10
  import { translationKey } from '../../translations';
10
11
 
11
12
  const createViewModeGroupAction = (value: string) =>
@@ -20,24 +21,24 @@ const createViewModeGroupAction = (value: string) =>
20
21
  'ph--eye--regular',
21
22
  );
22
23
 
23
- const createViewModeActions = (value: string) =>
24
+ const createViewModeActions = (value: string, onViewModeChange: (mode: EditorViewMode) => void) =>
24
25
  Object.entries({
25
26
  preview: 'ph--eye--regular',
26
27
  source: 'ph--pencil-simple--regular',
27
28
  readonly: 'ph--pencil-slash--regular',
28
29
  }).map(([viewMode, icon]) => {
29
- return createEditorAction(
30
- { type: 'view-mode', data: viewMode, checked: viewMode === value },
30
+ const checked = viewMode === value;
31
+ return createEditorAction(`view-mode--${viewMode}`, () => onViewModeChange(viewMode as EditorViewMode), {
32
+ label: [`${viewMode} mode label`, { ns: translationKey }],
33
+ checked,
31
34
  icon,
32
- [`${viewMode} mode label`, { ns: translationKey }],
33
- `view-mode--${viewMode}`,
34
- );
35
+ });
35
36
  });
36
37
 
37
- export const createViewMode = (state: EditorToolbarState) => {
38
+ export const createViewMode = (state: EditorToolbarState, onViewModeChange: (mode: EditorViewMode) => void) => {
38
39
  const value = state.viewMode ?? 'source';
39
40
  const viewModeGroupAction = createViewModeGroupAction(value);
40
- const viewModeActions = createViewModeActions(value);
41
+ const viewModeActions = createViewModeActions(value, onViewModeChange);
41
42
  return {
42
43
  nodes: [viewModeGroupAction as NodeArg<any>, ...viewModeActions],
43
44
  edges: [
@@ -6,18 +6,17 @@ import { type Extension } from '@codemirror/state';
6
6
  import { keymap } from '@codemirror/view';
7
7
  import { vim } from '@replit/codemirror-vim';
8
8
  import { vscodeKeymap } from '@replit/codemirror-vscode-keymap';
9
-
10
- import { S } from '@dxos/echo-schema';
9
+ import { Schema } from 'effect';
11
10
 
12
11
  import { singleValueFacet } from '../util';
13
12
 
14
13
  export const EditorViewModes = ['preview', 'readonly', 'source'] as const;
15
- export const EditorViewMode = S.Union(...EditorViewModes.map((mode) => S.Literal(mode)));
16
- export type EditorViewMode = S.Schema.Type<typeof EditorViewMode>;
14
+ export const EditorViewMode = Schema.Union(...EditorViewModes.map((mode) => Schema.Literal(mode)));
15
+ export type EditorViewMode = Schema.Schema.Type<typeof EditorViewMode>;
17
16
 
18
17
  export const EditorInputModes = ['default', 'vim', 'vscode'] as const;
19
- export const EditorInputMode = S.Union(...EditorInputModes.map((mode) => S.Literal(mode)));
20
- export type EditorInputMode = S.Schema.Type<typeof EditorInputMode>;
18
+ export const EditorInputMode = Schema.Union(...EditorInputModes.map((mode) => Schema.Literal(mode)));
19
+ export type EditorInputMode = Schema.Schema.Type<typeof EditorInputMode>;
21
20
 
22
21
  export type EditorInputConfig = {
23
22
  type?: string;
@@ -186,7 +186,7 @@ class PreviewInlineWidget extends WidgetType {
186
186
 
187
187
  override toDOM(view: EditorView) {
188
188
  const root = document.createElement('dx-ref-tag');
189
- root.setAttribute('label', this._link.label);
189
+ root.textContent = this._link.label;
190
190
  root.setAttribute('ref', this._link.ref);
191
191
  return root;
192
192
  }
@@ -2,5 +2,4 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export * from './useActionHandler';
6
5
  export * from './useTextEditor';
@@ -3,10 +3,10 @@
3
3
  //
4
4
 
5
5
  import { createContext } from '@radix-ui/react-context';
6
- import React, { type PropsWithChildren, useRef, useState, useEffect, useCallback } from 'react';
6
+ import React, { type PropsWithChildren, useRef, useState, useEffect, useCallback, type RefObject } from 'react';
7
7
 
8
8
  import { addEventListener } from '@dxos/async';
9
- import { type DxRefTagActivate } from '@dxos/lit-ui';
9
+ import { type DxRefTag, type DxRefTagActivate } from '@dxos/lit-ui';
10
10
  import { Popover } from '@dxos/react-ui';
11
11
 
12
12
  import { type PreviewLinkRef, type PreviewLinkTarget, type PreviewLookup } from '../extensions';
@@ -21,7 +21,7 @@ const [RefPopoverContextProvider, useRefPopover] = createContext<RefPopoverValue
21
21
  type RefPopoverProviderProps = PropsWithChildren<{ onLookup?: PreviewLookup }>;
22
22
 
23
23
  const RefPopoverProvider = ({ children, onLookup }: RefPopoverProviderProps) => {
24
- const trigger = useRef<HTMLButtonElement | null>(null);
24
+ const trigger = useRef<DxRefTag | null>(null);
25
25
  const [value, setValue] = useState<RefPopoverValue>({});
26
26
  const [rootRef, setRootRef] = useState<HTMLDivElement | null>(null);
27
27
  const [open, setOpen] = useState(false);
@@ -56,7 +56,7 @@ const RefPopoverProvider = ({ children, onLookup }: RefPopoverProviderProps) =>
56
56
  return (
57
57
  <RefPopoverContextProvider pending={value.pending} link={value.link} target={value.target}>
58
58
  <Popover.Root open={open} onOpenChange={setOpen}>
59
- <Popover.VirtualTrigger virtualRef={trigger} />
59
+ <Popover.VirtualTrigger virtualRef={trigger as unknown as RefObject<HTMLButtonElement>} />
60
60
  <div role='none' className='contents' ref={setRootRef}>
61
61
  {children}
62
62
  </div>
@@ -1,4 +0,0 @@
1
- import { type EditorView } from '@codemirror/view';
2
- import { type EditorAction } from '../extensions';
3
- export declare const useActionHandler: (view?: EditorView | null) => (action: EditorAction) => void | null | undefined;
4
- //# sourceMappingURL=useActionHandler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useActionHandler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useActionHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,eAAe,CAAC;AAExE,eAAO,MAAM,gBAAgB,UAAW,UAAU,GAAG,IAAI,cAC3B,YAAY,4BACzC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputMode.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/InputMode.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,KAAmB,MAAM,OAAO,CAAC;AAiBxC,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGpF,KAAK,UAAU,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,kBAAkB,CAAC;AAqEpF,eAAO,MAAM,OAAO;;CAanB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAC;;;iEAxFwE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FpF,wBAKE"}
@@ -1,12 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { type EditorView } from '@codemirror/view';
6
- import { useCallback } from 'react';
7
-
8
- import { type EditorAction, processEditorPayload } from '../extensions';
9
-
10
- export const useActionHandler = (view?: EditorView | null) => {
11
- return useCallback((action: EditorAction) => view && processEditorPayload(view, action.properties), [view]);
12
- };
@@ -1,124 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import React, { useState } from 'react';
8
-
9
- import { Toolbar as NaturalToolbar, Select, useThemeContext } from '@dxos/react-ui';
10
- import { attentionSurface, mx } from '@dxos/react-ui-theme';
11
- import { withLayout, withTheme } from '@dxos/storybook-utils';
12
-
13
- import { EditorToolbar, useEditorToolbarState } from '../components';
14
- import {
15
- type EditorInputMode,
16
- decorateMarkdown,
17
- createMarkdownExtensions,
18
- formattingKeymap,
19
- useFormattingState,
20
- createBasicExtensions,
21
- createThemeExtensions,
22
- InputModeExtensions,
23
- } from '../extensions';
24
- import { useActionHandler, useTextEditor, type UseTextEditorProps } from '../hooks';
25
- import translations from '../translations';
26
-
27
- type StoryProps = { placeholder?: string; readOnly?: boolean } & UseTextEditorProps;
28
-
29
- const DefaultStory = ({ autoFocus, initialValue, placeholder, readOnly }: StoryProps) => {
30
- const { themeMode } = useThemeContext();
31
- const toolbarState = useEditorToolbarState({ viewMode: 'source' });
32
- const trackFormatting = useFormattingState(toolbarState);
33
- const [editorInputMode, _setEditorInputMode] = useState<EditorInputMode>('default');
34
- const { parentRef, view } = useTextEditor(
35
- () => ({
36
- autoFocus,
37
- initialValue,
38
- moveToEndOfLine: true,
39
- extensions: [
40
- editorInputMode ? InputModeExtensions[editorInputMode] : [],
41
- createBasicExtensions({ placeholder, lineWrapping: true, readOnly }),
42
- createMarkdownExtensions({ themeMode }),
43
- createThemeExtensions({ themeMode, syntaxHighlighting: true }),
44
- decorateMarkdown(),
45
- formattingKeymap(),
46
- trackFormatting,
47
- ],
48
- }),
49
- [editorInputMode, themeMode, placeholder, readOnly],
50
- );
51
-
52
- const handleAction = useActionHandler(view);
53
-
54
- // TODO(marijn): This doesn't update the state on view changes.
55
- // Also not sure if view is even guaranteed to exist at this point.
56
- return (
57
- <div role='none' className={mx('fixed inset-0 flex flex-col')}>
58
- {toolbarState && <EditorToolbar onAction={handleAction} state={toolbarState} />}
59
- <div role='none' className='grow overflow-hidden'>
60
- <div className={attentionSurface} ref={parentRef} />
61
- </div>
62
- </div>
63
- );
64
- };
65
-
66
- const _EditorInputModeToolbar = ({
67
- editorInputMode,
68
- setEditorInputMode,
69
- }: {
70
- editorInputMode: EditorInputMode;
71
- setEditorInputMode: (mode: EditorInputMode) => void;
72
- }) => {
73
- return (
74
- <Select.Root value={editorInputMode} onValueChange={(value) => setEditorInputMode(value as EditorInputMode)}>
75
- <NaturalToolbar.Button asChild>
76
- <Select.TriggerButton variant='ghost'>{editorInputMode}</Select.TriggerButton>
77
- </NaturalToolbar.Button>
78
- <Select.Portal>
79
- <Select.Content>
80
- <Select.ScrollUpButton />
81
- <Select.Viewport>
82
- {['default', 'vim'].map((mode) => (
83
- <Select.Option key={mode} value={mode}>
84
- {mode}
85
- </Select.Option>
86
- ))}
87
- </Select.Viewport>
88
- <Select.ScrollDownButton />
89
- <Select.Arrow />
90
- </Select.Content>
91
- </Select.Portal>
92
- </Select.Root>
93
- );
94
- };
95
-
96
- export const Default = {
97
- render: () => {
98
- const { themeMode } = useThemeContext();
99
- const { parentRef } = useTextEditor({
100
- extensions: [
101
- //
102
- createBasicExtensions({ placeholder: 'Enter text...' }),
103
- createThemeExtensions({ themeMode }),
104
- ],
105
- });
106
-
107
- return <div ref={parentRef} className={attentionSurface} />;
108
- },
109
- };
110
-
111
- export const Markdown = {
112
- args: {
113
- autoFocus: true,
114
- placeholder: 'Text...',
115
- initialValue: '# Demo\n\nThis is a document.\n\n',
116
- },
117
- };
118
-
119
- export default {
120
- title: 'ui/react-ui-editor/InputMode',
121
- render: DefaultStory,
122
- decorators: [withTheme, withLayout({ fullscreen: true, tooltips: true })],
123
- parameters: { translations, layout: 'fullscreen' },
124
- };