@gientech/modual 1.3.3 → 1.3.4

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 (307) 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/{dist/chat.js → chat.js} +2 -2
  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/database.js +0 -20
  28. package/dist/package.json +0 -56
  29. package/doc_assets/2.png +0 -0
  30. package/doc_assets/demo.md +0 -27
  31. package/doc_assets/demos/dist-app/assets/index.Dh-ZAS9Z.css +0 -2
  32. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js +0 -23699
  33. package/doc_assets/demos/dist-app/assets/index.Dv8KVW18.js.map +0 -1
  34. package/doc_assets/demos/dist-app/index.html +0 -14
  35. package/doc_assets/demos/dist-app/vite.svg +0 -1
  36. package/doc_assets/images/1.png +0 -0
  37. package/doc_assets/images/3.png +0 -0
  38. package/doc_assets/images/component-screenshot.png +0 -1
  39. package/doc_assets/install.md +0 -5
  40. package/eslint.config.js +0 -92
  41. package/index.html +0 -13
  42. package/postcss.config.cjs +0 -19
  43. package/public/vite.svg +0 -1
  44. package/public/worker/pdf.worker.min.js +0 -22
  45. package/scripts/README.md +0 -133
  46. package/scripts/build-demo.js +0 -88
  47. package/scripts/demo-selector.js +0 -216
  48. package/scripts/dev-demo.js +0 -76
  49. package/scripts/preview-demo.js +0 -130
  50. package/scripts/run-demo.bat +0 -34
  51. package/src/assets/img/downArrow.png +0 -0
  52. package/src/assets/img/excel.png +0 -0
  53. package/src/assets/img/img.png +0 -0
  54. package/src/assets/img/pdf.png +0 -0
  55. package/src/assets/img/ppt.png +0 -0
  56. package/src/assets/img/txt.png +0 -0
  57. package/src/assets/img/word.png +0 -0
  58. package/src/assets/login/homeBg.png +0 -0
  59. package/src/assets/login/left.jpg +0 -0
  60. package/src/assets/login/logoImg.png +0 -0
  61. package/src/examples/LoginPage/index.tsx +0 -18
  62. package/src/examples/aaa/index.tsx +0 -3758
  63. package/src/examples/chat/components/DrawerGraphPreview.tsx +0 -78
  64. package/src/examples/chat/index.tsx +0 -190
  65. package/src/examples/gientechStreamFilesReader/index.tsx +0 -1016
  66. package/src/examples/ragDatabaseDataPage/index.tsx +0 -36
  67. package/src/examples/ragDatabaseIdPage/index.tsx +0 -44
  68. package/src/examples/ragDatabasePage/index.tsx +0 -36
  69. package/src/examples/ragModelManagePage/index.tsx +0 -37
  70. package/src/examples/ragSearchPage/index.tsx +0 -0
  71. package/src/examples/ragSensitiveWordsPage/index.tsx +0 -32
  72. package/src/examples/streamFiles/index.tsx +0 -384
  73. package/src/lib_enter.ts +0 -38
  74. package/src/main.tsx +0 -5
  75. package/src/main.tsx.backup +0 -5
  76. package/src/modules/chat/Conversations/Item.tsx +0 -167
  77. package/src/modules/chat/Conversations/List.tsx +0 -143
  78. package/src/modules/chat/Conversations/groupByTime.ts +0 -39
  79. package/src/modules/chat/Conversations/index.tsx +0 -212
  80. package/src/modules/chat/constants.tsx +0 -33
  81. package/src/modules/chat/data.txt +0 -82
  82. package/src/modules/chat/index.tsx +0 -1908
  83. package/src/modules/chat/types.ts +0 -17
  84. package/src/modules/database/CreateModal.tsx +0 -398
  85. package/src/modules/database/assets/Doris.png +0 -0
  86. package/src/modules/database/assets/PostgreSQL.png +0 -0
  87. package/src/modules/database/assets/SQLServer.png +0 -0
  88. package/src/modules/database/assets/database.svg +0 -11
  89. package/src/modules/database/assets/database_connect.svg +0 -66
  90. package/src/modules/database/assets/database_upload.svg +0 -29
  91. package/src/modules/database/assets/empty.png +0 -0
  92. package/src/modules/database/assets/mysql.svg +0 -14
  93. package/src/modules/database/index.tsx +0 -466
  94. package/src/modules/database/server.ts +0 -196
  95. package/src/modules/databaseId/CustomCom.tsx +0 -156
  96. package/src/modules/databaseId/EditConfig.tsx +0 -268
  97. package/src/modules/databaseId/UploadDrawer.tsx +0 -520
  98. package/src/modules/databaseId/assets/aiOptimize.svg +0 -10
  99. package/src/modules/databaseId/assets/empty.png +0 -0
  100. package/src/modules/databaseId/assets/template.svg +0 -6
  101. package/src/modules/databaseId/assets/upload.svg +0 -9
  102. package/src/modules/databaseId/assets/useTemp.svg +0 -6
  103. package/src/modules/databaseId/index.tsx +0 -734
  104. package/src/modules/databaseId/server.ts +0 -286
  105. package/src/modules/databaseId/style.css +0 -5
  106. package/src/modules/databaseTable/EditRowDrawer.tsx +0 -119
  107. package/src/modules/databaseTable/index.tsx +0 -357
  108. package/src/modules/databaseTable/server.ts +0 -180
  109. package/src/modules/headlessChat/constants.tsx +0 -32
  110. package/src/modules/headlessChat/index.tsx +0 -1065
  111. package/src/modules/headlessChat/types.ts +0 -23
  112. package/src/modules/login/components/Login/LoginBox/index.tsx +0 -102
  113. package/src/modules/login/components/Login/RegisterBox/index.tsx +0 -180
  114. package/src/modules/login/components/Login/index.tsx +0 -100
  115. package/src/modules/login/index.tsx +0 -106
  116. package/src/modules/login/style.css +0 -3
  117. package/src/modules/login/useServices.ts +0 -53
  118. package/src/modules/login/utils.ts +0 -42
  119. package/src/modules/modelManage/ConfigDrawer.tsx +0 -249
  120. package/src/modules/modelManage/assets/empty.png +0 -0
  121. package/src/modules/modelManage/const.ts +0 -50
  122. package/src/modules/modelManage/index.tsx +0 -439
  123. package/src/modules/modelManage/server.ts +0 -185
  124. package/src/modules/nodegraph/index.tsx +0 -1
  125. package/src/modules/search/assets/Icon-history.svg +0 -8
  126. package/src/modules/search/assets/answerAwartar.png +0 -0
  127. package/src/modules/search/assets/doc.png +0 -0
  128. package/src/modules/search/assets/genera.gif +0 -0
  129. package/src/modules/search/assets/icon-robot.svg +0 -9
  130. package/src/modules/search/assets/icon-search-bar.svg +0 -14
  131. package/src/modules/search/assets/icon-sub-title.svg +0 -3
  132. package/src/modules/search/assets/icon-title.svg +0 -9
  133. package/src/modules/search/assets/icon-zoomOut.svg +0 -9
  134. package/src/modules/search/assets/iconAi.svg +0 -9
  135. package/src/modules/search/assets/pdf.png +0 -0
  136. package/src/modules/search/assets/ppt.png +0 -0
  137. package/src/modules/search/assets/search.svg +0 -3
  138. package/src/modules/search/assets/selected.svg +0 -4
  139. package/src/modules/search/assets/txt.png +0 -0
  140. package/src/modules/search/assets/xls.png +0 -0
  141. package/src/modules/search/components/AssisSelect.tsx +0 -137
  142. package/src/modules/search/components/Editor/ChatViewEditor.tsx +0 -261
  143. package/src/modules/search/components/Editor/aichat.css +0 -1
  144. package/src/modules/search/components/Editor/constant.ts +0 -13
  145. package/src/modules/search/components/Editor/index.tsx +0 -113
  146. package/src/modules/search/components/Editor/plugins/autofomatRules.ts +0 -332
  147. package/src/modules/search/components/Editor/plugins/convertImgPlugins.tsx +0 -20
  148. package/src/modules/search/components/Editor/plugins/createIndexes.tsx +0 -38
  149. package/src/modules/search/components/Editor/plugins/displayer.ts +0 -298
  150. package/src/modules/search/components/Editor/plugins/imageClick.tsx +0 -32
  151. package/src/modules/search/components/Editor/plugins/myplugin.tsx +0 -98
  152. package/src/modules/search/components/Editor/ui/avatar.tsx +0 -19
  153. package/src/modules/search/components/Editor/ui/blockquote-element.tsx +0 -21
  154. package/src/modules/search/components/Editor/ui/button.tsx +0 -58
  155. package/src/modules/search/components/Editor/ui/calendar.tsx +0 -68
  156. package/src/modules/search/components/Editor/ui/caption.tsx +0 -46
  157. package/src/modules/search/components/Editor/ui/checkbox.tsx +0 -27
  158. package/src/modules/search/components/Editor/ui/code-block-combobox.tsx +0 -188
  159. package/src/modules/search/components/Editor/ui/code-block-element.css +0 -434
  160. package/src/modules/search/components/Editor/ui/code-block-element.tsx +0 -39
  161. package/src/modules/search/components/Editor/ui/code-leaf.tsx +0 -24
  162. package/src/modules/search/components/Editor/ui/code-line-element.tsx +0 -10
  163. package/src/modules/search/components/Editor/ui/code-syntax-leaf.tsx +0 -21
  164. package/src/modules/search/components/Editor/ui/column-element.tsx +0 -30
  165. package/src/modules/search/components/Editor/ui/column-group-element.tsx +0 -94
  166. package/src/modules/search/components/Editor/ui/command.tsx +0 -75
  167. package/src/modules/search/components/Editor/ui/comment-avatar.tsx +0 -22
  168. package/src/modules/search/components/Editor/ui/comment-create-form.tsx +0 -37
  169. package/src/modules/search/components/Editor/ui/comment-item.tsx +0 -74
  170. package/src/modules/search/components/Editor/ui/comment-leaf.tsx +0 -49
  171. package/src/modules/search/components/Editor/ui/comment-more-dropdown.tsx +0 -42
  172. package/src/modules/search/components/Editor/ui/comment-reply-items.tsx +0 -22
  173. package/src/modules/search/components/Editor/ui/comment-resolve-button.tsx +0 -32
  174. package/src/modules/search/components/Editor/ui/comment-value.tsx +0 -34
  175. package/src/modules/search/components/Editor/ui/comments-popover.tsx +0 -63
  176. package/src/modules/search/components/Editor/ui/date-element.tsx +0 -83
  177. package/src/modules/search/components/Editor/ui/dialog.tsx +0 -63
  178. package/src/modules/search/components/Editor/ui/draggable.tsx +0 -177
  179. package/src/modules/search/components/Editor/ui/dropdown-menu.tsx +0 -180
  180. package/src/modules/search/components/Editor/ui/emoji-input-element.tsx +0 -85
  181. package/src/modules/search/components/Editor/ui/excalidraw-element.tsx +0 -28
  182. package/src/modules/search/components/Editor/ui/fixed-toolbar-buttons.tsx +0 -76
  183. package/src/modules/search/components/Editor/ui/fixed-toolbar.tsx +0 -8
  184. package/src/modules/search/components/Editor/ui/floating-toolbar-buttons.tsx +0 -51
  185. package/src/modules/search/components/Editor/ui/floating-toolbar.tsx +0 -77
  186. package/src/modules/search/components/Editor/ui/heading-element.tsx +0 -48
  187. package/src/modules/search/components/Editor/ui/highlight-leaf.tsx +0 -17
  188. package/src/modules/search/components/Editor/ui/hr-element.tsx +0 -30
  189. package/src/modules/search/components/Editor/ui/icons.tsx +0 -267
  190. package/src/modules/search/components/Editor/ui/image-element.tsx +0 -74
  191. package/src/modules/search/components/Editor/ui/inline-combobox.tsx +0 -368
  192. package/src/modules/search/components/Editor/ui/input.tsx +0 -25
  193. package/src/modules/search/components/Editor/ui/insert-dropdown-menu.tsx +0 -218
  194. package/src/modules/search/components/Editor/ui/kbd-leaf.tsx +0 -20
  195. package/src/modules/search/components/Editor/ui/link-element.tsx +0 -29
  196. package/src/modules/search/components/Editor/ui/link-floating-toolbar.tsx +0 -161
  197. package/src/modules/search/components/Editor/ui/list-element.tsx +0 -30
  198. package/src/modules/search/components/Editor/ui/mark-toolbar-button.tsx +0 -24
  199. package/src/modules/search/components/Editor/ui/media-embed-element.tsx +0 -133
  200. package/src/modules/search/components/Editor/ui/media-popover.tsx +0 -97
  201. package/src/modules/search/components/Editor/ui/mention-element.tsx +0 -43
  202. package/src/modules/search/components/Editor/ui/mention-input-element.tsx +0 -141
  203. package/src/modules/search/components/Editor/ui/mode-dropdown-menu.tsx +0 -93
  204. package/src/modules/search/components/Editor/ui/more-dropdown-menu.tsx +0 -67
  205. package/src/modules/search/components/Editor/ui/paragraph-element.tsx +0 -4
  206. package/src/modules/search/components/Editor/ui/placeholder.tsx +0 -52
  207. package/src/modules/search/components/Editor/ui/popover.tsx +0 -32
  208. package/src/modules/search/components/Editor/ui/resizable.tsx +0 -66
  209. package/src/modules/search/components/Editor/ui/separator.tsx +0 -25
  210. package/src/modules/search/components/Editor/ui/style.less +0 -12
  211. package/src/modules/search/components/Editor/ui/table-cell-element.tsx +0 -143
  212. package/src/modules/search/components/Editor/ui/table-element.tsx +0 -243
  213. package/src/modules/search/components/Editor/ui/table-row-element.tsx +0 -22
  214. package/src/modules/search/components/Editor/ui/tableValue.tsx +0 -135
  215. package/src/modules/search/components/Editor/ui/todo-list-element.tsx +0 -43
  216. package/src/modules/search/components/Editor/ui/toggle-element.tsx +0 -31
  217. package/src/modules/search/components/Editor/ui/toolbar.tsx +0 -157
  218. package/src/modules/search/components/Editor/ui/tooltip.tsx +0 -65
  219. package/src/modules/search/components/Editor/ui/turn-into-dropdown-menu.tsx +0 -160
  220. package/src/modules/search/components/Editor/ui/with-draggables.tsx +0 -175
  221. package/src/modules/search/components/FileList.tsx +0 -287
  222. package/src/modules/search/components/ImageGroupView/index.tsx +0 -85
  223. package/src/modules/search/components/ResultContent.tsx +0 -232
  224. package/src/modules/search/components/SearchInput.tsx +0 -232
  225. package/src/modules/search/components/SearchLanding.tsx +0 -74
  226. package/src/modules/search/components/SearchView.tsx +0 -563
  227. package/src/modules/search/components/SimpleEditor.tsx +0 -158
  228. package/src/modules/search/components/SimpleFileList.tsx +0 -215
  229. package/src/modules/search/index.tsx +0 -10
  230. package/src/modules/search/reademe.md +0 -1
  231. package/src/modules/search/servers/apis.tsx +0 -19
  232. package/src/modules/search/servers/index.ts +0 -184
  233. package/src/modules/search/style.less +0 -503
  234. package/src/modules/search/type.ts +0 -22
  235. package/src/modules/search/utils.ts +0 -34
  236. package/src/modules/sensitive/index.tsx +0 -313
  237. package/src/modules/sensitive/server.ts +0 -122
  238. package/src/modules/streamFilesReader/GientechStreamReader.tsx +0 -1555
  239. package/src/modules/streamFilesReader/components/Header/Toolbar.tsx +0 -0
  240. package/src/modules/streamFilesReader/components/Header/index.tsx +0 -297
  241. package/src/modules/streamFilesReader/index.tsx +0 -3
  242. package/src/style.css +0 -6
  243. package/src/type.d.ts +0 -0
  244. package/src/utils/commonFn.tsx +0 -111
  245. package/src/utils/gientechCommon/components/AppError.tsx +0 -32
  246. package/src/utils/gientechCommon/components/AppLoading.tsx +0 -75
  247. package/src/utils/gientechCommon/components/DeleteModal.tsx +0 -75
  248. package/src/utils/gientechCommon/components/DisplayError.tsx +0 -33
  249. package/src/utils/gientechCommon/components/DisplayLoading.tsx +0 -38
  250. package/src/utils/gientechCommon/components/FeedBackModal.tsx +0 -310
  251. package/src/utils/gientechCommon/components/FileCardCommon.tsx +0 -82
  252. package/src/utils/gientechCommon/components/FileManager/index.tsx +0 -390
  253. package/src/utils/gientechCommon/components/FileManager/style.css +0 -5
  254. package/src/utils/gientechCommon/components/Messages/GientechNewChatWelcome.tsx +0 -296
  255. package/src/utils/gientechCommon/components/Messages/ReferenceCard.tsx +0 -339
  256. package/src/utils/gientechCommon/components/Messages/RetriveItem.tsx +0 -245
  257. package/src/utils/gientechCommon/components/Messages/WebRetriveItem.tsx +0 -209
  258. package/src/utils/gientechCommon/components/Messages/defaultBot.png +0 -0
  259. package/src/utils/gientechCommon/components/Messages/defaultStyleSet.tsx +0 -148
  260. package/src/utils/gientechCommon/components/Messages/defaultWeLogo.svg +0 -14
  261. package/src/utils/gientechCommon/components/RenameModal.tsx +0 -86
  262. package/src/utils/gientechCommon/components/style.less +0 -11
  263. package/src/utils/gientechCommon/configs/commonConfig.ts +0 -2
  264. package/src/utils/gientechCommon/configs/senderConfig.ts +0 -0
  265. package/src/utils/gientechCommon/configs/stylesConfig.ts +0 -142
  266. package/src/utils/gientechCommon/hooks/AichatUseController.tsx +0 -345
  267. package/src/utils/gientechCommon/slate/converters/deserializers.ts +0 -763
  268. package/src/utils/gientechCommon/slate/converters/mockData.ts +0 -232
  269. package/src/utils/gientechCommon/slate/converters/slateConverters.ts +0 -258
  270. package/src/utils/gientechCommon/slate/richElements/index.tsx +0 -499
  271. package/src/utils/gientechCommon/utils/request.ts +0 -37
  272. package/src/utils/gientechCommon/utils/serverFn.ts +0 -172
  273. package/src/utils/index.tsx +0 -126
  274. package/src/utils/testconfigs/demologin/index.tsx +0 -32
  275. package/src/utils/testconfigs/index.ts +0 -53
  276. package/src/vite-env.d.ts +0 -11
  277. package/stats.html +0 -4949
  278. package/tailwind.config.js +0 -170
  279. package/tsconfig.app.json +0 -30
  280. package/tsconfig.app.tsbuildinfo +0 -11
  281. package/tsconfig.json +0 -13
  282. package/tsconfig.node.json +0 -22
  283. package/tsconfig.node.tsbuildinfo +0 -1
  284. package/vite.config.ts +0 -177
  285. package/workflows/release.yml +0 -60
  286. /package/{dist/assets → assets}/Doris.png +0 -0
  287. /package/{dist/assets → assets}/PostgreSQL.png +0 -0
  288. /package/{dist/assets → assets}/SQLServer.png +0 -0
  289. /package/{dist/assets → assets}/_commonjsHelpers-gnU0ypJ3.js +0 -0
  290. /package/{dist/assets → assets}/circle-alert-g2Y6zAjt.js +0 -0
  291. /package/{dist/assets → assets}/empty.png +0 -0
  292. /package/{dist/assets → assets}/index-CEK88UzR.js +0 -0
  293. /package/{dist/assets → assets}/index-CpW6Dhpp.js +0 -0
  294. /package/{dist/assets → assets}/plus-omCUN0e3.js +0 -0
  295. /package/{dist/assets → assets}/style.css +0 -0
  296. /package/{dist/assets → assets}/style2.css +0 -0
  297. /package/{dist/assets → assets}/style3.css +0 -0
  298. /package/{dist/assets → assets}/styled-components.browser.esm-DPkS13KC.js +0 -0
  299. /package/{dist/assets → assets}/x-vPcWt3fC.js +0 -0
  300. /package/{dist/chat.d.ts → chat.d.ts} +0 -0
  301. /package/{dist/database.d.ts → database.d.ts} +0 -0
  302. /package/{dist/databaseId.d.ts → databaseId.d.ts} +0 -0
  303. /package/{dist/databaseTable.d.ts → databaseTable.d.ts} +0 -0
  304. /package/{dist/modelManage.d.ts → modelManage.d.ts} +0 -0
  305. /package/{dist/sensitive.d.ts → sensitive.d.ts} +0 -0
  306. /package/{dist/streamFilesReader.d.ts → streamFilesReader.d.ts} +0 -0
  307. /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
- );