doclific 0.2.0 → 0.2.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 (220) hide show
  1. package/LICENSE +17 -0
  2. package/dist/bin/doclific.js +36 -8
  3. package/package.json +11 -4
  4. package/readme.md +77 -0
  5. package/.gitattributes +0 -2
  6. package/.prettierignore +0 -5
  7. package/.prettierrc +0 -9
  8. package/.vscode/settings.json +0 -13
  9. package/frontend/components.json +0 -24
  10. package/frontend/eslint.config.js +0 -23
  11. package/frontend/index.html +0 -25
  12. package/frontend/package-lock.json +0 -15754
  13. package/frontend/public/logo.svg +0 -1
  14. package/frontend/src/App.tsx +0 -21
  15. package/frontend/src/components/app-sidebar.tsx +0 -393
  16. package/frontend/src/components/editor/editor-base-kit.tsx +0 -43
  17. package/frontend/src/components/editor/editor-kit.tsx +0 -93
  18. package/frontend/src/components/editor/plugins/align-base-kit.tsx +0 -16
  19. package/frontend/src/components/editor/plugins/align-kit.tsx +0 -18
  20. package/frontend/src/components/editor/plugins/autoformat-kit.tsx +0 -236
  21. package/frontend/src/components/editor/plugins/basic-blocks-base-kit.tsx +0 -35
  22. package/frontend/src/components/editor/plugins/basic-blocks-kit.tsx +0 -88
  23. package/frontend/src/components/editor/plugins/basic-marks-base-kit.tsx +0 -27
  24. package/frontend/src/components/editor/plugins/basic-marks-kit.tsx +0 -41
  25. package/frontend/src/components/editor/plugins/basic-nodes-kit.tsx +0 -6
  26. package/frontend/src/components/editor/plugins/block-menu-kit.tsx +0 -14
  27. package/frontend/src/components/editor/plugins/block-placeholder-kit.tsx +0 -17
  28. package/frontend/src/components/editor/plugins/block-selection-kit.tsx +0 -32
  29. package/frontend/src/components/editor/plugins/callout-base-kit.tsx +0 -7
  30. package/frontend/src/components/editor/plugins/callout-kit.tsx +0 -7
  31. package/frontend/src/components/editor/plugins/code-block-base-kit.tsx +0 -23
  32. package/frontend/src/components/editor/plugins/code-block-kit.tsx +0 -26
  33. package/frontend/src/components/editor/plugins/codebase-kit.tsx +0 -23
  34. package/frontend/src/components/editor/plugins/column-base-kit.tsx +0 -11
  35. package/frontend/src/components/editor/plugins/column-kit.tsx +0 -10
  36. package/frontend/src/components/editor/plugins/comment-base-kit.tsx +0 -7
  37. package/frontend/src/components/editor/plugins/comment-kit.tsx +0 -97
  38. package/frontend/src/components/editor/plugins/cursor-overlay-kit.tsx +0 -13
  39. package/frontend/src/components/editor/plugins/date-base-kit.tsx +0 -5
  40. package/frontend/src/components/editor/plugins/date-kit.tsx +0 -7
  41. package/frontend/src/components/editor/plugins/discussion-kit.tsx +0 -148
  42. package/frontend/src/components/editor/plugins/dnd-kit.tsx +0 -28
  43. package/frontend/src/components/editor/plugins/docx-kit.tsx +0 -6
  44. package/frontend/src/components/editor/plugins/emoji-kit.tsx +0 -13
  45. package/frontend/src/components/editor/plugins/excalidraw-kit.tsx +0 -9
  46. package/frontend/src/components/editor/plugins/exit-break-kit.tsx +0 -12
  47. package/frontend/src/components/editor/plugins/floating-toolbar-kit.tsx +0 -19
  48. package/frontend/src/components/editor/plugins/font-base-kit.tsx +0 -20
  49. package/frontend/src/components/editor/plugins/font-kit.tsx +0 -29
  50. package/frontend/src/components/editor/plugins/indent-base-kit.tsx +0 -19
  51. package/frontend/src/components/editor/plugins/indent-kit.tsx +0 -22
  52. package/frontend/src/components/editor/plugins/line-height-base-kit.tsx +0 -14
  53. package/frontend/src/components/editor/plugins/line-height-kit.tsx +0 -16
  54. package/frontend/src/components/editor/plugins/link-base-kit.tsx +0 -5
  55. package/frontend/src/components/editor/plugins/link-kit.tsx +0 -15
  56. package/frontend/src/components/editor/plugins/list-base-kit.tsx +0 -23
  57. package/frontend/src/components/editor/plugins/list-kit.tsx +0 -26
  58. package/frontend/src/components/editor/plugins/markdown-kit.tsx +0 -46
  59. package/frontend/src/components/editor/plugins/math-base-kit.tsx +0 -11
  60. package/frontend/src/components/editor/plugins/math-kit.tsx +0 -13
  61. package/frontend/src/components/editor/plugins/media-base-kit.tsx +0 -31
  62. package/frontend/src/components/editor/plugins/media-kit.tsx +0 -43
  63. package/frontend/src/components/editor/plugins/mention-base-kit.tsx +0 -7
  64. package/frontend/src/components/editor/plugins/mention-kit.tsx +0 -15
  65. package/frontend/src/components/editor/plugins/slash-kit.tsx +0 -18
  66. package/frontend/src/components/editor/plugins/suggestion-base-kit.tsx +0 -7
  67. package/frontend/src/components/editor/plugins/suggestion-kit.tsx +0 -90
  68. package/frontend/src/components/editor/plugins/table-base-kit.tsx +0 -20
  69. package/frontend/src/components/editor/plugins/table-kit.tsx +0 -22
  70. package/frontend/src/components/editor/plugins/toc-base-kit.tsx +0 -5
  71. package/frontend/src/components/editor/plugins/toc-kit.tsx +0 -14
  72. package/frontend/src/components/editor/plugins/toggle-base-kit.tsx +0 -7
  73. package/frontend/src/components/editor/plugins/toggle-kit.tsx +0 -11
  74. package/frontend/src/components/editor/transforms.ts +0 -194
  75. package/frontend/src/components/markdown-to-slate-demo.tsx +0 -50
  76. package/frontend/src/components/mode-toggle.tsx +0 -15
  77. package/frontend/src/components/theme-provider.tsx +0 -73
  78. package/frontend/src/components/ui/alert-dialog.tsx +0 -155
  79. package/frontend/src/components/ui/align-toolbar-button.tsx +0 -84
  80. package/frontend/src/components/ui/avatar.tsx +0 -51
  81. package/frontend/src/components/ui/block-context-menu.tsx +0 -199
  82. package/frontend/src/components/ui/block-discussion.tsx +0 -365
  83. package/frontend/src/components/ui/block-draggable.tsx +0 -512
  84. package/frontend/src/components/ui/block-list-static.tsx +0 -80
  85. package/frontend/src/components/ui/block-list.tsx +0 -87
  86. package/frontend/src/components/ui/block-selection.tsx +0 -42
  87. package/frontend/src/components/ui/block-suggestion.tsx +0 -473
  88. package/frontend/src/components/ui/blockquote-node-static.tsx +0 -11
  89. package/frontend/src/components/ui/blockquote-node.tsx +0 -13
  90. package/frontend/src/components/ui/button.tsx +0 -62
  91. package/frontend/src/components/ui/calendar.tsx +0 -218
  92. package/frontend/src/components/ui/callout-node-static.tsx +0 -36
  93. package/frontend/src/components/ui/callout-node.tsx +0 -63
  94. package/frontend/src/components/ui/caption.tsx +0 -63
  95. package/frontend/src/components/ui/checkbox.tsx +0 -30
  96. package/frontend/src/components/ui/code-block-node-static.tsx +0 -35
  97. package/frontend/src/components/ui/code-block-node.tsx +0 -287
  98. package/frontend/src/components/ui/code-node-static.tsx +0 -15
  99. package/frontend/src/components/ui/code-node.tsx +0 -17
  100. package/frontend/src/components/ui/codebase-snippet-node.tsx +0 -237
  101. package/frontend/src/components/ui/column-node-static.tsx +0 -29
  102. package/frontend/src/components/ui/column-node.tsx +0 -317
  103. package/frontend/src/components/ui/command.tsx +0 -182
  104. package/frontend/src/components/ui/comment-node-static.tsx +0 -15
  105. package/frontend/src/components/ui/comment-node.tsx +0 -45
  106. package/frontend/src/components/ui/comment-toolbar-button.tsx +0 -24
  107. package/frontend/src/components/ui/comment.tsx +0 -618
  108. package/frontend/src/components/ui/context-menu.tsx +0 -250
  109. package/frontend/src/components/ui/cursor-overlay.tsx +0 -66
  110. package/frontend/src/components/ui/date-node-static.tsx +0 -45
  111. package/frontend/src/components/ui/date-node.tsx +0 -93
  112. package/frontend/src/components/ui/dialog.tsx +0 -143
  113. package/frontend/src/components/ui/dropdown-menu.tsx +0 -255
  114. package/frontend/src/components/ui/dynamic-icon.tsx +0 -12
  115. package/frontend/src/components/ui/editor-static.tsx +0 -53
  116. package/frontend/src/components/ui/editor.tsx +0 -130
  117. package/frontend/src/components/ui/emoji-node.tsx +0 -69
  118. package/frontend/src/components/ui/emoji-toolbar-button.tsx +0 -628
  119. package/frontend/src/components/ui/equation-node-static.tsx +0 -98
  120. package/frontend/src/components/ui/equation-node.tsx +0 -235
  121. package/frontend/src/components/ui/equation-toolbar-button.tsx +0 -25
  122. package/frontend/src/components/ui/excalidraw-node.tsx +0 -36
  123. package/frontend/src/components/ui/export-toolbar-button.tsx +0 -174
  124. package/frontend/src/components/ui/file-selector.tsx +0 -339
  125. package/frontend/src/components/ui/floating-toolbar-buttons.tsx +0 -73
  126. package/frontend/src/components/ui/floating-toolbar.tsx +0 -85
  127. package/frontend/src/components/ui/font-color-toolbar-button.tsx +0 -831
  128. package/frontend/src/components/ui/font-size-toolbar-button.tsx +0 -152
  129. package/frontend/src/components/ui/heading-node-static.tsx +0 -68
  130. package/frontend/src/components/ui/heading-node.tsx +0 -58
  131. package/frontend/src/components/ui/highlight-node-static.tsx +0 -11
  132. package/frontend/src/components/ui/highlight-node.tsx +0 -13
  133. package/frontend/src/components/ui/history-toolbar-button.tsx +0 -50
  134. package/frontend/src/components/ui/hr-node-static.tsx +0 -20
  135. package/frontend/src/components/ui/hr-node.tsx +0 -33
  136. package/frontend/src/components/ui/import-toolbar-button.tsx +0 -97
  137. package/frontend/src/components/ui/indent-toolbar-button.tsx +0 -30
  138. package/frontend/src/components/ui/inline-combobox.tsx +0 -414
  139. package/frontend/src/components/ui/input.tsx +0 -21
  140. package/frontend/src/components/ui/insert-toolbar-button.tsx +0 -254
  141. package/frontend/src/components/ui/kbd-node-static.tsx +0 -15
  142. package/frontend/src/components/ui/kbd-node.tsx +0 -17
  143. package/frontend/src/components/ui/layout-header.tsx +0 -35
  144. package/frontend/src/components/ui/line-height-toolbar-button.tsx +0 -68
  145. package/frontend/src/components/ui/link-node-static.tsx +0 -21
  146. package/frontend/src/components/ui/link-node.tsx +0 -39
  147. package/frontend/src/components/ui/link-toolbar-button.tsx +0 -22
  148. package/frontend/src/components/ui/link-toolbar.tsx +0 -206
  149. package/frontend/src/components/ui/list-toolbar-button.tsx +0 -204
  150. package/frontend/src/components/ui/mark-toolbar-button.tsx +0 -19
  151. package/frontend/src/components/ui/media-audio-node-static.tsx +0 -17
  152. package/frontend/src/components/ui/media-audio-node.tsx +0 -39
  153. package/frontend/src/components/ui/media-embed-node.tsx +0 -136
  154. package/frontend/src/components/ui/media-file-node-static.tsx +0 -29
  155. package/frontend/src/components/ui/media-file-node.tsx +0 -47
  156. package/frontend/src/components/ui/media-image-node-static.tsx +0 -39
  157. package/frontend/src/components/ui/media-image-node.tsx +0 -80
  158. package/frontend/src/components/ui/media-placeholder-node.tsx +0 -249
  159. package/frontend/src/components/ui/media-preview-dialog.tsx +0 -152
  160. package/frontend/src/components/ui/media-toolbar-button.tsx +0 -225
  161. package/frontend/src/components/ui/media-toolbar.tsx +0 -115
  162. package/frontend/src/components/ui/media-upload-toast.tsx +0 -66
  163. package/frontend/src/components/ui/media-video-node-static.tsx +0 -30
  164. package/frontend/src/components/ui/media-video-node.tsx +0 -121
  165. package/frontend/src/components/ui/mention-node-static.tsx +0 -36
  166. package/frontend/src/components/ui/mention-node.tsx +0 -194
  167. package/frontend/src/components/ui/mode-toolbar-button.tsx +0 -123
  168. package/frontend/src/components/ui/more-toolbar-button.tsx +0 -80
  169. package/frontend/src/components/ui/paragraph-node-static.tsx +0 -13
  170. package/frontend/src/components/ui/paragraph-node.tsx +0 -15
  171. package/frontend/src/components/ui/popover.tsx +0 -46
  172. package/frontend/src/components/ui/resize-handle.tsx +0 -87
  173. package/frontend/src/components/ui/separator.tsx +0 -28
  174. package/frontend/src/components/ui/sheet.tsx +0 -139
  175. package/frontend/src/components/ui/sidebar.tsx +0 -726
  176. package/frontend/src/components/ui/skeleton.tsx +0 -13
  177. package/frontend/src/components/ui/slash-node.tsx +0 -233
  178. package/frontend/src/components/ui/sonner.tsx +0 -38
  179. package/frontend/src/components/ui/suggestion-node-static.tsx +0 -35
  180. package/frontend/src/components/ui/suggestion-node.tsx +0 -162
  181. package/frontend/src/components/ui/suggestion-toolbar-button.tsx +0 -25
  182. package/frontend/src/components/ui/table-icons.tsx +0 -862
  183. package/frontend/src/components/ui/table-node-static.tsx +0 -98
  184. package/frontend/src/components/ui/table-node.tsx +0 -656
  185. package/frontend/src/components/ui/table-toolbar-button.tsx +0 -264
  186. package/frontend/src/components/ui/toc-node-static.tsx +0 -92
  187. package/frontend/src/components/ui/toc-node.tsx +0 -55
  188. package/frontend/src/components/ui/toggle-node-static.tsx +0 -18
  189. package/frontend/src/components/ui/toggle-node.tsx +0 -36
  190. package/frontend/src/components/ui/toggle-toolbar-button.tsx +0 -22
  191. package/frontend/src/components/ui/toolbar.tsx +0 -387
  192. package/frontend/src/components/ui/tooltip.tsx +0 -59
  193. package/frontend/src/components/ui/turn-into-toolbar-button.tsx +0 -188
  194. package/frontend/src/hooks/use-debounce.ts +0 -18
  195. package/frontend/src/hooks/use-is-touch-device.ts +0 -24
  196. package/frontend/src/hooks/use-mobile.ts +0 -19
  197. package/frontend/src/hooks/use-mounted.ts +0 -11
  198. package/frontend/src/hooks/use-upload-file.ts +0 -128
  199. package/frontend/src/index.css +0 -128
  200. package/frontend/src/layout.tsx +0 -42
  201. package/frontend/src/lib/markdown-joiner-transform.ts +0 -239
  202. package/frontend/src/lib/orpc.ts +0 -13
  203. package/frontend/src/lib/uploadthing.ts +0 -19
  204. package/frontend/src/lib/utils.ts +0 -6
  205. package/frontend/src/main.tsx +0 -13
  206. package/frontend/src/pages/editor.tsx +0 -44
  207. package/frontend/src/types/docs.d.ts +0 -6
  208. package/frontend/src/types/global.d.ts +0 -9
  209. package/frontend/src/types/router.d.ts +0 -4
  210. package/frontend/tsconfig.app.json +0 -33
  211. package/frontend/tsconfig.json +0 -10
  212. package/frontend/tsconfig.node.json +0 -26
  213. package/frontend/vite.config.ts +0 -14
  214. package/src/bin/doclific.ts +0 -47
  215. package/src/core/codebase.ts +0 -39
  216. package/src/core/docs.ts +0 -90
  217. package/src/core/git.ts +0 -48
  218. package/src/server/index.ts +0 -55
  219. package/src/server/router.ts +0 -65
  220. package/tsconfig.json +0 -15
