返回 presentation-ai
plugins.ts
1 "use client";
2
3 // Create presentation-specific plugins
4 import { ExitBreakPlugin, KEYS } from "platejs";
5 import { BlockPlaceholderPlugin } from "platejs/react";
6
7 import { AIKit } from "@/components/plate/plugins/ai-kit";
8 import { AlignKit } from "@/components/plate/plugins/align-kit";
9 import { BasicMarksKit } from "@/components/plate/plugins/basic-marks-kit";
10 import { BlockMenuKit } from "@/components/plate/plugins/block-menu-kit";
11 import { CalloutKit } from "@/components/plate/plugins/callout-kit";
12 import { CodeBlockKit } from "@/components/plate/plugins/code-block-kit";
13 import { CommentKit } from "@/components/plate/plugins/comment-kit";
14 import { CursorOverlayKit } from "@/components/plate/plugins/cursor-overlay-kit";
15 import { DateKit } from "@/components/plate/plugins/date-kit";
16 import { DiscussionKit } from "@/components/plate/plugins/discussion-kit";
17 import { DndKit } from "@/components/plate/plugins/dnd-kit";
18 import { DocxKit } from "@/components/plate/plugins/docx-kit";
19 import { EmojiKit } from "@/components/plate/plugins/emoji-kit";
20 import { FixedToolbarKit } from "@/components/plate/plugins/fixed-toolbar-kit";
21 import { FloatingToolbarKit } from "@/components/plate/plugins/floating-toolbar-kit";
22 import { FontKit } from "@/components/plate/plugins/font-kit";
23 import { LayoutFloatingToolbarKit } from "@/components/plate/plugins/layout-floating-toolbar-kit";
24 import { LineHeightKit } from "@/components/plate/plugins/line-height-kit";
25 import { LinkKit } from "@/components/plate/plugins/link-kit";
26 import { ListKit } from "@/components/plate/plugins/list-kit";
27 import { MarkdownKit } from "@/components/plate/plugins/markdown-kit";
28 import { MathKit } from "@/components/plate/plugins/math-kit";
29 import { MentionKit } from "@/components/plate/plugins/mention-kit";
30 import { SlashKit } from "@/components/plate/plugins/slash-kit";
31 import { SuggestionKit } from "@/components/plate/plugins/suggestion-kit";
32 import { TocKit } from "@/components/plate/plugins/toc-kit";
33 import { ToggleKit } from "@/components/plate/plugins/toggle-kit";
34 import { AntvInfographicPlugin } from "./plugins/antv-infographic-plugin";
35 import { ArrowListItemPlugin, ArrowListPlugin } from "./plugins/arrow-plugin";
36 import { BasicBlocksKit } from "./plugins/basic-blocks-kit";
37 import {
38 BeforeAfterGroupPlugin,
39 BeforeAfterSidePlugin,
40 } from "./plugins/before-after-plugin";
41 import { BoxGroupPlugin, BoxItemPlugin } from "./plugins/box-plugin";
42 import { BulletGroupPlugin, BulletItemPlugin } from "./plugins/bullet-plugin";
43 import { ButtonPlugin } from "./plugins/button-plugin";
44 import {
45 AreaChartPlugin,
46 BarChartPlugin,
47 BoxPlotChartPlugin,
48 BubbleChartPlugin,
49 CandlestickChartPlugin,
50 ChordChartPlugin,
51 ComposedChartPlugin,
52 ConeFunnelChartPlugin,
53 DonutChartPlugin,
54 FunnelChartPlugin,
55 HeatmapChartPlugin,
56 HistogramChartPlugin,
57 LinearGaugePlugin,
58 LineChartPlugin,
59 NightingaleChartPlugin,
60 OhlcChartPlugin,
61 PieChartPlugin,
62 PyramidChartPlugin,
63 RadarChartPlugin,
64 RadialBarChartPlugin,
65 RadialColumnChartPlugin,
66 RadialGaugePlugin,
67 RangeAreaChartPlugin,
68 RangeBarChartPlugin,
69 SankeyChartPlugin,
70 ScatterChartPlugin,
71 SunburstChartPlugin,
72 TreemapChartPlugin,
73 WaterfallChartPlugin,
74 } from "./plugins/chart-plugin";
75 import {
76 CompareGroupPlugin,
77 CompareSidePlugin,
78 } from "./plugins/compare-plugin";
79 import { CustomItemBreakPlugin } from "./plugins/custom-item-break-plugin";
80 import { CycleItemPlugin, CyclePlugin } from "./plugins/cycle-plugin";
81 import {
82 CircularGridGroupPlugin,
83 CircularGridItemPlugin,
84 ConnectedCirclesGroupPlugin,
85 ConnectedCirclesItemPlugin,
86 SlopeGroupPlugin,
87 SlopeItemPlugin,
88 SnakeGroupPlugin,
89 SnakeItemPlugin,
90 } from "./plugins/diagram-components-plugin";
91 import { EmptyBlockPlugin } from "./plugins/empty-block";
92 import { FlexBoxPlugin } from "./plugins/flex-box-plugin";
93 import { FocusedParagraphPlaceholderPlugin } from "./plugins/focused-paragraph-placeholder-plugin-config";
94 import { GeneratingPlugin } from "./plugins/generating-plugin";
95 import { IconListItemPlugin, IconListPlugin } from "./plugins/icon-list-plugin";
96 import { IconPlugin } from "./plugins/icon-plugin";
97 import {
98 VisualizationItemPlugin,
99 VisualizationListPlugin,
100 } from "./plugins/legacy/visualization-list-plugin";
101 import { MediaKit } from "./plugins/media-kit";
102 import { PresentationAutoformatKit } from "./plugins/presentation-autoformat-kit";
103 import { PresentationColumnKit } from "./plugins/presentation-column-kit";
104 import { PresentationTableKit } from "./plugins/presentation-table-kit";
105 import {
106 ConsItemPlugin,
107 ProsConsGroupPlugin,
108 ProsItemPlugin,
109 } from "./plugins/pros-cons-plugin";
110 import {
111 PyramidGroupPlugin,
112 PyramidItemPlugin,
113 } from "./plugins/pyramid-plugin";
114 import { QuotePlugin } from "./plugins/quote-plugin";
115 import {
116 SequenceArrowGroupPlugin,
117 SequenceArrowItemPlugin,
118 } from "./plugins/sequence-arrow-plugin";
119 import { CustomPlaceholderPlugin } from "./plugins/slide-placeholder-plugin";
120 import {
121 StaircaseGroupPlugin,
122 StairItemPlugin,
123 } from "./plugins/staircase-plugin";
124 import { StatsGroupPlugin, StatsItemPlugin } from "./plugins/stats-plugin";
125 import { StepsItemPlugin, StepsPlugin } from "./plugins/steps-plugin";
126 import { TimelineItemPlugin, TimelinePlugin } from "./plugins/timeline-plugin";
127
128 // import { TablePlugin, TableRowPlugin, TableCellPlugin } from "./plugins/table-plugin";
129
130 const PresentationBlockPlaceholderKit = [
131 BlockPlaceholderPlugin.configure({
132 options: {
133 className:
134 "before:absolute before:cursor-text before:opacity-30 before:content-[attr(placeholder)]",
135 placeholders: {
136 [KEYS.h1]: "Untitled Card",
137 [KEYS.h2]: "Untitled Card",
138 [KEYS.h3]: "Untitled Card",
139 [KEYS.h4]: "Untitled Card",
140 [KEYS.h5]: "Untitled Card",
141 [KEYS.h6]: "Untitled Card",
142 },
143 query: ({ path }) => {
144 return path.length === 1;
145 },
146 },
147 }),
148 ];
149
150 export const presentationPlugins = [
151 ...AIKit,
152
153 // Elements
154 ...BasicBlocksKit,
155 ...CodeBlockKit,
156 // Replace default table with themed presentation table
157 ...PresentationTableKit,
158 ...ToggleKit,
159 ...TocKit,
160 ...MediaKit,
161 ...CalloutKit,
162 ...PresentationColumnKit,
163 ...MathKit,
164 ...DateKit,
165 ...LinkKit,
166 ...MentionKit,
167
168 // Marks
169 ...BasicMarksKit,
170 ...FontKit,
171
172 // Block Style
173 ...ListKit,
174 ...AlignKit,
175 ...LineHeightKit,
176
177 // Collaboration
178 ...DiscussionKit,
179 ...CommentKit,
180 ...SuggestionKit,
181
182 // Editing
183 ...SlashKit,
184 ...PresentationAutoformatKit,
185 ...CursorOverlayKit,
186 ...BlockMenuKit,
187 ...DndKit,
188 ...EmojiKit,
189 ExitBreakPlugin.configure({
190 shortcuts: {
191 insert: { keys: "mod+enter" },
192 },
193 }),
194 CustomItemBreakPlugin,
195
196 // Parsers
197 ...DocxKit,
198 ...MarkdownKit,
199
200 // UI
201 FocusedParagraphPlaceholderPlugin,
202 CustomPlaceholderPlugin,
203 ...PresentationBlockPlaceholderKit,
204 ...FixedToolbarKit,
205 ...FloatingToolbarKit,
206 ...LayoutFloatingToolbarKit,
207 EmptyBlockPlugin,
208
209 // Custom ELements
210 VisualizationListPlugin,
211 VisualizationItemPlugin,
212
213 BulletGroupPlugin,
214 BulletItemPlugin,
215
216 StaircaseGroupPlugin,
217 StairItemPlugin,
218
219 IconPlugin,
220 IconListPlugin,
221 IconListItemPlugin,
222
223 ArrowListPlugin,
224 ArrowListItemPlugin,
225
226 TimelinePlugin,
227 TimelineItemPlugin,
228 StepsPlugin,
229 StepsItemPlugin,
230
231 PyramidGroupPlugin,
232 PyramidItemPlugin,
233
234 // New components
235 BoxGroupPlugin,
236 BoxItemPlugin,
237
238 // ColumnGroupPlugin,
239 // ColumnItemPlugin,
240
241 CompareGroupPlugin,
242 CompareSidePlugin,
243
244 BeforeAfterGroupPlugin,
245 BeforeAfterSidePlugin,
246
247 ProsConsGroupPlugin,
248 ProsItemPlugin,
249 ConsItemPlugin,
250
251 SequenceArrowGroupPlugin,
252 SequenceArrowItemPlugin,
253
254 SlopeGroupPlugin,
255 SlopeItemPlugin,
256 ConnectedCirclesGroupPlugin,
257 ConnectedCirclesItemPlugin,
258 CircularGridGroupPlugin,
259 CircularGridItemPlugin,
260 SnakeGroupPlugin,
261 SnakeItemPlugin,
262
263 // Stats components
264 StatsGroupPlugin,
265 StatsItemPlugin,
266
267 // Individual chart elements
268 PieChartPlugin,
269 BarChartPlugin,
270 AreaChartPlugin,
271 RadarChartPlugin,
272 ScatterChartPlugin,
273 BubbleChartPlugin,
274 LineChartPlugin,
275 ComposedChartPlugin,
276 RadialBarChartPlugin,
277 TreemapChartPlugin,
278 DonutChartPlugin,
279 // New chart plugins
280 HistogramChartPlugin,
281 HeatmapChartPlugin,
282 RangeBarChartPlugin,
283 RangeAreaChartPlugin,
284 WaterfallChartPlugin,
285 BoxPlotChartPlugin,
286 CandlestickChartPlugin,
287 OhlcChartPlugin,
288 NightingaleChartPlugin,
289 RadialColumnChartPlugin,
290 SunburstChartPlugin,
291 SankeyChartPlugin,
292 ChordChartPlugin,
293 FunnelChartPlugin,
294 ConeFunnelChartPlugin,
295 PyramidChartPlugin,
296 RadialGaugePlugin,
297 LinearGaugePlugin,
298
299 CycleItemPlugin,
300 CyclePlugin,
301
302 GeneratingPlugin,
303 ButtonPlugin,
304 FlexBoxPlugin,
305 QuotePlugin,
306
307 // AntV Infographic
308 AntvInfographicPlugin,
309 ];
310
310 lines TYPESCRIPT