@edifice.io/react 2.2.0-develop-wl.20250304155201 → 2.2.0-develop-integration.20250307174536

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/editor.js CHANGED
@@ -26,6 +26,8 @@ import { useResizeMedia } from "./modules/editor/hooks/useResizeMedia.js";
26
26
  import { useSpeechRecognition } from "./modules/editor/hooks/useSpeechRecognition.js";
27
27
  import { useSpeechSynthetisis } from "./modules/editor/hooks/useSpeechSynthetisis.js";
28
28
  import { useTipTapEditor } from "./modules/editor/hooks/useTipTapEditor.js";
29
+ import { useCantooEditor } from "./modules/editor/hooks/useCantooEditor.js";
30
+ import { useCantooAdaptTextBox } from "./modules/editor/hooks/useCantooAdaptTextBox.js";
29
31
  export {
30
32
  default6 as AttachmentNodeView,
31
33
  default11 as AttachmentRenderer,
@@ -46,6 +48,8 @@ export {
46
48
  default14 as TableToolbar,
47
49
  default9 as VideoNodeView,
48
50
  useActionOptions,
51
+ useCantooAdaptTextBox,
52
+ useCantooEditor,
49
53
  useCommentEditor,
50
54
  useEditor,
51
55
  useEditorContext,
package/dist/icons.js CHANGED
@@ -20,135 +20,138 @@ import { default as default20 } from "./modules/icons/components/IconBurgerMenu.
20
20
  import { default as default21 } from "./modules/icons/components/IconCalendarLight.js";
21
21
  import { default as default22 } from "./modules/icons/components/IconCalendar.js";
22
22
  import { default as default23 } from "./modules/icons/components/IconCamera.js";
23
- import { default as default24 } from "./modules/icons/components/IconCenter.js";
24
- import { default as default25 } from "./modules/icons/components/IconCheck.js";
25
- import { default as default26 } from "./modules/icons/components/IconChecklist.js";
26
- import { default as default27 } from "./modules/icons/components/IconClock.js";
27
- import { default as default28 } from "./modules/icons/components/IconCloseFullScreen.js";
28
- import { default as default29 } from "./modules/icons/components/IconClose.js";
29
- import { default as default30 } from "./modules/icons/components/IconCode.js";
30
- import { default as default31 } from "./modules/icons/components/IconCopy.js";
31
- import { default as default32 } from "./modules/icons/components/IconCrop.js";
32
- import { default as default33 } from "./modules/icons/components/IconCut.js";
33
- import { default as default34 } from "./modules/icons/components/IconDeleteColor.js";
34
- import { default as default35 } from "./modules/icons/components/IconDeleteColumnHighlight.js";
35
- import { default as default36 } from "./modules/icons/components/IconDeleteColumn.js";
36
- import { default as default37 } from "./modules/icons/components/IconDeleteRowHighlight.js";
37
- import { default as default38 } from "./modules/icons/components/IconDeleteRow.js";
38
- import { default as default39 } from "./modules/icons/components/IconDelete.js";
39
- import { default as default40 } from "./modules/icons/components/IconDepositeInbox.js";
40
- import { default as default41 } from "./modules/icons/components/IconDownload.js";
41
- import { default as default42 } from "./modules/icons/components/IconEdit.js";
42
- import { default as default43 } from "./modules/icons/components/IconError.js";
43
- import { default as default44 } from "./modules/icons/components/IconExternalLink.js";
44
- import { default as default45 } from "./modules/icons/components/IconFiles.js";
45
- import { default as default46 } from "./modules/icons/components/IconFilter.js";
46
- import { default as default47 } from "./modules/icons/components/IconFlag.js";
47
- import { default as default48 } from "./modules/icons/components/IconFolderMove.js";
48
- import { default as default49 } from "./modules/icons/components/IconFolder.js";
49
- import { default as default50 } from "./modules/icons/components/IconForgoing.js";
50
- import { default as default51 } from "./modules/icons/components/IconFullScreen.js";
51
- import { default as default52 } from "./modules/icons/components/IconGlobe.js";
52
- import { default as default53 } from "./modules/icons/components/IconHandMove.js";
53
- import { default as default54 } from "./modules/icons/components/IconHeadphone.js";
54
- import { default as default55 } from "./modules/icons/components/IconHide.js";
55
- import { default as default56 } from "./modules/icons/components/IconHighlightColumn.js";
56
- import { default as default57 } from "./modules/icons/components/IconHighlightRow.js";
57
- import { default as default58 } from "./modules/icons/components/IconHome.js";
58
- import { default as default59 } from "./modules/icons/components/IconHourglass.js";
59
- import { default as default60 } from "./modules/icons/components/IconImageSizeLarge.js";
60
- import { default as default61 } from "./modules/icons/components/IconImageSizeMedium.js";
61
- import { default as default62 } from "./modules/icons/components/IconImageSizeSmall.js";
62
- import { default as default63 } from "./modules/icons/components/IconInbox.js";
63
- import { default as default64 } from "./modules/icons/components/IconInfoCircle.js";
64
- import { default as default65 } from "./modules/icons/components/IconLandscape.js";
65
- import { default as default66 } from "./modules/icons/components/IconLink.js";
66
- import { default as default67 } from "./modules/icons/components/IconListOrder.js";
67
- import { default as default68 } from "./modules/icons/components/IconLoader.js";
68
- import { default as default69 } from "./modules/icons/components/IconLock.js";
69
- import { default as default70 } from "./modules/icons/components/IconMail.js";
70
- import { default as default71 } from "./modules/icons/components/IconMergeCells.js";
71
- import { default as default72 } from "./modules/icons/components/IconMessageInfo.js";
72
- import { default as default73 } from "./modules/icons/components/IconMic.js";
73
- import { default as default74 } from "./modules/icons/components/IconMinus.js";
74
- import { default as default75 } from "./modules/icons/components/IconMove.js";
75
- import { default as default76 } from "./modules/icons/components/IconNoColors.js";
76
- import { default as default77 } from "./modules/icons/components/IconOptions.js";
77
- import { default as default78 } from "./modules/icons/components/IconOrderedList.js";
78
- import { default as default79 } from "./modules/icons/components/IconPaperclip.js";
79
- import { default as default80 } from "./modules/icons/components/IconPause.js";
80
- import { default as default81 } from "./modules/icons/components/IconPinOff.js";
81
- import { default as default82 } from "./modules/icons/components/IconPinOn.js";
82
- import { default as default83 } from "./modules/icons/components/IconPlaceholder.js";
83
- import { default as default84 } from "./modules/icons/components/IconPlayFilled.js";
84
- import { default as default85 } from "./modules/icons/components/IconPlay.js";
85
- import { default as default86 } from "./modules/icons/components/IconPlus.js";
86
- import { default as default87 } from "./modules/icons/components/IconPointerDefault.js";
87
- import { default as default88 } from "./modules/icons/components/IconPointerHand.js";
88
- import { default as default89 } from "./modules/icons/components/IconPrint.js";
89
- import { default as default90 } from "./modules/icons/components/IconQuestion.js";
90
- import { default as default91 } from "./modules/icons/components/IconRafterDown.js";
91
- import { default as default92 } from "./modules/icons/components/IconRafterLeft.js";
92
- import { default as default93 } from "./modules/icons/components/IconRafterRight.js";
93
- import { default as default94 } from "./modules/icons/components/IconRafterUp.js";
94
- import { default as default95 } from "./modules/icons/components/IconReaction.js";
95
- import { default as default96 } from "./modules/icons/components/IconRecordPause.js";
96
- import { default as default97 } from "./modules/icons/components/IconRecordStop.js";
97
- import { default as default98 } from "./modules/icons/components/IconRecordVideo.js";
98
- import { default as default99 } from "./modules/icons/components/IconRecord.js";
99
- import { default as default100 } from "./modules/icons/components/IconRedo.js";
100
- import { default as default101 } from "./modules/icons/components/IconRefresh.js";
101
- import { default as default102 } from "./modules/icons/components/IconReset.js";
102
- import { default as default103 } from "./modules/icons/components/IconRestart.js";
103
- import { default as default104 } from "./modules/icons/components/IconRestore.js";
104
- import { default as default105 } from "./modules/icons/components/IconSave.js";
105
- import { default as default106 } from "./modules/icons/components/IconSearch.js";
106
- import { default as default107 } from "./modules/icons/components/IconSee.js";
107
- import { default as default108 } from "./modules/icons/components/IconSend.js";
108
- import { default as default109 } from "./modules/icons/components/IconSetBackground.js";
109
- import { default as default110 } from "./modules/icons/components/IconSettings.js";
110
- import { default as default111 } from "./modules/icons/components/IconShare.js";
111
- import { default as default112 } from "./modules/icons/components/IconSmartphone.js";
112
- import { default as default113 } from "./modules/icons/components/IconSmiley.js";
113
- import { default as default114 } from "./modules/icons/components/IconSortAscendingLetters.js";
114
- import { default as default115 } from "./modules/icons/components/IconSortDescendingLetters.js";
115
- import { default as default116 } from "./modules/icons/components/IconSortDescending.js";
116
- import { default as default117 } from "./modules/icons/components/IconSortTime.js";
117
- import { default as default118 } from "./modules/icons/components/IconSpeechToText.js";
118
- import { default as default119 } from "./modules/icons/components/IconSplitCells.js";
119
- import { default as default120 } from "./modules/icons/components/IconSquareRoot.js";
120
- import { default as default121 } from "./modules/icons/components/IconSubscript.js";
121
- import { default as default122 } from "./modules/icons/components/IconSuccessFill.js";
122
- import { default as default123 } from "./modules/icons/components/IconSuccessOutline.js";
123
- import { default as default124 } from "./modules/icons/components/IconSuperscript.js";
124
- import { default as default125 } from "./modules/icons/components/IconTable.js";
125
- import { default as default126 } from "./modules/icons/components/IconTextBold.js";
126
- import { default as default127 } from "./modules/icons/components/IconTextColor.js";
127
- import { default as default128 } from "./modules/icons/components/IconTextHighlight.js";
128
- import { default as default129 } from "./modules/icons/components/IconTextItalic.js";
129
- import { default as default130 } from "./modules/icons/components/IconTextPage.js";
130
- import { default as default131 } from "./modules/icons/components/IconTextSize.js";
131
- import { default as default132 } from "./modules/icons/components/IconTextToSpeech.js";
132
- import { default as default133 } from "./modules/icons/components/IconTextTypo.js";
133
- import { default as default134 } from "./modules/icons/components/IconTextUnderline.js";
134
- import { default as default135 } from "./modules/icons/components/IconTextVanilla.js";
135
- import { default as default136 } from "./modules/icons/components/IconToolCenter.js";
136
- import { default as default137 } from "./modules/icons/components/IconTool.js";
137
- import { default as default138 } from "./modules/icons/components/IconTrendingUp.js";
138
- import { default as default139 } from "./modules/icons/components/IconUndo.js";
139
- import { default as default140 } from "./modules/icons/components/IconUnlink.js";
140
- import { default as default141 } from "./modules/icons/components/IconUnlock.js";
141
- import { default as default142 } from "./modules/icons/components/IconUpload.js";
142
- import { default as default143 } from "./modules/icons/components/IconUserSearch.js";
143
- import { default as default144 } from "./modules/icons/components/IconUser.js";
144
- import { default as default145 } from "./modules/icons/components/IconUsers.js";
145
- import { default as default146 } from "./modules/icons/components/IconVideo.js";
146
- import { default as default147 } from "./modules/icons/components/IconViewCalendar.js";
147
- import { default as default148 } from "./modules/icons/components/IconViewList.js";
148
- import { default as default149 } from "./modules/icons/components/IconWand.js";
149
- import { default as default150 } from "./modules/icons/components/IconWrite.js";
150
- import { default as default151 } from "./modules/icons/components/IconZoomIn.js";
151
- import { default as default152 } from "./modules/icons/components/IconZoomOut.js";
23
+ import { default as default24 } from "./modules/icons/components/IconCantoo.js";
24
+ import { default as default25 } from "./modules/icons/components/IconCenter.js";
25
+ import { default as default26 } from "./modules/icons/components/IconCheck.js";
26
+ import { default as default27 } from "./modules/icons/components/IconChecklist.js";
27
+ import { default as default28 } from "./modules/icons/components/IconClock.js";
28
+ import { default as default29 } from "./modules/icons/components/IconCloseFullScreen.js";
29
+ import { default as default30 } from "./modules/icons/components/IconClose.js";
30
+ import { default as default31 } from "./modules/icons/components/IconCode.js";
31
+ import { default as default32 } from "./modules/icons/components/IconCopy.js";
32
+ import { default as default33 } from "./modules/icons/components/IconCrop.js";
33
+ import { default as default34 } from "./modules/icons/components/IconCut.js";
34
+ import { default as default35 } from "./modules/icons/components/IconDeleteColor.js";
35
+ import { default as default36 } from "./modules/icons/components/IconDeleteColumnHighlight.js";
36
+ import { default as default37 } from "./modules/icons/components/IconDeleteColumn.js";
37
+ import { default as default38 } from "./modules/icons/components/IconDeleteRowHighlight.js";
38
+ import { default as default39 } from "./modules/icons/components/IconDeleteRow.js";
39
+ import { default as default40 } from "./modules/icons/components/IconDelete.js";
40
+ import { default as default41 } from "./modules/icons/components/IconDepositeInbox.js";
41
+ import { default as default42 } from "./modules/icons/components/IconDownload.js";
42
+ import { default as default43 } from "./modules/icons/components/IconEdit.js";
43
+ import { default as default44 } from "./modules/icons/components/IconError.js";
44
+ import { default as default45 } from "./modules/icons/components/IconExternalLink.js";
45
+ import { default as default46 } from "./modules/icons/components/IconFiles.js";
46
+ import { default as default47 } from "./modules/icons/components/IconFilter.js";
47
+ import { default as default48 } from "./modules/icons/components/IconFlag.js";
48
+ import { default as default49 } from "./modules/icons/components/IconFolderMove.js";
49
+ import { default as default50 } from "./modules/icons/components/IconFolder.js";
50
+ import { default as default51 } from "./modules/icons/components/IconForgoing.js";
51
+ import { default as default52 } from "./modules/icons/components/IconFullScreen.js";
52
+ import { default as default53 } from "./modules/icons/components/IconGlobe.js";
53
+ import { default as default54 } from "./modules/icons/components/IconHandMove.js";
54
+ import { default as default55 } from "./modules/icons/components/IconHeadphone.js";
55
+ import { default as default56 } from "./modules/icons/components/IconHide.js";
56
+ import { default as default57 } from "./modules/icons/components/IconHighlightColumn.js";
57
+ import { default as default58 } from "./modules/icons/components/IconHighlightRow.js";
58
+ import { default as default59 } from "./modules/icons/components/IconHome.js";
59
+ import { default as default60 } from "./modules/icons/components/IconHourglass.js";
60
+ import { default as default61 } from "./modules/icons/components/IconImageSizeLarge.js";
61
+ import { default as default62 } from "./modules/icons/components/IconImageSizeMedium.js";
62
+ import { default as default63 } from "./modules/icons/components/IconImageSizeSmall.js";
63
+ import { default as default64 } from "./modules/icons/components/IconInbox.js";
64
+ import { default as default65 } from "./modules/icons/components/IconInfoCircle.js";
65
+ import { default as default66 } from "./modules/icons/components/IconLandscape.js";
66
+ import { default as default67 } from "./modules/icons/components/IconLink.js";
67
+ import { default as default68 } from "./modules/icons/components/IconListOrder.js";
68
+ import { default as default69 } from "./modules/icons/components/IconLoader.js";
69
+ import { default as default70 } from "./modules/icons/components/IconLock.js";
70
+ import { default as default71 } from "./modules/icons/components/IconMail.js";
71
+ import { default as default72 } from "./modules/icons/components/IconMergeCells.js";
72
+ import { default as default73 } from "./modules/icons/components/IconMessageInfo.js";
73
+ import { default as default74 } from "./modules/icons/components/IconMicOff.js";
74
+ import { default as default75 } from "./modules/icons/components/IconMic.js";
75
+ import { default as default76 } from "./modules/icons/components/IconMinus.js";
76
+ import { default as default77 } from "./modules/icons/components/IconMove.js";
77
+ import { default as default78 } from "./modules/icons/components/IconNoColors.js";
78
+ import { default as default79 } from "./modules/icons/components/IconOptions.js";
79
+ import { default as default80 } from "./modules/icons/components/IconOrderedList.js";
80
+ import { default as default81 } from "./modules/icons/components/IconPaperclip.js";
81
+ import { default as default82 } from "./modules/icons/components/IconPause.js";
82
+ import { default as default83 } from "./modules/icons/components/IconPinOff.js";
83
+ import { default as default84 } from "./modules/icons/components/IconPinOn.js";
84
+ import { default as default85 } from "./modules/icons/components/IconPlaceholder.js";
85
+ import { default as default86 } from "./modules/icons/components/IconPlayFilled.js";
86
+ import { default as default87 } from "./modules/icons/components/IconPlay.js";
87
+ import { default as default88 } from "./modules/icons/components/IconPlus.js";
88
+ import { default as default89 } from "./modules/icons/components/IconPointerDefault.js";
89
+ import { default as default90 } from "./modules/icons/components/IconPointerHand.js";
90
+ import { default as default91 } from "./modules/icons/components/IconPrint.js";
91
+ import { default as default92 } from "./modules/icons/components/IconQuestion.js";
92
+ import { default as default93 } from "./modules/icons/components/IconRafterDown.js";
93
+ import { default as default94 } from "./modules/icons/components/IconRafterLeft.js";
94
+ import { default as default95 } from "./modules/icons/components/IconRafterRight.js";
95
+ import { default as default96 } from "./modules/icons/components/IconRafterUp.js";
96
+ import { default as default97 } from "./modules/icons/components/IconReaction.js";
97
+ import { default as default98 } from "./modules/icons/components/IconRecordPause.js";
98
+ import { default as default99 } from "./modules/icons/components/IconRecordStop.js";
99
+ import { default as default100 } from "./modules/icons/components/IconRecordVideo.js";
100
+ import { default as default101 } from "./modules/icons/components/IconRecord.js";
101
+ import { default as default102 } from "./modules/icons/components/IconRedo.js";
102
+ import { default as default103 } from "./modules/icons/components/IconRefresh.js";
103
+ import { default as default104 } from "./modules/icons/components/IconReset.js";
104
+ import { default as default105 } from "./modules/icons/components/IconRestart.js";
105
+ import { default as default106 } from "./modules/icons/components/IconRestore.js";
106
+ import { default as default107 } from "./modules/icons/components/IconSave.js";
107
+ import { default as default108 } from "./modules/icons/components/IconSearch.js";
108
+ import { default as default109 } from "./modules/icons/components/IconSee.js";
109
+ import { default as default110 } from "./modules/icons/components/IconSend.js";
110
+ import { default as default111 } from "./modules/icons/components/IconSetBackground.js";
111
+ import { default as default112 } from "./modules/icons/components/IconSettings.js";
112
+ import { default as default113 } from "./modules/icons/components/IconShare.js";
113
+ import { default as default114 } from "./modules/icons/components/IconSmartphone.js";
114
+ import { default as default115 } from "./modules/icons/components/IconSmiley.js";
115
+ import { default as default116 } from "./modules/icons/components/IconSortAscendingLetters.js";
116
+ import { default as default117 } from "./modules/icons/components/IconSortDescendingLetters.js";
117
+ import { default as default118 } from "./modules/icons/components/IconSortDescending.js";
118
+ import { default as default119 } from "./modules/icons/components/IconSortTime.js";
119
+ import { default as default120 } from "./modules/icons/components/IconSpeechToText.js";
120
+ import { default as default121 } from "./modules/icons/components/IconSplitCells.js";
121
+ import { default as default122 } from "./modules/icons/components/IconSquareRoot.js";
122
+ import { default as default123 } from "./modules/icons/components/IconSubscript.js";
123
+ import { default as default124 } from "./modules/icons/components/IconSuccessFill.js";
124
+ import { default as default125 } from "./modules/icons/components/IconSuccessOutline.js";
125
+ import { default as default126 } from "./modules/icons/components/IconSuperscript.js";
126
+ import { default as default127 } from "./modules/icons/components/IconTable.js";
127
+ import { default as default128 } from "./modules/icons/components/IconTextBold.js";
128
+ import { default as default129 } from "./modules/icons/components/IconTextColor.js";
129
+ import { default as default130 } from "./modules/icons/components/IconTextHighlight.js";
130
+ import { default as default131 } from "./modules/icons/components/IconTextItalic.js";
131
+ import { default as default132 } from "./modules/icons/components/IconTextPage.js";
132
+ import { default as default133 } from "./modules/icons/components/IconTextSize.js";
133
+ import { default as default134 } from "./modules/icons/components/IconTextToSpeechOff.js";
134
+ import { default as default135 } from "./modules/icons/components/IconTextToSpeech.js";
135
+ import { default as default136 } from "./modules/icons/components/IconTextTypo.js";
136
+ import { default as default137 } from "./modules/icons/components/IconTextUnderline.js";
137
+ import { default as default138 } from "./modules/icons/components/IconTextVanilla.js";
138
+ import { default as default139 } from "./modules/icons/components/IconToolCenter.js";
139
+ import { default as default140 } from "./modules/icons/components/IconTool.js";
140
+ import { default as default141 } from "./modules/icons/components/IconTrendingUp.js";
141
+ import { default as default142 } from "./modules/icons/components/IconUndo.js";
142
+ import { default as default143 } from "./modules/icons/components/IconUnlink.js";
143
+ import { default as default144 } from "./modules/icons/components/IconUnlock.js";
144
+ import { default as default145 } from "./modules/icons/components/IconUpload.js";
145
+ import { default as default146 } from "./modules/icons/components/IconUserSearch.js";
146
+ import { default as default147 } from "./modules/icons/components/IconUser.js";
147
+ import { default as default148 } from "./modules/icons/components/IconUsers.js";
148
+ import { default as default149 } from "./modules/icons/components/IconVideo.js";
149
+ import { default as default150 } from "./modules/icons/components/IconViewCalendar.js";
150
+ import { default as default151 } from "./modules/icons/components/IconViewList.js";
151
+ import { default as default152 } from "./modules/icons/components/IconWand.js";
152
+ import { default as default153 } from "./modules/icons/components/IconWrite.js";
153
+ import { default as default154 } from "./modules/icons/components/IconZoomIn.js";
154
+ import { default as default155 } from "./modules/icons/components/IconZoomOut.js";
152
155
  export {
153
156
  default3 as IconAdd,
154
157
  default2 as IconAddUser,
@@ -172,133 +175,136 @@ export {
172
175
  default22 as IconCalendar,
173
176
  default21 as IconCalendarLight,
174
177
  default23 as IconCamera,
175
- default24 as IconCenter,
176
- default25 as IconCheck,
177
- default26 as IconChecklist,
178
- default27 as IconClock,
179
- default29 as IconClose,
180
- default28 as IconCloseFullScreen,
181
- default30 as IconCode,
182
- default31 as IconCopy,
183
- default32 as IconCrop,
184
- default33 as IconCut,
185
- default39 as IconDelete,
186
- default34 as IconDeleteColor,
187
- default36 as IconDeleteColumn,
188
- default35 as IconDeleteColumnHighlight,
189
- default38 as IconDeleteRow,
190
- default37 as IconDeleteRowHighlight,
191
- default40 as IconDepositeInbox,
192
- default41 as IconDownload,
193
- default42 as IconEdit,
194
- default43 as IconError,
195
- default44 as IconExternalLink,
196
- default45 as IconFiles,
197
- default46 as IconFilter,
198
- default47 as IconFlag,
199
- default49 as IconFolder,
200
- default48 as IconFolderMove,
201
- default50 as IconForgoing,
202
- default51 as IconFullScreen,
203
- default52 as IconGlobe,
204
- default53 as IconHandMove,
205
- default54 as IconHeadphone,
206
- default55 as IconHide,
207
- default56 as IconHighlightColumn,
208
- default57 as IconHighlightRow,
209
- default58 as IconHome,
210
- default59 as IconHourglass,
211
- default60 as IconImageSizeLarge,
212
- default61 as IconImageSizeMedium,
213
- default62 as IconImageSizeSmall,
214
- default63 as IconInbox,
215
- default64 as IconInfoCircle,
216
- default65 as IconLandscape,
217
- default66 as IconLink,
218
- default67 as IconListOrder,
219
- default68 as IconLoader,
220
- default69 as IconLock,
221
- default70 as IconMail,
222
- default71 as IconMergeCells,
223
- default72 as IconMessageInfo,
224
- default73 as IconMic,
225
- default74 as IconMinus,
226
- default75 as IconMove,
227
- default76 as IconNoColors,
228
- default77 as IconOptions,
229
- default78 as IconOrderedList,
230
- default79 as IconPaperclip,
231
- default80 as IconPause,
232
- default81 as IconPinOff,
233
- default82 as IconPinOn,
234
- default83 as IconPlaceholder,
235
- default85 as IconPlay,
236
- default84 as IconPlayFilled,
237
- default86 as IconPlus,
238
- default87 as IconPointerDefault,
239
- default88 as IconPointerHand,
240
- default89 as IconPrint,
241
- default90 as IconQuestion,
242
- default91 as IconRafterDown,
243
- default92 as IconRafterLeft,
244
- default93 as IconRafterRight,
245
- default94 as IconRafterUp,
246
- default95 as IconReaction,
247
- default99 as IconRecord,
248
- default96 as IconRecordPause,
249
- default97 as IconRecordStop,
250
- default98 as IconRecordVideo,
251
- default100 as IconRedo,
252
- default101 as IconRefresh,
253
- default102 as IconReset,
254
- default103 as IconRestart,
255
- default104 as IconRestore,
256
- default105 as IconSave,
257
- default106 as IconSearch,
258
- default107 as IconSee,
259
- default108 as IconSend,
260
- default109 as IconSetBackground,
261
- default110 as IconSettings,
262
- default111 as IconShare,
263
- default112 as IconSmartphone,
264
- default113 as IconSmiley,
265
- default114 as IconSortAscendingLetters,
266
- default116 as IconSortDescending,
267
- default115 as IconSortDescendingLetters,
268
- default117 as IconSortTime,
269
- default118 as IconSpeechToText,
270
- default119 as IconSplitCells,
271
- default120 as IconSquareRoot,
272
- default121 as IconSubscript,
273
- default122 as IconSuccessFill,
274
- default123 as IconSuccessOutline,
275
- default124 as IconSuperscript,
276
- default125 as IconTable,
277
- default126 as IconTextBold,
278
- default127 as IconTextColor,
279
- default128 as IconTextHighlight,
280
- default129 as IconTextItalic,
281
- default130 as IconTextPage,
282
- default131 as IconTextSize,
283
- default132 as IconTextToSpeech,
284
- default133 as IconTextTypo,
285
- default134 as IconTextUnderline,
286
- default135 as IconTextVanilla,
287
- default137 as IconTool,
288
- default136 as IconToolCenter,
289
- default138 as IconTrendingUp,
290
- default139 as IconUndo,
291
- default140 as IconUnlink,
292
- default141 as IconUnlock,
293
- default142 as IconUpload,
294
- default144 as IconUser,
295
- default143 as IconUserSearch,
296
- default145 as IconUsers,
297
- default146 as IconVideo,
298
- default147 as IconViewCalendar,
299
- default148 as IconViewList,
300
- default149 as IconWand,
301
- default150 as IconWrite,
302
- default151 as IconZoomIn,
303
- default152 as IconZoomOut
178
+ default24 as IconCantoo,
179
+ default25 as IconCenter,
180
+ default26 as IconCheck,
181
+ default27 as IconChecklist,
182
+ default28 as IconClock,
183
+ default30 as IconClose,
184
+ default29 as IconCloseFullScreen,
185
+ default31 as IconCode,
186
+ default32 as IconCopy,
187
+ default33 as IconCrop,
188
+ default34 as IconCut,
189
+ default40 as IconDelete,
190
+ default35 as IconDeleteColor,
191
+ default37 as IconDeleteColumn,
192
+ default36 as IconDeleteColumnHighlight,
193
+ default39 as IconDeleteRow,
194
+ default38 as IconDeleteRowHighlight,
195
+ default41 as IconDepositeInbox,
196
+ default42 as IconDownload,
197
+ default43 as IconEdit,
198
+ default44 as IconError,
199
+ default45 as IconExternalLink,
200
+ default46 as IconFiles,
201
+ default47 as IconFilter,
202
+ default48 as IconFlag,
203
+ default50 as IconFolder,
204
+ default49 as IconFolderMove,
205
+ default51 as IconForgoing,
206
+ default52 as IconFullScreen,
207
+ default53 as IconGlobe,
208
+ default54 as IconHandMove,
209
+ default55 as IconHeadphone,
210
+ default56 as IconHide,
211
+ default57 as IconHighlightColumn,
212
+ default58 as IconHighlightRow,
213
+ default59 as IconHome,
214
+ default60 as IconHourglass,
215
+ default61 as IconImageSizeLarge,
216
+ default62 as IconImageSizeMedium,
217
+ default63 as IconImageSizeSmall,
218
+ default64 as IconInbox,
219
+ default65 as IconInfoCircle,
220
+ default66 as IconLandscape,
221
+ default67 as IconLink,
222
+ default68 as IconListOrder,
223
+ default69 as IconLoader,
224
+ default70 as IconLock,
225
+ default71 as IconMail,
226
+ default72 as IconMergeCells,
227
+ default73 as IconMessageInfo,
228
+ default75 as IconMic,
229
+ default74 as IconMicOff,
230
+ default76 as IconMinus,
231
+ default77 as IconMove,
232
+ default78 as IconNoColors,
233
+ default79 as IconOptions,
234
+ default80 as IconOrderedList,
235
+ default81 as IconPaperclip,
236
+ default82 as IconPause,
237
+ default83 as IconPinOff,
238
+ default84 as IconPinOn,
239
+ default85 as IconPlaceholder,
240
+ default87 as IconPlay,
241
+ default86 as IconPlayFilled,
242
+ default88 as IconPlus,
243
+ default89 as IconPointerDefault,
244
+ default90 as IconPointerHand,
245
+ default91 as IconPrint,
246
+ default92 as IconQuestion,
247
+ default93 as IconRafterDown,
248
+ default94 as IconRafterLeft,
249
+ default95 as IconRafterRight,
250
+ default96 as IconRafterUp,
251
+ default97 as IconReaction,
252
+ default101 as IconRecord,
253
+ default98 as IconRecordPause,
254
+ default99 as IconRecordStop,
255
+ default100 as IconRecordVideo,
256
+ default102 as IconRedo,
257
+ default103 as IconRefresh,
258
+ default104 as IconReset,
259
+ default105 as IconRestart,
260
+ default106 as IconRestore,
261
+ default107 as IconSave,
262
+ default108 as IconSearch,
263
+ default109 as IconSee,
264
+ default110 as IconSend,
265
+ default111 as IconSetBackground,
266
+ default112 as IconSettings,
267
+ default113 as IconShare,
268
+ default114 as IconSmartphone,
269
+ default115 as IconSmiley,
270
+ default116 as IconSortAscendingLetters,
271
+ default118 as IconSortDescending,
272
+ default117 as IconSortDescendingLetters,
273
+ default119 as IconSortTime,
274
+ default120 as IconSpeechToText,
275
+ default121 as IconSplitCells,
276
+ default122 as IconSquareRoot,
277
+ default123 as IconSubscript,
278
+ default124 as IconSuccessFill,
279
+ default125 as IconSuccessOutline,
280
+ default126 as IconSuperscript,
281
+ default127 as IconTable,
282
+ default128 as IconTextBold,
283
+ default129 as IconTextColor,
284
+ default130 as IconTextHighlight,
285
+ default131 as IconTextItalic,
286
+ default132 as IconTextPage,
287
+ default133 as IconTextSize,
288
+ default135 as IconTextToSpeech,
289
+ default134 as IconTextToSpeechOff,
290
+ default136 as IconTextTypo,
291
+ default137 as IconTextUnderline,
292
+ default138 as IconTextVanilla,
293
+ default140 as IconTool,
294
+ default139 as IconToolCenter,
295
+ default141 as IconTrendingUp,
296
+ default142 as IconUndo,
297
+ default143 as IconUnlink,
298
+ default144 as IconUnlock,
299
+ default145 as IconUpload,
300
+ default147 as IconUser,
301
+ default146 as IconUserSearch,
302
+ default148 as IconUsers,
303
+ default149 as IconVideo,
304
+ default150 as IconViewCalendar,
305
+ default151 as IconViewList,
306
+ default152 as IconWand,
307
+ default153 as IconWrite,
308
+ default154 as IconZoomIn,
309
+ default155 as IconZoomOut
304
310
  };
@@ -0,0 +1,2 @@
1
+ declare const CantooAdaptTextBoxView: () => import("react/jsx-runtime").JSX.Element;
2
+ export default CantooAdaptTextBoxView;
@@ -0,0 +1,13 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useEditorContext } from "../../hooks/useEditorContext.js";
3
+ const CantooAdaptTextBoxView = () => {
4
+ const {
5
+ editor
6
+ } = useEditorContext(), Cantoo = window.Cantoo, editorHTML = editor == null ? void 0 : editor.getHTML(), cantooHTML = (Cantoo == null ? void 0 : Cantoo.formatText(editorHTML)) || editorHTML;
7
+ return /* @__PURE__ */ jsx("div", { className: "card p-24 mt-8", children: /* @__PURE__ */ jsx("div", { dangerouslySetInnerHTML: {
8
+ __html: cantooHTML
9
+ } }) });
10
+ };
11
+ export {
12
+ CantooAdaptTextBoxView as default
13
+ };
@@ -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";
@@ -18,7 +19,7 @@ import TableToolbar from "../Toolbar/TableToolbar.js";
18
19
  import BubbleMenuEditImage from "../BubbleMenuEditImage/BubbleMenuEditImage.js";
19
20
  import MediaLibrary from "../../../multimedia/MediaLibrary/MediaLibrary.js";
20
21
  import LoadingScreen from "../../../../components/LoadingScreen/LoadingScreen.js";
21
- const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/MathsModal.js")), ImageEditor = /* @__PURE__ */ lazy(async () => await import("../../../multimedia/ImageEditor/components/ImageEditor.js")), Editor = /* @__PURE__ */ forwardRef(({
22
+ 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(({
22
23
  id,
23
24
  content,
24
25
  mode = "read",
@@ -40,7 +41,7 @@ const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/
40
41
  } = useMediaLibraryEditor(editor), {
41
42
  toggle: toggleMathsModal,
42
43
  ...mathsModalHandlers
43
- } = useMathsModal(editor), imageModal = useImageModal(editor, "media-library", visibility), linkToolbarHandlers = useLinkToolbar(editor, mediaLibraryModalRef), speechSynthetisis = useSpeechSynthetisis(editor);
44
+ } = useMathsModal(editor), cantooAdaptTextBox = useCantooAdaptTextBox(), imageModal = useImageModal(editor, "media-library", visibility), linkToolbarHandlers = useLinkToolbar(editor, mediaLibraryModalRef), speechSynthetisis = useSpeechSynthetisis(editor);
44
45
  if (useMathsStyles(), useImperativeHandle(ref, () => ({
45
46
  getContent: (as) => {
46
47
  switch (as) {
@@ -65,7 +66,7 @@ const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/
65
66
  editable
66
67
  }, children: [
67
68
  /* @__PURE__ */ jsxs("div", { className: borderClass, children: [
68
- toolbar !== "none" && editable && /* @__PURE__ */ jsx(EditorToolbar, { mediaLibraryRef: mediaLibraryModalRef, toggleMathsModal }),
69
+ toolbar !== "none" && editable && /* @__PURE__ */ jsx(EditorToolbar, { mediaLibraryRef: mediaLibraryModalRef, toggleMathsModal, cantooAdaptTextBoxRef: cantooAdaptTextBox }),
69
70
  /* @__PURE__ */ jsx(EditorContent, { id: id ?? editorId, editor, className: contentClass })
70
71
  ] }),
71
72
  /* @__PURE__ */ jsx(LinkToolbar, { editor, ...linkToolbarHandlers }),
@@ -74,7 +75,8 @@ const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/
74
75
  /* @__PURE__ */ jsxs(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingScreen, {}), children: [
75
76
  editable && /* @__PURE__ */ jsx(MediaLibrary, { appCode, visibility, multiple: !0, ref: mediaLibraryModalRef, ...mediaLibraryModalHandlers }),
76
77
  editable && mathsModalHandlers.isOpen && /* @__PURE__ */ jsx(MathsModal, { ...mathsModalHandlers }),
77
- 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 })
78
+ 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 }),
79
+ editable && cantooAdaptTextBox.isOpen && /* @__PURE__ */ jsx(CantooAdaptTextBoxView, {})
78
80
  ] })
79
81
  ] });
80
82
  });
@@ -0,0 +1,9 @@
1
+ import { RefAttributes } from 'react';
2
+ import { IconButtonProps } from '../../../../components';
3
+ interface Props {
4
+ triggerProps: JSX.IntrinsicAttributes & Omit<IconButtonProps, 'ref'> & RefAttributes<HTMLButtonElement>;
5
+ openCantooAdaptTextBox: () => void;
6
+ isCantooAdaptTextBoxOpen: boolean;
7
+ }
8
+ export declare const EditorToolbarCantoo: ({ triggerProps, openCantooAdaptTextBox, isCantooAdaptTextBoxOpen, }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,55 @@
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 SvgIconMicOff from "../../../icons/components/IconMicOff.js";
6
+ import SvgIconMic from "../../../icons/components/IconMic.js";
7
+ import SvgIconTextToSpeechOff from "../../../icons/components/IconTextToSpeechOff.js";
8
+ import SvgIconTextToSpeech from "../../../icons/components/IconTextToSpeech.js";
9
+ import SvgIconWand from "../../../icons/components/IconWand.js";
10
+ import { useCantooEditor } from "../../hooks/useCantooEditor.js";
11
+ import { useEditorContext } from "../../hooks/useEditorContext.js";
12
+ import Tooltip from "../../../../components/Tooltip/Tooltip.js";
13
+ import IconButton from "../../../../components/Button/IconButton.js";
14
+ import Dropdown from "../../../../components/Dropdown/Dropdown.js";
15
+ const EditorToolbarCantoo = ({
16
+ triggerProps,
17
+ openCantooAdaptTextBox,
18
+ isCantooAdaptTextBoxOpen
19
+ }) => {
20
+ const {
21
+ t
22
+ } = useTranslation(), {
23
+ editor
24
+ } = useEditorContext(), {
25
+ speech2textIsActive,
26
+ text2speechIsActive,
27
+ toggleSpeech2Text,
28
+ toggleText2Speech
29
+ } = useCantooEditor(editor), cantooOptions = [{
30
+ id: "speech2text",
31
+ label: t("tiptap.toolbar.cantoo.speech2text"),
32
+ className: speech2textIsActive ? "fw-bold" : "",
33
+ icon: speech2textIsActive ? /* @__PURE__ */ jsx(SvgIconMicOff, {}) : /* @__PURE__ */ jsx(SvgIconMic, {}),
34
+ action: () => toggleSpeech2Text()
35
+ }, {
36
+ id: "text2speech",
37
+ label: t("tiptap.toolbar.cantoo.text2speech"),
38
+ className: text2speechIsActive ? "fw-bold" : "",
39
+ icon: text2speechIsActive ? /* @__PURE__ */ jsx(SvgIconTextToSpeechOff, {}) : /* @__PURE__ */ jsx(SvgIconTextToSpeech, {}),
40
+ action: () => toggleText2Speech()
41
+ }, {
42
+ id: "formatText",
43
+ label: t("tiptap.toolbar.cantoo.formatText"),
44
+ className: isCantooAdaptTextBoxOpen ? "fw-bold" : "",
45
+ icon: /* @__PURE__ */ jsx(SvgIconWand, {}),
46
+ action: () => openCantooAdaptTextBox()
47
+ }];
48
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
49
+ /* @__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 || isCantooAdaptTextBoxOpen ? "is-selected" : "", "aria-label": t("tiptap.toolbar.cantoo.choice") }) }),
50
+ /* @__PURE__ */ jsx(Dropdown.Menu, { children: 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)) })
51
+ ] });
52
+ };
53
+ export {
54
+ EditorToolbarCantoo
55
+ };
@@ -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 {};
@@ -26,20 +26,25 @@ import { EditorToolbarPlusMenu } from "./EditorToolbar.PlusMenu.js";
26
26
  import { EditorToolbarTextColor } from "./EditorToolbar.TextColor.js";
