mirror of
https://github.com/docmost/docmost.git
synced 2026-08-20 02:54:11 +08:00
Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eb35afa5ce | ||
|
|
38380211a5 | ||
|
|
cd34594b5d | ||
|
|
70d2ff8685 |
@@ -3,7 +3,8 @@ import { StarterKit } from "@tiptap/starter-kit";
|
||||
import { Code } from "@tiptap/extension-code";
|
||||
import { TextAlign } from "@tiptap/extension-text-align";
|
||||
import { TaskList, TaskItem } from "@tiptap/extension-list";
|
||||
import { Placeholder, CharacterCount, UndoRedo } from "@tiptap/extensions";
|
||||
import { CharacterCount, UndoRedo } from "@tiptap/extensions";
|
||||
import { Placeholder } from "@/features/editor/extensions/placeholder";
|
||||
import { Superscript } from "@tiptap/extension-superscript";
|
||||
import SubScript from "@tiptap/extension-subscript";
|
||||
import { Typography } from "@tiptap/extension-typography";
|
||||
@@ -194,16 +195,18 @@ export const mainExtensions = [
|
||||
return i18n.t("Toggle title");
|
||||
}
|
||||
if (node.type.name === "paragraph") {
|
||||
const $pos = editor.state.doc.resolve(pos);
|
||||
const parentName = $pos.parent.type.name;
|
||||
if (
|
||||
parentName === "column" ||
|
||||
parentName === "tableCell" ||
|
||||
parentName === "tableHeader" ||
|
||||
parentName === "callout" ||
|
||||
parentName === "blockquote"
|
||||
) {
|
||||
return i18n.t("Write...");
|
||||
const doc = editor.state.doc;
|
||||
if (pos >= 0 && pos <= doc.content.size) {
|
||||
const parentName = doc.resolve(pos).parent.type.name;
|
||||
if (
|
||||
parentName === "column" ||
|
||||
parentName === "tableCell" ||
|
||||
parentName === "tableHeader" ||
|
||||
parentName === "callout" ||
|
||||
parentName === "blockquote"
|
||||
) {
|
||||
return i18n.t("Write...");
|
||||
}
|
||||
}
|
||||
return i18n.t('Write anything. Enter "/" for commands');
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
import { isNodeEmpty } from "@tiptap/core";
|
||||
import { Plugin, PluginKey } from "@tiptap/pm/state";
|
||||
import { Decoration, DecorationSet } from "@tiptap/pm/view";
|
||||
import { Placeholder as TiptapPlaceholder } from "@tiptap/extensions";
|
||||
|
||||
export const Placeholder = TiptapPlaceholder.extend({
|
||||
addProseMirrorPlugins() {
|
||||
const editor = this.editor;
|
||||
const options = this.options;
|
||||
const dataAttribute = `data-${options.dataAttribute || "placeholder"}`;
|
||||
|
||||
return [
|
||||
new Plugin({
|
||||
key: new PluginKey("docmostPlaceholder"),
|
||||
props: {
|
||||
decorations: (state) => {
|
||||
if (options.showOnlyWhenEditable && !editor.isEditable) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const { doc, selection } = state;
|
||||
const { anchor } = selection;
|
||||
const decorations: Decoration[] = [];
|
||||
const isEmptyDoc = editor.isEmpty;
|
||||
|
||||
doc.descendants((node, pos) => {
|
||||
if (!node.type.isTextblock) {
|
||||
return options.includeChildren;
|
||||
}
|
||||
|
||||
const hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize;
|
||||
const isEmpty = !node.isLeaf && isNodeEmpty(node);
|
||||
|
||||
if ((hasAnchor || !options.showOnlyCurrent) && isEmpty) {
|
||||
const emptyNodeClass =
|
||||
typeof options.emptyNodeClass === "function"
|
||||
? options.emptyNodeClass({ editor, node, pos, hasAnchor })
|
||||
: options.emptyNodeClass;
|
||||
const classes = [emptyNodeClass];
|
||||
if (isEmptyDoc) {
|
||||
classes.push(options.emptyEditorClass);
|
||||
}
|
||||
|
||||
decorations.push(
|
||||
Decoration.node(pos, pos + node.nodeSize, {
|
||||
class: classes.join(" "),
|
||||
[dataAttribute]:
|
||||
typeof options.placeholder === "function"
|
||||
? options.placeholder({ editor, node, pos, hasAnchor })
|
||||
: options.placeholder,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
return options.includeChildren;
|
||||
});
|
||||
|
||||
return DecorationSet.create(doc, decorations);
|
||||
},
|
||||
},
|
||||
}),
|
||||
];
|
||||
},
|
||||
});
|
||||
+1
-1
Submodule apps/server/src/ee updated: 74d68dc5c5...4d86a8857d
@@ -15,13 +15,21 @@ import { getMimeType } from '../../../common/helpers';
|
||||
import { Upload } from '@aws-sdk/lib-storage';
|
||||
import { Logger } from '@nestjs/common';
|
||||
|
||||
const S3_MAX_SOCKETS = parseInt(process.env.AWS_S3_MAX_SOCKETS) || 200;
|
||||
|
||||
export class S3Driver implements StorageDriver {
|
||||
private readonly s3Client: S3Client;
|
||||
private readonly config: S3StorageConfig;
|
||||
|
||||
constructor(config: S3StorageConfig) {
|
||||
this.config = config;
|
||||
this.s3Client = new S3Client(config as any);
|
||||
this.config = {
|
||||
...config,
|
||||
requestHandler: {
|
||||
httpAgent: { maxSockets: S3_MAX_SOCKETS },
|
||||
httpsAgent: { maxSockets: S3_MAX_SOCKETS },
|
||||
},
|
||||
};
|
||||
this.s3Client = new S3Client(this.config as any);
|
||||
}
|
||||
|
||||
async upload(filePath: string, file: Buffer | Readable): Promise<void> {
|
||||
|
||||
+28
-28
@@ -31,34 +31,34 @@
|
||||
"@joplin/turndown": "4.0.82",
|
||||
"@joplin/turndown-plugin-gfm": "1.0.64",
|
||||
"@sindresorhus/slugify": "3.0.0",
|
||||
"@tiptap/core": "3.28.0",
|
||||
"@tiptap/extension-audio": "3.28.0",
|
||||
"@tiptap/extension-code-block": "3.28.0",
|
||||
"@tiptap/extension-collaboration": "3.28.0",
|
||||
"@tiptap/extension-collaboration-caret": "3.28.0",
|
||||
"@tiptap/extension-color": "3.28.0",
|
||||
"@tiptap/extension-document": "3.28.0",
|
||||
"@tiptap/extension-heading": "3.28.0",
|
||||
"@tiptap/extension-highlight": "3.28.0",
|
||||
"@tiptap/extension-history": "3.28.0",
|
||||
"@tiptap/extension-image": "3.28.0",
|
||||
"@tiptap/extension-link": "3.28.0",
|
||||
"@tiptap/extension-list": "3.28.0",
|
||||
"@tiptap/extension-placeholder": "3.28.0",
|
||||
"@tiptap/extension-subscript": "3.28.0",
|
||||
"@tiptap/extension-superscript": "3.28.0",
|
||||
"@tiptap/extension-table": "3.28.0",
|
||||
"@tiptap/extension-text": "3.28.0",
|
||||
"@tiptap/extension-text-align": "3.28.0",
|
||||
"@tiptap/extension-text-style": "3.28.0",
|
||||
"@tiptap/extension-typography": "3.28.0",
|
||||
"@tiptap/extension-unique-id": "3.28.0",
|
||||
"@tiptap/extension-youtube": "3.28.0",
|
||||
"@tiptap/html": "3.28.0",
|
||||
"@tiptap/pm": "3.28.0",
|
||||
"@tiptap/react": "3.28.0",
|
||||
"@tiptap/starter-kit": "3.28.0",
|
||||
"@tiptap/suggestion": "3.28.0",
|
||||
"@tiptap/core": "3.29.2",
|
||||
"@tiptap/extension-audio": "3.29.2",
|
||||
"@tiptap/extension-code-block": "3.29.2",
|
||||
"@tiptap/extension-collaboration": "3.29.2",
|
||||
"@tiptap/extension-collaboration-caret": "3.29.2",
|
||||
"@tiptap/extension-color": "3.29.2",
|
||||
"@tiptap/extension-document": "3.29.2",
|
||||
"@tiptap/extension-heading": "3.29.2",
|
||||
"@tiptap/extension-highlight": "3.29.2",
|
||||
"@tiptap/extension-history": "3.29.2",
|
||||
"@tiptap/extension-image": "3.29.2",
|
||||
"@tiptap/extension-link": "3.29.2",
|
||||
"@tiptap/extension-list": "3.29.2",
|
||||
"@tiptap/extension-placeholder": "3.29.2",
|
||||
"@tiptap/extension-subscript": "3.29.2",
|
||||
"@tiptap/extension-superscript": "3.29.2",
|
||||
"@tiptap/extension-table": "3.29.2",
|
||||
"@tiptap/extension-text": "3.29.2",
|
||||
"@tiptap/extension-text-align": "3.29.2",
|
||||
"@tiptap/extension-text-style": "3.29.2",
|
||||
"@tiptap/extension-typography": "3.29.2",
|
||||
"@tiptap/extension-unique-id": "3.29.2",
|
||||
"@tiptap/extension-youtube": "3.29.2",
|
||||
"@tiptap/html": "3.29.2",
|
||||
"@tiptap/pm": "3.29.2",
|
||||
"@tiptap/react": "3.29.2",
|
||||
"@tiptap/starter-kit": "3.29.2",
|
||||
"@tiptap/suggestion": "3.29.2",
|
||||
"@tiptap/y-tiptap": "3.0.7",
|
||||
"bytes": "3.1.2",
|
||||
"cross-env": "10.1.0",
|
||||
|
||||
Generated
+1362
-2029
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -54,7 +54,7 @@ overrides:
|
||||
js-yaml@>=3.0.0 <3.15.0: 3.15.0
|
||||
js-yaml@>=4.0.0 <=4.1.1: 4.3.0
|
||||
shamefullyHoist: true
|
||||
minimumReleaseAge: 5760
|
||||
minimumReleaseAge: 4320
|
||||
allowBuilds:
|
||||
'@swc/core': true
|
||||
bcrypt: true
|
||||
|
||||
Reference in New Issue
Block a user