@gientech/modual 1.3.3 → 1.3.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 (308) hide show
  1. package/README.md +129 -129
  2. package/{dist/assets → assets}/database.svg +11 -11
  3. package/{src/modules/database/assets → assets}/database_add.svg +53 -53
  4. package/{dist/assets → assets}/database_connect.svg +66 -66
  5. package/{dist/assets → assets}/database_upload.svg +29 -29
  6. package/{dist/assets → assets}/defaultWeLogo.svg +14 -14
  7. package/{dist/assets/index-mPgEc8KC.js → assets/index-CDNF071H.js} +38 -38
  8. package/{dist/assets/index-XvC_4jDB.js → assets/index-Ce4td48i.js} +20 -20
  9. package/{dist/assets → assets}/mysql.svg +14 -14
  10. package/chat.js +654 -0
  11. package/database.js +20 -0
  12. package/{dist/databaseId.js → databaseId.js} +1 -1
  13. package/{dist/databaseTable.js → databaseTable.js} +1 -1
  14. package/{dist/modelManage.js → modelManage.js} +1 -1
  15. package/package.json +39 -83
  16. package/{dist/sensitive.js → sensitive.js} +1 -1
  17. package/{dist/streamFilesReader.js → streamFilesReader.js} +10 -10
  18. package/{dist/worker → worker}/pdf.worker.min.js +21 -21
  19. package/.editorconfig +0 -38
  20. package/.prettierignore +0 -16
  21. package/.prettierrc +0 -17
  22. package/USAGE.md +0 -191
  23. package/bash.exe.stackdump +0 -40
  24. package/components.json +0 -21
  25. package/dist/README.md +0 -129
  26. package/dist/assets/database_add.svg +0 -53
  27. package/dist/chat.js +0 -654
  28. package/dist/database.js +0 -20
  29. package/dist/package.json +0 -56
  30. package/doc_assets/2.png +0 -0
  31. package/doc_assets/demo.md +0 -27
  32. package/doc_assets/demos/dist-app/assets/index.Dh-ZAS9Z.css +0 -2
  33. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js +0 -23699
  34. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js.map +0 -1
  35. package/doc_assets/demos/dist-app/index.html +0 -14
  36. package/doc_assets/demos/dist-app/vite.svg +0 -1
  37. package/doc_assets/images/1.png +0 -0
  38. package/doc_assets/images/3.png +0 -0
  39. package/doc_assets/images/component-screenshot.png +0 -1
  40. package/doc_assets/install.md +0 -5
  41. package/eslint.config.js +0 -92
  42. package/index.html +0 -13
  43. package/postcss.config.cjs +0 -19
  44. package/public/vite.svg +0 -1
  45. package/public/worker/pdf.worker.min.js +0 -22
  46. package/scripts/README.md +0 -133
  47. package/scripts/build-demo.js +0 -88
  48. package/scripts/demo-selector.js +0 -216
  49. package/scripts/dev-demo.js +0 -76
  50. package/scripts/preview-demo.js +0 -130
  51. package/scripts/run-demo.bat +0 -34
  52. package/src/assets/img/downArrow.png +0 -0
  53. package/src/assets/img/excel.png +0 -0
  54. package/src/assets/img/img.png +0 -0
  55. package/src/assets/img/pdf.png +0 -0
  56. package/src/assets/img/ppt.png +0 -0
  57. package/src/assets/img/txt.png +0 -0
  58. package/src/assets/img/word.png +0 -0
  59. package/src/assets/login/homeBg.png +0 -0
  60. package/src/assets/login/left.jpg +0 -0
  61. package/src/assets/login/logoImg.png +0 -0
  62. package/src/examples/LoginPage/index.tsx +0 -18
  63. package/src/examples/aaa/index.tsx +0 -3758
  64. package/src/examples/chat/components/DrawerGraphPreview.tsx +0 -78
  65. package/src/examples/chat/index.tsx +0 -190
  66. package/src/examples/gientechStreamFilesReader/index.tsx +0 -1016
  67. package/src/examples/ragDatabaseDataPage/index.tsx +0 -36
  68. package/src/examples/ragDatabaseIdPage/index.tsx +0 -44
  69. package/src/examples/ragDatabasePage/index.tsx +0 -36
  70. package/src/examples/ragModelManagePage/index.tsx +0 -37
  71. package/src/examples/ragSearchPage/index.tsx +0 -0
  72. package/src/examples/ragSensitiveWordsPage/index.tsx +0 -32
  73. package/src/examples/streamFiles/index.tsx +0 -384
  74. package/src/lib_enter.ts +0 -38
  75. package/src/main.tsx +0 -5
  76. package/src/main.tsx.backup +0 -5
  77. package/src/modules/chat/Conversations/Item.tsx +0 -167
  78. package/src/modules/chat/Conversations/List.tsx +0 -143
  79. package/src/modules/chat/Conversations/groupByTime.ts +0 -39
  80. package/src/modules/chat/Conversations/index.tsx +0 -212
  81. package/src/modules/chat/constants.tsx +0 -33
  82. package/src/modules/chat/data.txt +0 -82
  83. package/src/modules/chat/index.tsx +0 -1908
  84. package/src/modules/chat/types.ts +0 -17
  85. package/src/modules/database/CreateModal.tsx +0 -398
  86. package/src/modules/database/assets/Doris.png +0 -0
  87. package/src/modules/database/assets/PostgreSQL.png +0 -0
  88. package/src/modules/database/assets/SQLServer.png +0 -0
  89. package/src/modules/database/assets/database.svg +0 -11
  90. package/src/modules/database/assets/database_connect.svg +0 -66
  91. package/src/modules/database/assets/database_upload.svg +0 -29
  92. package/src/modules/database/assets/empty.png +0 -0
  93. package/src/modules/database/assets/mysql.svg +0 -14
  94. package/src/modules/database/index.tsx +0 -466
  95. package/src/modules/database/server.ts +0 -196
  96. package/src/modules/databaseId/CustomCom.tsx +0 -156
  97. package/src/modules/databaseId/EditConfig.tsx +0 -268
  98. package/src/modules/databaseId/UploadDrawer.tsx +0 -520
  99. package/src/modules/databaseId/assets/aiOptimize.svg +0 -10
  100. package/src/modules/databaseId/assets/empty.png +0 -0
  101. package/src/modules/databaseId/assets/template.svg +0 -6
  102. package/src/modules/databaseId/assets/upload.svg +0 -9
  103. package/src/modules/databaseId/assets/useTemp.svg +0 -6
  104. package/src/modules/databaseId/index.tsx +0 -734
  105. package/src/modules/databaseId/server.ts +0 -286
  106. package/src/modules/databaseId/style.css +0 -5
  107. package/src/modules/databaseTable/EditRowDrawer.tsx +0 -119
  108. package/src/modules/databaseTable/index.tsx +0 -357
  109. package/src/modules/databaseTable/server.ts +0 -180
  110. package/src/modules/headlessChat/constants.tsx +0 -32
  111. package/src/modules/headlessChat/index.tsx +0 -1065
  112. package/src/modules/headlessChat/types.ts +0 -23
  113. package/src/modules/login/components/Login/LoginBox/index.tsx +0 -102
  114. package/src/modules/login/components/Login/RegisterBox/index.tsx +0 -180
  115. package/src/modules/login/components/Login/index.tsx +0 -100
  116. package/src/modules/login/index.tsx +0 -106
  117. package/src/modules/login/style.css +0 -3
  118. package/src/modules/login/useServices.ts +0 -53
  119. package/src/modules/login/utils.ts +0 -42
  120. package/src/modules/modelManage/ConfigDrawer.tsx +0 -249
  121. package/src/modules/modelManage/assets/empty.png +0 -0
  122. package/src/modules/modelManage/const.ts +0 -50
  123. package/src/modules/modelManage/index.tsx +0 -439
  124. package/src/modules/modelManage/server.ts +0 -185
  125. package/src/modules/nodegraph/index.tsx +0 -1
  126. package/src/modules/search/assets/Icon-history.svg +0 -8
  127. package/src/modules/search/assets/answerAwartar.png +0 -0
  128. package/src/modules/search/assets/doc.png +0 -0
  129. package/src/modules/search/assets/genera.gif +0 -0
  130. package/src/modules/search/assets/icon-robot.svg +0 -9
  131. package/src/modules/search/assets/icon-search-bar.svg +0 -14
  132. package/src/modules/search/assets/icon-sub-title.svg +0 -3
  133. package/src/modules/search/assets/icon-title.svg +0 -9
  134. package/src/modules/search/assets/icon-zoomOut.svg +0 -9
  135. package/src/modules/search/assets/iconAi.svg +0 -9
  136. package/src/modules/search/assets/pdf.png +0 -0
  137. package/src/modules/search/assets/ppt.png +0 -0
  138. package/src/modules/search/assets/search.svg +0 -3
  139. package/src/modules/search/assets/selected.svg +0 -4
  140. package/src/modules/search/assets/txt.png +0 -0
  141. package/src/modules/search/assets/xls.png +0 -0
  142. package/src/modules/search/components/AssisSelect.tsx +0 -137
  143. package/src/modules/search/components/Editor/ChatViewEditor.tsx +0 -261
  144. package/src/modules/search/components/Editor/aichat.css +0 -1
  145. package/src/modules/search/components/Editor/constant.ts +0 -13
  146. package/src/modules/search/components/Editor/index.tsx +0 -113
  147. package/src/modules/search/components/Editor/plugins/autofomatRules.ts +0 -332
  148. package/src/modules/search/components/Editor/plugins/convertImgPlugins.tsx +0 -20
  149. package/src/modules/search/components/Editor/plugins/createIndexes.tsx +0 -38
  150. package/src/modules/search/components/Editor/plugins/displayer.ts +0 -298
  151. package/src/modules/search/components/Editor/plugins/imageClick.tsx +0 -32
  152. package/src/modules/search/components/Editor/plugins/myplugin.tsx +0 -98
  153. package/src/modules/search/components/Editor/ui/avatar.tsx +0 -19
  154. package/src/modules/search/components/Editor/ui/blockquote-element.tsx +0 -21
  155. package/src/modules/search/components/Editor/ui/button.tsx +0 -58
  156. package/src/modules/search/components/Editor/ui/calendar.tsx +0 -68
  157. package/src/modules/search/components/Editor/ui/caption.tsx +0 -46
  158. package/src/modules/search/components/Editor/ui/checkbox.tsx +0 -27
  159. package/src/modules/search/components/Editor/ui/code-block-combobox.tsx +0 -188
  160. package/src/modules/search/components/Editor/ui/code-block-element.css +0 -434
  161. package/src/modules/search/components/Editor/ui/code-block-element.tsx +0 -39
  162. package/src/modules/search/components/Editor/ui/code-leaf.tsx +0 -24
  163. package/src/modules/search/components/Editor/ui/code-line-element.tsx +0 -10
  164. package/src/modules/search/components/Editor/ui/code-syntax-leaf.tsx +0 -21
  165. package/src/modules/search/components/Editor/ui/column-element.tsx +0 -30
  166. package/src/modules/search/components/Editor/ui/column-group-element.tsx +0 -94
  167. package/src/modules/search/components/Editor/ui/command.tsx +0 -75
  168. package/src/modules/search/components/Editor/ui/comment-avatar.tsx +0 -22
  169. package/src/modules/search/components/Editor/ui/comment-create-form.tsx +0 -37
  170. package/src/modules/search/components/Editor/ui/comment-item.tsx +0 -74
  171. package/src/modules/search/components/Editor/ui/comment-leaf.tsx +0 -49
  172. package/src/modules/search/components/Editor/ui/comment-more-dropdown.tsx +0 -42
  173. package/src/modules/search/components/Editor/ui/comment-reply-items.tsx +0 -22
  174. package/src/modules/search/components/Editor/ui/comment-resolve-button.tsx +0 -32
  175. package/src/modules/search/components/Editor/ui/comment-value.tsx +0 -34
  176. package/src/modules/search/components/Editor/ui/comments-popover.tsx +0 -63
  177. package/src/modules/search/components/Editor/ui/date-element.tsx +0 -83
  178. package/src/modules/search/components/Editor/ui/dialog.tsx +0 -63
  179. package/src/modules/search/components/Editor/ui/draggable.tsx +0 -177
  180. package/src/modules/search/components/Editor/ui/dropdown-menu.tsx +0 -180
  181. package/src/modules/search/components/Editor/ui/emoji-input-element.tsx +0 -85
  182. package/src/modules/search/components/Editor/ui/excalidraw-element.tsx +0 -28
  183. package/src/modules/search/components/Editor/ui/fixed-toolbar-buttons.tsx +0 -76
  184. package/src/modules/search/components/Editor/ui/fixed-toolbar.tsx +0 -8
  185. package/src/modules/search/components/Editor/ui/floating-toolbar-buttons.tsx +0 -51
  186. package/src/modules/search/components/Editor/ui/floating-toolbar.tsx +0 -77
  187. package/src/modules/search/components/Editor/ui/heading-element.tsx +0 -48
  188. package/src/modules/search/components/Editor/ui/highlight-leaf.tsx +0 -17
  189. package/src/modules/search/components/Editor/ui/hr-element.tsx +0 -30
  190. package/src/modules/search/components/Editor/ui/icons.tsx +0 -267
  191. package/src/modules/search/components/Editor/ui/image-element.tsx +0 -74
  192. package/src/modules/search/components/Editor/ui/inline-combobox.tsx +0 -368
  193. package/src/modules/search/components/Editor/ui/input.tsx +0 -25
  194. package/src/modules/search/components/Editor/ui/insert-dropdown-menu.tsx +0 -218
  195. package/src/modules/search/components/Editor/ui/kbd-leaf.tsx +0 -20
  196. package/src/modules/search/components/Editor/ui/link-element.tsx +0 -29
  197. package/src/modules/search/components/Editor/ui/link-floating-toolbar.tsx +0 -161
  198. package/src/modules/search/components/Editor/ui/list-element.tsx +0 -30
  199. package/src/modules/search/components/Editor/ui/mark-toolbar-button.tsx +0 -24
  200. package/src/modules/search/components/Editor/ui/media-embed-element.tsx +0 -133
  201. package/src/modules/search/components/Editor/ui/media-popover.tsx +0 -97
  202. package/src/modules/search/components/Editor/ui/mention-element.tsx +0 -43
  203. package/src/modules/search/components/Editor/ui/mention-input-element.tsx +0 -141
  204. package/src/modules/search/components/Editor/ui/mode-dropdown-menu.tsx +0 -93
  205. package/src/modules/search/components/Editor/ui/more-dropdown-menu.tsx +0 -67
  206. package/src/modules/search/components/Editor/ui/paragraph-element.tsx +0 -4
  207. package/src/modules/search/components/Editor/ui/placeholder.tsx +0 -52
  208. package/src/modules/search/components/Editor/ui/popover.tsx +0 -32
  209. package/src/modules/search/components/Editor/ui/resizable.tsx +0 -66
  210. package/src/modules/search/components/Editor/ui/separator.tsx +0 -25
  211. package/src/modules/search/components/Editor/ui/style.less +0 -12
  212. package/src/modules/search/components/Editor/ui/table-cell-element.tsx +0 -143
  213. package/src/modules/search/components/Editor/ui/table-element.tsx +0 -243
  214. package/src/modules/search/components/Editor/ui/table-row-element.tsx +0 -22
  215. package/src/modules/search/components/Editor/ui/tableValue.tsx +0 -135
  216. package/src/modules/search/components/Editor/ui/todo-list-element.tsx +0 -43
  217. package/src/modules/search/components/Editor/ui/toggle-element.tsx +0 -31
  218. package/src/modules/search/components/Editor/ui/toolbar.tsx +0 -157
  219. package/src/modules/search/components/Editor/ui/tooltip.tsx +0 -65
  220. package/src/modules/search/components/Editor/ui/turn-into-dropdown-menu.tsx +0 -160
  221. package/src/modules/search/components/Editor/ui/with-draggables.tsx +0 -175
  222. package/src/modules/search/components/FileList.tsx +0 -287
  223. package/src/modules/search/components/ImageGroupView/index.tsx +0 -85
  224. package/src/modules/search/components/ResultContent.tsx +0 -232
  225. package/src/modules/search/components/SearchInput.tsx +0 -232
  226. package/src/modules/search/components/SearchLanding.tsx +0 -74
  227. package/src/modules/search/components/SearchView.tsx +0 -563
  228. package/src/modules/search/components/SimpleEditor.tsx +0 -158
  229. package/src/modules/search/components/SimpleFileList.tsx +0 -215
  230. package/src/modules/search/index.tsx +0 -10
  231. package/src/modules/search/reademe.md +0 -1
  232. package/src/modules/search/servers/apis.tsx +0 -19
  233. package/src/modules/search/servers/index.ts +0 -184
  234. package/src/modules/search/style.less +0 -503
  235. package/src/modules/search/type.ts +0 -22
  236. package/src/modules/search/utils.ts +0 -34
  237. package/src/modules/sensitive/index.tsx +0 -313
  238. package/src/modules/sensitive/server.ts +0 -122
  239. package/src/modules/streamFilesReader/GientechStreamReader.tsx +0 -1555
  240. package/src/modules/streamFilesReader/components/Header/Toolbar.tsx +0 -0
  241. package/src/modules/streamFilesReader/components/Header/index.tsx +0 -297
  242. package/src/modules/streamFilesReader/index.tsx +0 -3
  243. package/src/style.css +0 -6
  244. package/src/type.d.ts +0 -0
  245. package/src/utils/commonFn.tsx +0 -111
  246. package/src/utils/gientechCommon/components/AppError.tsx +0 -32
  247. package/src/utils/gientechCommon/components/AppLoading.tsx +0 -75
  248. package/src/utils/gientechCommon/components/DeleteModal.tsx +0 -75
  249. package/src/utils/gientechCommon/components/DisplayError.tsx +0 -33
  250. package/src/utils/gientechCommon/components/DisplayLoading.tsx +0 -38
  251. package/src/utils/gientechCommon/components/FeedBackModal.tsx +0 -310
  252. package/src/utils/gientechCommon/components/FileCardCommon.tsx +0 -82
  253. package/src/utils/gientechCommon/components/FileManager/index.tsx +0 -390
  254. package/src/utils/gientechCommon/components/FileManager/style.css +0 -5
  255. package/src/utils/gientechCommon/components/Messages/GientechNewChatWelcome.tsx +0 -296
  256. package/src/utils/gientechCommon/components/Messages/ReferenceCard.tsx +0 -339
  257. package/src/utils/gientechCommon/components/Messages/RetriveItem.tsx +0 -245
  258. package/src/utils/gientechCommon/components/Messages/WebRetriveItem.tsx +0 -209
  259. package/src/utils/gientechCommon/components/Messages/defaultBot.png +0 -0
  260. package/src/utils/gientechCommon/components/Messages/defaultStyleSet.tsx +0 -148
  261. package/src/utils/gientechCommon/components/Messages/defaultWeLogo.svg +0 -14
  262. package/src/utils/gientechCommon/components/RenameModal.tsx +0 -86
  263. package/src/utils/gientechCommon/components/style.less +0 -11
  264. package/src/utils/gientechCommon/configs/commonConfig.ts +0 -2
  265. package/src/utils/gientechCommon/configs/senderConfig.ts +0 -0
  266. package/src/utils/gientechCommon/configs/stylesConfig.ts +0 -142
  267. package/src/utils/gientechCommon/hooks/AichatUseController.tsx +0 -345
  268. package/src/utils/gientechCommon/slate/converters/deserializers.ts +0 -763
  269. package/src/utils/gientechCommon/slate/converters/mockData.ts +0 -232
  270. package/src/utils/gientechCommon/slate/converters/slateConverters.ts +0 -258
  271. package/src/utils/gientechCommon/slate/richElements/index.tsx +0 -499
  272. package/src/utils/gientechCommon/utils/request.ts +0 -37
  273. package/src/utils/gientechCommon/utils/serverFn.ts +0 -172
  274. package/src/utils/index.tsx +0 -126
  275. package/src/utils/testconfigs/demologin/index.tsx +0 -32
  276. package/src/utils/testconfigs/index.ts +0 -53
  277. package/src/vite-env.d.ts +0 -11
  278. package/stats.html +0 -4949
  279. package/tailwind.config.js +0 -170
  280. package/tsconfig.app.json +0 -30
  281. package/tsconfig.app.tsbuildinfo +0 -11
  282. package/tsconfig.json +0 -13
  283. package/tsconfig.node.json +0 -22
  284. package/tsconfig.node.tsbuildinfo +0 -1
  285. package/vite.config.ts +0 -177
  286. package/workflows/release.yml +0 -60
  287. /package/{dist/assets → assets}/Doris.png +0 -0
  288. /package/{dist/assets → assets}/PostgreSQL.png +0 -0
  289. /package/{dist/assets → assets}/SQLServer.png +0 -0
  290. /package/{dist/assets → assets}/_commonjsHelpers-gnU0ypJ3.js +0 -0
  291. /package/{dist/assets → assets}/circle-alert-g2Y6zAjt.js +0 -0
  292. /package/{dist/assets → assets}/empty.png +0 -0
  293. /package/{dist/assets → assets}/index-CEK88UzR.js +0 -0
  294. /package/{dist/assets → assets}/index-CpW6Dhpp.js +0 -0
  295. /package/{dist/assets → assets}/plus-omCUN0e3.js +0 -0
  296. /package/{dist/assets → assets}/style.css +0 -0
  297. /package/{dist/assets → assets}/style2.css +0 -0
  298. /package/{dist/assets → assets}/style3.css +0 -0
  299. /package/{dist/assets → assets}/styled-components.browser.esm-DPkS13KC.js +0 -0
  300. /package/{dist/assets → assets}/x-vPcWt3fC.js +0 -0
  301. /package/{dist/chat.d.ts → chat.d.ts} +0 -0
  302. /package/{dist/database.d.ts → database.d.ts} +0 -0
  303. /package/{dist/databaseId.d.ts → databaseId.d.ts} +0 -0
  304. /package/{dist/databaseTable.d.ts → databaseTable.d.ts} +0 -0
  305. /package/{dist/modelManage.d.ts → modelManage.d.ts} +0 -0
  306. /package/{dist/sensitive.d.ts → sensitive.d.ts} +0 -0
  307. /package/{dist/streamFilesReader.d.ts → streamFilesReader.d.ts} +0 -0
  308. /package/{dist/vite.svg → vite.svg} +0 -0
