added improved delete logic in modals

This commit is contained in:
Palanikannan1437 2023-09-05 01:31:19 +05:30
parent d3a9a764dc
commit 67eeced439
2 changed files with 113 additions and 112 deletions

View File

@ -32,122 +32,122 @@ export const TiptapExtensions = (
workspaceSlug: string, workspaceSlug: string,
setIsSubmitting?: (isSubmitting: "submitting" | "submitted" | "saved") => void setIsSubmitting?: (isSubmitting: "submitting" | "submitted" | "saved") => void
) => [ ) => [
StarterKit.configure({ StarterKit.configure({
bulletList: { bulletList: {
HTMLAttributes: { HTMLAttributes: {
class: "list-disc list-outside leading-3 -mt-2", class: "list-disc list-outside leading-3 -mt-2",
},
}, },
}, orderedList: {
orderedList: { HTMLAttributes: {
HTMLAttributes: { class: "list-decimal list-outside leading-3 -mt-2",
class: "list-decimal list-outside leading-3 -mt-2", },
}, },
}, listItem: {
listItem: { HTMLAttributes: {
HTMLAttributes: { class: "leading-normal -mb-2",
class: "leading-normal -mb-2", },
}, },
}, blockquote: {
blockquote: { HTMLAttributes: {
HTMLAttributes: { class: "border-l-4 border-custom-border-300",
class: "border-l-4 border-custom-border-300", },
}, },
}, code: {
code: { HTMLAttributes: {
class:
"rounded-md bg-custom-primary-30 mx-1 px-1 py-1 font-mono font-medium text-custom-text-1000",
spellcheck: "false",
},
},
codeBlock: false,
horizontalRule: false,
dropcursor: {
color: "rgba(var(--color-text-100))",
width: 2,
},
gapcursor: false,
}),
CodeBlockLowlight.configure({
lowlight,
}),
HorizontalRule.extend({
addInputRules() {
return [
new InputRule({
find: /^(?:---|—-|___\s|\*\*\*\s)$/,
handler: ({ state, range, commands }) => {
commands.splitBlock();
const attributes = {};
const { tr } = state;
const start = range.from;
const end = range.to;
// @ts-ignore
tr.replaceWith(start - 1, end, this.type.create(attributes));
},
}),
];
},
}).configure({
HTMLAttributes: {
class: "mb-6 border-t border-custom-border-300",
},
}),
Gapcursor,
TiptapLink.configure({
protocols: ["http", "https"],
validate: (url) => isValidHttpUrl(url),
HTMLAttributes: { HTMLAttributes: {
class: class:
"rounded-md bg-custom-primary-30 mx-1 px-1 py-1 font-mono font-medium text-custom-text-1000", "text-custom-primary-300 underline underline-offset-[3px] hover:text-custom-primary-500 transition-colors cursor-pointer",
spellcheck: "false",
}, },
}, }),
codeBlock: false, UpdatedImage.configure({
horizontalRule: false, HTMLAttributes: {
dropcursor: { class: "rounded-lg border border-custom-border-300",
color: "rgba(var(--color-text-100))", },
width: 2, }),
}, Placeholder.configure({
gapcursor: false, placeholder: ({ node }) => {
}), if (node.type.name === "heading") {
CodeBlockLowlight.configure({ return `Heading ${node.attrs.level}`;
lowlight, }
}), if (node.type.name === "image" || node.type.name === "table") {
HorizontalRule.extend({ return "";
addInputRules() { }
return [
new InputRule({
find: /^(?:---|—-|___\s|\*\*\*\s)$/,
handler: ({ state, range, commands }) => {
commands.splitBlock();
const attributes = {}; return "Press '/' for commands...";
const { tr } = state; },
const start = range.from; includeChildren: true,
const end = range.to; }),
// @ts-ignore UniqueID.configure({
tr.replaceWith(start - 1, end, this.type.create(attributes)); types: ["image"],
}, }),
}), SlashCommand(workspaceSlug, setIsSubmitting),
]; TiptapUnderline,
}, TextStyle,
}).configure({ Color,
HTMLAttributes: { Highlight.configure({
class: "mb-6 border-t border-custom-border-300", multicolor: true,
}, }),
}), TaskList.configure({
Gapcursor, HTMLAttributes: {
TiptapLink.configure({ class: "not-prose pl-2",
protocols: ["http", "https"], },
validate: (url) => isValidHttpUrl(url), }),
HTMLAttributes: { TaskItem.configure({
class: HTMLAttributes: {
"text-custom-primary-300 underline underline-offset-[3px] hover:text-custom-primary-500 transition-colors cursor-pointer", class: "flex items-start my-4",
}, },
}), nested: true,
UpdatedImage.configure({ }),
HTMLAttributes: { Markdown.configure({
class: "rounded-lg border border-custom-border-300", html: true,
}, transformCopiedText: true,
}), }),
Placeholder.configure({ Table,
placeholder: ({ node }) => { TableHeader,
if (node.type.name === "heading") { CustomTableCell,
return `Heading ${node.attrs.level}`; TableRow,
} ];
if (node.type.name === "image" || node.type.name === "table") {
return "";
}
return "Press '/' for commands...";
},
includeChildren: true,
}),
UniqueID.configure({
types: ["image"],
}),
SlashCommand(workspaceSlug, setIsSubmitting),
TiptapUnderline,
TextStyle,
Color,
Highlight.configure({
multicolor: true,
}),
TaskList.configure({
HTMLAttributes: {
class: "not-prose pl-2",
},
}),
TaskItem.configure({
HTMLAttributes: {
class: "flex items-start my-4",
},
nested: true,
}),
Markdown.configure({
html: true,
transformCopiedText: true,
}),
Table,
TableHeader,
CustomTableCell,
TableRow,
];

View File

@ -25,7 +25,7 @@ const TrackImageDeletionPlugin = () =>
// Check if the node still exists elsewhere in the document // Check if the node still exists elsewhere in the document
let nodeExists = false; let nodeExists = false;
newState.doc.descendants((node) => { newState.doc.descendants((node) => {
if (node.attrs.id === oldNode.attrs.id) { if (node.attrs.src === oldNode.attrs.src) {
nodeExists = true; nodeExists = true;
} }
}); });
@ -37,6 +37,7 @@ const TrackImageDeletionPlugin = () =>
removedImages.forEach((node) => { removedImages.forEach((node) => {
const src = node.attrs.src; const src = node.attrs.src;
console.log("Image deleted: ", src, node.attrs.id)
onNodeDeleted(src); onNodeDeleted(src);
}); });
}); });