diff --git a/apps/web/src/components/default-font/index.tsx b/apps/web/src/components/default-font/index.tsx
index ef576559e..d5567c7d2 100644
--- a/apps/web/src/components/default-font/index.tsx
+++ b/apps/web/src/components/default-font/index.tsx
@@ -1,7 +1,7 @@
/*
This file is part of the Notesnook project (https://notesnook.com/)
-Copyright (C) 2022 Streetwriters (Private) Limited
+Copyright (C) 2023 Streetwriters (Private) Limited
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -18,9 +18,10 @@ along with this program. If not, see .
*/
import { Flex, Slider, Text } from "@theme-ui/components";
-import { useEffect, useState } from "react";
+import { useState } from "react";
import { useStore as useEditorStore } from "../../stores/editor-store";
import Config from "../../utils/config";
+import { toTitleCase } from "../../utils/string";
import DropdownButton from "../dropdown-button";
export function DefaultFont() {
@@ -28,10 +29,10 @@ export function DefaultFont() {
const fontSize = useEditorStore((store) => store.session.fontSize);
//const fontFamily = useEditorStore((store) => store.session.fontFamily);
- const fonts = ["Sans-serif", "Serif", "Monospace"];
+ const fonts = ["sans-serif", "serif", "monospace"];
const getOptions = () =>
- getFonts(Config.get("fontFamily", "Sans-serif")).map((font) => ({
- title: () => font,
+ getFonts(Config.get("fontFamily", "sans-serif")).map((font) => ({
+ title: () => toTitleCase(font),
onClick: () => {
const newFonts = [font];
for (const item of fonts) {
@@ -45,12 +46,8 @@ export function DefaultFont() {
},
key: font
}));
- const [options, setOptions] = useState(getOptions());
- useEffect(() => {
- //setFontFamily(options.at(0));
- console.log("options changed");
- }, [options]);
+ const [options, setOptions] = useState(getOptions());
return (
@@ -96,8 +93,8 @@ export function DefaultFont() {
function getFonts(font: string) {
const fonts = [font];
- const deafultFonts = ["Sans-serif", "Serif", "Monospace"];
- for (const _font of deafultFonts) {
+ const defaultFonts = ["sans-serif", "serif", "monospace"];
+ for (const _font of defaultFonts) {
if (_font !== font) {
fonts.push(_font);
}
diff --git a/apps/web/src/components/editor/index.tsx b/apps/web/src/components/editor/index.tsx
index dd2e82821..e9ac4c6ca 100644
--- a/apps/web/src/components/editor/index.tsx
+++ b/apps/web/src/components/editor/index.tsx
@@ -47,14 +47,9 @@ import useMobile from "../../hooks/use-mobile";
import Titlebox from "./title-box";
import useTablet from "../../hooks/use-tablet";
import Config from "../../utils/config";
-import {
- FontFamily,
- FontSize
-} from "@notesnook/editor/dist/toolbar/tools/font";
import { AnimatedFlex } from "../animated";
import { EditorLoader } from "../loaders/editor-loader";
-
type PreviewSession = {
content: { data: string; type: string };
dateCreated: number;
@@ -262,7 +257,6 @@ export function Editor(props: EditorProps) {
const fontFamily = useStore((store) => store.session.fontFamily);
const [isLoading, setIsLoading] = useState(true);
-
const editor = useEditorInstance();
useEffect(() => {
diff --git a/apps/web/src/components/editor/tiptap.tsx b/apps/web/src/components/editor/tiptap.tsx
index ce3dcdfa9..3417274d9 100644
--- a/apps/web/src/components/editor/tiptap.tsx
+++ b/apps/web/src/components/editor/tiptap.tsx
@@ -34,10 +34,9 @@ import {
getHTMLFromFragment,
Fragment,
type DownloadOptions,
- ToolProps
getTotalWords,
countWords,
- type DownloadOptions
+ FONTS
} from "@notesnook/editor";
import { Box, Flex } from "@theme-ui/components";
import { PropsWithChildren, useEffect, useRef, useState } from "react";
@@ -56,7 +55,6 @@ import { showBuyDialog } from "../../common/dialog-controller";
import { useStore as useSettingsStore } from "../../stores/setting-store";
import { debounce, debounceWithId } from "../../utils/debounce";
import { store as editorstore } from "../../stores/editor-store";
-import Config from "../../utils/config";
type TipTapProps = {
editorContainer: HTMLElement;
@@ -308,10 +306,6 @@ function TipTap(props: TipTapProps) {
};
}, [editor, editorContainer]);
- useEffect(() => {
- editorContainer.style.fontSize = fontSize;
- });
-
if (!toolbarContainerId) return null;
return (
<>
@@ -336,7 +330,6 @@ function TiptapWrapper(props: Omit) {
useEffect(() => {
setIsReady(true);
}, []);
-
return (
@@ -354,7 +347,9 @@ function TiptapWrapper(props: Omit) {
flex: 1,
cursor: "text",
color: theme.colors.text, // TODO!
- paddingBottom: 150
+ paddingBottom: 150,
+ fontSize: props.fontSize,
+ fontFamily: FONTS[props.fontFamily]
}}
/>
diff --git a/apps/web/src/components/editor/title-box.tsx b/apps/web/src/components/editor/title-box.tsx
index 733a10cb5..609d7f329 100644
--- a/apps/web/src/components/editor/title-box.tsx
+++ b/apps/web/src/components/editor/title-box.tsx
@@ -23,6 +23,7 @@ import { useStore, store } from "../../stores/editor-store";
import { debounceWithId } from "../../utils/debounce";
import useMobile from "../../hooks/use-mobile";
import useTablet from "../../hooks/use-tablet";
+import { FONTS } from "@notesnook/editor";
type TitleBoxProps = {
readonly: boolean;
@@ -35,6 +36,7 @@ function TitleBox(props: TitleBoxProps) {
const id = useStore((store) => store.session.id);
const isMobile = useMobile();
const isTablet = useTablet();
+ const fontFamily = useStore((store) => store.session.fontFamily);
const MAX_FONT_SIZE = useMemo(() => {
return isMobile || isTablet ? 1.625 : 2.625;
@@ -66,7 +68,7 @@ function TitleBox(props: TitleBoxProps) {
readOnly={readonly}
sx={{
p: 0,
- fontFamily: "heading",
+ fontFamily: FONTS[fontFamily] || "heading",
fontSize: ["1.625em", "1.625em", "2.625em"],
fontWeight: "heading",
width: "100%"
diff --git a/packages/editor/src/extensions/font-family/font-family.ts b/packages/editor/src/extensions/font-family/font-family.ts
index 3e268fd0f..0c9d6c4d4 100644
--- a/packages/editor/src/extensions/font-family/font-family.ts
+++ b/packages/editor/src/extensions/font-family/font-family.ts
@@ -39,7 +39,7 @@ declare module "@tiptap/core" {
}
}
-const FONTS: Record = {
+export const FONTS: Record = {
monospace: getFontConfig().fonts.monospace,
"sans-serif": getFontConfig().fonts.body,
serif: `Noto Serif, Times New Roman, serif`
diff --git a/packages/editor/styles/styles.css b/packages/editor/styles/styles.css
index 2db06de0e..c69292a2f 100644
--- a/packages/editor/styles/styles.css
+++ b/packages/editor/styles/styles.css
@@ -1,7 +1,13 @@
+
+
.ProseMirror span * {
font-family: inherit;
}
+.ProseMirror {
+ font-family: inherit;
+}
+
.ProseMirror p.is-editor-empty:first-child::before {
color: var(--placeholder);
content: attr(data-placeholder);
@@ -87,6 +93,7 @@
.ProseMirror p {
margin-bottom: 0px;
+ font-family: inherit;
}
.ProseMirror > p[data-spacing="double"] {