@@ -1,368 +0,0 @@
1
- import React, {
2
- type HTMLAttributes,
3
- type ReactNode,
4
- type RefObject,
5
- createContext,
6
- forwardRef,
7
- startTransition,
8
- useCallback,
9
- useContext,
10
- useEffect,
11
- useMemo,
12
- useState,
13
- } from 'react';
14
-
15
- import type { PointRef } from 'slate';
16
-
17
- import {
18
- Combobox,
19
- ComboboxItem,
20
- type ComboboxItemProps,
21
- ComboboxPopover,
22
- ComboboxProvider,
23
- Portal,
24
- useComboboxContext,
25
- useComboboxStore,
26
- } from '@ariakit/react';
27
- import { cn } from '@udecode/cn';
28
- import { filterWords } from '@udecode/plate-combobox';
29
- import {
30
- type UseComboboxInputResult,
31
- useComboboxInput,
32
- useHTMLInputCursorState,
33
- } from '@udecode/plate-combobox/react';
34
- import {
35
- type TElement,
36
- createPointRef,
37
- getPointBefore,
38
- insertText,
39
- moveSelection,
40
- } from '@udecode/plate-common';
41
- import {
42
- findNodePath,
43
- useComposedRef,
44
- useEditorRef,
45
- } from '@udecode/plate-common/react';
46
- import { cva } from 'class-variance-authority';
47
-
48
- type FilterFn = (
49
- item: { keywords?: string[]; value: string },
50
- search: string
51
- ) => boolean;
52
-
53
- interface InlineComboboxContextValue {
54
- filter: FilterFn | false;
55
- inputProps: UseComboboxInputResult['props'];
56
- inputRef: RefObject<HTMLInputElement>;
57
- removeInput: UseComboboxInputResult['removeInput'];
58
- setHasEmpty: (hasEmpty: boolean) => void;
59
- showTrigger: boolean;
60
- trigger: string;
61
- }
62
-
63
- const InlineComboboxContext = createContext<InlineComboboxContextValue>(
64
- null as any
65
- );
66
-
67
- export const defaultFilter: FilterFn = ({ keywords = [], value }, search) =>
68
- [value, ...keywords].some((keyword) => filterWords(keyword, search));
69
-
70
- interface InlineComboboxProps {
71
- children: ReactNode;
72
- element: TElement;
73
- trigger: string;
74
- filter?: FilterFn | false;
75
- hideWhenNoValue?: boolean;
76
- setValue?: (value: string) => void;
77
- showTrigger?: boolean;
78
- value?: string;
79
- }
80
-
81
- const InlineCombobox = ({
82
- children,
83
- element,
84
- filter = defaultFilter,
85
- hideWhenNoValue = false,
86
- setValue: setValueProp,
87
- showTrigger = true,
88
- trigger,
89
- value: valueProp,
90
- }: InlineComboboxProps) => {
91
- const editor = useEditorRef();
92
- const inputRef = React.useRef<HTMLInputElement>(null);
93
- const cursorState = useHTMLInputCursorState(inputRef);
94
-
95
- const [valueState, setValueState] = useState('');
96
- const hasValueProp = valueProp !== undefined;
97
- const value = hasValueProp ? valueProp : valueState;
98
-
99
- const setValue = useCallback(
100
- (newValue: string) => {
101
- setValueProp?.(newValue);
102
-
103
- if (!hasValueProp) {
104
- setValueState(newValue);
105
- }
106
- },
107
- [setValueProp, hasValueProp]
108
- );
109
-
110
- /**
111
- * Track the point just before the input element so we know where to
112
- * insertText if the combobox closes due to a selection change.
113
- */
114
- const [insertPoint, setInsertPoint] = useState<PointRef | null>(null);
115
-
116
- useEffect(() => {
117
- const path = findNodePath(editor, element);
118
-
119
- if (!path) return;
120
-
121
- const point = getPointBefore(editor, path);
122
-
123
- if (!point) return;
124
-
125
- const pointRef = createPointRef(editor, point);
126
- setInsertPoint(pointRef);
127
-
128
- return () => {
129
- pointRef.unref();
130
- };
131
- }, [editor, element]);
132
-
133
- const { props: inputProps, removeInput } = useComboboxInput({
134
- cancelInputOnBlur: false,
135
- cursorState,
136
- onCancelInput: (cause) => {
137
- if (cause !== 'backspace') {
138
- insertText(editor, trigger + value, {
139
- at: insertPoint?.current ?? undefined,
140
- });
141
- }
142
- if (cause === 'arrowLeft' || cause === 'arrowRight') {
143
- moveSelection(editor, {
144
- distance: 1,
145
- reverse: cause === 'arrowLeft',
146
- });
147
- }
148
- },
149
- ref: inputRef,
150
- });
151
-
152
- const [hasEmpty, setHasEmpty] = useState(false);
153
-
154
- const contextValue: InlineComboboxContextValue = useMemo(
155
- () => ({
156
- filter,
157
- inputProps,
158
- inputRef,
159
- removeInput,
160
- setHasEmpty,
161
- showTrigger,
162
- trigger,
163
- }),
164
- [
165
- trigger,
166
- showTrigger,
167
- filter,
168
- inputRef,
169
- inputProps,
170
- removeInput,
171
- setHasEmpty,
172
- ]
173
- );
174
-
175
- const store = useComboboxStore({
176
- // open: ,
177
- setValue: (newValue) => startTransition(() => setValue(newValue)),
178
- });
179
-
180
- const items = store.useState('items');
181
-
182
- /**
183
- * If there is no active ID and the list of items changes, select the first
184
- * item.
185
- */
186
- useEffect(() => {
187
- if (!store.getState().activeId) {
188
- store.setActiveId(store.first());
189
- }
190
- // eslint-disable-next-line react-hooks/exhaustive-deps
191
- }, [items, store]);
192
-
193
- return (
194
- <span contentEditable={false}>
195
- <ComboboxProvider
196
- open={
197
- (items.length > 0 || hasEmpty) &&
198
- (!hideWhenNoValue || value.length > 0)
199
- }
200
- store={store}
201
- >
202
- <InlineComboboxContext.Provider value={contextValue}>
203
- {children}
204
- </InlineComboboxContext.Provider>
205
- </ComboboxProvider>
206
- </span>
207
- );
208
- };
209
-
210
- const InlineComboboxInput = forwardRef<
211
- HTMLInputElement,
212
- HTMLAttributes<HTMLInputElement>
213
- >(({ className, ...props }, propRef) => {
214
- const {
215
- inputProps,
216
- inputRef: contextRef,
217
- showTrigger,
218
- trigger,
219
- } = useContext(InlineComboboxContext);
220
-
221
- const store = useComboboxContext()!;
222
- const value = store.useState('value');
223
-
224
- const ref = useComposedRef(propRef, contextRef);
225
-
226
- /**
227
- * To create an auto-resizing input, we render a visually hidden span
228
- * containing the input value and position the input element on top of it.
229
- * This works well for all cases except when input exceeds the width of the
230
- * container.
231
- */
232
-
233
- return (
234
- <>
235
- {showTrigger && trigger}
236
-
237
- <span className="relative min-h-[1lh]">
238
- <span
239
- aria-hidden="true"
240
- className="invisible overflow-hidden text-nowrap"
241
- >
242
- {value || '\u200B'}
243
- </span>
244
-
245
- <Combobox
246
- autoSelect
247
- className={cn(
248
- 'absolute left-0 top-0 size-full bg-transparent outline-none',
249
- className
250
- )}
251
- ref={ref}
252
- value={value}
253
- {...inputProps}
254
- {...props}
255
- />
256
- </span>
257
- </>
258
- );
259
- });
260
-
261
- InlineComboboxInput.displayName = 'InlineComboboxInput';
262
-
263
- const InlineComboboxContent: typeof ComboboxPopover = ({
264
- className,
265
- ...props
266
- }) => {
267
- // Portal prevents CSS from leaking into popover
268
- return (
269
- <Portal>
270
- <ComboboxPopover
271
- className={cn(
272
- 'z-[500] max-h-[288px] w-[300px] overflow-y-auto rounded-md bg-popover shadow-md',
273
- className
274
- )}
275
- {...props}
276
- />
277
- </Portal>
278
- );
279
- };
280
-
281
- const comboboxItemVariants = cva(
282
- 'relative flex h-9 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none',
283
- {
284
- defaultVariants: {
285
- interactive: true,
286
- },
287
- variants: {
288
- interactive: {
289
- false: '',
290
- true: 'cursor-pointer transition-colors hover:bg-accent hover:text-accent-foreground data-[active-item=true]:bg-accent data-[active-item=true]:text-accent-foreground',
291
- },
292
- },
293
- }
294
- );
295
-
296
- export type InlineComboboxItemProps = {
297
- keywords?: string[];
298
- } & ComboboxItemProps &
299
- Required<Pick<ComboboxItemProps, 'value'>>;
300
-
301
- const InlineComboboxItem = ({
302
- className,
303
- keywords,
304
- onClick,
305
- ...props
306
- }: InlineComboboxItemProps) => {
307
- const { value } = props;
308
-
309
- const { filter, removeInput } = useContext(InlineComboboxContext);
310
-
311
- const store = useComboboxContext()!;
312
-
313
- // Optimization: Do not subscribe to value if filter is false
314
- const search = filter && store.useState('value');
315
-
316
- const visible = useMemo(
317
- () => !filter || filter({ keywords, value }, search as string),
318
- [filter, value, keywords, search]
319
- );
320
-
321
- if (!visible) return null;
322
-
323
- return (
324
- <ComboboxItem
325
- className={cn(comboboxItemVariants(), className)}
326
- onClick={(event) => {
327
- removeInput(true);
328
- onClick?.(event);
329
- }}
330
- {...props}
331
- />
332
- );
333
- };
334
-
335
- const InlineComboboxEmpty = ({
336
- children,
337
- className,
338
- }: HTMLAttributes<HTMLDivElement>) => {
339
- const { setHasEmpty } = useContext(InlineComboboxContext);
340
- const store = useComboboxContext()!;
341
- const items = store.useState('items');
342
-
343
- useEffect(() => {
344
- setHasEmpty(true);
345
-
346
- return () => {
347
- setHasEmpty(false);
348
- };
349
- }, [setHasEmpty]);
350
-
351
- if (items.length > 0) return null;
352
-
353
- return (
354
- <div
355
- className={cn(comboboxItemVariants({ interactive: false }), className)}
356
- >
357
- {children}
358
- </div>
359
- );
360
- };
361
-
362
- export {
363
- InlineCombobox,
364
- InlineComboboxContent,
365
- InlineComboboxEmpty,
366
- InlineComboboxInput,
367
- InlineComboboxItem,
368
- };
@@ -1,25 +0,0 @@
1
- import { withVariants } from '@udecode/cn';
2
- import { cva } from 'class-variance-authority';
3
-
4
- export const inputVariants = cva(
5
- 'flex w-full rounded-md bg-transparent text-sm file:border-0 file:bg-background file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',
6
- {
7
- defaultVariants: {
8
- h: 'md',
9
- variant: 'default',
10
- },
11
- variants: {
12
- h: {
13
- md: 'h-10 px-3 py-2',
14
- sm: 'h-9 px-3 py-2',
15
- },
16
- variant: {
17
- default:
18
- 'border border-input ring-offset-background focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
19
- ghost: 'border-none focus-visible:ring-transparent',
20
- },
21
- },
22
- }
23
- );
24
-
25
- export const Input = withVariants('input', inputVariants, ['variant', 'h']);
@@ -1,218 +0,0 @@
1
- import React from 'react';
2
-
3
- import type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';
4
-
5
- import { BlockquotePlugin } from '@udecode/plate-block-quote/react';
6
- import { ParagraphPlugin, insertEmptyElement } from '@udecode/plate-common';
7
- import { focusEditor, useEditorRef } from '@udecode/plate-common/react';
8
- import { HEADING_KEYS } from '@udecode/plate-heading';
9
-
10
- import { Icons } from './icons';
11
-
12
- import {
13
- DropdownMenu,
14
- DropdownMenuContent,
15
- DropdownMenuItem,
16
- DropdownMenuLabel,
17
- DropdownMenuSeparator,
18
- DropdownMenuTrigger,
19
- useOpenState,
20
- } from './dropdown-menu';
21
- import { ToolbarButton } from './toolbar';
22
-
23
- const items = [
24
- {
25
- items: [
26
- {
27
- description: 'Paragraph',
28
- icon: Icons.paragraph,
29
- label: 'Paragraph',
30
- value: ParagraphPlugin.key,
31
- },
32
- {
33
- description: 'Heading 1',
34
- icon: Icons.h1,
35
- label: 'Heading 1',
36
- value: HEADING_KEYS.h1,
37
- },
38
- {
39
- description: 'Heading 2',
40
- icon: Icons.h2,
41
- label: 'Heading 2',
42
- value: HEADING_KEYS.h2,
43
- },
44
- {
45
- description: 'Heading 3',
46
- icon: Icons.h3,
47
- label: 'Heading 3',
48
- value: HEADING_KEYS.h3,
49
- },
50
- {
51
- description: 'Quote (⌘+⇧+.)',
52
- icon: Icons.blockquote,
53
- label: 'Quote',
54
- value: BlockquotePlugin.key,
55
- },
56
- // {
57
- // value: TablePlugin.key,
58
- // label: 'Table',
59
- // description: 'Table',
60
- // icon: Icons.table,
61
- // },
62
- // {
63
- // value: 'ul',
64
- // label: 'Bulleted list',
65
- // description: 'Bulleted list',
66
- // icon: Icons.ul,
67
- // },
68
- // {
69
- // value: 'ol',
70
- // label: 'Numbered list',
71
- // description: 'Numbered list',
72
- // icon: Icons.ol,
73
- // },
74
- // {
75
- // value: HorizontalRulePlugin.key,
76
- // label: 'Divider',
77
- // description: 'Divider (---)',
78
- // icon: Icons.hr,
79
- // },
80
- ],
81
- label: 'Basic blocks',
82
- },
83
- // {
84
- // label: 'Media',
85
- // items: [
86
- // {
87
- // value: CodeBlockPlugin.key,
88
- // label: 'Code',
89
- // description: 'Code (```)',
90
- // icon: Icons.codeblock,
91
- // },
92
- // {
93
- // value: ImagePlugin.key,
94
- // label: 'Image',
95
- // description: 'Image',
96
- // icon: Icons.image,
97
- // },
98
- // {
99
- // value: MediaEmbedPlugin.key,
100
- // label: 'Embed',
101
- // description: 'Embed',
102
- // icon: Icons.embed,
103
- // },
104
- // {
105
- // value: ExcalidrawPlugin.key,
106
- // label: 'Excalidraw',
107
- // description: 'Excalidraw',
108
- // icon: Icons.excalidraw,
109
- // },
110
- // ],
111
- // },
112
- // {
113
- // label: 'Inline',
114
- // items: [
115
- // {
116
- // value: LinkPlugin.key,
117
- // label: 'Link',
118
- // description: 'Link',
119
- // icon: Icons.link,
120
- // },
121
- // ],
122
- // },
123
- ];
124
-
125
- export function InsertDropdownMenu(props: DropdownMenuProps) {
126
- const editor = useEditorRef();
127
- const openState = useOpenState();
128
-
129
- return (
130
- <DropdownMenu modal={false} {...openState} {...props}>
131
- <DropdownMenuTrigger asChild>
132
- <ToolbarButton isDropdown pressed={openState.open} tooltip="Insert">
133
- <Icons.add />
134
- </ToolbarButton>
135
- </DropdownMenuTrigger>
136
-
137
- <DropdownMenuContent
138
- align="start"
139
- className="flex max-h-[500px] min-w-0 flex-col gap-0.5 overflow-y-auto"
140
- >
141
- {items.map(({ items: nestedItems, label }, index) => (
142
- <React.Fragment key={label}>
143
- {index !== 0 && <DropdownMenuSeparator />}
144
-
145
- <DropdownMenuLabel>{label}</DropdownMenuLabel>
146
- {nestedItems.map(
147
- ({ icon: Icon, label: itemLabel, value: type }) => (
148
- <DropdownMenuItem
149
- className="min-w-[180px]"
150
- key={type}
151
- onSelect={() => {
152
- switch (type) {
153
- // case CodeBlockPlugin.key: {
154
- // insertEmptyCodeBlock(editor);
155
- //
156
- // break;
157
- // }
158
- // case ImagePlugin.key: {
159
- // await insertMedia(editor, { type: ImagePlugin.key });
160
- //
161
- // break;
162
- // }
163
- // case MediaEmbedPlugin.key: {
164
- // await insertMedia(editor, {
165
- // type: MediaEmbedPlugin.key,
166
- // });
167
- //
168
- // break;
169
- // }
170
- // case 'ul':
171
- // case 'ol': {
172
- // insertEmptyElement(editor, ParagraphPlugin.key, {
173
- // select: true,
174
- // nextBlock: true,
175
- // });
176
- //
177
- // if (settingsStore.get.checkedId(IndentListPlugin.key)) {
178
- // toggleIndentList(editor, {
179
- // listStyleType: type === 'ul' ? 'disc' : 'decimal',
180
- // });
181
- // } else if (settingsStore.get.checkedId('list')) {
182
- // toggleList(editor, { type });
183
- // }
184
- //
185
- // break;
186
- // }
187
- // case TablePlugin.key: {
188
- // insertTable(editor);
189
- //
190
- // break;
191
- // }
192
- // case LinkPlugin.key: {
193
- // triggerFloatingLink(editor, { focused: true });
194
- //
195
- // break;
196
- // }
197
- default: {
198
- insertEmptyElement(editor, type, {
199
- nextBlock: true,
200
- select: true,
201
- });
202
- }
203
- }
204
-
205
- focusEditor(editor);
206
- }}
207
- >
208
- <Icon className="mr-2 size-5" />
209
- {itemLabel}
210
- </DropdownMenuItem>
211
- )
212
- )}
213
- </React.Fragment>
214
- ))}
215
- </DropdownMenuContent>
216
- </DropdownMenu>
217
- );
218
- }
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
-
3
- import { cn, withRef } from '@udecode/cn';
4
- import { PlateLeaf } from '@udecode/plate-common/react';
5
-
6
- export const KbdLeaf = withRef<typeof PlateLeaf>(
7
- ({ children, className, ...props }, ref) => (
8
- <PlateLeaf
9
- asChild
10
- className={cn(
11
- 'rounded border border-border bg-muted px-1.5 py-0.5 font-mono text-sm shadow-[rgba(255,_255,_255,_0.1)_0px_0.5px_0px_0px_inset,_rgb(248,_249,_250)_0px_1px_5px_0px_inset,_rgb(193,_200,_205)_0px_0px_0px_0.5px,_rgb(193,_200,_205)_0px_2px_1px_-1px,_rgb(193,_200,_205)_0px_1px_0px_0px] dark:shadow-[rgba(255,_255,_255,_0.1)_0px_0.5px_0px_0px_inset,_rgb(26,_29,_30)_0px_1px_5px_0px_inset,_rgb(76,_81,_85)_0px_0px_0px_0.5px,_rgb(76,_81,_85)_0px_2px_1px_-1px,_rgb(76,_81,_85)_0px_1px_0px_0px]',
12
- className
13
- )}
14
- ref={ref}
15
- {...props}
16
- >
17
- <kbd>{children}</kbd>
18
- </PlateLeaf>
19
- )
20
- );
@@ -1,29 +0,0 @@
1
- import React from 'react';
2
-
3
- import type { TLinkElement } from '@udecode/plate-link';
4
-
5
- import { cn, withRef } from '@udecode/cn';
6
- import { PlateElement, useElement } from '@udecode/plate-common/react';
7
- import { useLink } from '@udecode/plate-link/react';
8
-
9
- export const LinkElement = withRef<typeof PlateElement>(
10
- ({ children, className, ...props }, ref) => {
11
- const element = useElement<TLinkElement>();
12
- const { props: linkProps } = useLink({ element });
13
-
14
- return (
15
- <PlateElement
16
- asChild
17
- className={cn(
18
- 'font-medium text-primary underline decoration-primary underline-offset-4',
19
- className
20
- )}
21
- ref={ref}
22
- {...(linkProps as any)}
23
- {...props}
24
- >
25
- <a>{children}</a>
26
- </PlateElement>
27
- );
28
- }
29
- );