@gientech/modual 1.3.0 → 1.3.1

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