@edifice.io/react 2.2.3-develop-b2school.20250416174212 → 2.2.3-develop-integration.20250417103951
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Combobox/Combobox.d.ts +5 -56
- package/dist/components/Combobox/Combobox.js +7 -16
- package/dist/components/Combobox/ComboboxTrigger.d.ts +2 -31
- package/dist/components/Combobox/ComboboxTrigger.js +8 -31
- package/dist/components/Dropdown/Dropdown.d.ts +2 -10
- package/dist/components/Dropdown/Dropdown.js +3 -5
- package/dist/components/Dropdown/DropdownItem.d.ts +1 -5
- package/dist/components/Dropdown/DropdownItem.js +1 -4
- package/dist/components/Dropdown/DropdownTrigger.js +1 -5
- package/dist/components/List/List.d.ts +1 -9
- package/dist/components/List/List.js +9 -9
- package/dist/components/SearchBar/SearchBar.d.ts +1 -1
- package/dist/components/SearchBar/SearchBar.js +1 -3
- package/dist/editor.js +28 -28
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/useCheckable/useCheckable.js +3 -10
- package/dist/hooks/useConversation/useConversation.d.ts +1 -1
- package/dist/hooks/useConversation/useConversation.js +17 -13
- package/dist/hooks/useDropdown/useDropdown.d.ts +1 -2
- package/dist/hooks/useDropdown/useDropdown.js +3 -5
- package/dist/icons.js +266 -280
- package/dist/index.d.ts +0 -1
- package/dist/index.js +20 -48
- package/dist/modals.js +14 -16
- package/dist/modules/editor/components/Editor/CantooAdaptTextBoxView.d.ts +7 -0
- package/dist/modules/editor/components/Editor/CantooAdaptTextBoxView.js +32 -0
- package/dist/modules/editor/components/Editor/Editor.d.ts +1 -3
- package/dist/modules/editor/components/Editor/Editor.js +18 -9
- package/dist/modules/editor/components/EditorToolbar/EditorToolbar.Cantoo.d.ts +12 -0
- package/dist/modules/editor/components/EditorToolbar/EditorToolbar.Cantoo.js +97 -0
- package/dist/modules/editor/components/EditorToolbar/EditorToolbar.d.ts +4 -1
- package/dist/modules/editor/components/EditorToolbar/EditorToolbar.js +19 -4
- package/dist/modules/editor/components/NodeView/index.d.ts +1 -2
- package/dist/modules/editor/components/Renderer/index.d.ts +1 -2
- package/dist/modules/editor/hooks/index.d.ts +2 -0
- package/dist/modules/editor/hooks/useCantooAdaptTextBox.d.ts +15 -0
- package/dist/modules/editor/hooks/useCantooAdaptTextBox.js +29 -0
- package/dist/modules/editor/hooks/useCantooEditor.d.ts +9 -0
- package/dist/modules/editor/hooks/useCantooEditor.js +55 -0
- package/dist/modules/editor/hooks/useTipTapEditor.d.ts +2 -6
- package/dist/modules/editor/hooks/useTipTapEditor.js +2 -2
- package/dist/modules/icons/components/{IconGlobe2.d.ts → IconCantoo.d.ts} +2 -2
- package/dist/modules/icons/components/IconCantoo.js +23 -0
- package/dist/modules/icons/components/IconMicOff.d.ts +7 -0
- package/dist/modules/icons/components/IconMicOff.js +12 -0
- package/dist/modules/icons/components/IconTextToSpeechOff.d.ts +7 -0
- package/dist/modules/icons/components/IconTextToSpeechOff.js +12 -0
- package/dist/modules/icons/components/index.d.ts +3 -10
- package/dist/modules/modals/index.d.ts +0 -1
- package/dist/modules/multimedia/index.d.ts +0 -1
- package/dist/multimedia.js +1 -3
- package/package.json +6 -6
- package/dist/hooks/useWorkspaceFolders/index.d.ts +0 -2
- package/dist/hooks/useWorkspaceFolders/useWorkspaceFolders.d.ts +0 -28
- package/dist/hooks/useWorkspaceFolders/useWorkspaceFolders.js +0 -74
- package/dist/modules/editor/components/NodeView/ConversationHistoryNodeView.d.ts +0 -2
- package/dist/modules/editor/components/NodeView/ConversationHistoryNodeView.js +0 -10
- package/dist/modules/editor/components/Renderer/ConversationHistoryRenderer.d.ts +0 -8
- package/dist/modules/editor/components/Renderer/ConversationHistoryRenderer.js +0 -28
- package/dist/modules/icons/components/IconFolderAdd.d.ts +0 -7
- package/dist/modules/icons/components/IconFolderAdd.js +0 -13
- package/dist/modules/icons/components/IconFolderDelete.d.ts +0 -7
- package/dist/modules/icons/components/IconFolderDelete.js +0 -12
- package/dist/modules/icons/components/IconGlobe2.js +0 -16
- package/dist/modules/icons/components/IconGroupAvatar.d.ts +0 -7
- package/dist/modules/icons/components/IconGroupAvatar.js +0 -12
- package/dist/modules/icons/components/IconMailRecall.d.ts +0 -7
- package/dist/modules/icons/components/IconMailRecall.js +0 -13
- package/dist/modules/icons/components/IconQuestionMark.d.ts +0 -7
- package/dist/modules/icons/components/IconQuestionMark.js +0 -13
- package/dist/modules/icons/components/IconReadMail.d.ts +0 -7
- package/dist/modules/icons/components/IconReadMail.js +0 -16
- package/dist/modules/icons/components/IconSignature.d.ts +0 -7
- package/dist/modules/icons/components/IconSignature.js +0 -13
- package/dist/modules/icons/components/IconUndoAll.d.ts +0 -7
- package/dist/modules/icons/components/IconUndoAll.js +0 -14
- package/dist/modules/icons/components/IconUnreadMail.d.ts +0 -7
- package/dist/modules/icons/components/IconUnreadMail.js +0 -16
- package/dist/modules/modals/ConfirmModal/ConfirmModal.d.ts +0 -47
- package/dist/modules/modals/ConfirmModal/ConfirmModal.js +0 -37
- package/dist/modules/modals/ConfirmModal/index.d.ts +0 -1
- package/dist/modules/multimedia/WorkspaceFolders/WorkspaceFolders.d.ts +0 -8
- package/dist/modules/multimedia/WorkspaceFolders/WorkspaceFolders.js +0 -31
- package/dist/modules/multimedia/WorkspaceFolders/index.d.ts +0 -1
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -72,27 +72,16 @@ import { default as default71 } from "./hooks/useUpload/useUpload.js";
|
|
|
72
72
|
import { default as default72 } from "./hooks/useUploadFiles/useUploadFiles.js";
|
|
73
73
|
import { default as default73 } from "./hooks/useUser/useUser.js";
|
|
74
74
|
import { default as default74 } from "./hooks/useWorkspaceFile/useWorkspaceFile.js";
|
|
75
|
-
import {
|
|
76
|
-
import { default as default76 } from "./hooks/
|
|
77
|
-
import { default as default77 } from "./hooks/
|
|
78
|
-
import { default as default78 } from "./
|
|
79
|
-
import { default as default79 } from "./modules/modals/
|
|
80
|
-
import { default as default80 } from "./modules/modals/
|
|
81
|
-
import { default as default81 } from "./modules/modals/
|
|
82
|
-
import { default as default82 } from "./modules/modals/
|
|
83
|
-
import { default as default83 } from "./modules/modals/
|
|
84
|
-
import { default as default84 } from "./modules/modals/ShareModal/
|
|
85
|
-
import { default as default85 } from "./modules/modals/ShareModal/apps/ShareBlog.js";
|
|
86
|
-
import { default as default86 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
|
|
87
|
-
import { default as default87 } from "./modules/multimedia/AudioRecorder/AudioRecorder.js";
|
|
88
|
-
import { default as default88 } from "./modules/multimedia/Embed/Embed.js";
|
|
89
|
-
import { default as default89 } from "./modules/multimedia/ImageEditor/components/ImageEditor.js";
|
|
90
|
-
import { default as default90 } from "./modules/multimedia/ImagePicker/ImagePicker.js";
|
|
91
|
-
import { default as default91 } from "./modules/multimedia/MediaLibrary/MediaLibrary.js";
|
|
92
|
-
import { default as default92 } from "./modules/multimedia/VideoEmbed/VideoEmbed.js";
|
|
93
|
-
import { default as default93 } from "./modules/multimedia/VideoRecorder/VideoRecorder.js";
|
|
94
|
-
import { default as default94 } from "./modules/multimedia/Workspace/Workspace.js";
|
|
95
|
-
import { default as default95 } from "./modules/multimedia/WorkspaceFolders/WorkspaceFolders.js";
|
|
75
|
+
import { default as default75 } from "./hooks/useWorkspaceSearch/useWorkspaceSearch.js";
|
|
76
|
+
import { default as default76 } from "./hooks/useXitiTrackPageLoad/useXitiTrackPageLoad.js";
|
|
77
|
+
import { default as default77 } from "./hooks/useZendeskGuide/useZendeskGuide.js";
|
|
78
|
+
import { default as default78 } from "./modules/modals/OnboardingModal/OnboardingModal.js";
|
|
79
|
+
import { default as default79 } from "./modules/modals/PublishModal/PublishModal.js";
|
|
80
|
+
import { default as default80 } from "./modules/modals/ResourceModal/apps/BlogPublic.js";
|
|
81
|
+
import { default as default81 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
|
|
82
|
+
import { default as default82 } from "./modules/modals/ShareModal/ShareModal.js";
|
|
83
|
+
import { default as default83 } from "./modules/modals/ShareModal/apps/ShareBlog.js";
|
|
84
|
+
import { default as default84 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
|
|
96
85
|
import { AccessiblePalette, DefaultPalette } from "./components/ColorPicker/ColorPalette.js";
|
|
97
86
|
import { DropzoneContext, useDropzoneContext } from "./components/Dropzone/DropzoneContext.js";
|
|
98
87
|
import { Column, Grid } from "./components/Grid/Grid.js";
|
|
@@ -109,8 +98,6 @@ import { TreeNode } from "./components/TreeView/TreeNode.js";
|
|
|
109
98
|
import { TreeNodeFolderWrapper, addNode, arrayUnique, deleteNode, findNodeById, findParentNode, findPathById, findTreeNode, getAncestors, hasChildren, modifyNode, moveNode, updateNode, wrapTreeNode } from "./components/TreeView/utilities/treeview.js";
|
|
110
99
|
import { useCheckable } from "./hooks/useCheckable/useCheckable.js";
|
|
111
100
|
import { ResourceModal } from "./modules/modals/ResourceModal/ResourceModal.js";
|
|
112
|
-
import { ExternalLinker } from "./modules/multimedia/Linker/ExternalLinker/ExternalLinker.js";
|
|
113
|
-
import { InternalLinker } from "./modules/multimedia/Linker/InternalLinker/InternalLinker.js";
|
|
114
101
|
import { EdificeClientProvider } from "./providers/EdificeClientProvider/EdificeClientProvider.js";
|
|
115
102
|
import { EdificeClientContext } from "./providers/EdificeClientProvider/EdificeClientProvider.context.js";
|
|
116
103
|
import { useEdificeClient } from "./providers/EdificeClientProvider/EdificeClientProvider.hook.js";
|
|
@@ -128,11 +115,10 @@ export {
|
|
|
128
115
|
default4 as AppHeader,
|
|
129
116
|
default5 as AppIcon,
|
|
130
117
|
default6 as Attachment,
|
|
131
|
-
default87 as AudioRecorder,
|
|
132
118
|
default7 as Avatar,
|
|
133
119
|
default8 as AvatarGroup,
|
|
134
120
|
default9 as Badge,
|
|
135
|
-
|
|
121
|
+
default80 as BlogPublic,
|
|
136
122
|
default10 as Breadcrumb,
|
|
137
123
|
default11 as Button,
|
|
138
124
|
default14 as Card,
|
|
@@ -141,7 +127,6 @@ export {
|
|
|
141
127
|
default17 as ColorPickerItem,
|
|
142
128
|
Column,
|
|
143
129
|
default18 as Combobox,
|
|
144
|
-
default79 as ConfirmModal,
|
|
145
130
|
DefaultPalette,
|
|
146
131
|
DndTree,
|
|
147
132
|
default19 as Dropdown,
|
|
@@ -151,43 +136,37 @@ export {
|
|
|
151
136
|
EdificeClientProvider,
|
|
152
137
|
EdificeThemeContext,
|
|
153
138
|
EdificeThemeProvider,
|
|
154
|
-
default88 as Embed,
|
|
155
139
|
default21 as EmptyScreen,
|
|
156
|
-
ExternalLinker,
|
|
157
140
|
default23 as FormControl,
|
|
158
141
|
default22 as FormText,
|
|
159
142
|
Grid,
|
|
160
143
|
default24 as Heading,
|
|
161
144
|
default12 as IconButton,
|
|
162
145
|
default25 as Image,
|
|
163
|
-
default89 as ImageEditor,
|
|
164
|
-
default90 as ImagePicker,
|
|
165
146
|
default26 as Input,
|
|
166
|
-
InternalLinker,
|
|
167
147
|
default27 as Label,
|
|
168
148
|
Layout,
|
|
169
149
|
List,
|
|
170
150
|
default28 as Loading,
|
|
171
151
|
default29 as LoadingScreen,
|
|
172
152
|
default30 as Logo,
|
|
173
|
-
default91 as MediaLibrary,
|
|
174
153
|
Menu,
|
|
175
154
|
MockedProvider,
|
|
176
155
|
default31 as Modal,
|
|
177
|
-
|
|
156
|
+
default78 as OnboardingModal,
|
|
178
157
|
Popover,
|
|
179
158
|
PopoverBody,
|
|
180
159
|
PopoverFooter,
|
|
181
160
|
PopoverHeader,
|
|
182
161
|
default32 as PreventPropagation,
|
|
183
|
-
|
|
162
|
+
default79 as PublishModal,
|
|
184
163
|
default33 as Radio,
|
|
185
164
|
ResourceModal,
|
|
186
165
|
default34 as SearchBar,
|
|
187
166
|
default13 as SearchButton,
|
|
188
167
|
default35 as Select,
|
|
189
|
-
|
|
190
|
-
|
|
168
|
+
default83 as ShareBlog,
|
|
169
|
+
default82 as ShareModal,
|
|
191
170
|
default41 as SortableTree,
|
|
192
171
|
default36 as StackedGroup,
|
|
193
172
|
default37 as Switch,
|
|
@@ -200,13 +179,7 @@ export {
|
|
|
200
179
|
TreeNode,
|
|
201
180
|
TreeNodeFolderWrapper,
|
|
202
181
|
default43 as TreeView,
|
|
203
|
-
default92 as VideoEmbed,
|
|
204
|
-
default93 as VideoRecorder,
|
|
205
182
|
default44 as VisuallyHidden,
|
|
206
|
-
WORKSPACE_OWNER_FOLDER_ID,
|
|
207
|
-
WORKSPACE_SHARED_FOLDER_ID,
|
|
208
|
-
default94 as Workspace,
|
|
209
|
-
default95 as WorkspaceFolders,
|
|
210
183
|
addNode,
|
|
211
184
|
arrayUnique,
|
|
212
185
|
buildTree,
|
|
@@ -259,7 +232,7 @@ export {
|
|
|
259
232
|
default63 as useLibraryUrl,
|
|
260
233
|
default64 as useMediaLibrary,
|
|
261
234
|
default65 as useScrollToTop,
|
|
262
|
-
|
|
235
|
+
default84 as useShareMutation,
|
|
263
236
|
default66 as useTitle,
|
|
264
237
|
default67 as useToast,
|
|
265
238
|
default68 as useToggle,
|
|
@@ -267,14 +240,13 @@ export {
|
|
|
267
240
|
default70 as useTrashedResource,
|
|
268
241
|
useTreeSortable,
|
|
269
242
|
useTreeView,
|
|
270
|
-
|
|
243
|
+
default81 as useUpdateMutation,
|
|
271
244
|
default71 as useUpload,
|
|
272
245
|
default72 as useUploadFiles,
|
|
273
246
|
default73 as useUser,
|
|
274
247
|
default74 as useWorkspaceFile,
|
|
275
|
-
default75 as
|
|
276
|
-
default76 as
|
|
277
|
-
default77 as
|
|
278
|
-
default78 as useZendeskGuide,
|
|
248
|
+
default75 as useWorkspaceSearch,
|
|
249
|
+
default76 as useXitiTrackPageLoad,
|
|
250
|
+
default77 as useZendeskGuide,
|
|
279
251
|
wrapTreeNode
|
|
280
252
|
};
|
package/dist/modals.js
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import { default as default2 } from "./modules/modals/
|
|
2
|
-
import { default as default3 } from "./modules/modals/
|
|
3
|
-
import { default as default4 } from "./modules/modals/
|
|
4
|
-
import { default as default5 } from "./modules/modals/ResourceModal/
|
|
5
|
-
import { default as default6 } from "./modules/modals/
|
|
6
|
-
import { default as default7 } from "./modules/modals/ShareModal/
|
|
7
|
-
import { default as default8 } from "./modules/modals/ShareModal/
|
|
8
|
-
import { default as default9 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
|
|
1
|
+
import { default as default2 } from "./modules/modals/OnboardingModal/OnboardingModal.js";
|
|
2
|
+
import { default as default3 } from "./modules/modals/PublishModal/PublishModal.js";
|
|
3
|
+
import { default as default4 } from "./modules/modals/ResourceModal/apps/BlogPublic.js";
|
|
4
|
+
import { default as default5 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
|
|
5
|
+
import { default as default6 } from "./modules/modals/ShareModal/ShareModal.js";
|
|
6
|
+
import { default as default7 } from "./modules/modals/ShareModal/apps/ShareBlog.js";
|
|
7
|
+
import { default as default8 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
|
|
9
8
|
import { ResourceModal } from "./modules/modals/ResourceModal/ResourceModal.js";
|
|
10
9
|
export {
|
|
11
|
-
|
|
12
|
-
default2 as
|
|
13
|
-
default3 as
|
|
14
|
-
default4 as PublishModal,
|
|
10
|
+
default4 as BlogPublic,
|
|
11
|
+
default2 as OnboardingModal,
|
|
12
|
+
default3 as PublishModal,
|
|
15
13
|
ResourceModal,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
default7 as ShareBlog,
|
|
15
|
+
default6 as ShareModal,
|
|
16
|
+
default8 as useShareMutation,
|
|
17
|
+
default5 as useUpdateMutation
|
|
20
18
|
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useEffect } from "react";
|
|
3
|
+
import { useEditorContext } from "../../hooks/useEditorContext.js";
|
|
4
|
+
const CantooAdaptTextBoxView = ({
|
|
5
|
+
openPosition
|
|
6
|
+
}) => {
|
|
7
|
+
const {
|
|
8
|
+
editor
|
|
9
|
+
} = useEditorContext(), containerRef = useRef(null), Cantoo = window.Cantoo, editorHTML = editor == null ? void 0 : editor.getHTML(), cantooHTML = (Cantoo == null ? void 0 : Cantoo.formatText(editorHTML)) || editorHTML;
|
|
10
|
+
return useEffect(() => {
|
|
11
|
+
var _a;
|
|
12
|
+
openPosition != null && openPosition.bottom && ((_a = containerRef.current) == null || _a.scrollIntoView({
|
|
13
|
+
behavior: "smooth",
|
|
14
|
+
block: "start"
|
|
15
|
+
}));
|
|
16
|
+
}, []), /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17
|
+
(openPosition == null ? void 0 : openPosition.right) && /* @__PURE__ */ jsx("div", { style: {
|
|
18
|
+
width: "1px",
|
|
19
|
+
backgroundColor: "#e0e0e0",
|
|
20
|
+
margin: "0 3px"
|
|
21
|
+
} }),
|
|
22
|
+
/* @__PURE__ */ jsx("div", { style: {
|
|
23
|
+
flex: 1,
|
|
24
|
+
marginTop: openPosition != null && openPosition.bottom ? "16px" : "0px"
|
|
25
|
+
}, children: /* @__PURE__ */ jsx("div", { ref: containerRef, className: `${openPosition != null && openPosition.bottom ? "card" : ""} py-12 px-16`, children: /* @__PURE__ */ jsx("div", { dangerouslySetInnerHTML: {
|
|
26
|
+
__html: cantooHTML
|
|
27
|
+
} }) }) })
|
|
28
|
+
] });
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
CantooAdaptTextBoxView as default
|
|
32
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WorkspaceVisibility } from '@edifice.io/client';
|
|
2
|
-
import { Content,
|
|
2
|
+
import { Content, FocusPosition, JSONContent } from '@tiptap/react';
|
|
3
3
|
export interface EditorRef {
|
|
4
4
|
/** Get the current content. */
|
|
5
5
|
getContent: (as: 'html' | 'json' | 'plain') => undefined | string | JSONContent;
|
|
@@ -40,8 +40,6 @@ export interface EditorProps {
|
|
|
40
40
|
onContentChange?: ({ editor }: {
|
|
41
41
|
editor: any;
|
|
42
42
|
}) => void;
|
|
43
|
-
/** Extensions to add to the editor */
|
|
44
|
-
extensions?: Extensions;
|
|
45
43
|
}
|
|
46
44
|
declare const Editor: import('react').ForwardRefExoticComponent<EditorProps & import('react').RefAttributes<EditorRef>>;
|
|
47
45
|
export default Editor;
|
|
@@ -4,6 +4,7 @@ import { EditorContent } from "@tiptap/react";
|
|
|
4
4
|
import clsx from "clsx";
|
|
5
5
|
import "@tiptap/starter-kit";
|
|
6
6
|
import { useEdificeClient } from "../../../../providers/EdificeClientProvider/EdificeClientProvider.hook.js";
|
|
7
|
+
import { useCantooAdaptTextBox } from "../../hooks/useCantooAdaptTextBox.js";
|
|
7
8
|
import { useMathsStyles } from "../../hooks/useMathsStyles.js";
|
|
8
9
|
import { useTipTapEditor } from "../../hooks/useTipTapEditor.js";
|
|
9
10
|
import { useMediaLibraryEditor } from "../../hooks/useMediaLibraryEditor.js";
|
|
@@ -13,13 +14,13 @@ import { useLinkToolbar } from "../../hooks/useLinkToolbar.js";
|
|
|
13
14
|
import { useSpeechSynthetisis } from "../../hooks/useSpeechSynthetisis.js";
|
|
14
15
|
import { EditorContext } from "../../hooks/useEditorContext.js";
|
|
15
16
|
import { EditorToolbar } from "../EditorToolbar/EditorToolbar.js";
|
|
17
|
+
import LoadingScreen from "../../../../components/LoadingScreen/LoadingScreen.js";
|
|
16
18
|
import LinkToolbar from "../Toolbar/LinkToolbar.js";
|
|
17
19
|
import TableToolbar from "../Toolbar/TableToolbar.js";
|
|
18
20
|
import BubbleMenuEditImage from "../BubbleMenuEditImage/BubbleMenuEditImage.js";
|
|
19
21
|
import BubbleMenuEditInformationPane from "../BubbleMenuEditInformationPane/BubbleMenuEditInformationPane.js";
|
|
20
22
|
import MediaLibrary from "../../../multimedia/MediaLibrary/MediaLibrary.js";
|
|
21
|
-
import
|
|
22
|
-
const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/MathsModal.js")), ImageEditor = /* @__PURE__ */ lazy(async () => await import("../../../multimedia/ImageEditor/components/ImageEditor.js")), Editor = /* @__PURE__ */ forwardRef(({
|
|
23
|
+
const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/MathsModal.js")), ImageEditor = /* @__PURE__ */ lazy(async () => await import("../../../multimedia/ImageEditor/components/ImageEditor.js")), CantooAdaptTextBoxView = /* @__PURE__ */ lazy(async () => await import("./CantooAdaptTextBoxView.js")), Editor = /* @__PURE__ */ forwardRef(({
|
|
23
24
|
id,
|
|
24
25
|
content,
|
|
25
26
|
mode = "read",
|
|
@@ -28,21 +29,20 @@ const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/
|
|
|
28
29
|
focus = "start",
|
|
29
30
|
placeholder = "",
|
|
30
31
|
visibility = "protected",
|
|
31
|
-
onContentChange
|
|
32
|
-
extensions
|
|
32
|
+
onContentChange
|
|
33
33
|
}, ref) => {
|
|
34
34
|
const editorId = useId(), {
|
|
35
35
|
appCode
|
|
36
36
|
} = useEdificeClient(), {
|
|
37
37
|
editor,
|
|
38
38
|
editable
|
|
39
|
-
} = useTipTapEditor(mode === "edit", content, focus, placeholder, onContentChange, visibility
|
|
39
|
+
} = useTipTapEditor(mode === "edit", content, focus, placeholder, onContentChange, visibility), {
|
|
40
40
|
ref: mediaLibraryModalRef,
|
|
41
41
|
...mediaLibraryModalHandlers
|
|
42
42
|
} = useMediaLibraryEditor(editor), {
|
|
43
43
|
toggle: toggleMathsModal,
|
|
44
44
|
...mathsModalHandlers
|
|
45
|
-
} = useMathsModal(editor), imageModal = useImageModal(editor, "media-library", visibility), linkToolbarHandlers = useLinkToolbar(editor, mediaLibraryModalRef), speechSynthetisis = useSpeechSynthetisis(editor);
|
|
45
|
+
} = useMathsModal(editor), cantooAdaptTextBox = useCantooAdaptTextBox(), imageModal = useImageModal(editor, "media-library", visibility), linkToolbarHandlers = useLinkToolbar(editor, mediaLibraryModalRef), speechSynthetisis = useSpeechSynthetisis(editor);
|
|
46
46
|
if (useMathsStyles(), useImperativeHandle(ref, () => ({
|
|
47
47
|
getContent: (as) => {
|
|
48
48
|
switch (as) {
|
|
@@ -67,8 +67,16 @@ const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/
|
|
|
67
67
|
editable
|
|
68
68
|
}, children: [
|
|
69
69
|
/* @__PURE__ */ jsxs("div", { className: borderClass, children: [
|
|
70
|
-
toolbar !== "none" && editable && /* @__PURE__ */ jsx(EditorToolbar, { mediaLibraryRef: mediaLibraryModalRef, toggleMathsModal }),
|
|
71
|
-
/* @__PURE__ */
|
|
70
|
+
toolbar !== "none" && editable && /* @__PURE__ */ jsx(EditorToolbar, { mediaLibraryRef: mediaLibraryModalRef, toggleMathsModal, cantooAdaptTextBoxRef: cantooAdaptTextBox }),
|
|
71
|
+
/* @__PURE__ */ jsxs("div", { style: {
|
|
72
|
+
display: "flex",
|
|
73
|
+
flexDirection: "row"
|
|
74
|
+
}, children: [
|
|
75
|
+
/* @__PURE__ */ jsx(EditorContent, { id: id ?? editorId, editor, className: contentClass, style: {
|
|
76
|
+
flex: 1
|
|
77
|
+
} }),
|
|
78
|
+
/* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingScreen, {}), children: editable && cantooAdaptTextBox.openPosition.right && /* @__PURE__ */ jsx(CantooAdaptTextBoxView, { openPosition: cantooAdaptTextBox.openPosition }) })
|
|
79
|
+
] })
|
|
72
80
|
] }),
|
|
73
81
|
/* @__PURE__ */ jsx(LinkToolbar, { editor, ...linkToolbarHandlers }),
|
|
74
82
|
/* @__PURE__ */ jsx(TableToolbar, { editor }),
|
|
@@ -79,7 +87,8 @@ const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/
|
|
|
79
87
|
/* @__PURE__ */ jsxs(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingScreen, {}), children: [
|
|
80
88
|
editable && /* @__PURE__ */ jsx(MediaLibrary, { appCode, visibility, multiple: !0, ref: mediaLibraryModalRef, ...mediaLibraryModalHandlers }),
|
|
81
89
|
editable && mathsModalHandlers.isOpen && /* @__PURE__ */ jsx(MathsModal, { ...mathsModalHandlers }),
|
|
82
|
-
editable && (imageModal == null ? void 0 : imageModal.isOpen) && (imageModal == null ? void 0 : imageModal.currentImage) && /* @__PURE__ */ jsx(ImageEditor, { altText: imageModal == null ? void 0 : imageModal.currentImage.alt, legend: imageModal == null ? void 0 : imageModal.currentImage.title, image: imageModal == null ? void 0 : imageModal.currentImage.src, isOpen: imageModal.isOpen, onCancel: imageModal.handleCancel, onSave: imageModal.handleSave, onError: console.error })
|
|
90
|
+
editable && (imageModal == null ? void 0 : imageModal.isOpen) && (imageModal == null ? void 0 : imageModal.currentImage) && /* @__PURE__ */ jsx(ImageEditor, { altText: imageModal == null ? void 0 : imageModal.currentImage.alt, legend: imageModal == null ? void 0 : imageModal.currentImage.title, image: imageModal == null ? void 0 : imageModal.currentImage.src, isOpen: imageModal.isOpen, onCancel: imageModal.handleCancel, onSave: imageModal.handleSave, onError: console.error }),
|
|
91
|
+
editable && cantooAdaptTextBox.openPosition.bottom && /* @__PURE__ */ jsx(CantooAdaptTextBoxView, { openPosition: cantooAdaptTextBox.openPosition })
|
|
83
92
|
] })
|
|
84
93
|
] });
|
|
85
94
|
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RefAttributes } from 'react';
|
|
2
|
+
import { IconButtonProps } from '../../../../components';
|
|
3
|
+
interface Props {
|
|
4
|
+
triggerProps: JSX.IntrinsicAttributes & Omit<IconButtonProps, 'ref'> & RefAttributes<HTMLButtonElement>;
|
|
5
|
+
handleOpenCantooAdaptTextBox: (position: string) => void;
|
|
6
|
+
cantooAdaptTextBoxOpenPosition: {
|
|
7
|
+
right: boolean;
|
|
8
|
+
bottom: boolean;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare const EditorToolbarCantoo: ({ triggerProps, handleOpenCantooAdaptTextBox, cantooAdaptTextBoxOpenPosition, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment as Fragment$1 } from "react";
|
|
3
|
+
import { useTranslation } from "react-i18next";
|
|
4
|
+
import SvgIconCantoo from "../../../icons/components/IconCantoo.js";
|
|
5
|
+
import SvgIconDeleteColumnHighlight from "../../../icons/components/IconDeleteColumnHighlight.js";
|
|
6
|
+
import SvgIconDeleteRowHighlight from "../../../icons/components/IconDeleteRowHighlight.js";
|
|
7
|
+
import SvgIconMicOff from "../../../icons/components/IconMicOff.js";
|
|
8
|
+
import SvgIconMic from "../../../icons/components/IconMic.js";
|
|
9
|
+
import SvgIconSettings from "../../../icons/components/IconSettings.js";
|
|
10
|
+
import SvgIconTextToSpeechOff from "../../../icons/components/IconTextToSpeechOff.js";
|
|
11
|
+
import SvgIconTextToSpeech from "../../../icons/components/IconTextToSpeech.js";
|
|
12
|
+
import SvgIconWand from "../../../icons/components/IconWand.js";
|
|
13
|
+
import { useCantooEditor } from "../../hooks/useCantooEditor.js";
|
|
14
|
+
import { useEditorContext } from "../../hooks/useEditorContext.js";
|
|
15
|
+
import Tooltip from "../../../../components/Tooltip/Tooltip.js";
|
|
16
|
+
import IconButton from "../../../../components/Button/IconButton.js";
|
|
17
|
+
import Dropdown from "../../../../components/Dropdown/Dropdown.js";
|
|
18
|
+
import { useEdificeClient } from "../../../../providers/EdificeClientProvider/EdificeClientProvider.hook.js";
|
|
19
|
+
const EditorToolbarCantoo = ({
|
|
20
|
+
triggerProps,
|
|
21
|
+
handleOpenCantooAdaptTextBox,
|
|
22
|
+
cantooAdaptTextBoxOpenPosition
|
|
23
|
+
}) => {
|
|
24
|
+
const {
|
|
25
|
+
t
|
|
26
|
+
} = useTranslation(), {
|
|
27
|
+
editor
|
|
28
|
+
} = useEditorContext(), {
|
|
29
|
+
appCode
|
|
30
|
+
} = useEdificeClient(), {
|
|
31
|
+
speech2textIsActive,
|
|
32
|
+
text2speechIsActive,
|
|
33
|
+
toggleSpeech2Text,
|
|
34
|
+
toggleText2Speech,
|
|
35
|
+
toogleSettings
|
|
36
|
+
} = useCantooEditor(editor), cantooOptionsAdaptText = [{
|
|
37
|
+
id: "right",
|
|
38
|
+
label: t("tiptap.toolbar.cantoo.formatText.show.on.right"),
|
|
39
|
+
icon: /* @__PURE__ */ jsx(SvgIconDeleteColumnHighlight, {}),
|
|
40
|
+
className: cantooAdaptTextBoxOpenPosition.right ? "fw-bold" : "",
|
|
41
|
+
action: () => handleOpenCantooAdaptTextBox("right")
|
|
42
|
+
}, {
|
|
43
|
+
id: "bottom",
|
|
44
|
+
label: t("tiptap.toolbar.cantoo.formatText.show.on.bottom"),
|
|
45
|
+
icon: /* @__PURE__ */ jsx(SvgIconDeleteRowHighlight, {}),
|
|
46
|
+
className: cantooAdaptTextBoxOpenPosition.bottom ? "fw-bold" : "",
|
|
47
|
+
action: () => handleOpenCantooAdaptTextBox("bottom")
|
|
48
|
+
}], cantooOptions = appCode === "collaborativewall" ? [{
|
|
49
|
+
id: "formatText",
|
|
50
|
+
label: t("tiptap.toolbar.cantoo.formatText"),
|
|
51
|
+
className: cantooAdaptTextBoxOpenPosition.bottom ? "fw-bold" : "",
|
|
52
|
+
icon: /* @__PURE__ */ jsx(SvgIconWand, {}),
|
|
53
|
+
action: () => handleOpenCantooAdaptTextBox("bottom")
|
|
54
|
+
}, {
|
|
55
|
+
id: "speech2text",
|
|
56
|
+
label: t("tiptap.toolbar.cantoo.speech2text"),
|
|
57
|
+
className: speech2textIsActive ? "fw-bold" : "",
|
|
58
|
+
icon: speech2textIsActive ? /* @__PURE__ */ jsx(SvgIconMicOff, {}) : /* @__PURE__ */ jsx(SvgIconMic, {}),
|
|
59
|
+
action: () => toggleSpeech2Text()
|
|
60
|
+
}, {
|
|
61
|
+
id: "text2speech",
|
|
62
|
+
label: t("tiptap.toolbar.cantoo.text2speech"),
|
|
63
|
+
className: text2speechIsActive ? "fw-bold" : "",
|
|
64
|
+
icon: text2speechIsActive ? /* @__PURE__ */ jsx(SvgIconTextToSpeechOff, {}) : /* @__PURE__ */ jsx(SvgIconTextToSpeech, {}),
|
|
65
|
+
action: () => toggleText2Speech()
|
|
66
|
+
}] : [{
|
|
67
|
+
id: "speech2text",
|
|
68
|
+
label: t("tiptap.toolbar.cantoo.speech2text"),
|
|
69
|
+
className: speech2textIsActive ? "fw-bold" : "",
|
|
70
|
+
icon: speech2textIsActive ? /* @__PURE__ */ jsx(SvgIconMicOff, {}) : /* @__PURE__ */ jsx(SvgIconMic, {}),
|
|
71
|
+
action: () => toggleSpeech2Text()
|
|
72
|
+
}, {
|
|
73
|
+
id: "text2speech",
|
|
74
|
+
label: t("tiptap.toolbar.cantoo.text2speech"),
|
|
75
|
+
className: text2speechIsActive ? "fw-bold" : "",
|
|
76
|
+
icon: text2speechIsActive ? /* @__PURE__ */ jsx(SvgIconTextToSpeechOff, {}) : /* @__PURE__ */ jsx(SvgIconTextToSpeech, {}),
|
|
77
|
+
action: () => toggleText2Speech()
|
|
78
|
+
}, {
|
|
79
|
+
id: "settings",
|
|
80
|
+
label: t("tiptap.toolbar.cantoo.settings"),
|
|
81
|
+
icon: /* @__PURE__ */ jsx(SvgIconSettings, {}),
|
|
82
|
+
action: () => toogleSettings()
|
|
83
|
+
}];
|
|
84
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
85
|
+
/* @__PURE__ */ jsx(Tooltip, { message: t("tiptap.toolbar.cantoo.choice"), placement: "top", children: /* @__PURE__ */ jsx(IconButton, { ...triggerProps, type: "button", variant: "ghost", color: "tertiary", icon: /* @__PURE__ */ jsx(SvgIconCantoo, {}), className: speech2textIsActive || text2speechIsActive || cantooAdaptTextBoxOpenPosition.right || cantooAdaptTextBoxOpenPosition.bottom ? "is-selected" : "", "aria-label": t("tiptap.toolbar.cantoo.choice") }) }),
|
|
86
|
+
/* @__PURE__ */ jsxs(Dropdown.Menu, { children: [
|
|
87
|
+
appCode != "collaborativewall" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
88
|
+
/* @__PURE__ */ jsx(Dropdown.MenuGroup, { label: t("tiptap.toolbar.cantoo.formatText"), children: cantooOptionsAdaptText.map((option) => /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx(Dropdown.Item, { onClick: option.action, icon: option.icon, className: option.className, children: /* @__PURE__ */ jsx("span", { children: option.label }) }) }, option.id)) }),
|
|
89
|
+
/* @__PURE__ */ jsx(Dropdown.Separator, {})
|
|
90
|
+
] }),
|
|
91
|
+
cantooOptions.map((option) => /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx(Dropdown.Item, { onClick: option.action, icon: option.icon, children: /* @__PURE__ */ jsx("span", { className: option.className, children: option.label }) }) }, option.id))
|
|
92
|
+
] })
|
|
93
|
+
] });
|
|
94
|
+
};
|
|
95
|
+
export {
|
|
96
|
+
EditorToolbarCantoo
|
|
97
|
+
};
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { RefObject } from 'react';
|
|
2
2
|
import { MediaLibraryRef } from '../../../multimedia';
|
|
3
|
+
import { CantooAdaptTextBox } from '../../hooks/useCantooAdaptTextBox.ts';
|
|
3
4
|
interface Props {
|
|
4
5
|
/** Ref to a MediaLibrary instance */
|
|
5
6
|
mediaLibraryRef: RefObject<MediaLibraryRef>;
|
|
6
7
|
/** API to open/close a Math modal. */
|
|
7
8
|
toggleMathsModal: () => void;
|
|
9
|
+
/** API to open/close a Cantoo modal. */
|
|
10
|
+
cantooAdaptTextBoxRef: CantooAdaptTextBox;
|
|
8
11
|
}
|
|
9
|
-
export declare const EditorToolbar: ({ mediaLibraryRef, toggleMathsModal }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare const EditorToolbar: ({ mediaLibraryRef, toggleMathsModal, cantooAdaptTextBoxRef, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
10
13
|
export {};
|
|
@@ -27,20 +27,25 @@ import { EditorToolbarPlusMenu } from "./EditorToolbar.PlusMenu.js";
|
|
|
27
27
|
import { EditorToolbarTextColor } from "./EditorToolbar.TextColor.js";
|
|
28
28
|
import { EditorToolbarTextSize } from "./EditorToolbar.TextSize.js";
|
|
29
29
|
import { EditorToolbarTypography } from "./EditorToolbar.Typography.js";
|
|
30
|
-
import {
|
|
30
|
+
import { EditorToolbarCantoo } from "./EditorToolbar.Cantoo.js";
|
|
31
|
+
import { useCantooEditor } from "../../hooks/useCantooEditor.js";
|
|
31
32
|
import { useActionOptions } from "../../hooks/useActionOptions.js";
|
|
32
33
|
import { useSpeechRecognition } from "../../hooks/useSpeechRecognition.js";
|
|
34
|
+
import { useEditorContext } from "../../hooks/useEditorContext.js";
|
|
33
35
|
import { Toolbar } from "../../../../components/Toolbar/Toolbar.js";
|
|
34
36
|
const EditorToolbar = ({
|
|
35
37
|
mediaLibraryRef,
|
|
36
|
-
toggleMathsModal
|
|
38
|
+
toggleMathsModal,
|
|
39
|
+
cantooAdaptTextBoxRef
|
|
37
40
|
}) => {
|
|
38
41
|
const {
|
|
39
42
|
t
|
|
40
43
|
} = useTranslation(), {
|
|
41
44
|
id,
|
|
42
45
|
editor
|
|
43
|
-
} = useEditorContext(),
|
|
46
|
+
} = useEditorContext(), {
|
|
47
|
+
isAvailable: canUseCantoo
|
|
48
|
+
} = useCantooEditor(editor), [plusOptions, listOptions, alignmentOptions] = useActionOptions(editor, toggleMathsModal, mediaLibraryRef), {
|
|
44
49
|
isAvailable: canRecognizeSpeech,
|
|
45
50
|
isActive: speechRecognition,
|
|
46
51
|
toggle: toggleSpeechRecognition
|
|
@@ -167,11 +172,21 @@ const EditorToolbar = ({
|
|
|
167
172
|
name: "speechtotext",
|
|
168
173
|
tooltip: t("tiptap.toolbar.stt")
|
|
169
174
|
},
|
|
175
|
+
//------------- CANTOO ---------------//
|
|
176
|
+
{
|
|
177
|
+
type: "dropdown",
|
|
178
|
+
props: {
|
|
179
|
+
children: (triggerProps) => /* @__PURE__ */ jsx(EditorToolbarCantoo, { triggerProps, handleOpenCantooAdaptTextBox: cantooAdaptTextBoxRef.handleCantooAdaptTextPosition, cantooAdaptTextBoxOpenPosition: cantooAdaptTextBoxRef.openPosition })
|
|
180
|
+
},
|
|
181
|
+
name: "cantoo",
|
|
182
|
+
visibility: canUseCantoo ? "show" : "hide",
|
|
183
|
+
tooltip: t("tiptap.toolbar.cantoo.choice")
|
|
184
|
+
},
|
|
170
185
|
//------------------------------------//
|
|
171
186
|
{
|
|
172
187
|
type: "divider",
|
|
173
188
|
name: "div-speech",
|
|
174
|
-
visibility: canRecognizeSpeech ? "show" : "hide"
|
|
189
|
+
visibility: canRecognizeSpeech || canUseCantoo ? "show" : "hide"
|
|
175
190
|
},
|
|
176
191
|
//--------------- TYPOGRAPHY ---------------//
|
|
177
192
|
{
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { default as AttachmentNodeView } from './AttachmentNodeView';
|
|
2
1
|
export { default as AudioNodeView } from './AudioNodeView';
|
|
3
|
-
export { default as
|
|
2
|
+
export { default as AttachmentNodeView } from './AttachmentNodeView';
|
|
4
3
|
export { default as ImageNodeView } from './ImageNodeView';
|
|
5
4
|
export { default as LinkerNodeView } from './LinkerNodeView';
|
|
6
5
|
export { default as VideoNodeView } from './VideoNodeView';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { default as AttachmentRenderer } from './AttachmentRenderer';
|
|
2
1
|
export { default as AudioRenderer } from './AudioRenderer';
|
|
3
|
-
export { default as
|
|
2
|
+
export { default as AttachmentRenderer } from './AttachmentRenderer';
|
|
4
3
|
export { default as LinkerRenderer } from './LinkerRenderer';
|
|
5
4
|
export { default as MediaRenderer } from './MediaRenderer';
|
|
6
5
|
export { default as InformationPaneRenderer } from './InformationPaneRenderer';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom hook to manage CantooAdaptTextBoxView events in an editor.
|
|
3
|
+
* @returns {
|
|
4
|
+
* `isOpen`: truthy boolean when CantooAdaptTextBoxView sholud be visible,
|
|
5
|
+
* `toggle`: an imperative function to toggle the `isOpen` value,
|
|
6
|
+
* }
|
|
7
|
+
*/
|
|
8
|
+
export declare const useCantooAdaptTextBox: () => CantooAdaptTextBox;
|
|
9
|
+
export interface CantooAdaptTextBox {
|
|
10
|
+
openPosition: {
|
|
11
|
+
right: boolean;
|
|
12
|
+
bottom: boolean;
|
|
13
|
+
};
|
|
14
|
+
handleCantooAdaptTextPosition: (position: string) => void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
const useCantooAdaptTextBox = () => {
|
|
3
|
+
const [openPosition, setOpenPosition] = useState({
|
|
4
|
+
right: !1,
|
|
5
|
+
bottom: !1
|
|
6
|
+
});
|
|
7
|
+
return {
|
|
8
|
+
openPosition,
|
|
9
|
+
handleCantooAdaptTextPosition: (position) => {
|
|
10
|
+
switch (position) {
|
|
11
|
+
case "right":
|
|
12
|
+
setOpenPosition((prev) => ({
|
|
13
|
+
bottom: !1,
|
|
14
|
+
right: !prev.right
|
|
15
|
+
}));
|
|
16
|
+
break;
|
|
17
|
+
case "bottom":
|
|
18
|
+
setOpenPosition((prev) => ({
|
|
19
|
+
right: !1,
|
|
20
|
+
bottom: !prev.bottom
|
|
21
|
+
}));
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
useCantooAdaptTextBox
|
|
29
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Editor } from '@tiptap/react';
|
|
2
|
+
export declare const useCantooEditor: (editor: Editor | null) => {
|
|
3
|
+
isAvailable: boolean | Record<string, boolean> | undefined;
|
|
4
|
+
speech2textIsActive: boolean;
|
|
5
|
+
text2speechIsActive: boolean;
|
|
6
|
+
toggleSpeech2Text: () => Promise<void>;
|
|
7
|
+
toggleText2Speech: () => void;
|
|
8
|
+
toogleSettings: () => void;
|
|
9
|
+
};
|