27
27
  import { EditorToolbarTextSize } from "./EditorToolbar.TextSize.js";
28
28
  import { EditorToolbarTypography } from "./EditorToolbar.Typography.js";
29
- import { useEditorContext } from "../../hooks/useEditorContext.js";
29
+ import { EditorToolbarCantoo } from "./EditorToolbar.Cantoo.js";
30
+ import { useCantooEditor } from "../../hooks/useCantooEditor.js";
30
31
  import { useActionOptions } from "../../hooks/useActionOptions.js";
31
32
  import { useSpeechRecognition } from "../../hooks/useSpeechRecognition.js";
33
+ import { useEditorContext } from "../../hooks/useEditorContext.js";
32
34
  import { Toolbar } from "../../../../components/Toolbar/Toolbar.js";
33
35
  const EditorToolbar = ({
34
36
  mediaLibraryRef,
35
- toggleMathsModal
37
+ toggleMathsModal,
38
+ cantooAdaptTextBoxRef
36
39
  }) => {
37
40
  const {
38
41
  t
39
42
  } = useTranslation(), {
40
43
  id,
41
44
  editor
42
- } = useEditorContext(), [plusOptions, listOptions, alignmentOptions] = useActionOptions(editor, toggleMathsModal, mediaLibraryRef), {
45
+ } = useEditorContext(), {
46
+ isAvailable: canUseCantoo
47
+ } = useCantooEditor(editor), [plusOptions, listOptions, alignmentOptions] = useActionOptions(editor, toggleMathsModal, mediaLibraryRef), {
43
48
  isAvailable: canRecognizeSpeech,
44
49
  isActive: speechRecognition,
45
50
  toggle: toggleSpeechRecognition
@@ -166,11 +171,21 @@ const EditorToolbar = ({
166
171
  name: "speechtotext",
167
172
  tooltip: t("tiptap.toolbar.stt")
168
173
  },
174
+ //------------- CANTOO ---------------//
175
+ {
176
+ type: "dropdown",
177
+ props: {
178
+ children: (triggerProps) => /* @__PURE__ */ jsx(EditorToolbarCantoo, { triggerProps, openCantooAdaptTextBox: cantooAdaptTextBoxRef.toggle, isCantooAdaptTextBoxOpen: cantooAdaptTextBoxRef.isOpen })
179
+ },
180
+ name: "cantoo",
181
+ visibility: canUseCantoo ? "show" : "hide",
182
+ tooltip: t("tiptap.toolbar.cantoo.choice")
183
+ },
169
184
  //------------------------------------//
170
185
  {
171
186
  type: "divider",
172
187
  name: "div-speech",
173
- visibility: canRecognizeSpeech ? "show" : "hide"
188
+ visibility: canRecognizeSpeech || canUseCantoo ? "show" : "hide"
174
189
  },
175
190
  //--------------- TYPOGRAPHY ---------------//
176
191
  {
@@ -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,14 @@
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
+ * `onCancel`: Cancel event handler,
7
+ * }
8
+ */
9
+ export declare const useCantooAdaptTextBox: () => CantooAdaptTextBox;
10
+ export interface CantooAdaptTextBox {
11
+ isOpen: boolean;
12
+ toggle: () => void;
13
+ onCancel: () => void;
14
+ }
@@ -0,0 +1,14 @@
1
+ import useToggle from "../../../hooks/useToggle/useToggle.js";
2
+ const useCantooAdaptTextBox = () => {
3
+ const [isOpen, toggle] = useToggle(!1);
4
+ return {
5
+ isOpen,
6
+ toggle,
7
+ onCancel: () => {
8
+ toggle();
9
+ }
10
+ };
11
+ };
12
+ export {
13
+ useCantooAdaptTextBox
14
+ };
@@ -0,0 +1,8 @@
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
+ };
@@ -0,0 +1,48 @@
1
+ import { useState } from "react";
2
+ import useHasWorkflow from "../../../hooks/useHasWorkflow/useHasWorkflow.js";
3
+ const useCantooEditor = (editor) => {
4
+ const isAvailable = useHasWorkflow("org.entcore.portal.controllers.PortalController|optionalFeatureCantoo"), [speech2textIsActive, setSpeech2textActive] = useState(!1), [text2speechIsActive, setText2speechActive] = useState(!1), Cantoo = window.Cantoo;
5
+ return {
6
+ isAvailable,
7
+ speech2textIsActive,
8
+ text2speechIsActive,
9
+ toggleSpeech2Text: async () => {
10
+ if (speech2textIsActive) {
11
+ setSpeech2textActive(!1);
12
+ try {
13
+ await Cantoo.speech2text.stop();
14
+ } catch (e) {
15
+ console.warn("Error while trying to stop Cantoo (speech2text)", e);
16
+ }
17
+ } else
18
+ try {
19
+ if (setSpeech2textActive(!0), await Cantoo.speech2text.isAvailableOnDevice())
20
+ if (await Cantoo.speech2text.requestPermission())
21
+ await Cantoo.speech2text.start((data) => {
22
+ editor == null || editor.chain().focus().insertContent(data.join(" ")).run();
23
+ }, window.navigator.language);
24
+ else
25
+ throw new Error("Permission denied");
26
+ else
27
+ throw new Error("Cantoo not available");
28
+ } catch (e) {
29
+ console.warn("Error while trying to use Cantoo (speech2text)", e), setSpeech2textActive(!1);
30
+ }
31
+ },
32
+ toggleText2Speech: () => {
33
+ if (text2speechIsActive)
34
+ setText2speechActive(!1), window.speechSynthesis.cancel();
35
+ else
36
+ try {
37
+ setText2speechActive(!0), Cantoo.text2speech.readText(editor == null ? void 0 : editor.getText()), Cantoo.text2speech.utter.onend = () => {
38
+ setText2speechActive(!1);
39
+ };
40
+ } catch (e) {
41
+ console.warn("Error while trying to use Cantoo (text2speech)", e), setText2speechActive(!1);
42
+ }
43
+ }
44
+ };
45
+ };
46
+ export {
47
+ useCantooEditor
48
+ };
@@ -0,0 +1,7 @@
1
+ import { SVGProps } from 'react';
2
+ interface SVGRProps {
3
+ title?: string;
4
+ titleId?: string;
5
+ }
6
+ declare const SvgIconCantoo: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgIconCantoo;
@@ -0,0 +1,23 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ const SvgIconCantoo = ({
3
+ title,
4
+ titleId,
5
+ ...props
6
+ }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "none", viewBox: "0 0 88 104", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
7
+ title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
8
+ /* @__PURE__ */ jsx("ellipse", { cx: 44.305, cy: 15.281, fill: "url(#icon-cantoo_svg__a)", rx: 14.472, ry: 14.367, transform: "rotate(-.145 44.305 15.281)" }),
9
+ /* @__PURE__ */ jsx("path", { fill: "url(#icon-cantoo_svg__b)", fillRule: "evenodd", d: "m44.529 39.653-28.126-8.41c-6.42-1.785-13.121 1.8-14.968 8.008C-.414 45.46 3.294 51.94 9.713 53.724l17.54 5.245-16.845 28.892c-2.73 5.401.023 11.938 6.147 14.601 6.125 2.662 13.301.442 16.03-4.96l11.88-20.374 11.974 20.3c2.757 5.387 9.945 7.57 16.055 4.877 6.111-2.694 8.83-9.244 6.074-14.632l-16.953-28.74 17.478-5.384c6.41-1.818 10.084-8.316 8.206-14.514-1.879-6.199-8.598-9.75-15.009-7.932z", clipRule: "evenodd" }),
10
+ /* @__PURE__ */ jsxs("defs", { children: [
11
+ /* @__PURE__ */ jsxs("linearGradient", { id: "icon-cantoo_svg__a", x1: 28.13, x2: 60.619, y1: -6.867, y2: 27.927, gradientUnits: "userSpaceOnUse", children: [
12
+ /* @__PURE__ */ jsx("stop", { stopColor: "#0B4EFC" }),
13
+ /* @__PURE__ */ jsx("stop", { offset: 1, stopColor: "#30B3E8" })
14
+ ] }),
15
+ /* @__PURE__ */ jsxs("linearGradient", { id: "icon-cantoo_svg__b", x1: -4.227, x2: 76.299, y1: 11.105, y2: 112.656, gradientUnits: "userSpaceOnUse", children: [
16
+ /* @__PURE__ */ jsx("stop", { stopColor: "#0B4EFC" }),
17
+ /* @__PURE__ */ jsx("stop", { offset: 1, stopColor: "#30B3E8" })
18
+ ] })
19
+ ] })
20
+ ] });
21
+ export {
22
+ SvgIconCantoo as default
23
+ };
@@ -0,0 +1,7 @@
1
+ import { SVGProps } from 'react';
2
+ interface SVGRProps {
3
+ title?: string;
4
+ titleId?: string;
5
+ }
6
+ declare const SvgIconMicOff: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgIconMicOff;
@@ -0,0 +1,12 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ const SvgIconMicOff = ({
3
+ title,
4
+ titleId,
5
+ ...props
6
+ }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
7
+ title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
8
+ /* @__PURE__ */ jsx("path", { fill: "currentColor", fillRule: "evenodd", d: "M1.793 1.04c-.252.045-.546.274-.676.526a.87.87 0 0 0-.06.691c.082.279.119.318 4.107 4.323l2.829 2.84.019 1.58c.019 1.461.027 1.604.107 1.9.367 1.351 1.351 2.35 2.761 2.8.322.103.382.109 1.12.109s.798-.006 1.12-.109c.187-.06.45-.159.585-.22l.245-.111.689.69.689.69-.446.228a7 7 0 0 1-1.782.608c-.597.112-1.686.103-2.289-.017-1.205-.241-2.258-.789-3.093-1.607-.755-.741-1.233-1.531-1.524-2.521-.126-.431-.154-.759-.189-2.221-.031-1.296-.04-1.412-.116-1.559-.368-.717-1.401-.717-1.781 0-.08.15-.086.232-.101 1.273-.009.65.004 1.333.031 1.64A7.7 7.7 0 0 0 5.5 16.46c.277.376.959 1.084 1.335 1.387A8.8 8.8 0 0 0 9.26 19.2c.395.138 1.2.34 1.53.383l.21.027v1.904l-1.65.013-1.65.013-.192.113c-.342.201-.55.619-.489.983.046.269.254.567.499.714l.218.13h8.532l.236-.153c.641-.415.638-1.251-.008-1.655l-.236-.147-1.63-.003L13 21.52l.001-.91c0-.5.013-.93.03-.954.016-.025.119-.058.229-.074.341-.049 1.232-.29 1.646-.445.439-.164.981-.43 1.494-.733l.34-.201.26.248c.143.137 1.007.987 1.92 1.891 2.426 2.402 2.558 2.524 2.822 2.6.775.226 1.513-.639 1.153-1.35-.072-.143-5.933-6.059-11.781-11.895-6.987-6.971-8.607-8.563-8.762-8.61a1.2 1.2 0 0 0-.559-.047m9.567.004c-.576.074-1.3.371-1.8.738-.675.497-1.145 1.163-1.422 2.018-.096.298-.112.421-.129.99-.02.718.014.948.175 1.159.12.158.401.327.625.378.349.078.82-.138 1.011-.463.096-.164.112-.249.157-.844.049-.642.055-.671.202-.961C10.526 3.375 11.164 3 11.98 3c.819 0 1.481.406 1.825 1.12l.144.3.024 3.567.023 3.568.106.208c.112.222.755.915 1.016 1.096.263.182.615.132.762-.108.078-.129.08-.204.08-4.293V4.297l-.104-.359a3.93 3.93 0 0 0-1.115-1.849c-.893-.84-2.092-1.211-3.381-1.045m7.393 8.575c-.353.089-.663.379-.729.681-.014.066-.043.777-.064 1.58-.041 1.529-.058 1.683-.258 2.3-.218.669-.172 1.099.153 1.433.381.392 1.038.408 1.353.034.24-.285.633-1.573.711-2.327.054-.521.052-2.858-.002-3.054-.048-.172-.311-.48-.489-.572a1.1 1.1 0 0 0-.675-.075m-6.462 4.226c-.698.16-1.735-.343-2.069-1.002-.142-.279-.22-.664-.221-1.083L10 11.421l1.201 1.199c1.146 1.146 1.195 1.201 1.09 1.225", clipRule: "evenodd" })
9
+ ] });
10
+ export {
11
+ SvgIconMicOff as default
12
+ };
@@ -0,0 +1,7 @@
1
+ import { SVGProps } from 'react';
2
+ interface SVGRProps {
3
+ title?: string;
4
+ titleId?: string;
5
+ }
6
+ declare const SvgIconTextToSpeechOff: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgIconTextToSpeechOff;
@@ -0,0 +1,12 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ const SvgIconTextToSpeechOff = ({
3
+ title,
4
+ titleId,
5
+ ...props
6
+ }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
7
+ title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
8
+ /* @__PURE__ */ jsx("path", { fill: "currentColor", fillRule: "evenodd", d: "M1.793 1.04c-.252.045-.546.274-.676.526a.87.87 0 0 0-.06.688c.08.277.2.405 3.076 3.292l2.038 2.046-1.715.018c-1.494.016-1.744.027-1.936.089-.717.229-1.203.697-1.41 1.356-.089.283-.09.302-.09 2.925 0 2.449.005 2.657.074 2.878.221.719.684 1.212 1.34 1.429.256.085.337.089 2.128.104l1.862.015 1.978 1.663c3.634 3.054 3.408 2.886 3.918 2.921.679.046 1.148-.122 1.577-.564.331-.341.487-.631.542-1.013.022-.15.04-1.002.04-1.893l.001-1.62 2.87 2.862c3.453 3.443 4.073 4.046 4.252 4.139.181.094.528.097.765.006.21-.08.447-.317.543-.541.084-.196.082-.591-.003-.754-.085-.162-5.712-5.847-11.793-11.915-6.987-6.971-8.607-8.563-8.762-8.61a1.2 1.2 0 0 0-.559-.047m10.424 1.974c-.09.029-.342.147-.56.261-.407.214-.858.555-1.967 1.492-.673.568-.77.704-.77 1.073 0 .314.107.493.56.938.359.353.406.387.47.337.038-.03.393-.325.788-.655l1.256-1.049c.296-.246.556-.437.578-.423.027.016.032.722.015 2.108-.029 2.306-.023 2.397.213 2.863.156.311.747.937.944 1.002.274.091.618-.082.698-.352.031-.105.04-1.033.03-3.129-.013-2.972-.013-2.981-.102-3.219-.111-.294-.341-.536-.825-.869-.546-.375-.969-.495-1.328-.378m7.881 4.539c-.295.138-.538.518-.538.84 0 .043.161.408.358.812.391.801.548 1.231.688 1.875.081.373.092.531.092 1.4.001.775-.014 1.055-.069 1.34-.123.625-.345 1.242-.715 1.982-.453.905-.456.938-.104 1.307.273.285.425.371.662.371.407 0 .749-.242 1.015-.72.335-.601.745-1.724.91-2.492.171-.795.195-2.134.057-3.103-.142-.996-.769-2.648-1.238-3.263-.264-.345-.782-.507-1.118-.349m-7.587 8.814c-.006 1.334-.023 2.439-.039 2.454-.031.031-.038.026-2.332-1.862-2.281-1.878-2.987-2.446-3.07-2.469-.066-.018-.07-.17-.07-2.474V9.562l.11-.058c.06-.031.208-.141.327-.244l.217-.186 2.434 2.433 2.435 2.433zM5 12v2.4H3V9.6h2zm11.68-2.293c-.444.228-.588.666-.349 1.053.062.099.203.288.315.42s.251.339.309.46c.091.19.105.272.105.6 0 .456-.11.839-.346 1.204-.085.131-.154.279-.154.329 0 .105 1.065 1.187 1.168 1.187s.25-.142.461-.448c.278-.402.427-.709.551-1.132a3.64 3.64 0 0 0-.695-3.29c-.254-.305-.532-.456-.881-.479-.231-.015-.291-.003-.484.096", clipRule: "evenodd" })
9
+ ] });
10
+ export {
11
+ SvgIconTextToSpeechOff as default
12
+ };
@@ -20,6 +20,7 @@ export { default as IconBurgerMenu } from './IconBurgerMenu';
20
20
  export { default as IconCalendarLight } from './IconCalendarLight';