@@ -1,26 +0,0 @@
1
- 'use client';
2
-
3
- import {
4
- CodeBlockPlugin,
5
- CodeLinePlugin,
6
- CodeSyntaxPlugin,
7
- } from '@platejs/code-block/react';
8
- import { all, createLowlight } from 'lowlight';
9
-
10
- import {
11
- CodeBlockElement,
12
- CodeLineElement,
13
- CodeSyntaxLeaf,
14
- } from '@/components/ui/code-block-node';
15
-
16
- const lowlight = createLowlight(all);
17
-
18
- export const CodeBlockKit = [
19
- CodeBlockPlugin.configure({
20
- node: { component: CodeBlockElement },
21
- options: { lowlight },
22
- shortcuts: { toggle: { keys: 'mod+alt+8' } },
23
- }),
24
- CodeLinePlugin.withComponent(CodeLineElement),
25
- CodeSyntaxPlugin.withComponent(CodeSyntaxLeaf),
26
- ];
@@ -1,23 +0,0 @@
1
- import { createPlatePlugin } from "platejs/react";
2
- import { CodebaseSnippetElement } from "@/components/ui/codebase-snippet-node";
3
-
4
- export const CodebaseSnippetType = 'CodebaseSnippet';
5
-
6
- export interface CodebaseSnippetElementType {
7
- type: typeof CodebaseSnippetType;
8
- filePath?: string;
9
- lineStart?: string;
10
- lineEnd?: string;
11
- children: [{ text: '' }];
12
- [key: string]: any;
13
- }
14
-
15
-
16
- export const CodebaseSnippetPlugin = createPlatePlugin({
17
- key: CodebaseSnippetType,
18
- node: {
19
- isElement: true,
20
- isVoid: true,
21
- component: CodebaseSnippetElement
22
- }
23
- })
@@ -1,11 +0,0 @@
1
- import { BaseColumnItemPlugin, BaseColumnPlugin } from '@platejs/layout';
2
-
3
- import {
4
- ColumnElementStatic,
5
- ColumnGroupElementStatic,
6
- } from '@/components/ui/column-node-static';
7
-
8
- export const BaseColumnKit = [
9
- BaseColumnPlugin.withComponent(ColumnGroupElementStatic),
10
- BaseColumnItemPlugin.withComponent(ColumnElementStatic),
11
- ];
@@ -1,10 +0,0 @@
1
- 'use client';
2
-
3
- import { ColumnItemPlugin, ColumnPlugin } from '@platejs/layout/react';
4
-
5
- import { ColumnElement, ColumnGroupElement } from '@/components/ui/column-node';
6
-
7
- export const ColumnKit = [
8
- ColumnPlugin.withComponent(ColumnGroupElement),
9
- ColumnItemPlugin.withComponent(ColumnElement),
10
- ];
@@ -1,7 +0,0 @@
1
- import { BaseCommentPlugin } from '@platejs/comment';
2
-
3
- import { CommentLeafStatic } from '@/components/ui/comment-node-static';
4
-
5
- export const BaseCommentKit = [
6
- BaseCommentPlugin.withComponent(CommentLeafStatic),
7
- ];
@@ -1,97 +0,0 @@
1
- 'use client';
2
-
3
- import type { ExtendConfig, Path } from 'platejs';
4
-
5
- import {
6
- type BaseCommentConfig,
7
- BaseCommentPlugin,
8
- getDraftCommentKey,
9
- } from '@platejs/comment';
10
- import { isSlateString } from 'platejs';
11
- import { toTPlatePlugin } from 'platejs/react';
12
-
13
- import { CommentLeaf } from '@/components/ui/comment-node';
14
-
15
- type CommentConfig = ExtendConfig<
16
- BaseCommentConfig,
17
- {
18
- activeId: string | null;
19
- commentingBlock: Path | null;
20
- hoverId: string | null;
21
- uniquePathMap: Map<string, Path>;
22
- }
23
- >;
24
-
25
- export const commentPlugin = toTPlatePlugin<CommentConfig>(BaseCommentPlugin, {
26
- handlers: {
27
- onClick: ({ api, event, setOption, type }) => {
28
- let leaf = event.target as HTMLElement;
29
- let isSet = false;
30
-
31
- const unsetActiveSuggestion = () => {
32
- setOption('activeId', null);
33
- isSet = true;
34
- };
35
-
36
- if (!isSlateString(leaf)) unsetActiveSuggestion();
37
-
38
- while (leaf.parentElement) {
39
- if (leaf.classList.contains(`slate-${type}`)) {
40
- const commentsEntry = api.comment!.node();
41
-
42
- if (!commentsEntry) {
43
- unsetActiveSuggestion();
44
-
45
- break;
46
- }
47
-
48
- const id = api.comment!.nodeId(commentsEntry[0]);
49
-
50
- setOption('activeId', id ?? null);
51
- isSet = true;
52
-
53
- break;
54
- }
55
-
56
- leaf = leaf.parentElement;
57
- }
58
-
59
- if (!isSet) unsetActiveSuggestion();
60
- },
61
- },
62
- options: {
63
- activeId: null,
64
- commentingBlock: null,
65
- hoverId: null,
66
- uniquePathMap: new Map(),
67
- },
68
- })
69
- .extendTransforms(
70
- ({
71
- editor,
72
- setOption,
73
- tf: {
74
- comment: { setDraft },
75
- },
76
- }) => ({
77
- setDraft: () => {
78
- if (editor.api.isCollapsed()) {
79
- editor.tf.select(editor.api.block()![1]);
80
- }
81
-
82
- setDraft();
83
-
84
- editor.tf.collapse();
85
- setOption('activeId', getDraftCommentKey());
86
- setOption('commentingBlock', editor.selection!.focus.path.slice(0, 1));
87
- },
88
- })
89
- )
90
- .configure({
91
- node: { component: CommentLeaf },
92
- shortcuts: {
93
- setDraft: { keys: 'mod+shift+m' },
94
- },
95
- });
96
-
97
- export const CommentKit = [commentPlugin];
@@ -1,13 +0,0 @@
1
- 'use client';
2
-
3
- import { CursorOverlayPlugin } from '@platejs/selection/react';
4
-
5
- import { CursorOverlay } from '@/components/ui/cursor-overlay';
6
-
7
- export const CursorOverlayKit = [
8
- CursorOverlayPlugin.configure({
9
- render: {
10
- afterEditable: () => <CursorOverlay />,
11
- },
12
- }),
13
- ];
@@ -1,5 +0,0 @@
1
- import { BaseDatePlugin } from '@platejs/date';
2
-
3
- import { DateElementStatic } from '@/components/ui/date-node-static';
4
-
5
- export const BaseDateKit = [BaseDatePlugin.withComponent(DateElementStatic)];
@@ -1,7 +0,0 @@
1
- 'use client';
2
-
3
- import { DatePlugin } from '@platejs/date/react';
4
-
5
- import { DateElement } from '@/components/ui/date-node';
6
-
7
- export const DateKit = [DatePlugin.withComponent(DateElement)];
@@ -1,148 +0,0 @@
1
- 'use client';
2
-
3
- import type { TComment } from '@/components/ui/comment';
4
-
5
- import { createPlatePlugin } from 'platejs/react';
6
-
7
- import { BlockDiscussion } from '@/components/ui/block-discussion';
8
-
9
- export type TDiscussion = {
10
- id: string;
11
- comments: TComment[];
12
- createdAt: Date;
13
- isResolved: boolean;
14
- userId: string;
15
- documentContent?: string;
16
- };
17
-
18
- const discussionsData: TDiscussion[] = [
19
- {
20
- id: 'discussion1',
21
- comments: [
22
- {
23
- id: 'comment1',
24
- contentRich: [
25
- {
26
- children: [
27
- {
28
- text: 'Comments are a great way to provide feedback and discuss changes.',
29
- },
30
- ],
31
- type: 'p',
32
- },
33
- ],
34
- createdAt: new Date(Date.now() - 600_000),
35
- discussionId: 'discussion1',
36
- isEdited: false,
37
- userId: 'charlie',
38
- },
39
- {
40
- id: 'comment2',
41
- contentRich: [
42
- {
43
- children: [
44
- {
45
- text: 'Agreed! The link to the docs makes it easy to learn more.',
46
- },
47
- ],
48
- type: 'p',
49
- },
50
- ],
51
- createdAt: new Date(Date.now() - 500_000),
52
- discussionId: 'discussion1',
53
- isEdited: false,
54
- userId: 'bob',
55
- },
56
- ],
57
- createdAt: new Date(),
58
- documentContent: 'comments',
59
- isResolved: false,
60
- userId: 'charlie',
61
- },
62
- {
63
- id: 'discussion2',
64
- comments: [
65
- {
66
- id: 'comment1',
67
- contentRich: [
68
- {
69
- children: [
70
- {
71
- text: 'Nice demonstration of overlapping annotations with both comments and suggestions!',
72
- },
73
- ],
74
- type: 'p',
75
- },
76
- ],
77
- createdAt: new Date(Date.now() - 300_000),
78
- discussionId: 'discussion2',
79
- isEdited: false,
80
- userId: 'bob',
81
- },
82
- {
83
- id: 'comment2',
84
- contentRich: [
85
- {
86
- children: [
87
- {
88
- text: 'This helps users understand how powerful the editor can be.',
89
- },
90
- ],
91
- type: 'p',
92
- },
93
- ],
94
- createdAt: new Date(Date.now() - 200_000),
95
- discussionId: 'discussion2',
96
- isEdited: false,
97
- userId: 'charlie',
98
- },
99
- ],
100
- createdAt: new Date(),
101
- documentContent: 'overlapping',
102
- isResolved: false,
103
- userId: 'bob',
104
- },
105
- ];
106
-
107
- const avatarUrl = (seed: string) =>
108
- `https://api.dicebear.com/9.x/glass/svg?seed=${seed}`;
109
-
110
- const usersData: Record<
111
- string,
112
- { id: string; avatarUrl: string; name: string; hue?: number }
113
- > = {
114
- alice: {
115
- id: 'alice',
116
- avatarUrl: avatarUrl('alice6'),
117
- name: 'Alice',
118
- },
119
- bob: {
120
- id: 'bob',
121
- avatarUrl: avatarUrl('bob4'),
122
- name: 'Bob',
123
- },
124
- charlie: {
125
- id: 'charlie',
126
- avatarUrl: avatarUrl('charlie2'),
127
- name: 'Charlie',
128
- },
129
- };
130
-
131
- // This plugin is purely UI. It's only used to store the discussions and users data
132
- export const discussionPlugin = createPlatePlugin({
133
- key: 'discussion',
134
- options: {
135
- currentUserId: 'alice',
136
- discussions: discussionsData,
137
- users: usersData,
138
- },
139
- })
140
- .configure({
141
- render: { aboveNodes: BlockDiscussion },
142
- })
143
- .extendSelectors(({ getOption }) => ({
144
- currentUser: () => getOption('users')[getOption('currentUserId')],
145
- user: (id: string) => getOption('users')[id],
146
- }));
147
-
148
- export const DiscussionKit = [discussionPlugin];
@@ -1,28 +0,0 @@
1
- 'use client';
2
-
3
- import { DndProvider } from 'react-dnd';
4
- import { HTML5Backend } from 'react-dnd-html5-backend';
5
-
6
- import { DndPlugin } from '@platejs/dnd';
7
- import { PlaceholderPlugin } from '@platejs/media/react';
8
-
9
- import { BlockDraggable } from '@/components/ui/block-draggable';
10
-
11
- export const DndKit = [
12
- DndPlugin.configure({
13
- options: {
14
- enableScroller: true,
15
- onDropFiles: ({ dragItem, editor, target }) => {
16
- editor
17
- .getTransforms(PlaceholderPlugin)
18
- .insert.media(dragItem.files, { at: target, nextBlock: false });
19
- },
20
- },
21
- render: {
22
- aboveNodes: BlockDraggable,
23
- aboveSlate: ({ children }) => (
24
- <DndProvider backend={HTML5Backend}>{children}</DndProvider>
25
- ),
26
- },
27
- }),
28
- ];
@@ -1,6 +0,0 @@
1
- 'use client';
2
-
3
- import { DocxPlugin } from '@platejs/docx';
4
- import { JuicePlugin } from '@platejs/juice';
5
-
6
- export const DocxKit = [DocxPlugin, JuicePlugin];
@@ -1,13 +0,0 @@
1
- 'use client';
2
-
3
- import emojiMartData from '@emoji-mart/data';
4
- import { EmojiInputPlugin, EmojiPlugin } from '@platejs/emoji/react';
5
-
6
- import { EmojiInputElement } from '@/components/ui/emoji-node';
7
-
8
- export const EmojiKit = [
9
- EmojiPlugin.configure({
10
- options: { data: emojiMartData as any },
11
- }),
12
- EmojiInputPlugin.withComponent(EmojiInputElement),
13
- ];
@@ -1,9 +0,0 @@
1
- 'use client';
2
-
3
- import { ExcalidrawPlugin } from '@platejs/excalidraw/react';
4
-
5
- import { ExcalidrawElement } from '@/components/ui/excalidraw-node';
6
-
7
- export const ExcalidrawKit = [
8
- ExcalidrawPlugin.withComponent(ExcalidrawElement),
9
- ];
@@ -1,12 +0,0 @@
1
- 'use client';
2
-
3
- import { ExitBreakPlugin } from 'platejs';
4
-
5
- export const ExitBreakKit = [
6
- ExitBreakPlugin.configure({
7
- shortcuts: {
8
- insert: { keys: 'mod+enter' },
9
- insertBefore: { keys: 'mod+shift+enter' },
10
- },
11
- }),
12
- ];
@@ -1,19 +0,0 @@
1
- 'use client';
2
-
3
- import { createPlatePlugin } from 'platejs/react';
4
-
5
- import { FloatingToolbar } from '@/components/ui/floating-toolbar';
6
- import { FloatingToolbarButtons } from '@/components/ui/floating-toolbar-buttons';
7
-
8
- export const FloatingToolbarKit = [
9
- createPlatePlugin({
10
- key: 'floating-toolbar',
11
- render: {
12
- afterEditable: () => (
13
- <FloatingToolbar>
14
- <FloatingToolbarButtons />
15
- </FloatingToolbar>
16
- ),
17
- },
18
- }),
19
- ];
@@ -1,20 +0,0 @@
1
- import type { SlatePluginConfig } from 'platejs';
2
-
3
- import {
4
- BaseFontBackgroundColorPlugin,
5
- BaseFontColorPlugin,
6
- BaseFontFamilyPlugin,
7
- BaseFontSizePlugin,
8
- } from '@platejs/basic-styles';
9
- import { KEYS } from 'platejs';
10
-
11
- const options = {
12
- inject: { targetPlugins: [KEYS.p] },
13
- } satisfies SlatePluginConfig;
14
-
15
- export const BaseFontKit = [
16
- BaseFontColorPlugin.configure(options),
17
- BaseFontBackgroundColorPlugin.configure(options),
18
- BaseFontSizePlugin.configure(options),
19
- BaseFontFamilyPlugin.configure(options),
20
- ];
@@ -1,29 +0,0 @@
1
- 'use client';
2
-
3
- import type { PlatePluginConfig } from 'platejs/react';
4
-
5
- import {
6
- FontBackgroundColorPlugin,
7
- FontColorPlugin,
8
- FontFamilyPlugin,
9
- FontSizePlugin,
10
- } from '@platejs/basic-styles/react';
11
- import { KEYS } from 'platejs';
12
-
13
- const options = {
14
- inject: { targetPlugins: [KEYS.p] },
15
- } satisfies PlatePluginConfig;
16
-
17
- export const FontKit = [
18
- FontColorPlugin.configure({
19
- inject: {
20
- ...options.inject,
21
- nodeProps: {
22
- defaultNodeValue: 'black',
23
- },
24
- },
25
- }),
26
- FontBackgroundColorPlugin.configure(options),
27
- FontSizePlugin.configure(options),
28
- FontFamilyPlugin.configure(options),
29
- ];
@@ -1,19 +0,0 @@
1
- import { BaseIndentPlugin } from '@platejs/indent';
2
- import { KEYS } from 'platejs';
3
-
4
- export const BaseIndentKit = [
5
- BaseIndentPlugin.configure({
6
- inject: {
7
- targetPlugins: [
8
- ...KEYS.heading,
9
- KEYS.p,
10
- KEYS.blockquote,
11
- KEYS.codeBlock,
12
- KEYS.toggle,
13
- ],
14
- },
15
- options: {
16
- offset: 24,
17
- },
18
- }),
19
- ];
@@ -1,22 +0,0 @@
1
- 'use client';
2
-
3
- import { IndentPlugin } from '@platejs/indent/react';
4
- import { KEYS } from 'platejs';
5
-
6
- export const IndentKit = [
7
- IndentPlugin.configure({
8
- inject: {
9
- targetPlugins: [
10
- ...KEYS.heading,
11
- KEYS.p,
12
- KEYS.blockquote,
13
- KEYS.codeBlock,
14
- KEYS.toggle,
15
- KEYS.img,
16
- ],
17
- },
18
- options: {
19
- offset: 24,
20
- },
21
- }),
22
- ];
@@ -1,14 +0,0 @@
1
- import { BaseLineHeightPlugin } from '@platejs/basic-styles';
2
- import { KEYS } from 'platejs';
3
-
4
- export const BaseLineHeightKit = [
5
- BaseLineHeightPlugin.configure({
6
- inject: {
7
- nodeProps: {
8
- defaultNodeValue: 1.5,
9
- validNodeValues: [1, 1.2, 1.5, 2, 3],
10
- },
11
- targetPlugins: [...KEYS.heading, KEYS.p],
12
- },
13
- }),
14
- ];
@@ -1,16 +0,0 @@
1
- 'use client';
2
-
3
- import { LineHeightPlugin } from '@platejs/basic-styles/react';
4
- import { KEYS } from 'platejs';
5
-
6
- export const LineHeightKit = [
7
- LineHeightPlugin.configure({
8
- inject: {
9
- nodeProps: {
10
- defaultNodeValue: 1.5,
11
- validNodeValues: [1, 1.2, 1.5, 2, 3],
12
- },
13
- targetPlugins: [...KEYS.heading, KEYS.p],
14
- },
15
- }),
16
- ];
@@ -1,5 +0,0 @@
1
- import { BaseLinkPlugin } from '@platejs/link';
2
-
3
- import { LinkElementStatic } from '@/components/ui/link-node-static';
4
-
5
- export const BaseLinkKit = [BaseLinkPlugin.withComponent(LinkElementStatic)];
@@ -1,15 +0,0 @@
1
- 'use client';
2
-
3
- import { LinkPlugin } from '@platejs/link/react';
4
-
5
- import { LinkElement } from '@/components/ui/link-node';
6
- import { LinkFloatingToolbar } from '@/components/ui/link-toolbar';
7
-
8
- export const LinkKit = [
9
- LinkPlugin.configure({
10
- render: {
11
- node: LinkElement,
12
- afterEditable: () => <LinkFloatingToolbar />,
13
- },
14
- }),
15
- ];
@@ -1,23 +0,0 @@
1
- import { BaseListPlugin } from '@platejs/list';
2
- import { KEYS } from 'platejs';
3
-
4
- import { BaseIndentKit } from '@/components/editor/plugins/indent-base-kit';
5
- import { BlockListStatic } from '@/components/ui/block-list-static';
6
-
7
- export const BaseListKit = [
8
- ...BaseIndentKit,
9
- BaseListPlugin.configure({
10
- inject: {
11
- targetPlugins: [
12
- ...KEYS.heading,
13
- KEYS.p,
14
- KEYS.blockquote,
15
- KEYS.codeBlock,
16
- KEYS.toggle,
17
- ],
18
- },
19
- render: {
20
- belowNodes: BlockListStatic,
21
- },
22
- }),
23
- ];
@@ -1,26 +0,0 @@
1
- 'use client';
2
-
3
- import { ListPlugin } from '@platejs/list/react';
4
- import { KEYS } from 'platejs';
5
-
6
- import { IndentKit } from '@/components/editor/plugins/indent-kit';
7
- import { BlockList } from '@/components/ui/block-list';
8
-
9
- export const ListKit = [
10
- ...IndentKit,
11
- ListPlugin.configure({
12
- inject: {
13
- targetPlugins: [
14
- ...KEYS.heading,
15
- KEYS.p,
16
- KEYS.blockquote,
17
- KEYS.codeBlock,
18
- KEYS.toggle,
19
- KEYS.img,
20
- ],
21
- },
22
- render: {
23
- belowNodes: BlockList,
24
- },
25
- }),
26
- ];