@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.
Files changed (84) hide show
  1. package/dist/components/Combobox/Combobox.d.ts +5 -56
  2. package/dist/components/Combobox/Combobox.js +7 -16
  3. package/dist/components/Combobox/ComboboxTrigger.d.ts +2 -31
  4. package/dist/components/Combobox/ComboboxTrigger.js +8 -31
  5. package/dist/components/Dropdown/Dropdown.d.ts +2 -10
  6. package/dist/components/Dropdown/Dropdown.js +3 -5
  7. package/dist/components/Dropdown/DropdownItem.d.ts +1 -5
  8. package/dist/components/Dropdown/DropdownItem.js +1 -4
  9. package/dist/components/Dropdown/DropdownTrigger.js +1 -5
  10. package/dist/components/List/List.d.ts +1 -9
  11. package/dist/components/List/List.js +9 -9
  12. package/dist/components/SearchBar/SearchBar.d.ts +1 -1
  13. package/dist/components/SearchBar/SearchBar.js +1 -3
  14. package/dist/editor.js +28 -28
  15. package/dist/hooks/index.d.ts +0 -1
  16. package/dist/hooks/useCheckable/useCheckable.js +3 -10
  17. package/dist/hooks/useConversation/useConversation.d.ts +1 -1
  18. package/dist/hooks/useConversation/useConversation.js +17 -13
  19. package/dist/hooks/useDropdown/useDropdown.d.ts +1 -2
  20. package/dist/hooks/useDropdown/useDropdown.js +3 -5
  21. package/dist/icons.js +266 -280
  22. package/dist/index.d.ts +0 -1
  23. package/dist/index.js +20 -48
  24. package/dist/modals.js +14 -16
  25. package/dist/modules/editor/components/Editor/CantooAdaptTextBoxView.d.ts +7 -0
  26. package/dist/modules/editor/components/Editor/CantooAdaptTextBoxView.js +32 -0
  27. package/dist/modules/editor/components/Editor/Editor.d.ts +1 -3
  28. package/dist/modules/editor/components/Editor/Editor.js +18 -9
  29. package/dist/modules/editor/components/EditorToolbar/EditorToolbar.Cantoo.d.ts +12 -0
  30. package/dist/modules/editor/components/EditorToolbar/EditorToolbar.Cantoo.js +97 -0
  31. package/dist/modules/editor/components/EditorToolbar/EditorToolbar.d.ts +4 -1
  32. package/dist/modules/editor/components/EditorToolbar/EditorToolbar.js +19 -4
  33. package/dist/modules/editor/components/NodeView/index.d.ts +1 -2
  34. package/dist/modules/editor/components/Renderer/index.d.ts +1 -2
  35. package/dist/modules/editor/hooks/index.d.ts +2 -0
  36. package/dist/modules/editor/hooks/useCantooAdaptTextBox.d.ts +15 -0
  37. package/dist/modules/editor/hooks/useCantooAdaptTextBox.js +29 -0
  38. package/dist/modules/editor/hooks/useCantooEditor.d.ts +9 -0
  39. package/dist/modules/editor/hooks/useCantooEditor.js +55 -0
  40. package/dist/modules/editor/hooks/useTipTapEditor.d.ts +2 -6
  41. package/dist/modules/editor/hooks/useTipTapEditor.js +2 -2
  42. package/dist/modules/icons/components/{IconGlobe2.d.ts → IconCantoo.d.ts} +2 -2
  43. package/dist/modules/icons/components/IconCantoo.js +23 -0
  44. package/dist/modules/icons/components/IconMicOff.d.ts +7 -0
  45. package/dist/modules/icons/components/IconMicOff.js +12 -0
  46. package/dist/modules/icons/components/IconTextToSpeechOff.d.ts +7 -0
  47. package/dist/modules/icons/components/IconTextToSpeechOff.js +12 -0
  48. package/dist/modules/icons/components/index.d.ts +3 -10
  49. package/dist/modules/modals/index.d.ts +0 -1
  50. package/dist/modules/multimedia/index.d.ts +0 -1
  51. package/dist/multimedia.js +1 -3
  52. package/package.json +6 -6
  53. package/dist/hooks/useWorkspaceFolders/index.d.ts +0 -2
  54. package/dist/hooks/useWorkspaceFolders/useWorkspaceFolders.d.ts +0 -28
  55. package/dist/hooks/useWorkspaceFolders/useWorkspaceFolders.js +0 -74
  56. package/dist/modules/editor/components/NodeView/ConversationHistoryNodeView.d.ts +0 -2
  57. package/dist/modules/editor/components/NodeView/ConversationHistoryNodeView.js +0 -10
  58. package/dist/modules/editor/components/Renderer/ConversationHistoryRenderer.d.ts +0 -8
  59. package/dist/modules/editor/components/Renderer/ConversationHistoryRenderer.js +0 -28
  60. package/dist/modules/icons/components/IconFolderAdd.d.ts +0 -7
  61. package/dist/modules/icons/components/IconFolderAdd.js +0 -13
  62. package/dist/modules/icons/components/IconFolderDelete.d.ts +0 -7
  63. package/dist/modules/icons/components/IconFolderDelete.js +0 -12
  64. package/dist/modules/icons/components/IconGlobe2.js +0 -16
  65. package/dist/modules/icons/components/IconGroupAvatar.d.ts +0 -7
  66. package/dist/modules/icons/components/IconGroupAvatar.js +0 -12
  67. package/dist/modules/icons/components/IconMailRecall.d.ts +0 -7
  68. package/dist/modules/icons/components/IconMailRecall.js +0 -13
  69. package/dist/modules/icons/components/IconQuestionMark.d.ts +0 -7
  70. package/dist/modules/icons/components/IconQuestionMark.js +0 -13
  71. package/dist/modules/icons/components/IconReadMail.d.ts +0 -7
  72. package/dist/modules/icons/components/IconReadMail.js +0 -16
  73. package/dist/modules/icons/components/IconSignature.d.ts +0 -7
  74. package/dist/modules/icons/components/IconSignature.js +0 -13
  75. package/dist/modules/icons/components/IconUndoAll.d.ts +0 -7
  76. package/dist/modules/icons/components/IconUndoAll.js +0 -14
  77. package/dist/modules/icons/components/IconUnreadMail.d.ts +0 -7
  78. package/dist/modules/icons/components/IconUnreadMail.js +0 -16
  79. package/dist/modules/modals/ConfirmModal/ConfirmModal.d.ts +0 -47
  80. package/dist/modules/modals/ConfirmModal/ConfirmModal.js +0 -37
  81. package/dist/modules/modals/ConfirmModal/index.d.ts +0 -1
  82. package/dist/modules/multimedia/WorkspaceFolders/WorkspaceFolders.d.ts +0 -8
  83. package/dist/modules/multimedia/WorkspaceFolders/WorkspaceFolders.js +0 -31
  84. package/dist/modules/multimedia/WorkspaceFolders/index.d.ts +0 -1
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export * from './components';
2
2
  export * from './hooks';
3
3
  export * from './modules/modals';
4
- export * from './modules/multimedia';
5
4
  export * from './providers';
6
5
  export * from './types';
7
6
  export * from './utilities';
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 { WORKSPACE_OWNER_FOLDER_ID, WORKSPACE_SHARED_FOLDER_ID, default as default75 } from "./hooks/useWorkspaceFolders/useWorkspaceFolders.js";
76
- import { default as default76 } from "./hooks/useWorkspaceSearch/useWorkspaceSearch.js";
77
- import { default as default77 } from "./hooks/useXitiTrackPageLoad/useXitiTrackPageLoad.js";
78
- import { default as default78 } from "./hooks/useZendeskGuide/useZendeskGuide.js";
79
- import { default as default79 } from "./modules/modals/ConfirmModal/ConfirmModal.js";
80
- import { default as default80 } from "./modules/modals/OnboardingModal/OnboardingModal.js";
81
- import { default as default81 } from "./modules/modals/PublishModal/PublishModal.js";
82
- import { default as default82 } from "./modules/modals/ResourceModal/apps/BlogPublic.js";
83
- import { default as default83 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
84
- import { default as default84 } from "./modules/modals/ShareModal/ShareModal.js";
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
- default82 as BlogPublic,
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
- default80 as OnboardingModal,
156
+ default78 as OnboardingModal,
178
157
  Popover,
179
158
  PopoverBody,
180
159
  PopoverFooter,
181
160
  PopoverHeader,
182
161
  default32 as PreventPropagation,
183
- default81 as PublishModal,
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
- default85 as ShareBlog,
190
- default84 as ShareModal,
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
- default86 as useShareMutation,
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
- default83 as useUpdateMutation,
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 useWorkspaceFolders,
276
- default76 as useWorkspaceSearch,
277
- default77 as useXitiTrackPageLoad,
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/ConfirmModal/ConfirmModal.js";
2
- import { default as default3 } from "./modules/modals/OnboardingModal/OnboardingModal.js";
3
- import { default as default4 } from "./modules/modals/PublishModal/PublishModal.js";
4
- import { default as default5 } from "./modules/modals/ResourceModal/apps/BlogPublic.js";
5
- import { default as default6 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
6
- import { default as default7 } from "./modules/modals/ShareModal/ShareModal.js";
7
- import { default as default8 } from "./modules/modals/ShareModal/apps/ShareBlog.js";
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
- default5 as BlogPublic,
12
- default2 as ConfirmModal,
13
- default3 as OnboardingModal,
14
- default4 as PublishModal,
10
+ default4 as BlogPublic,
11
+ default2 as OnboardingModal,
12
+ default3 as PublishModal,
15
13
  ResourceModal,
16
- default8 as ShareBlog,
17
- default7 as ShareModal,
18
- default9 as useShareMutation,
19
- default6 as useUpdateMutation
14
+ default7 as ShareBlog,
15
+ default6 as ShareModal,
16
+ default8 as useShareMutation,
17
+ default5 as useUpdateMutation
20
18
  };
@@ -0,0 +1,7 @@
1
+ declare const CantooAdaptTextBoxView: ({ openPosition, }: {
2
+ openPosition?: {
3
+ right: boolean;
4
+ bottom: boolean;
5
+ };
6
+ }) => import("react/jsx-runtime").JSX.Element;
7
+ export default CantooAdaptTextBoxView;
@@ -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, Extensions, FocusPosition, JSONContent } from '@tiptap/react';
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 LoadingScreen from "../../../../components/LoadingScreen/LoadingScreen.js";
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, extensions), {
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__ */ jsx(EditorContent, { id: id ?? editorId, editor, className: contentClass })
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 { useEditorContext } from "../../hooks/useEditorContext.js";
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(), [plusOptions, listOptions, alignmentOptions] = useActionOptions(editor, toggleMathsModal, mediaLibraryRef), {
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 ConversationHistoryNodeView } from './ConversationHistoryNodeView';
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 ConversationHistoryRenderer } from './ConversationHistoryRenderer';
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';
@@ -10,3 +10,5 @@ export * from './useResizeMedia';
10
10
  export * from './useSpeechRecognition';
11
11
  export * from './useSpeechSynthetisis';
12
12
  export * from './useTipTapEditor';
13
+ export * from './useCantooEditor';
14
+ export * from './useCantooAdaptTextBox';
@@ -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
+ };