21
21
  export { default as IconCalendar } from './IconCalendar';
22
22
  export { default as IconCamera } from './IconCamera';
23
+ export { default as IconCantoo } from './IconCantoo';
23
24
  export { default as IconCenter } from './IconCenter';
24
25
  export { default as IconCheck } from './IconCheck';
25
26
  export { default as IconChecklist } from './IconChecklist';
@@ -69,6 +70,7 @@ export { default as IconLock } from './IconLock';
69
70
  export { default as IconMail } from './IconMail';
70
71
  export { default as IconMergeCells } from './IconMergeCells';
71
72
  export { default as IconMessageInfo } from './IconMessageInfo';
73
+ export { default as IconMicOff } from './IconMicOff';
72
74
  export { default as IconMic } from './IconMic';
73
75
  export { default as IconMinus } from './IconMinus';
74
76
  export { default as IconMove } from './IconMove';
@@ -128,6 +130,7 @@ export { default as IconTextHighlight } from './IconTextHighlight';
128
130
  export { default as IconTextItalic } from './IconTextItalic';
129
131
  export { default as IconTextPage } from './IconTextPage';
130
132
  export { default as IconTextSize } from './IconTextSize';
133
+ export { default as IconTextToSpeechOff } from './IconTextToSpeechOff';
131
134
  export { default as IconTextToSpeech } from './IconTextToSpeech';
