@gientech/modual 2.0.3 → 2.0.5

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 (419) hide show
  1. package/.editorconfig +38 -0
  2. package/.prettierignore +16 -0
  3. package/.prettierrc +17 -0
  4. package/README.md +643 -643
  5. package/USAGE.md +247 -0
  6. package/bash.exe.stackdump +40 -0
  7. package/components.json +21 -0
  8. package/dist/README.md +643 -0
  9. package/{assets/GientechStreamReader-CzB5AuYo.js → dist/assets/GientechStreamReader-DUCq-O5X.js} +1 -1
  10. package/{assets → dist/assets}/database.svg +11 -11
  11. package/{assets → dist/assets}/database_add.svg +53 -53
  12. package/{assets → dist/assets}/database_connect.svg +66 -66
  13. package/{assets → dist/assets}/database_upload.svg +29 -29
  14. package/{assets → dist/assets}/databse.svg +6 -6
  15. package/{assets → dist/assets}/defaultWeLogo.svg +14 -14
  16. package/{assets → dist/assets}/graph.svg +4 -4
  17. package/{assets/index-CN2AYX8Q.js → dist/assets/index-B2yNvzjy.js} +1 -1
  18. package/{assets/index-D9lYd8TZ.js → dist/assets/index-BKe5FgcC.js} +1 -1
  19. package/{assets/index-CBTA5S-5.js → dist/assets/index-D72cKELw.js} +1 -1
  20. package/{assets/index-s0cmC4Ks.js → dist/assets/index-DdVFXD_y.js} +1 -1
  21. package/{assets/index-B1ZDDbC1.js → dist/assets/index-DrkSoKz6.js} +1 -1
  22. package/{assets/index-B2rFliXg.js → dist/assets/index-KCfkkJKb.js} +1 -1
  23. package/{assets/index-DnBY0UXI.js → dist/assets/index-QI9biQrR.js} +2 -2
  24. package/{assets/index-DYhXjvk4.js → dist/assets/index-ZopkeZtI.js} +1 -1
  25. package/{assets/index-LDFwTu47.js → dist/assets/index-g-SUxfJH.js} +1 -1
  26. package/{assets/index-NFQIKNFn.js → dist/assets/index-j0kQJd0a.js} +1 -1
  27. package/{assets → dist/assets}/knowledge.svg +4 -4
  28. package/{assets/MySQL.svg → dist/assets/mysql.svg} +14 -14
  29. package/{assets/plus-G7zGXf6S.js → dist/assets/plus-V9zUoSq6.js} +1 -1
  30. package/{assets → dist/assets}/sensitive.svg +5 -5
  31. package/{assets/style-Bn7b5XHU.js → dist/assets/style-CGmZ5osp.js} +2 -2
  32. package/{assets/x-vfKYzKkK.js → dist/assets/x-CnaaLGJF.js} +1 -1
  33. package/dist/assistantConfig.js +1 -0
  34. package/dist/chat.js +824 -0
  35. package/dist/database.js +20 -0
  36. package/dist/databaseId.js +1 -0
  37. package/{databaseTable.js → dist/databaseTable.js} +1 -1
  38. package/dist/index.js +1 -0
  39. package/{modelManage.js → dist/modelManage.js} +1 -1
  40. package/dist/package.json +68 -0
  41. package/{sensitive.js → dist/sensitive.js} +1 -1
  42. package/dist/streamFilesReader.js +1 -0
  43. package/{worker → dist/worker}/pdf.worker.min.js +21 -21
  44. package/doc_assets/2.png +0 -0
  45. package/doc_assets/demo.md +27 -0
  46. package/doc_assets/demos/dist-app/assets/index.Dh-ZAS9Z.css +2 -0
  47. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js +23699 -0
  48. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js.map +1 -0
  49. package/doc_assets/demos/dist-app/index.html +14 -0
  50. package/doc_assets/demos/dist-app/vite.svg +1 -0
  51. package/doc_assets/images/1.png +0 -0
  52. package/doc_assets/images/3.png +0 -0
  53. package/doc_assets/images/component-screenshot.png +1 -0
  54. package/doc_assets/install.md +5 -0
  55. package/doc_assets//346/226/271/346/241/210//344/274/230/345/214/226/346/226/271/346/241/210-/345/244/232/344/274/232/350/257/235SSE/350/277/236/346/216/245/347/256/241/347/220/206.md +504 -0
  56. package/eslint.config.js +92 -0
  57. package/index.html +13 -0
  58. package/package.json +106 -44
  59. package/package.json.demo-backup +109 -0
  60. package/postcss.config.cjs +19 -0
  61. package/public/icons/answerAwartar.png +0 -0
  62. package/public/icons/docx-file.png +0 -0
  63. package/public/icons/folder.png +0 -0
  64. package/public/icons/html.png +0 -0
  65. package/public/icons/image.png +0 -0
  66. package/public/icons/jpg-file.png +0 -0
  67. package/public/icons/json.png +0 -0
  68. package/public/icons/md.png +0 -0
  69. package/public/icons/pdf.png +0 -0
  70. package/public/icons/pptx.png +0 -0
  71. package/public/icons/questionAwartar.png +0 -0
  72. package/public/icons/sheets.png +0 -0
  73. package/public/icons/txt.png +0 -0
  74. package/public/icons/xlsx.png +0 -0
  75. package/public/vite.svg +1 -0
  76. package/public/worker/pdf.worker.min.js +22 -0
  77. package/scripts/README.md +133 -0
  78. package/scripts/build-demo.js +88 -0
  79. package/scripts/decrypt-api-key.js +95 -0
  80. package/scripts/demo-selector.js +216 -0
  81. package/scripts/dev-demo.js +76 -0
  82. package/scripts/preview-demo.js +130 -0
  83. package/scripts/run-demo.bat +34 -0
  84. package/src/assets/img/close.png +0 -0
  85. package/src/assets/img/database.png +0 -0
  86. package/src/assets/img/downArrow.png +0 -0
  87. package/src/assets/img/downLoad.png +0 -0
  88. package/src/assets/img/excel.png +0 -0
  89. package/src/assets/img/graphIcon.png +0 -0
  90. package/src/assets/img/img.png +0 -0
  91. package/src/assets/img/pdf.png +0 -0
  92. package/src/assets/img/ppt.png +0 -0
  93. package/src/assets/img/singleQa.png +0 -0
  94. package/src/assets/img/txt.png +0 -0
  95. package/src/assets/img/webSearch.png +0 -0
  96. package/src/assets/img/word.png +0 -0
  97. package/src/assets/login/homeBg.png +0 -0
  98. package/src/assets/login/left.jpg +0 -0
  99. package/src/assets/login/logoImg.png +0 -0
  100. package/src/examples/ConversationAssistantPage/index.tsx +41 -0
  101. package/src/examples/Demo/index.tsx +12 -0
  102. package/src/examples/LoginPage/index.tsx +18 -0
  103. package/src/examples/chat/components/DrawerGraphPreview.tsx +78 -0
  104. package/src/examples/chat/index.tsx +154 -0
  105. package/src/examples/chat/logo03.png +0 -0
  106. package/src/examples/gientechStreamFilesReader/index.tsx +951 -0
  107. package/src/examples/headlessChat/index.tsx +234 -0
  108. package/src/examples/ragDatabaseDataPage/index.tsx +40 -0
  109. package/src/examples/ragDatabaseIdPage/index.tsx +47 -0
  110. package/src/examples/ragDatabasePage/index.tsx +36 -0
  111. package/src/examples/ragModelManagePage/index.tsx +38 -0
  112. package/src/examples/ragSearchPage/index.tsx +0 -0
  113. package/src/examples/ragSensitiveWordsPage/index.tsx +32 -0
  114. package/src/examples/streamFiles/index.tsx +417 -0
  115. package/src/lib_enter.ts +43 -0
  116. package/src/main.tsx +5 -0
  117. package/src/main.tsx.backup +5 -0
  118. package/src/modules/CHAT_UNIFICATION_PLAN.md +324 -0
  119. package/src/modules/assistantConfig/assets/databse.svg +6 -0
  120. package/src/modules/assistantConfig/assets/empty.png +0 -0
  121. package/src/modules/assistantConfig/assets/graph.svg +4 -0
  122. package/src/modules/assistantConfig/assets/knowledge.svg +4 -0
  123. package/src/modules/assistantConfig/assets/sensitive.svg +5 -0
  124. package/src/modules/assistantConfig/components/Database.tsx +171 -0
  125. package/src/modules/assistantConfig/components/Graph.tsx +177 -0
  126. package/src/modules/assistantConfig/components/Knowledge.tsx +276 -0
  127. package/src/modules/assistantConfig/components/NotFoundContent.tsx +21 -0
  128. package/src/modules/assistantConfig/components/Paragraph.tsx +51 -0
  129. package/src/modules/assistantConfig/components/ParamsItem.tsx +39 -0
  130. package/src/modules/assistantConfig/components/ResourceBinderItem.tsx +133 -0
  131. package/src/modules/assistantConfig/components/SearchableSelector.tsx +500 -0
  132. package/src/modules/assistantConfig/components/Sensitive.tsx +221 -0
  133. package/src/modules/assistantConfig/components/SliderInput.tsx +65 -0
  134. package/src/modules/assistantConfig/constants.tsx +75 -0
  135. package/src/modules/assistantConfig/index.tsx +710 -0
  136. package/src/modules/assistantConfig/server.ts +262 -0
  137. package/src/modules/chat/Conversations/Item.tsx +167 -0
  138. package/src/modules/chat/Conversations/List.tsx +210 -0
  139. package/src/modules/chat/Conversations/groupByTime.ts +39 -0
  140. package/src/modules/chat/Conversations/index.tsx +252 -0
  141. package/src/modules/chat/ReferenceBar.tsx +622 -0
  142. package/src/modules/chat/constants.tsx +52 -0
  143. package/src/modules/chat/data.txt +82 -0
  144. package/src/modules/chat/index.tsx +2054 -0
  145. package/src/modules/chat/referenceCom/DeleteModal.tsx +75 -0
  146. package/src/modules/chat/referenceCom/DrawerContent.tsx +136 -0
  147. package/src/modules/chat/referenceCom/DrawerDatabase.tsx +102 -0
  148. package/src/modules/chat/referenceCom/DrawerGraphPreview.tsx +86 -0
  149. package/src/modules/chat/referenceCom/DrawerPreview.tsx +73 -0
  150. package/src/modules/chat/referenceCom/DrawerTitle.tsx +26 -0
  151. package/src/modules/chat/referenceCom/RenameModal.tsx +86 -0
  152. package/src/modules/chat/referenceCom/TagCom.tsx +30 -0
  153. package/src/modules/chat/style.less +3 -0
  154. package/src/modules/chat/types.ts +17 -0
  155. package/src/modules/chat/utils/index.ts +348 -0
  156. package/src/modules/database/CreateModal.tsx +403 -0
  157. package/src/modules/database/assets/Doris.png +0 -0
  158. package/src/modules/database/assets/PostgreSQL.png +0 -0
  159. package/src/modules/database/assets/SQLServer.png +0 -0
  160. package/src/modules/database/assets/database.svg +11 -0
  161. package/src/modules/database/assets/database_add.svg +53 -0
  162. package/src/modules/database/assets/database_connect.svg +66 -0
  163. package/src/modules/database/assets/database_upload.svg +29 -0
  164. package/src/modules/database/assets/empty.png +0 -0
  165. package/src/modules/database/assets/mysql.svg +14 -0
  166. package/src/modules/database/index.tsx +477 -0
  167. package/src/modules/database/server.ts +196 -0
  168. package/src/modules/databaseId/CustomCom.tsx +156 -0
  169. package/src/modules/databaseId/EditConfig.tsx +280 -0
  170. package/src/modules/databaseId/UploadDrawer.tsx +535 -0
  171. package/src/modules/databaseId/assets/aiOptimize.svg +10 -0
  172. package/src/modules/databaseId/assets/empty.png +0 -0
  173. package/src/modules/databaseId/assets/template.svg +6 -0
  174. package/src/modules/databaseId/assets/upload.svg +9 -0
  175. package/src/modules/databaseId/assets/useTemp.svg +6 -0
  176. package/src/modules/databaseId/index.tsx +769 -0
  177. package/src/modules/databaseId/server.ts +286 -0
  178. package/src/modules/databaseId/style.css +5 -0
  179. package/src/modules/databaseTable/EditRowDrawer.tsx +124 -0
  180. package/src/modules/databaseTable/index.tsx +359 -0
  181. package/src/modules/databaseTable/server.ts +180 -0
  182. package/src/modules/headlessChat/ReferenceBar.tsx +783 -0
  183. package/src/modules/headlessChat/constants.tsx +54 -0
  184. package/src/modules/headlessChat/index.tsx +1706 -0
  185. package/src/modules/headlessChat/referenceCom/DeleteModal.tsx +75 -0
  186. package/src/modules/headlessChat/referenceCom/DrawerContent.tsx +136 -0
  187. package/src/modules/headlessChat/referenceCom/DrawerDatabase.tsx +102 -0
  188. package/src/modules/headlessChat/referenceCom/DrawerGraphPreview.tsx +86 -0
  189. package/src/modules/headlessChat/referenceCom/DrawerPreview.tsx +73 -0
  190. package/src/modules/headlessChat/referenceCom/DrawerTitle.tsx +26 -0
  191. package/src/modules/headlessChat/referenceCom/RenameModal.tsx +86 -0
  192. package/src/modules/headlessChat/referenceCom/TagCom.tsx +30 -0
  193. package/src/modules/headlessChat/style.less +3 -0
  194. package/src/modules/headlessChat/types.ts +23 -0
  195. package/src/modules/headlessChat/utils/index.ts +348 -0
  196. package/src/modules/login/components/Login/LoginBox/index.tsx +102 -0
  197. package/src/modules/login/components/Login/RegisterBox/index.tsx +180 -0
  198. package/src/modules/login/components/Login/index.tsx +100 -0
  199. package/src/modules/login/index.tsx +106 -0
  200. package/src/modules/login/style.css +3 -0
  201. package/src/modules/login/useServices.ts +53 -0
  202. package/src/modules/login/utils.ts +42 -0
  203. package/src/modules/modelManage/ConfigDrawer.tsx +249 -0
  204. package/src/modules/modelManage/ReplaceModal.tsx +124 -0
  205. package/src/modules/modelManage/assets/empty.png +0 -0
  206. package/src/modules/modelManage/const.ts +51 -0
  207. package/src/modules/modelManage/index.tsx +606 -0
  208. package/src/modules/modelManage/server.ts +223 -0
  209. package/src/modules/nodegraph/index.tsx +1 -0
  210. package/src/modules/search/assets/Icon-history.svg +8 -0
  211. package/src/modules/search/assets/answerAwartar.png +0 -0
  212. package/src/modules/search/assets/doc.png +0 -0
  213. package/src/modules/search/assets/genera.gif +0 -0
  214. package/src/modules/search/assets/icon-robot.svg +9 -0
  215. package/src/modules/search/assets/icon-search-bar.svg +14 -0
  216. package/src/modules/search/assets/icon-sub-title.svg +3 -0
  217. package/src/modules/search/assets/icon-title.svg +9 -0
  218. package/src/modules/search/assets/icon-zoomOut.svg +9 -0
  219. package/src/modules/search/assets/iconAi.svg +9 -0
  220. package/src/modules/search/assets/pdf.png +0 -0
  221. package/src/modules/search/assets/ppt.png +0 -0
  222. package/src/modules/search/assets/search.svg +3 -0
  223. package/src/modules/search/assets/selected.svg +4 -0
  224. package/src/modules/search/assets/txt.png +0 -0
  225. package/src/modules/search/assets/xls.png +0 -0
  226. package/src/modules/search/components/AssisSelect.tsx +137 -0
  227. package/src/modules/search/components/Editor/ChatViewEditor.tsx +261 -0
  228. package/src/modules/search/components/Editor/aichat.css +1 -0
  229. package/src/modules/search/components/Editor/constant.ts +13 -0
  230. package/src/modules/search/components/Editor/index.tsx +113 -0
  231. package/src/modules/search/components/Editor/plugins/autofomatRules.ts +332 -0
  232. package/src/modules/search/components/Editor/plugins/convertImgPlugins.tsx +20 -0
  233. package/src/modules/search/components/Editor/plugins/createIndexes.tsx +38 -0
  234. package/src/modules/search/components/Editor/plugins/displayer.ts +298 -0
  235. package/src/modules/search/components/Editor/plugins/imageClick.tsx +32 -0
  236. package/src/modules/search/components/Editor/plugins/myplugin.tsx +98 -0
  237. package/src/modules/search/components/Editor/ui/avatar.tsx +19 -0
  238. package/src/modules/search/components/Editor/ui/blockquote-element.tsx +21 -0
  239. package/src/modules/search/components/Editor/ui/button.tsx +58 -0
  240. package/src/modules/search/components/Editor/ui/calendar.tsx +68 -0
  241. package/src/modules/search/components/Editor/ui/caption.tsx +46 -0
  242. package/src/modules/search/components/Editor/ui/checkbox.tsx +27 -0
  243. package/src/modules/search/components/Editor/ui/code-block-combobox.tsx +188 -0
  244. package/src/modules/search/components/Editor/ui/code-block-element.css +434 -0
  245. package/src/modules/search/components/Editor/ui/code-block-element.tsx +39 -0
  246. package/src/modules/search/components/Editor/ui/code-leaf.tsx +24 -0
  247. package/src/modules/search/components/Editor/ui/code-line-element.tsx +10 -0
  248. package/src/modules/search/components/Editor/ui/code-syntax-leaf.tsx +21 -0
  249. package/src/modules/search/components/Editor/ui/column-element.tsx +30 -0
  250. package/src/modules/search/components/Editor/ui/column-group-element.tsx +94 -0
  251. package/src/modules/search/components/Editor/ui/command.tsx +75 -0
  252. package/src/modules/search/components/Editor/ui/comment-avatar.tsx +22 -0
  253. package/src/modules/search/components/Editor/ui/comment-create-form.tsx +37 -0
  254. package/src/modules/search/components/Editor/ui/comment-item.tsx +74 -0
  255. package/src/modules/search/components/Editor/ui/comment-leaf.tsx +49 -0
  256. package/src/modules/search/components/Editor/ui/comment-more-dropdown.tsx +42 -0
  257. package/src/modules/search/components/Editor/ui/comment-reply-items.tsx +22 -0
  258. package/src/modules/search/components/Editor/ui/comment-resolve-button.tsx +32 -0
  259. package/src/modules/search/components/Editor/ui/comment-value.tsx +34 -0
  260. package/src/modules/search/components/Editor/ui/comments-popover.tsx +63 -0
  261. package/src/modules/search/components/Editor/ui/date-element.tsx +83 -0
  262. package/src/modules/search/components/Editor/ui/dialog.tsx +63 -0
  263. package/src/modules/search/components/Editor/ui/draggable.tsx +177 -0
  264. package/src/modules/search/components/Editor/ui/dropdown-menu.tsx +180 -0
  265. package/src/modules/search/components/Editor/ui/emoji-input-element.tsx +85 -0
  266. package/src/modules/search/components/Editor/ui/excalidraw-element.tsx +28 -0
  267. package/src/modules/search/components/Editor/ui/fixed-toolbar-buttons.tsx +76 -0
  268. package/src/modules/search/components/Editor/ui/fixed-toolbar.tsx +8 -0
  269. package/src/modules/search/components/Editor/ui/floating-toolbar-buttons.tsx +51 -0
  270. package/src/modules/search/components/Editor/ui/floating-toolbar.tsx +77 -0
  271. package/src/modules/search/components/Editor/ui/heading-element.tsx +48 -0
  272. package/src/modules/search/components/Editor/ui/highlight-leaf.tsx +17 -0
  273. package/src/modules/search/components/Editor/ui/hr-element.tsx +30 -0
  274. package/src/modules/search/components/Editor/ui/icons.tsx +267 -0
  275. package/src/modules/search/components/Editor/ui/image-element.tsx +74 -0
  276. package/src/modules/search/components/Editor/ui/inline-combobox.tsx +368 -0
  277. package/src/modules/search/components/Editor/ui/input.tsx +25 -0
  278. package/src/modules/search/components/Editor/ui/insert-dropdown-menu.tsx +218 -0
  279. package/src/modules/search/components/Editor/ui/kbd-leaf.tsx +20 -0
  280. package/src/modules/search/components/Editor/ui/link-element.tsx +29 -0
  281. package/src/modules/search/components/Editor/ui/link-floating-toolbar.tsx +161 -0
  282. package/src/modules/search/components/Editor/ui/list-element.tsx +30 -0
  283. package/src/modules/search/components/Editor/ui/mark-toolbar-button.tsx +24 -0
  284. package/src/modules/search/components/Editor/ui/media-embed-element.tsx +133 -0
  285. package/src/modules/search/components/Editor/ui/media-popover.tsx +97 -0
  286. package/src/modules/search/components/Editor/ui/mention-element.tsx +43 -0
  287. package/src/modules/search/components/Editor/ui/mention-input-element.tsx +141 -0
  288. package/src/modules/search/components/Editor/ui/mode-dropdown-menu.tsx +93 -0
  289. package/src/modules/search/components/Editor/ui/more-dropdown-menu.tsx +67 -0
  290. package/src/modules/search/components/Editor/ui/paragraph-element.tsx +4 -0
  291. package/src/modules/search/components/Editor/ui/placeholder.tsx +52 -0
  292. package/src/modules/search/components/Editor/ui/popover.tsx +32 -0
  293. package/src/modules/search/components/Editor/ui/resizable.tsx +66 -0
  294. package/src/modules/search/components/Editor/ui/separator.tsx +25 -0
  295. package/src/modules/search/components/Editor/ui/style.less +12 -0
  296. package/src/modules/search/components/Editor/ui/table-cell-element.tsx +143 -0
  297. package/src/modules/search/components/Editor/ui/table-element.tsx +243 -0
  298. package/src/modules/search/components/Editor/ui/table-row-element.tsx +22 -0
  299. package/src/modules/search/components/Editor/ui/tableValue.tsx +135 -0
  300. package/src/modules/search/components/Editor/ui/todo-list-element.tsx +43 -0
  301. package/src/modules/search/components/Editor/ui/toggle-element.tsx +31 -0
  302. package/src/modules/search/components/Editor/ui/toolbar.tsx +157 -0
  303. package/src/modules/search/components/Editor/ui/tooltip.tsx +65 -0
  304. package/src/modules/search/components/Editor/ui/turn-into-dropdown-menu.tsx +160 -0
  305. package/src/modules/search/components/Editor/ui/with-draggables.tsx +175 -0
  306. package/src/modules/search/components/FileList.tsx +287 -0
  307. package/src/modules/search/components/ImageGroupView/index.tsx +85 -0
  308. package/src/modules/search/components/ResultContent.tsx +232 -0
  309. package/src/modules/search/components/SearchInput.tsx +232 -0
  310. package/src/modules/search/components/SearchLanding.tsx +74 -0
  311. package/src/modules/search/components/SearchView.tsx +563 -0
  312. package/src/modules/search/components/SimpleEditor.tsx +158 -0
  313. package/src/modules/search/components/SimpleFileList.tsx +215 -0
  314. package/src/modules/search/index.tsx +10 -0
  315. package/src/modules/search/reademe.md +1 -0
  316. package/src/modules/search/servers/apis.tsx +19 -0
  317. package/src/modules/search/servers/index.ts +184 -0
  318. package/src/modules/search/style.less +503 -0
  319. package/src/modules/search/type.ts +22 -0
  320. package/src/modules/search/utils.ts +34 -0
  321. package/src/modules/sensitive/index.tsx +313 -0
  322. package/src/modules/sensitive/server.ts +122 -0
  323. package/src/modules/streamFilesReader/GientechStreamReader.tsx +1625 -0
  324. package/src/modules/streamFilesReader/components/Header/Toolbar.tsx +0 -0
  325. package/src/modules/streamFilesReader/components/Header/index.tsx +297 -0
  326. package/src/modules/streamFilesReader/index.tsx +3 -0
  327. package/src/style.css +6 -0
  328. package/src/type.d.ts +0 -0
  329. package/src/utils/commonFn.tsx +111 -0
  330. package/src/utils/decryptApiKey.ts +40 -0
  331. package/src/utils/gientechCommon/components/AppError.tsx +32 -0
  332. package/src/utils/gientechCommon/components/AppLoading.tsx +75 -0
  333. package/src/utils/gientechCommon/components/DeleteModal.tsx +75 -0
  334. package/src/utils/gientechCommon/components/DisplayError.tsx +33 -0
  335. package/src/utils/gientechCommon/components/DisplayLoading.tsx +38 -0
  336. package/src/utils/gientechCommon/components/FeedBackModal.tsx +319 -0
  337. package/src/utils/gientechCommon/components/FileCardCommon.tsx +82 -0
  338. package/src/utils/gientechCommon/components/FileManager/index.tsx +400 -0
  339. package/src/utils/gientechCommon/components/FileManager/style.css +5 -0
  340. package/src/utils/gientechCommon/components/Messages/GientechNewChatWelcome.tsx +581 -0
  341. package/src/utils/gientechCommon/components/Messages/ReferenceCard.tsx +359 -0
  342. package/src/utils/gientechCommon/components/Messages/RetriveItem.tsx +245 -0
  343. package/src/utils/gientechCommon/components/Messages/WebRetriveItem.tsx +209 -0
  344. package/src/utils/gientechCommon/components/Messages/defaultBot.png +0 -0
  345. package/src/utils/gientechCommon/components/Messages/defaultStyleSet.tsx +148 -0
  346. package/src/utils/gientechCommon/components/Messages/defaultWeLogo.svg +14 -0
  347. package/src/utils/gientechCommon/components/RenameModal.tsx +86 -0
  348. package/src/utils/gientechCommon/components/style.less +11 -0
  349. package/src/utils/gientechCommon/configs/commonConfig.ts +2 -0
  350. package/src/utils/gientechCommon/configs/senderConfig.ts +0 -0
  351. package/src/utils/gientechCommon/configs/stylesConfig.ts +142 -0
  352. package/src/utils/gientechCommon/hooks/AichatUseController.tsx +417 -0
  353. package/src/utils/gientechCommon/hooks/useFileDisplayTools.tsx +204 -0
  354. package/src/utils/gientechCommon/hooks/useFileManager.ts +193 -0
  355. package/src/utils/gientechCommon/slate/converters/deserializers.ts +763 -0
  356. package/src/utils/gientechCommon/slate/converters/mockData.ts +232 -0
  357. package/src/utils/gientechCommon/slate/converters/slateConverters.ts +258 -0
  358. package/src/utils/gientechCommon/slate/richElements/index.tsx +499 -0
  359. package/src/utils/gientechCommon/utils/fileUtils.ts +86 -0
  360. package/src/utils/gientechCommon/utils/request.ts +37 -0
  361. package/src/utils/gientechCommon/utils/serverFn.ts +172 -0
  362. package/src/utils/index.tsx +142 -0
  363. package/src/utils/testconfigs/demologin/index.tsx +32 -0
  364. package/src/utils/testconfigs/index.ts +59 -0
  365. package/src/vite-env.d.ts +42 -0
  366. package/stats.html +4949 -0
  367. package/tailwind.config.js +170 -0
  368. package/tsconfig.app.json +30 -0
  369. package/tsconfig.app.tsbuildinfo +11 -0
  370. package/tsconfig.json +13 -0
  371. package/tsconfig.node.json +22 -0
  372. package/tsconfig.node.tsbuildinfo +1 -0
  373. package/vite.config.app.ts +93 -0
  374. package/vite.config.ts +232 -0
  375. package/workflows/release.yml +60 -0
  376. package//346/215/242/350/241/214/346/240/274/345/274/217/344/277/235/346/214/201/344/274/230/345/214/226/346/226/271/346/241/210.md +359 -0
  377. package/assistantConfig.js +0 -1
  378. package/chat.js +0 -786
  379. package/database.js +0 -20
  380. package/databaseId.js +0 -1
  381. package/index.js +0 -1
  382. package/streamFilesReader.js +0 -1
  383. /package/{assets → dist/assets}/Doris.png +0 -0
  384. /package/{assets → dist/assets}/PostgreSQL.png +0 -0
  385. /package/{assets → dist/assets}/SQLServer.png +0 -0
  386. /package/{assets → dist/assets}/empty.png +0 -0
  387. /package/{assets → dist/assets}/homeBg.png +0 -0
  388. /package/{assets → dist/assets}/index-CpW6Dhpp.js +0 -0
  389. /package/{assets → dist/assets}/left.jpg +0 -0
  390. /package/{assets → dist/assets}/logoImg.png +0 -0
  391. /package/{assets → dist/assets}/style.css +0 -0
  392. /package/{assets → dist/assets}/style2.css +0 -0
  393. /package/{assets → dist/assets}/style3.css +0 -0
  394. /package/{assets → dist/assets}/style4.css +0 -0
  395. /package/{assets → dist/assets}/worker-BbpylX7l.js +0 -0
  396. /package/{assistantConfig.d.ts → dist/assistantConfig.d.ts} +0 -0
  397. /package/{chat.d.ts → dist/chat.d.ts} +0 -0
  398. /package/{database.d.ts → dist/database.d.ts} +0 -0
  399. /package/{databaseId.d.ts → dist/databaseId.d.ts} +0 -0
  400. /package/{databaseTable.d.ts → dist/databaseTable.d.ts} +0 -0
  401. /package/{icons → dist/icons}/answerAwartar.png +0 -0
  402. /package/{icons → dist/icons}/docx-file.png +0 -0
  403. /package/{icons → dist/icons}/folder.png +0 -0
  404. /package/{icons → dist/icons}/html.png +0 -0
  405. /package/{icons → dist/icons}/image.png +0 -0
  406. /package/{icons → dist/icons}/jpg-file.png +0 -0
  407. /package/{icons → dist/icons}/json.png +0 -0
  408. /package/{icons → dist/icons}/md.png +0 -0
  409. /package/{icons → dist/icons}/pdf.png +0 -0
  410. /package/{icons → dist/icons}/pptx.png +0 -0
  411. /package/{icons → dist/icons}/questionAwartar.png +0 -0
  412. /package/{icons → dist/icons}/sheets.png +0 -0
  413. /package/{icons → dist/icons}/txt.png +0 -0
  414. /package/{icons → dist/icons}/xlsx.png +0 -0
  415. /package/{index.d.ts → dist/index.d.ts} +0 -0
  416. /package/{modelManage.d.ts → dist/modelManage.d.ts} +0 -0
  417. /package/{sensitive.d.ts → dist/sensitive.d.ts} +0 -0
  418. /package/{streamFilesReader.d.ts → dist/streamFilesReader.d.ts} +0 -0
  419. /package/{vite.svg → dist/vite.svg} +0 -0
