Compare commits

...

4 Commits

Author SHA1 Message Date
Renovate Bot
dd0bd0ed47 Update dependency @tiptap/pm to v2.25.0
All checks were successful
Add copyright notice / copyright_notice (pull_request) Successful in 1m30s
Check usage of free licenses / build-static-assets (pull_request) Successful in 1m42s
Build Nginx-based docker image / build-static-assets (push) Successful in 41m22s
Playwright Tests / test (pull_request) Successful in 52m11s
2025-07-09 02:06:26 +00:00
fdffbdf5ef Merge pull request 'Generate invitations PDF asynchronously' (#311) from generate-invitations-doc-async into main
All checks were successful
Check usage of free licenses / build-static-assets (push) Successful in 36s
Playwright Tests / test (push) Successful in 3m52s
Build Nginx-based docker image / build-static-assets (push) Successful in 4m27s
Reviewed-on: #311
2025-07-08 17:49:17 +00:00
fba75025d4 Use a Toast to inform the user about the email that will be sent
All checks were successful
Add copyright notice / copyright_notice (pull_request) Successful in 1m3s
Check usage of free licenses / build-static-assets (pull_request) Successful in 2m2s
Build Nginx-based docker image / build-static-assets (push) Successful in 4m31s
Playwright Tests / test (pull_request) Successful in 11m42s
2025-07-08 19:37:01 +02:00
8f5c038f9c Modify the behavior of the download invitations button to send them via email 2025-07-08 19:26:38 +02:00
3 changed files with 104 additions and 85 deletions

View File

@ -10,6 +10,8 @@ export interface Api<T extends Entity> {
create(serializable: Serializable<T>, object: T, callback: (object: T) => void): void; create(serializable: Serializable<T>, object: T, callback: (object: T) => void): void;
update(serializable: Serializable<T>, object: T, callback: () => void): void; update(serializable: Serializable<T>, object: T, callback: () => void): void;
destroy(serializable: Serializable<T>, object: T, callback: () => void): void; destroy(serializable: Serializable<T>, object: T, callback: () => void): void;
post(serializable: Serializable<T>, path: string, callback: () => void): void;
} }
export interface Serializable<T> { export interface Serializable<T> {
@ -98,4 +100,14 @@ export class AbstractApi<T extends Entity> implements Api<T> {
}).then(callback) }).then(callback)
.catch((error) => console.error(error)); .catch((error) => console.error(error));
} }
post(serializable: Serializable<T>, path: string, callback: () => void): void {
fetch(`/api/${getSlug()}/${serializable.apiPath()}/${path}`, {
method: 'POST',
headers: {
'X-CSRF-TOKEN': getCsrfToken(),
}
}).then(callback)
.catch((error) => console.error(error));
}
} }

View File

