@gientech/modual 1.3.0 → 1.3.2

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