@@ -0,0 +1,177 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+
5
+ import type { ClassNames, TEditor } from '@udecode/plate-common';
6
+ import type { DropTargetMonitor } from 'react-dnd';
7
+
8
+ import { cn, withRef } from '@udecode/cn';
9
+ import {
10
+ type PlateElementProps,
11
+ useEditorRef,
12
+ } from '@udecode/plate-common/react';
13
+ import {
14
+ type DragItemNode,
15
+ useDraggable,
16
+ useDraggableState,
17
+ } from '@udecode/plate-dnd';
18
+ import { BlockSelectionPlugin } from '@udecode/plate-selection/react';
19
+
20
+ import { Icons } from './icons';
21
+
22
+ import {
23
+ Tooltip,
24
+ TooltipContent,
25
+ TooltipPortal,
26
+ TooltipTrigger,
27
+ } from './tooltip';
28
+
29
+ export interface DraggableProps
30
+ extends PlateElementProps,
31
+ ClassNames<{
32
+ /** Block. */
33
+ block: string;
34
+
35
+ /** Block and gutter. */
36
+ blockAndGutter: string;
37
+
38
+ /** Block toolbar in the gutter. */
39
+ blockToolbar: string;
40
+
41
+ /**
42
+ * Block toolbar wrapper in the gutter left. It has the height of a line
43
+ * of the block.
44
+ */
45
+ blockToolbarWrapper: string;
46
+
47
+ blockWrapper: string;
48
+
49
+ /** Button to dnd the block, in the block toolbar. */
50
+ dragHandle: string;
51
+
52
+ /** Icon of the drag button, in the drag icon. */
53
+ dragIcon: string;
54
+
55
+ /** Show a dropline above or below the block when dragging a block. */
56
+ dropLine: string;
57
+
58
+ /** Gutter at the left side of the editor. It has the height of the block */
59
+ gutterLeft: string;
60
+ }> {
61
+ /**
62
+ * Intercepts the drop handling. If `false` is returned, the default drop
63
+ * behavior is called after. If `true` is returned, the default behavior is
64
+ * not called.
65
+ */
66
+ onDropHandler?: (
67
+ editor: TEditor,
68
+ props: {
69
+ dragItem: DragItemNode;
70
+ id: string;
71
+ monitor: DropTargetMonitor<DragItemNode, unknown>;
72
+ nodeRef: any;
73
+ }
74
+ ) => boolean;
75
+ }
76
+
77
+ const DragHandle = () => {
78
+ const editor = useEditorRef();
79
+
80
+ return (
81
+ <Tooltip>
82
+ <TooltipTrigger type="button">
83
+ <Icons.dragHandle
84
+ className="size-4 text-muted-foreground"
85
+ onClick={(event) => {
86
+ event.stopPropagation();
87
+ event.preventDefault();
88
+
89
+ // if (element.id) {
90
+ // editor.getApi(BlockSelectionPlugin).blockSelection.addSelectedRow(element.id as string);
91
+ // api.blockContextMenu.show(editor.id, event as any);
92
+ // }
93
+ }}
94
+ onMouseDown={() => {
95
+ editor
96
+ .getApi(BlockSelectionPlugin)
97
+ .blockSelection.resetSelectedIds();
98
+ }}
99
+ />
100
+ </TooltipTrigger>
101
+ <TooltipPortal>
102
+ <TooltipContent>Drag to move</TooltipContent>
103
+ </TooltipPortal>
104
+ </Tooltip>
105
+ );
106
+ };
107
+
108
+ export const Draggable = withRef<'div', DraggableProps>(
109
+ ({ className, classNames = {}, onDropHandler, ...props }, ref) => {
110
+ const { children, element } = props;
111
+
112
+ const state = useDraggableState({ element, onDropHandler });
113
+ const { dropLine, isDragging, isHovered } = state;
114
+ const {
115
+ droplineProps,
116
+ groupProps,
117
+ gutterLeftProps,
118
+ handleRef,
119
+ previewRef,
120
+ } = useDraggable(state);
121
+
122
+ return (
123
+ <div
124
+ className={cn(
125
+ 'relative',
126
+ isDragging && 'opacity-50',
127
+ 'group',
128
+ className
129
+ )}
130
+ ref={ref}
131
+ {...groupProps}
132
+ >
133
+ <div
134
+ className={cn(
135
+ 'pointer-events-none absolute -top-px z-50 flex h-full -translate-x-full cursor-text opacity-0 group-hover:opacity-100',
136
+ classNames.gutterLeft
137
+ )}
138
+ {...gutterLeftProps}
139
+ >
140
+ <div className={cn('flex h-[1.5em]', classNames.blockToolbarWrapper)}>
141
+ <div
142
+ className={cn(
143
+ 'pointer-events-auto mr-1 flex items-center',
144
+ classNames.blockToolbar
145
+ )}
146
+ >
147
+ <div
148
+ className="size-4"
149
+ data-key={element.id as string}
150
+ ref={handleRef}
151
+ >
152
+ {isHovered && <DragHandle />}
153
+ </div>
154
+ </div>
155
+ </div>
156
+ </div>
157
+
158
+ <div className={classNames.blockWrapper} ref={previewRef}>
159
+ {children}
160
+
161
+ {!!dropLine && (
162
+ <div
163
+ className={cn(
164
+ 'absolute inset-x-0 h-0.5 opacity-100',
165
+ 'bg-ring',
166
+ dropLine === 'top' && '-top-px',
167
+ dropLine === 'bottom' && '-bottom-px',
168
+ classNames.dropLine
169
+ )}
170
+ {...droplineProps}
171
+ />
172
+ )}
173
+ </div>
174
+ </div>
175
+ );
176
+ }
177
+ );
@@ -0,0 +1,180 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { useCallback, useState } from 'react';
5
+
6
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
7
+ import {
8
+ cn,
9
+ createPrimitiveElement,
10
+ withCn,
11
+ withProps,
12
+ withRef,
13
+ withVariants,
14
+ } from '@udecode/cn';
15
+ import { cva } from 'class-variance-authority';
16
+
17
+ import { Icons } from './icons';
18
+
19
+ export const DropdownMenu = DropdownMenuPrimitive.Root;
20
+
21
+ export const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
22
+
23
+ export const DropdownMenuGroup = DropdownMenuPrimitive.Group;
24
+
25
+ export const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
26
+
27
+ export const DropdownMenuSub = DropdownMenuPrimitive.Sub;
28
+
29
+ export const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
30
+
31
+ export const DropdownMenuSubTrigger = withRef<
32
+ typeof DropdownMenuPrimitive.SubTrigger,
33
+ {
34
+ inset?: boolean;
35
+ }
36
+ >(({ children, className, inset, ...props }, ref) => (
37
+ <DropdownMenuPrimitive.SubTrigger
38
+ className={cn(
39
+ 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent',
40
+ 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
41
+ inset && 'pl-8',
42
+ className
43
+ )}
44
+ ref={ref}
45
+ {...props}
46
+ >
47
+ {children}
48
+ <Icons.chevronRight className="ml-auto size-4" />
49
+ </DropdownMenuPrimitive.SubTrigger>
50
+ ));
51
+
52
+ export const DropdownMenuSubContent = withCn(
53
+ DropdownMenuPrimitive.SubContent,
54
+ 'z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2'
55
+ );
56
+
57
+ const DropdownMenuContentVariants = withProps(DropdownMenuPrimitive.Content, {
58
+ className: cn(
59
+ 'z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2'
60
+ ),
61
+ sideOffset: 4,
62
+ });
63
+
64
+ export const DropdownMenuContent = withRef<
65
+ typeof DropdownMenuPrimitive.Content
66
+ >(({ ...props }, ref) => (
67
+ <DropdownMenuPrimitive.Portal>
68
+ <DropdownMenuContentVariants ref={ref} {...props} />
69
+ </DropdownMenuPrimitive.Portal>
70
+ ));
71
+
72
+ const menuItemVariants = cva(
73
+ cn(
74
+ 'relative flex h-9 cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',
75
+ 'focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50'
76
+ ),
77
+ {
78
+ variants: {
79
+ inset: {
80
+ true: 'pl-8',
81
+ },
82
+ },
83
+ }
84
+ );
85
+
86
+ export const DropdownMenuItem = withVariants(
87
+ DropdownMenuPrimitive.Item,
88
+ menuItemVariants,
89
+ ['inset']
90
+ );
91
+
92
+ export const DropdownMenuCheckboxItem = withRef<
93
+ typeof DropdownMenuPrimitive.CheckboxItem
94
+ >(({ children, className, ...props }, ref) => (
95
+ <DropdownMenuPrimitive.CheckboxItem
96
+ className={cn(
97
+ 'relative flex select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
98
+ 'cursor-pointer',
99
+ className
100
+ )}
101
+ ref={ref}
102
+ {...props}
103
+ >
104
+ <span className="absolute left-2 flex size-3.5 items-center justify-center">
105
+ <DropdownMenuPrimitive.ItemIndicator>
106
+ <Icons.check className="size-4" />
107
+ </DropdownMenuPrimitive.ItemIndicator>
108
+ </span>
109
+ {children}
110
+ </DropdownMenuPrimitive.CheckboxItem>
111
+ ));
112
+
113
+ export const DropdownMenuRadioItem = withRef<
114
+ typeof DropdownMenuPrimitive.RadioItem,
115
+ {
116
+ hideIcon?: boolean;
117
+ }
118
+ >(({ children, className, hideIcon, ...props }, ref) => (
119
+ <DropdownMenuPrimitive.RadioItem
120
+ className={cn(
121
+ 'relative flex select-none items-center rounded-sm pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
122
+ 'h-9 cursor-pointer px-2 data-[state=checked]:bg-accent data-[state=checked]:text-accent-foreground',
123
+ className
124
+ )}
125
+ ref={ref}
126
+ {...props}
127
+ >
128
+ {!hideIcon && (
129
+ <span className="absolute right-2 flex size-3.5 items-center justify-center">
130
+ <DropdownMenuPrimitive.ItemIndicator>
131
+ <Icons.check className="size-4" />
132
+ </DropdownMenuPrimitive.ItemIndicator>
133
+ </span>
134
+ )}
135
+ {children}
136
+ </DropdownMenuPrimitive.RadioItem>
137
+ ));
138
+
139
+ const dropdownMenuLabelVariants = cva(
140
+ cn('select-none px-2 py-1.5 text-sm font-semibold'),
141
+ {
142
+ variants: {
143
+ inset: {
144
+ true: 'pl-8',
145
+ },
146
+ },
147
+ }
148
+ );
149
+
150
+ export const DropdownMenuLabel = withVariants(
151
+ DropdownMenuPrimitive.Label,
152
+ dropdownMenuLabelVariants,
153
+ ['inset']
154
+ );
155
+
156
+ export const DropdownMenuSeparator = withCn(
157
+ DropdownMenuPrimitive.Separator,
158
+ '-mx-1 my-1 h-px bg-muted'
159
+ );
160
+
161
+ export const DropdownMenuShortcut = withCn(
162
+ createPrimitiveElement('span'),
163
+ 'ml-auto text-xs tracking-widest opacity-60'
164
+ );
165
+
166
+ export const useOpenState = () => {
167
+ const [open, setOpen] = useState(false);
168
+
169
+ const onOpenChange = useCallback(
170
+ (_value = !open) => {
171
+ setOpen(_value);
172
+ },
173
+ [open]
174
+ );
175
+
176
+ return {
177
+ onOpenChange,
178
+ open,
179
+ };
180
+ };
@@ -0,0 +1,85 @@
1
+ import React, { useMemo, useState } from 'react';
2
+
3
+ import { withRef } from '@udecode/cn';
4
+ import { PlateElement } from '@udecode/plate-common/react';
5
+ import { EmojiInlineIndexSearch, insertEmoji } from '@udecode/plate-emoji';
6
+
7
+ import {
8
+ InlineCombobox,
9
+ InlineComboboxContent,
10
+ InlineComboboxEmpty,
11
+ InlineComboboxInput,
12
+ InlineComboboxItem,
13
+ } from './inline-combobox';
14
+
15
+ export const EmojiInputElement = withRef<typeof PlateElement>(
16
+ ({ className, ...props }, ref) => {
17
+ const { children, editor, element } = props;
18
+ const [value, setValue] = useState('');
19
+ const debouncedValue = useDebounce(value, 100);
20
+ const isPending = value !== debouncedValue;
21
+
22
+ const filteredEmojis = useMemo(() => {
23
+ if (debouncedValue.trim().length === 0) return [];
24
+
25
+ return EmojiInlineIndexSearch.getInstance()
26
+ .search(debouncedValue.replace(/:$/, ''))
27
+ .get();
28
+ }, [debouncedValue]);
29
+
30
+ return (
31
+ <PlateElement
32
+ as="span"
33
+ data-slate-value={element.value}
34
+ ref={ref}
35
+ {...props}
36
+ >
37
+ <InlineCombobox
38
+ element={element}
39
+ filter={false}
40
+ hideWhenNoValue
41
+ setValue={setValue}
42
+ trigger=":"
43
+ value={value}
44
+ >
45
+ <InlineComboboxInput />
46
+
47
+ <InlineComboboxContent>
48
+ {!isPending && (
49
+ <InlineComboboxEmpty>No matching emoji found</InlineComboboxEmpty>
50
+ )}
51
+
52
+ {filteredEmojis.map((emoji) => (
53
+ <InlineComboboxItem
54
+ key={emoji.id}
55
+ onClick={() => insertEmoji(editor, emoji)}
56
+ value={emoji.name}
57
+ >
58
+ {emoji.skins[0].native} {emoji.name}
59
+ </InlineComboboxItem>
60
+ ))}
61
+ </InlineComboboxContent>
62
+ </InlineCombobox>
63
+
64
+ {children}
65
+ </PlateElement>
66
+ );
67
+ }
68
+ );
69
+
70
+ const useDebounce = (value: any, delay = 500) => {
71
+ const [debouncedValue, setDebouncedValue] = React.useState(value);
72
+
73
+ React.useEffect(() => {
74
+ const handler: NodeJS.Timeout = setTimeout(() => {
75
+ setDebouncedValue(value);
76
+ }, delay);
77
+
78
+ // Cancel the timeout if value changes (also on delay change or unmount)
79
+ return () => {
80
+ clearTimeout(handler);
81
+ };
82
+ }, [value, delay]);
83
+
84
+ return debouncedValue;
85
+ };
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+
3
+ import { withRef } from '@udecode/cn';
4
+ import { PlateElement } from '@udecode/plate-common/react';
5
+ import { useExcalidrawElement } from '@udecode/plate-excalidraw/react';
6
+
7
+ export const ExcalidrawElement = withRef<typeof PlateElement>(
8
+ ({ nodeProps, ...props }, ref) => {
9
+ const { children, element } = props;
10
+
11
+ const { Excalidraw, excalidrawProps } = useExcalidrawElement({
12
+ element,
13
+ });
14
+
15
+ return (
16
+ <PlateElement ref={ref} {...props}>
17
+ <div contentEditable={false}>
18
+ <div className="h-[600px]">
19
+ {Excalidraw && (
20
+ <Excalidraw {...nodeProps} {...(excalidrawProps as any)} />
21
+ )}
22
+ </div>
23
+ </div>
24
+ {children}
25
+ </PlateElement>
26
+ );
27
+ }
28
+ );
@@ -0,0 +1,76 @@
1
+ import React from 'react';
2
+
3
+ import {
4
+ BoldPlugin,
5
+ CodePlugin,
6
+ ItalicPlugin,
7
+ StrikethroughPlugin,
8
+ UnderlinePlugin,
9
+ } from '@udecode/plate-basic-marks/react';
10
+ import { useEditorReadOnly } from '@udecode/plate-common/react';
11
+
12
+ import { Icons } from './icons';
13
+
14
+ import { InsertDropdownMenu } from './insert-dropdown-menu';
15
+ import { MarkToolbarButton } from './mark-toolbar-button';
16
+ import { ModeDropdownMenu } from './mode-dropdown-menu';
17
+ import { ToolbarGroup } from './toolbar';
18
+ import { TurnIntoDropdownMenu } from './turn-into-dropdown-menu';
19
+
20
+ export function FixedToolbarButtons() {
21
+ const readOnly = useEditorReadOnly();
22
+
23
+ return (
24
+ <div className="w-full overflow-hidden">
25
+ <div
26
+ className="flex flex-wrap"
27
+ style={{
28
+ transform: 'translateX(calc(-1px))',
29
+ }}
30
+ >
31
+ {!readOnly && (
32
+ <>
33
+ <ToolbarGroup noSeparator>
34
+ <InsertDropdownMenu />
35
+ <TurnIntoDropdownMenu />
36
+ </ToolbarGroup>
37
+
38
+ <ToolbarGroup>
39
+ <MarkToolbarButton nodeType={BoldPlugin.key} tooltip="Bold (⌘+B)">
40
+ <Icons.bold />
41
+ </MarkToolbarButton>
42
+ <MarkToolbarButton
43
+ nodeType={ItalicPlugin.key}
44
+ tooltip="Italic (⌘+I)"
45
+ >
46
+ <Icons.italic />
47
+ </MarkToolbarButton>
48
+ <MarkToolbarButton
49
+ nodeType={UnderlinePlugin.key}
50
+ tooltip="Underline (⌘+U)"
51
+ >
52
+ <Icons.underline />
53
+ </MarkToolbarButton>
54
+
55
+ <MarkToolbarButton
56
+ nodeType={StrikethroughPlugin.key}
57
+ tooltip="Strikethrough (⌘+⇧+M)"
58
+ >
59
+ <Icons.strikethrough />
60
+ </MarkToolbarButton>
61
+ <MarkToolbarButton nodeType={CodePlugin.key} tooltip="Code (⌘+E)">
62
+ <Icons.code />
63
+ </MarkToolbarButton>
64
+ </ToolbarGroup>
65
+ </>
66
+ )}
67
+
68
+ <div className="grow" />
69
+
70
+ <ToolbarGroup noSeparator>
71
+ <ModeDropdownMenu />
72
+ </ToolbarGroup>
73
+ </div>
74
+ </div>
75
+ );
76
+ }
@@ -0,0 +1,8 @@
1
+ import { withCn } from '@udecode/cn';
2
+
3
+ import { Toolbar } from './toolbar';
4
+
5
+ export const FixedToolbar = withCn(
6
+ Toolbar,
7
+ 'supports-backdrop-blur:bg-background/60 sticky left-0 top-0 z-50 w-full justify-between overflow-x-auto rounded-t-lg border-b border-b-border bg-background/95 backdrop-blur'
8
+ );
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+
3
+ import {
4
+ BoldPlugin,
5
+ CodePlugin,
6
+ ItalicPlugin,
7
+ StrikethroughPlugin,
8
+ UnderlinePlugin,
9
+ } from '@udecode/plate-basic-marks/react';
10
+ import { useEditorReadOnly } from '@udecode/plate-common/react';
11
+
12
+ import { Icons } from './icons';
13
+
14
+ import { MarkToolbarButton } from './mark-toolbar-button';
15
+ import { TurnIntoDropdownMenu } from './turn-into-dropdown-menu';
16
+
17
+ export function FloatingToolbarButtons() {
18
+ const readOnly = useEditorReadOnly();
19
+
20
+ return (
21
+ <>
22
+ {!readOnly && (
23
+ <>
24
+ <TurnIntoDropdownMenu />
25
+
26
+ <MarkToolbarButton nodeType={BoldPlugin.key} tooltip="Bold (⌘+B)">
27
+ <Icons.bold />
28
+ </MarkToolbarButton>
29
+ <MarkToolbarButton nodeType={ItalicPlugin.key} tooltip="Italic (⌘+I)">
30
+ <Icons.italic />
31
+ </MarkToolbarButton>
32
+ <MarkToolbarButton
33
+ nodeType={UnderlinePlugin.key}
34
+ tooltip="Underline (⌘+U)"
35
+ >
36
+ <Icons.underline />
37
+ </MarkToolbarButton>
38
+ <MarkToolbarButton
39
+ nodeType={StrikethroughPlugin.key}
40
+ tooltip="Strikethrough (⌘+⇧+M)"
41
+ >
42
+ <Icons.strikethrough />
43
+ </MarkToolbarButton>
44
+ <MarkToolbarButton nodeType={CodePlugin.key} tooltip="Code (⌘+E)">
45
+ <Icons.code />
46
+ </MarkToolbarButton>
47
+ </>
48
+ )}
49
+ </>
50
+ );
51
+ }
@@ -0,0 +1,77 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+
5
+ import { cn, withRef } from '@udecode/cn';
6
+ import {
7
+ PortalBody,
8
+ useComposedRef,
9
+ useEditorId,
10
+ useEventEditorSelectors,
11
+ } from '@udecode/plate-common/react';
12
+ import {
13
+ type FloatingToolbarState,
14
+ flip,
15
+ offset,
16
+ useFloatingToolbar,
17
+ useFloatingToolbarState,
18
+ } from '@udecode/plate-floating';
19
+
20
+ import { Toolbar } from './toolbar';
21
+
22
+ export const FloatingToolbar = withRef<
23
+ typeof Toolbar,
24
+ {
25
+ state?: FloatingToolbarState;
26
+ }
27
+ >(({ children, state, ...props }, componentRef) => {
28
+ const editorId = useEditorId();
29
+ const focusedEditorId = useEventEditorSelectors.focus();
30
+
31
+ const floatingToolbarState = useFloatingToolbarState({
32
+ editorId,
33
+ focusedEditorId,
34
+ ...state,
35
+ floatingOptions: {
36
+ middleware: [
37
+ offset(12),
38
+ flip({
39
+ fallbackPlacements: [
40
+ 'top-start',
41
+ 'top-end',
42
+ 'bottom-start',
43
+ 'bottom-end',
44
+ ],
45
+ padding: 12,
46
+ }),
47
+ ],
48
+ placement: 'top',
49
+ ...state?.floatingOptions,
50
+ },
51
+ });
52
+
53
+ const {
54
+ hidden,
55
+ props: rootProps,
56
+ ref: floatingRef,
57
+ } = useFloatingToolbar(floatingToolbarState);
58
+
59
+ const ref = useComposedRef<HTMLDivElement>(componentRef, floatingRef);
60
+
61
+ if (hidden) return null;
62
+
63
+ return (
64
+ <PortalBody>
65
+ <Toolbar
66
+ className={cn(
67
+ 'absolute z-50 whitespace-nowrap border bg-popover px-1 opacity-100 shadow-md print:hidden'
68
+ )}
69
+ ref={ref}
70
+ {...rootProps}
71
+ {...props}
72
+ >
73
+ {children}
74
+ </Toolbar>
75
+ </PortalBody>
76
+ );
77
+ });