Skip to content

Commit 07d2916

Browse files
committed
clean up
1 parent 6e1987a commit 07d2916

File tree

5 files changed

+43
-55
lines changed

5 files changed

+43
-55
lines changed

components/ContentEditor/ContentEditor.tsx

+9-9
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import StarterKit from "@tiptap/starter-kit";
77

88
import LoadingDots from "../LoadingDots";
99
import {
10-
LanguageTool,
11-
LanguageToolHelpingWords,
10+
GramrFixr,
11+
GrammarCheckerOperations,
1212
} from "./extensions/GrammarChecker";
1313
import { Match, Range } from "./extensions/GrammarChecker.types";
1414

@@ -22,8 +22,8 @@ const ContentEditor = () => {
2222
const editor = useEditor({
2323
extensions: [
2424
StarterKit,
25-
LanguageTool.configure({
26-
automaticMode: true,
25+
GramrFixr.configure({
26+
automaticMode: false,
2727
documentId: "gramrfixr-v1",
2828
apiUrl: "https://api.languagetool.org/v2/check", // replace this with your actual url
2929
}),
@@ -42,7 +42,7 @@ const ContentEditor = () => {
4242
setTimeout(() => updateMatch(editor as any));
4343
},
4444
onTransaction({ transaction: tr }) {
45-
if (tr.getMeta(LanguageToolHelpingWords.LoadingTransactionName))
45+
if (tr.getMeta(GrammarCheckerOperations.LoadingTransactionName))
4646
loading.current = true;
4747
else loading.current = false;
4848
},
@@ -86,8 +86,8 @@ const ContentEditor = () => {
8686

8787
// Grammar checking extension
8888
const shouldShow = (editor: Editor) => {
89-
const match = editor.storage.languagetool.match;
90-
const matchRange = editor.storage.languagetool.matchRange;
89+
const match = editor.storage.gramrfixr.match;
90+
const matchRange = editor.storage.gramrfixr.matchRange;
9191
const { from, to } = editor.state.selection;
9292
return (
9393
!!match && !!matchRange && matchRange.from <= from && to <= matchRange.to
@@ -97,8 +97,8 @@ const ContentEditor = () => {
9797
const matchRange = useRef<Range | null>(null);
9898
const loading = useRef(false);
9999
const updateMatch = (editor: Editor) => {
100-
match.current = editor.storage.languagetool.match;
101-
matchRange.current = editor.storage.languagetool.matchRange;
100+
match.current = editor.storage.gramrfixr.match;
101+
matchRange.current = editor.storage.gramrfixr.matchRange;
102102
};
103103

104104
const replacements = match.current?.replacements || [];

components/ContentEditor/extensions/GrammarChecker.ts

+25-29
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import { Plugin, PluginKey, Transaction } from "prosemirror-state";
66
import { Decoration, DecorationSet, EditorView } from "prosemirror-view";
77

88
import {
9-
LanguageToolOptions,
10-
LanguageToolStorage,
11-
LanguageToolResponse,
9+
GramrFixrOptions,
10+
GramrFixrStorage,
11+
GramrFixrResponse,
1212
Match,
1313
TextNodesWithPosition,
1414
Range,
@@ -44,8 +44,9 @@ let match: Match | undefined | null = undefined;
4444
let matchRange: Range | undefined | null;
4545
let proofReadInitially = false;
4646
let isLanguageToolActive = true;
47+
let lastOriginalFrom = 0;
4748

48-
const db = new Dexie("LanguageToolIgnoredSuggestions");
49+
const db = new Dexie("GramrFixrIgnoredSuggestions");
4950

5051
db.version(1).stores({
5152
ignoredWords: `
@@ -55,8 +56,8 @@ db.version(1).stores({
5556
`,
5657
});
5758

58-
export enum LanguageToolHelpingWords {
59-
LanguageToolTransactionName = "languageToolTransaction",
59+
export enum GrammarCheckerOperations {
60+
MainTransactionName = "grammarCheckerTransaction",
6061
MatchUpdatedTransactionName = "matchUpdated",
6162
MatchRangeUpdatedTransactionName = "matchRangeUpdated",
6263
LoadingTransactionName = "languageToolLoading",
@@ -72,8 +73,8 @@ const updateMatchAndRange = (m?: Match, range?: Range) => {
7273
else matchRange = undefined;
7374

7475
const tr = editorView.state.tr;
75-
tr.setMeta(LanguageToolHelpingWords.MatchUpdatedTransactionName, true);
76-
tr.setMeta(LanguageToolHelpingWords.MatchRangeUpdatedTransactionName, true);
76+
tr.setMeta(GrammarCheckerOperations.MatchUpdatedTransactionName, true);
77+
tr.setMeta(GrammarCheckerOperations.MatchRangeUpdatedTransactionName, true);
7778

7879
editorView.dispatch(tr);
7980
};
@@ -142,7 +143,8 @@ export function changedDescendants(
142143

143144
const gimmeDecoration = (from: number, to: number, match: Match) =>
144145
Decoration.inline(from, to, {
145-
class: `lt lt-${match.rule.issueType}`,
146+
// class: `lt lt-${match.rule.issueType}`,
147+
class: "lt lt-misspelling",
146148
nodeName: "span",
147149
match: JSON.stringify({ match, from, to }),
148150
});
@@ -163,7 +165,7 @@ const getMatchAndSetDecorations = async (
163165
body: `text=${encodeURIComponent(text)}&language=en-US&enabledOnly=false`,
164166
};
165167

166-
const ltRes: LanguageToolResponse = await (
168+
const ltRes: GramrFixrResponse = await (
167169
await fetch(apiUrl, postOptions)
168170
).json();
169171

@@ -200,7 +202,7 @@ const getMatchAndSetDecorations = async (
200202
if (editorView)
201203
dispatch(
202204
editorView.state.tr.setMeta(
203-
LanguageToolHelpingWords.LanguageToolTransactionName,
205+
GrammarCheckerOperations.MainTransactionName,
204206
true
205207
)
206208
);
@@ -213,8 +215,6 @@ const debouncedGetMatchAndSetDecorations = debounce(
213215
300
214216
);
215217

216-
let lastOriginalFrom = 0;
217-
218218
const onNodeChanged = (doc: PMNode, text: string, originalFrom: number) => {
219219
if (originalFrom !== lastOriginalFrom)
220220
getMatchAndSetDecorations(doc, text, originalFrom);
@@ -308,15 +308,15 @@ const proofreadAndDecorateWholeDoc = async (doc: PMNode, nodePos = 0) => {
308308
if (editorView)
309309
dispatch(
310310
editorView.state.tr.setMeta(
311-
LanguageToolHelpingWords.LoadingTransactionName,
311+
GrammarCheckerOperations.LoadingTransactionName,
312312
true
313313
)
314314
);
315315
Promise.all(requests).then(() => {
316316
if (editorView)
317317
dispatch(
318318
editorView.state.tr.setMeta(
319-
LanguageToolHelpingWords.LoadingTransactionName,
319+
GrammarCheckerOperations.LoadingTransactionName,
320320
false
321321
)
322322
);
@@ -330,16 +330,12 @@ const debouncedProofreadAndDecorate = debounce(
330330
500
331331
);
332332

333-
export const LanguageTool = Extension.create<
334-
LanguageToolOptions,
335-
LanguageToolStorage
336-
>({
337-
name: "languagetool",
333+
export const GramrFixr = Extension.create<GramrFixrOptions, GramrFixrStorage>({
334+
name: "gramrfixr",
338335

339336
addOptions() {
340337
return {
341-
language: "auto",
342-
apiUrl: process?.env?.VUE_APP_LANGUAGE_TOOL_URL + "check",
338+
apiUrl: "/api/grammar",
343339
automaticMode: true,
344340
documentId: undefined,
345341
};
@@ -405,11 +401,11 @@ export const LanguageTool = Extension.create<
405401
dispatch(
406402
tr
407403
.setMeta(
408-
LanguageToolHelpingWords.MatchRangeUpdatedTransactionName,
404+
GrammarCheckerOperations.MatchRangeUpdatedTransactionName,
409405
true
410406
)
411407
.setMeta(
412-
LanguageToolHelpingWords.MatchUpdatedTransactionName,
408+
GrammarCheckerOperations.MatchUpdatedTransactionName,
413409
true
414410
)
415411
);
@@ -441,7 +437,7 @@ export const LanguageTool = Extension.create<
441437

442438
return [
443439
new Plugin({
444-
key: new PluginKey("languagetoolPlugin"),
440+
key: new PluginKey("gramrfixrPlugin"),
445441
props: {
446442
decorations(state) {
447443
return this.getState(state);
@@ -475,14 +471,14 @@ export const LanguageTool = Extension.create<
475471
if (!isLanguageToolActive) return DecorationSet.empty;
476472

477473
const matchUpdated = tr.getMeta(
478-
LanguageToolHelpingWords.MatchUpdatedTransactionName
474+
GrammarCheckerOperations.MatchUpdatedTransactionName
479475
);
480476
const matchRangeUpdated = tr.getMeta(
481-
LanguageToolHelpingWords.MatchRangeUpdatedTransactionName
477+
GrammarCheckerOperations.MatchRangeUpdatedTransactionName
482478
);
483479

484480
const loading = tr.getMeta(
485-
LanguageToolHelpingWords.LoadingTransactionName
481+
GrammarCheckerOperations.LoadingTransactionName
486482
);
487483

488484
if (loading) this.storage.loading = true;
@@ -493,7 +489,7 @@ export const LanguageTool = Extension.create<
493489
if (matchRangeUpdated) this.storage.matchRange = matchRange;
494490

495491
const languageToolDecorations = tr.getMeta(
496-
LanguageToolHelpingWords.LanguageToolTransactionName
492+
GrammarCheckerOperations.MainTransactionName
497493
);
498494

499495
if (languageToolDecorations) return decorationSet;

components/ContentEditor/extensions/GrammarChecker.types.ts

+3-11
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,14 @@ interface Replacement {
22
value: string;
33
}
44

5-
interface Rule {
6-
id: string;
7-
description: string;
8-
issueType: string;
9-
}
10-
115
export interface Match {
126
message: string;
137
replacements: Replacement[];
148
offset: number;
159
length: number;
16-
rule: Rule;
1710
}
1811

19-
export interface LanguageToolResponse {
12+
export interface GramrFixrResponse {
2013
matches: Match[];
2114
}
2215

@@ -26,8 +19,7 @@ export interface TextNodesWithPosition {
2619
to: number;
2720
}
2821

29-
export interface LanguageToolOptions {
30-
language: string;
22+
export interface GramrFixrOptions {
3123
apiUrl: string;
3224
automaticMode: boolean;
3325
documentId: string | number | undefined;
@@ -38,7 +30,7 @@ export interface Range {
3830
to: number;
3931
}
4032

41-
export interface LanguageToolStorage {
33+
export interface GramrFixrStorage {
4234
match?: Match | undefined | null;
4335
loading?: boolean;
4436
matchRange?: Range | undefined | null;

components/Footer.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import Link from "next/link";
22

33
export default function Footer() {
44
return (
5-
<footer className="flex w-full flex-col items-center justify-between space-y-3 border-t py-4 text-center sm:mb-4 sm:flex-row">
6-
<div>
5+
<footer className="flex w-full flex-col items-center justify-between border-t py-4 text-center sm:mb-4 sm:flex-row">
6+
<p>
77
Powered by{" "}
88
<a
99
href="https://openai.com/blog/chatgpt"
@@ -22,8 +22,8 @@ export default function Footer() {
2222
>
2323
Vercel Edge Functions.
2424
</a>
25-
</div>
26-
<div className="flex space-x-4 pb-4 sm:pb-0">
25+
</p>
26+
<div className="mt-4 flex items-center gap-2 sm:mt-0">
2727
<Link
2828
href="https://twitter.com/gyurisc"
2929
className="group"

styles/globals.css

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
background: rgba(232, 106, 105, 0.2);
1212
}
1313

14-
.ProseMirror .lt-style {
14+
/* .ProseMirror .lt-style {
1515
border-bottom: 2px solid #9d8eff;
1616
}
1717
@@ -27,7 +27,7 @@
2727
.ProseMirror .lt-typographical:hover,
2828
.ProseMirror .lt-grammar:hover {
2929
background: rgba(238, 181, 92, 0.2) !important;
30-
}
30+
} */
3131

3232
.ProseMirror .lt-misspelling {
3333
border-bottom: 2px solid #e86a69;

0 commit comments

Comments
 (0)