132
135
  export { default as IconTextTypo } from './IconTextTypo';
133
136
  export { default as IconTextUnderline } from './IconTextUnderline';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edifice.io/react",
3
- "version": "2.2.0-develop-wl.20250304155201",
3
+ "version": "2.2.0-develop-integration.20250307174536",
4
4
  "description": "Edifice React Library",
5
5
  "keywords": [
6
6
  "react",
@@ -118,9 +118,9 @@
118
118
  "react-slugify": "^3.0.3",
119
119
  "swiper": "^10.1.0",
120
120
  "ua-parser-js": "^1.0.36",
121
- "@edifice.io/bootstrap": "2.2.0-develop-wl.20250304155201",
122
- "@edifice.io/tiptap-extensions": "2.2.0-develop-wl.20250304155201",
123
- "@edifice.io/utilities": "2.2.0-develop-wl.20250304155201"
121
+ "@edifice.io/bootstrap": "2.2.0-develop-integration.20250307174536",
122
+ "@edifice.io/tiptap-extensions": "2.2.0-develop-integration.20250307174536",
123
+ "@edifice.io/utilities": "2.2.0-develop-integration.20250307174536"
124
124
  },
125
125
  "devDependencies": {
126
126
  "@babel/plugin-transform-react-pure-annotations": "^7.23.3",
@@ -151,8 +151,8 @@
151
151
  "vite": "^5.4.11",
152
152
  "vite-plugin-dts": "^4.1.0",
153
153
  "vite-tsconfig-paths": "^5.0.1",
154
- "@edifice.io/client": "2.2.0-develop-wl.20250304155201",
155
- "@edifice.io/config": "2.2.0-develop-wl.20250304155201"
154
+ "@edifice.io/client": "2.2.0-develop-integration.20250307174536",
155
+ "@edifice.io/config": "2.2.0-develop-integration.20250307174536"
156
156
  },
157
157
  "peerDependencies": {
158
158
  "@react-spring/web": "^9.7.5",