@ -11,6 +11,7 @@ import { LinkIcon, TrashIcon } from "@heroicons/react/24/outline";
import { useEffect, useRef } from "react"; import { useEffect, useRef } from "react";
import { useState } from "react"; import { useState } from "react";
import { classNames } from "../components/button"; import { classNames } from "../components/button";
import { Toast } from "primereact/toast";
function InvitationCard({ invitation, allGuests, onGuestAdded, onDestroy }: { function InvitationCard({ invitation, allGuests, onGuestAdded, onDestroy }: {
invitation: Invitation, invitation: Invitation,
@ -117,6 +118,7 @@ export default function InvitationsBoard({ guests, invitations: originalInvitati
guests: Array<Guest>, guests: Array<Guest>,
invitations: Array<Invitation> invitations: Array<Invitation>
}) { }) {
const toast = useRef<Toast>(null);
const api = new AbstractApi<Invitation>(); const api = new AbstractApi<Invitation>();
const serializer = new InvitationSerializer(); const serializer = new InvitationSerializer();
@ -146,14 +148,19 @@ export default function InvitationsBoard({ guests, invitations: originalInvitati
} }
function handleDownloadQrCodes() { function handleDownloadQrCodes() {
api.getAllPdf(serializer, () => { api.post(serializer, 'email', () => {
console.log("QR codes downloaded"); toast.current?.show({
severity: 'success',
summary: 'Email scheduled',
detail: 'A document with the QR codes will be sent to the organizer\'s email.'
}); });
})
} }
return ( return (
<div className="flex h-screen"> <div className="flex h-screen">
{/* Left Column: Guests */} {/* Left Column: Guests */}
<Toast ref={toast} />
<div className="w-1/4 h-full overflow-auto border-r border-gray-300 p-4"> <div className="w-1/4 h-full overflow-auto border-r border-gray-300 p-4">
<h2 className="text-lg font-semibold mb-4">{unassignedGuests.length} guests without invitation</h2> <h2 className="text-lg font-semibold mb-4">{unassignedGuests.length} guests without invitation</h2>
<div> <div>
@ -180,7 +187,7 @@ export default function InvitationsBoard({ guests, invitations: originalInvitati
onClick={handleDownloadQrCodes} onClick={handleDownloadQrCodes}
className={classNames('primary')} className={classNames('primary')}
> >
Download QR codes Send QR codes via email
</button> </button>

164
pnpm-lock.yaml generated
View File

@ -19,10 +19,10 @@ importers:
version: 0.5.10(tailwindcss@3.4.17) version: 0.5.10(tailwindcss@3.4.17)
'@tiptap/pm': '@tiptap/pm':
specifier: ^2.14.0 specifier: ^2.14.0
version: 2.23.0 version: 2.25.0
'@tiptap/react': '@tiptap/react':
specifier: ^2.14.0 specifier: ^2.14.0
version: 2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704) version: 2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
'@tiptap/starter-kit': '@tiptap/starter-kit':
specifier: ^2.14.0 specifier: ^2.14.0
version: 2.14.0 version: 2.14.0
@ -485,8 +485,8 @@ packages:
peerDependencies: peerDependencies:
'@tiptap/core': ^2.7.0 '@tiptap/core': ^2.7.0
'@tiptap/pm@2.23.0': '@tiptap/pm@2.25.0':
resolution: {integrity: sha512-PQFi8H+OrcaNXNGxbXSjJmZFh1wxiFMbUg25LjOX148d7i+21uWKy6avsr5rsBQNBAKIIMB6PQY61Lhv5r61uA==} resolution: {integrity: sha512-vuzU0pLGQyHqtikAssHn9V61aXLSQERQtn3MUtaJ36fScQg7RClAK5gnIbBt3Ul3VFof8o4xYmcidARc0X/E5A==}
'@tiptap/react@2.25.0': '@tiptap/react@2.25.0':
resolution: {integrity: sha512-Fc7uj/+goEhvJkH2vYJxXLH1GsUkOcsIR3kUyL0vejNRvpzzd87CI/EiSD2ESJO43czQcsJkiYzY4EC+p8NF9w==} resolution: {integrity: sha512-Fc7uj/+goEhvJkH2vYJxXLH1GsUkOcsIR3kUyL0vejNRvpzzd87CI/EiSD2ESJO43czQcsJkiYzY4EC+p8NF9w==}
@ -1592,104 +1592,104 @@ snapshots:
mini-svg-data-uri: 1.4.4 mini-svg-data-uri: 1.4.4
tailwindcss: 3.4.17 tailwindcss: 3.4.17
'@tiptap/core@2.14.0(@tiptap/pm@2.23.0)': '@tiptap/core@2.14.0(@tiptap/pm@2.25.0)':
dependencies: dependencies:
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
'@tiptap/extension-blockquote@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-blockquote@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-bold@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-bold@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-bubble-menu@2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0)': '@tiptap/extension-bubble-menu@2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
tippy.js: 6.3.7 tippy.js: 6.3.7
'@tiptap/extension-bullet-list@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-bullet-list@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-code-block@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0)': '@tiptap/extension-code-block@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
'@tiptap/extension-code@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-code@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-document@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-document@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-dropcursor@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0)': '@tiptap/extension-dropcursor@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
'@tiptap/extension-floating-menu@2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0)': '@tiptap/extension-floating-menu@2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
tippy.js: 6.3.7 tippy.js: 6.3.7
'@tiptap/extension-gapcursor@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0)': '@tiptap/extension-gapcursor@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
'@tiptap/extension-hard-break@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-hard-break@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-heading@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-heading@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-history@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0)': '@tiptap/extension-history@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
'@tiptap/extension-horizontal-rule@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0)': '@tiptap/extension-horizontal-rule@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
'@tiptap/extension-italic@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-italic@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-list-item@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-list-item@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-ordered-list@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-ordered-list@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-paragraph@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-paragraph@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-strike@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-strike@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-text-style@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-text-style@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-text@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))': '@tiptap/extension-text@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/pm@2.23.0': '@tiptap/pm@2.25.0':
dependencies: dependencies:
prosemirror-changeset: 2.3.1 prosemirror-changeset: 2.3.1
prosemirror-collab: 1.3.1 prosemirror-collab: 1.3.1
@ -1710,12 +1710,12 @@ snapshots:
prosemirror-transform: 1.10.4 prosemirror-transform: 1.10.4
prosemirror-view: 1.40.0 prosemirror-view: 1.40.0
'@tiptap/react@2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)': '@tiptap/react@2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-bubble-menu': 2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0) '@tiptap/extension-bubble-menu': 2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)
'@tiptap/extension-floating-menu': 2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0) '@tiptap/extension-floating-menu': 2.25.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
'@types/use-sync-external-store': 0.0.6 '@types/use-sync-external-store': 0.0.6
fast-deep-equal: 3.1.3 fast-deep-equal: 3.1.3
react: 19.0.0-rc-f38c22b244-20240704 react: 19.0.0-rc-f38c22b244-20240704
@ -1724,27 +1724,27 @@ snapshots:
'@tiptap/starter-kit@2.14.0': '@tiptap/starter-kit@2.14.0':
dependencies: dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.23.0) '@tiptap/core': 2.14.0(@tiptap/pm@2.25.0)
'@tiptap/extension-blockquote': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-blockquote': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-bold': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-bold': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-bullet-list': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-bullet-list': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-code': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-code': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-code-block': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0) '@tiptap/extension-code-block': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)
'@tiptap/extension-document': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-document': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-dropcursor': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0) '@tiptap/extension-dropcursor': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)
'@tiptap/extension-gapcursor': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0) '@tiptap/extension-gapcursor': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)
'@tiptap/extension-hard-break': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-hard-break': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-heading': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-heading': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-history': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0) '@tiptap/extension-history': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)
'@tiptap/extension-horizontal-rule': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0))(@tiptap/pm@2.23.0) '@tiptap/extension-horizontal-rule': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))(@tiptap/pm@2.25.0)
'@tiptap/extension-italic': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-italic': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-list-item': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-list-item': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-ordered-list': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-ordered-list': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-paragraph': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-paragraph': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-strike': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-strike': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-text': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-text': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/extension-text-style': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.23.0)) '@tiptap/extension-text-style': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.25.0))
'@tiptap/pm': 2.23.0 '@tiptap/pm': 2.25.0
'@types/bcrypt@5.0.2': '@types/bcrypt@5.0.2':
dependencies: dependencies: