mirror of
https://github.com/docmost/docmost.git
synced 2025-11-20 00:11:12 +10:00
implement new invitation system
* fix comments on the frontend * move jwt token service to its own module * other fixes and updates
This commit is contained in:
2
apps/client/src/features/editor/utils/index.ts
Normal file
2
apps/client/src/features/editor/utils/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from "./is-custom-node-selected";
|
||||
export * from "./is-text-selected";
|
||||
@ -0,0 +1,11 @@
|
||||
import { Editor } from "@tiptap/react";
|
||||
import TiptapLink from "@tiptap/extension-link";
|
||||
import { CodeBlock } from "@tiptap/extension-code-block";
|
||||
|
||||
export const isCustomNodeSelected = (editor: Editor, node: HTMLElement) => {
|
||||
const customNodes = [CodeBlock.name, TiptapLink.name];
|
||||
|
||||
return customNodes.some((type) => editor.isActive(type));
|
||||
};
|
||||
|
||||
export default isCustomNodeSelected;
|
||||
26
apps/client/src/features/editor/utils/is-text-selected.ts
Normal file
26
apps/client/src/features/editor/utils/is-text-selected.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import { isTextSelection } from "@tiptap/core";
|
||||
import { Editor } from "@tiptap/react";
|
||||
|
||||
export const isTextSelected = ({ editor }: { editor: Editor }) => {
|
||||
const {
|
||||
state: {
|
||||
doc,
|
||||
selection,
|
||||
selection: { empty, from, to },
|
||||
},
|
||||
} = editor;
|
||||
|
||||
// Sometime check for `empty` is not enough.
|
||||
// Doubleclick an empty paragraph returns a node size of 2.
|
||||
// So we check also for an empty text size.
|
||||
const isEmptyTextBlock =
|
||||
!doc.textBetween(from, to).length && isTextSelection(selection);
|
||||
|
||||
if (empty || isEmptyTextBlock || !editor.isEditable) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
export default isTextSelected;
|
||||
Reference in New Issue
Block a user