diff --git a/package-lock.json b/package-lock.json index 6d588f4..0fe0ab3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,9 +15,11 @@ "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", + "@tiptap/core": "^3.7.2", "@tiptap/extension-placeholder": "^3.7.1", + "@tiptap/pm": "^3.7.2", "@tiptap/react": "^3.7.1", - "@tiptap/starter-kit": "^3.7.1", + "@tiptap/starter-kit": "^3.7.2", "apexcharts": "^5.3.4", "bootstrap": "^5.3.8", "bootstrap-icons": "^1.13.1", @@ -17783,39 +17785,39 @@ } }, "node_modules/@tiptap/core": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.7.1.tgz", - "integrity": "sha512-jB6R8EGI34QUmV7EhtE+JVpjbZ6Wa0dcf0LNS36X9V7FtDQcnxl7ekRs/ftELt/6qOjubRdyhaID0wNdJVmFtw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.7.2.tgz", + "integrity": "sha512-fJwNpTx0aq4UU0HNkxPvPYfNBcTHQ/q5xBUdOB5Mgu6clwGES38jVsNNSudB8g53APUmJIS+2fJbkxl3V+0jww==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/pm": "^3.7.1" + "@tiptap/pm": "^3.7.2" } }, "node_modules/@tiptap/extension-blockquote": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.7.1.tgz", - "integrity": "sha512-UPIne4kD8hwhadPtapn0WfJCNiF+b3ftNYiC1BpNfti5NmM0sXuqOOC0WnVgGgsNuJp4hd+4PMp42InlD6/1aw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.7.2.tgz", + "integrity": "sha512-8rNDh1E1ratex9KicvNNnjJGtF313Kpf5hXHOUcIm8FQwvA/0Tu6jq7r6VgESMyo95R3EmzRpnCYQef+zDm6OQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-bold": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.7.1.tgz", - "integrity": "sha512-XZRt1blYGpqVlcBo+PKH1mlbsqdc5KsWi/ZsPBV3Ajg/Vx5d6SAY4wK6CW1SpotE1wWucUhfAmXddhBFvYzaUA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.7.2.tgz", + "integrity": "sha512-bwCn9lQEXnEi7LfIx3G/oaH4I0ZapAgrHzLCNJH/tNgRKVWym1H1Oa8PlkiFDbalWOdUkbgeAUqUaIB13k408Q==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-bubble-menu": { @@ -17836,64 +17838,64 @@ } }, "node_modules/@tiptap/extension-bullet-list": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.7.1.tgz", - "integrity": "sha512-AO7EVAftvzSw7Sftp36P+HNedxjygMpobYNTBQzHfGljRZh8VDhIUzwyP1OsmlrcCbBxsrjMZLrmk/ozsALq0g==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.7.2.tgz", + "integrity": "sha512-OHYYXKjmxisLQws0tW8Dz14PcyIJmaed7eypZvIm/R3hxa/7lJY/2EM/Ti5g/w1U8WPBEH1hX3icRtiulserKw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extension-list": "^3.7.1" + "@tiptap/extension-list": "^3.7.2" } }, "node_modules/@tiptap/extension-code": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.7.1.tgz", - "integrity": "sha512-ZRarYvgQ16ZrzKox/iW3bVr5IVNBsD0yjU5S7GVmlRgRQ8lhsTloLk9Gu05uuZ6dOoL3qApLA8+W7w8sxZJ35w==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.7.2.tgz", + "integrity": "sha512-J8FaCiKJJnHvQiPcbfbUtc5RNmGx/Gui/K5CDMPc17jhCiQ9JhR9idRPREV24Z2t7GujWX7LG6ZDDR82pSns+g==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-code-block": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.7.1.tgz", - "integrity": "sha512-/Ov81QXEn6AOiiSUFlM57a+YSye/Lkhvgy303+CEGtDuFVU/SJ0tDsgmSYzkP5q6DIVQLAXp5WkxEo02GnYHgQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.7.2.tgz", + "integrity": "sha512-TfixutvvbGCrSSCsfDK/PBm6A5FIzcPTSVDrmmsiAfqldj/Woy1T42dads+wv9SjKG06GlWDwYtDGAk2Uun8NA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1", - "@tiptap/pm": "^3.7.1" + "@tiptap/core": "^3.7.2", + "@tiptap/pm": "^3.7.2" } }, "node_modules/@tiptap/extension-document": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.7.1.tgz", - "integrity": "sha512-b7NHWseJSvhhbsiSWjQgiJcs6FUJiEJocfhazDiWAOk5ELQ6+oiIe7ecEgDqBmafk9oziV9r7u9OAgyeyP3JBA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.7.2.tgz", + "integrity": "sha512-OrHl402v2FWCUKR1Xi5MTNBAkKYQh7mtpw/WlJDFnk5z1qHLqz4UIcbGilDYzVPrNUZPhA1p3c+V5UUVUFzUfg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-dropcursor": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.7.1.tgz", - "integrity": "sha512-wZT3bPeNJAasOvNr6tUZAwXFeKlQEToSnVAjFiBzJwLDonuK8ZaAiBCDQgqEQSlP3HsEE4/qkERBNrdyAT26CQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.7.2.tgz", + "integrity": "sha512-79y6M9pJYwqcqBHIWoomfptJp0QB/TP3Y+2NOL09sMNeSdUgmz5pCVObA4H48YMkoB0EcUtux2IUOM66e4nsJA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extensions": "^3.7.1" + "@tiptap/extensions": "^3.7.2" } }, "node_modules/@tiptap/extension-floating-menu": { @@ -17912,70 +17914,70 @@ } }, "node_modules/@tiptap/extension-gapcursor": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.7.1.tgz", - "integrity": "sha512-1UrZEaqruWPLdgYsAm4au7BAyTDjaNRP0E7UIoEoGsq+MAS2MM3g4suXMzu+l3ZIayrSy98N3T8DIUG+U6+mww==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.7.2.tgz", + "integrity": "sha512-vCLo2dL2SfeWjh/gJKDiu0/fz6OF7obGTJvHg/yStkoUqlAEiwKoyHP/NXeTGYJMzZzUi0kY9DtTEJdGFvphuQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extensions": "^3.7.1" + "@tiptap/extensions": "^3.7.2" } }, "node_modules/@tiptap/extension-hard-break": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.7.1.tgz", - "integrity": "sha512-pEvRjWexMNxXH5FOy3EhzyMFDFHrRTWOgZbWAxliKDg2dFEJ50e9KcCMDs87e7++V753lEKnFTmz/9WaH7cwcQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.7.2.tgz", + "integrity": "sha512-nNDo+5S1yRQ3JkBM+gwpEEVZ/Kw9qWoG/cpShyGYDHo1/y8MgO+VI0kSb/LuBTw7g+jmNXdf+ZaRRI/pXsUihg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-heading": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.7.1.tgz", - "integrity": "sha512-rOUou6b0+5E+DAmEMTC/mlKTLiOr4D0LKzBfqBLQ3zUyZPZabOKzN0L+4MaLNR2CkXy/Ae4du5ucHGrGOWzVrQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.7.2.tgz", + "integrity": "sha512-eH/G66FIRlTQz4MhEmlNNNQgVTxhoqlkyFzgeG5aipIplYOdYa5Y6Wl0NF4xqr1jAHGLAK6LaYS4FXp3TE7LyA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-horizontal-rule": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.7.1.tgz", - "integrity": "sha512-f4lXW/LHuJBF11PIrWdNAzTmlapV4fVujJ5eCsLAkpzhx3izVrDW/WlKRrkGUCy/qQT4v7BbHNa5JYlKDzDo0Q==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.7.2.tgz", + "integrity": "sha512-pN+1hJAVVP3uqtpZ5Rm7z5XUB/NGprK6wExJ04xG117E4rTVcaEb1FnMILY3J3A5XbdC3vHX+cblR8mOl1PAMw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1", - "@tiptap/pm": "^3.7.1" + "@tiptap/core": "^3.7.2", + "@tiptap/pm": "^3.7.2" } }, "node_modules/@tiptap/extension-italic": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.7.1.tgz", - "integrity": "sha512-Bm6eOtcafc5kjE357GlvIY2hNTRRAkb8D5SRm8zYlVB0fiLto+r15Ht+DTOmLiQKEGtEArQ/C8Rh2j09UdH2vA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.7.2.tgz", + "integrity": "sha512-1tfF37LvKgA5hg09UBgOjdMLNRb1C6keIOBF0r5oHKeWPYOf4z3j5IU9PsFUoOn53XRMb1aiD/TNbGPyoT3Fyw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-link": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.7.1.tgz", - "integrity": "sha512-6+0/mo+EKDiA1d1pDZSsf/51ZOwdFnN35yF/4celxdr/JL4aupvtttIjGAtWd37h50cadYSL4F1uacKs7yyh8Q==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.7.2.tgz", + "integrity": "sha512-9K54PxBiDSWAMfICqkb8jcQ6cL7vDAtjTk0zqBw4d+XuaUy0FC9QUdbx7r1Pkbf36K1/ApbvM9a7qpOirWk8Xw==", "dependencies": { "linkifyjs": "^4.3.2" }, @@ -17984,69 +17986,69 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1", - "@tiptap/pm": "^3.7.1" + "@tiptap/core": "^3.7.2", + "@tiptap/pm": "^3.7.2" } }, "node_modules/@tiptap/extension-list": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.7.1.tgz", - "integrity": "sha512-E93oXkV2vsZThsix0OA7RiHNLIMGi+w9ASKZ+8TGB69oy32yujnnZz6YVhTVVDPOw8rCP5CnOPhJbgdcqByr0A==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.7.2.tgz", + "integrity": "sha512-/tYHmEkOGcVweAc9ZgnAXkzua5aJfu7TjZcKTq5fmDt6x9MY1eY1+egS7D9hVR2sUSAC10VgXmYdYPDsKF3p2g==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1", - "@tiptap/pm": "^3.7.1" + "@tiptap/core": "^3.7.2", + "@tiptap/pm": "^3.7.2" } }, "node_modules/@tiptap/extension-list-item": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.7.1.tgz", - "integrity": "sha512-qkXfWRBusJCId9VhRo9vihcrmxvJ83fkzYWI0LiefJCT1LKfMaeInFNxIsFeUU4q9nR0mhZo7ES3E2+Tk0U3Mw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.7.2.tgz", + "integrity": "sha512-962TFsx4eF5NMyLVhGFGF/btt5j3MipPhDiUsxzBgnlW8o5OonVepb9cDrqpEDQ2/wLvheWnCKuvmG7umasldQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extension-list": "^3.7.1" + "@tiptap/extension-list": "^3.7.2" } }, "node_modules/@tiptap/extension-list-keymap": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.7.1.tgz", - "integrity": "sha512-3WyzWge/g6FoxMTkoAARtMJyIYQbpclNX48HyAqdwjJXuLmz3qckEnJEXo47CvJlRsNAlcDJniRS9j5SVJupRw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.7.2.tgz", + "integrity": "sha512-1du9eo+NPIkuRT258yUn9bovhip556aJo/yDtRbswEVNScP1E8y/kFRWvw0HD7/YWcNqok1ZteoSwShWnKAXRQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extension-list": "^3.7.1" + "@tiptap/extension-list": "^3.7.2" } }, "node_modules/@tiptap/extension-ordered-list": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.7.1.tgz", - "integrity": "sha512-iX3DhTwFp84fiCNSF7+kl/sq6orXq2QFcV2AH+CvL+d0WW1STYmmVmE26gHEjyY82QfpvLZYUCEG6RSYpxFIZw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.7.2.tgz", + "integrity": "sha512-Tu61/JXh1RRd3Kb+s7A7jmpnB+w1pqGSRfMXBtYHDHDIGyXu255ru7soX44lJfHGq/zYcTFSHGSsi8o23QONJg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/extension-list": "^3.7.1" + "@tiptap/extension-list": "^3.7.2" } }, "node_modules/@tiptap/extension-paragraph": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.7.1.tgz", - "integrity": "sha512-L5dsppKKo46MN3Go5vzqqzjPX89pz1lIkIUN3IhU+KmAHg1TklfR7FQkiIFIIV2rb2ZLuLpD/JcNsZAUmJTW5Q==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.7.2.tgz", + "integrity": "sha512-HmDuAixTcvP4A/v6OLkh/C6nB86i7/DRNswBf/Udak8TgWUIcSUK0iActxxm5+B3MZTSf3U87JzyI6IeuElLIQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-placeholder": { @@ -18062,58 +18064,58 @@ } }, "node_modules/@tiptap/extension-strike": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.7.1.tgz", - "integrity": "sha512-Ctqk/SfmGd3hFCDr4/OH0Dnja19UWUrUEY62pwM7JCkbY/Y9QwPLSO32L6KyamwUDek9SL/ATjRPz6GLp0P7hg==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.7.2.tgz", + "integrity": "sha512-I1G+4vZbCBTpAMmyVwaO8cLBJgXEf1DyEzc0B+HhTJiBa9qA9OKgRQEGFgisxu1kggjbzB6+d0+taHfjsZC1SQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-text": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.7.1.tgz", - "integrity": "sha512-m+8FJrFAllJYuzLbEXJ9AztobxmWBTjWorkHcMHBLAbY2ytmAhIM1u3ExtOn9DjvnIT6MffCaq0i/KjhSBYJlA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.7.2.tgz", + "integrity": "sha512-sKaeGYNP1+bAe2rvmzWLW5qH9DsSFOJlOUEOFchR0OX0rC7bbGS6/KuyAq0w6UkL+cMJnDyAbv3KeD2WEA192w==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extension-underline": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.7.1.tgz", - "integrity": "sha512-tyx7ZM2ll8DclKe9Ea/vPyqaZBgnJfIbKBOpecpzawDaJ5ocjwywmYNduevOhw327X2/i8LIQBsPuIOJselcUQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.7.2.tgz", + "integrity": "sha512-GDpUZllTD7uIdHjTzYJ6i4jUgCeviW40SCpLVVv1xH0gj1t1xu0Rnxmk+bXkF2XNe8jPXkMCgYNr6DR6eO8roQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1" + "@tiptap/core": "^3.7.2" } }, "node_modules/@tiptap/extensions": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.7.1.tgz", - "integrity": "sha512-O7eq3frqh7kn/J2P+lpx8blBQrIQxt21J3NvlQJhW5nXIECdo2ox8SQcEfli0EqMSwZCZTdVufdFBkWfIRXhRg==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.7.2.tgz", + "integrity": "sha512-FaToSdU9fhQk2swkaXrAQNgdaE0dwLbUHcvilW5F4xTpQfZ3J535u5U2TUYf+f9KKSV5fTmD4QGNY9qxY7ihTg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.7.1", - "@tiptap/pm": "^3.7.1" + "@tiptap/core": "^3.7.2", + "@tiptap/pm": "^3.7.2" } }, "node_modules/@tiptap/pm": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.7.1.tgz", - "integrity": "sha512-t3n054kplRtRYn8pDnzF/prDUccF7QX7jPYLsYBpLn3+d59J5KKkBmOpPExUGE8kZkNoLfwffAFj6NBfqOu+Xg==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.7.2.tgz", + "integrity": "sha512-i2fvXDapwo/TWfHM6STYEbkYyF3qyfN6KEBKPrleX/Z80G5bLxom0gB79TsjLNxTLi6mdf0vTHgAcXMG1avc2g==", "dependencies": { "prosemirror-changeset": "^2.3.0", "prosemirror-collab": "^1.3.1", @@ -18166,34 +18168,34 @@ } }, "node_modules/@tiptap/starter-kit": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.7.1.tgz", - "integrity": "sha512-ZYgA3BkASQmHyoDlUYKFPEpCzIcn/FP/Sb+Ic2L7gt2gOC7zvWAVc/2yIbiFuq+48s+5U/KJqDiXn2hiLwXxpA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.7.2.tgz", + "integrity": "sha512-43GwI+2Mtc/ci7J4eJOE02wZxp5KIsDTMMb0peNksPcEGaURGdDhav9zbAW24NRjRxU7Auk/zaQu9O8+ZE0v0A==", "dependencies": { - "@tiptap/core": "^3.7.1", - "@tiptap/extension-blockquote": "^3.7.1", - "@tiptap/extension-bold": "^3.7.1", - "@tiptap/extension-bullet-list": "^3.7.1", - "@tiptap/extension-code": "^3.7.1", - "@tiptap/extension-code-block": "^3.7.1", - "@tiptap/extension-document": "^3.7.1", - "@tiptap/extension-dropcursor": "^3.7.1", - "@tiptap/extension-gapcursor": "^3.7.1", - "@tiptap/extension-hard-break": "^3.7.1", - "@tiptap/extension-heading": "^3.7.1", - "@tiptap/extension-horizontal-rule": "^3.7.1", - "@tiptap/extension-italic": "^3.7.1", - "@tiptap/extension-link": "^3.7.1", - "@tiptap/extension-list": "^3.7.1", - "@tiptap/extension-list-item": "^3.7.1", - "@tiptap/extension-list-keymap": "^3.7.1", - "@tiptap/extension-ordered-list": "^3.7.1", - "@tiptap/extension-paragraph": "^3.7.1", - "@tiptap/extension-strike": "^3.7.1", - "@tiptap/extension-text": "^3.7.1", - "@tiptap/extension-underline": "^3.7.1", - "@tiptap/extensions": "^3.7.1", - "@tiptap/pm": "^3.7.1" + "@tiptap/core": "^3.7.2", + "@tiptap/extension-blockquote": "^3.7.2", + "@tiptap/extension-bold": "^3.7.2", + "@tiptap/extension-bullet-list": "^3.7.2", + "@tiptap/extension-code": "^3.7.2", + "@tiptap/extension-code-block": "^3.7.2", + "@tiptap/extension-document": "^3.7.2", + "@tiptap/extension-dropcursor": "^3.7.2", + "@tiptap/extension-gapcursor": "^3.7.2", + "@tiptap/extension-hard-break": "^3.7.2", + "@tiptap/extension-heading": "^3.7.2", + "@tiptap/extension-horizontal-rule": "^3.7.2", + "@tiptap/extension-italic": "^3.7.2", + "@tiptap/extension-link": "^3.7.2", + "@tiptap/extension-list": "^3.7.2", + "@tiptap/extension-list-item": "^3.7.2", + "@tiptap/extension-list-keymap": "^3.7.2", + "@tiptap/extension-ordered-list": "^3.7.2", + "@tiptap/extension-paragraph": "^3.7.2", + "@tiptap/extension-strike": "^3.7.2", + "@tiptap/extension-text": "^3.7.2", + "@tiptap/extension-underline": "^3.7.2", + "@tiptap/extensions": "^3.7.2", + "@tiptap/pm": "^3.7.2" }, "funding": { "type": "github", diff --git a/package.json b/package.json index 3213c63..d1fcde9 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,11 @@ "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", + "@tiptap/core": "^3.7.2", "@tiptap/extension-placeholder": "^3.7.1", + "@tiptap/pm": "^3.7.2", "@tiptap/react": "^3.7.1", - "@tiptap/starter-kit": "^3.7.1", + "@tiptap/starter-kit": "^3.7.2", "apexcharts": "^5.3.4", "bootstrap": "^5.3.8", "bootstrap-icons": "^1.13.1", diff --git a/src/PagesMedico/DoctorRelatorioManager.jsx b/src/PagesMedico/DoctorRelatorioManager.jsx index 22a79b2..cf5d2c4 100644 --- a/src/PagesMedico/DoctorRelatorioManager.jsx +++ b/src/PagesMedico/DoctorRelatorioManager.jsx @@ -1,130 +1,131 @@ +// src/PagesMedico/DoctorRelatorioManager.jsx import API_KEY from '../components/utils/apiKeys'; -import { Link } from 'react-router-dom'; -import {useState, useEffect} from 'react' +import { Link } from 'react-router-dom'; +import { useState, useEffect } from 'react'; import { useAuth } from '../components/utils/AuthProvider'; import { GetPatientByID } from '../components/utils/Functions-Endpoints/Patient'; +import { GetDoctorByID } from '../components/utils/Functions-Endpoints/Doctor'; import { useNavigate } from 'react-router-dom'; import html2pdf from 'html2pdf.js'; import TiptapViewer from './TiptapViewer'; - + const DoctorRelatorioManager = () => { - const navigate = useNavigate() - const {getAuthorizationHeader} = useAuth(); - let authHeader = getAuthorizationHeader() - const [RelatoriosFiltrados, setRelatorios] = useState([]) - const [PacientesComRelatorios, setPacientesComRelatorios] = useState([]) - const [showModal, setShowModal] = useState(false) - const [index, setIndex] = useState() - // 1º useEffect: Busca os dados dos pacientes após carregar os relatórios - useEffect( () => { - let pacientesDosRelatorios = [] - - const ListarPacientes = async () => { + const navigate = useNavigate(); + const { getAuthorizationHeader } = useAuth(); + const authHeader = getAuthorizationHeader(); + const [RelatoriosFiltrados, setRelatorios] = useState([]); + const [PacientesComRelatorios, setPacientesComRelatorios] = useState([]); + const [MedicosComRelatorios, setMedicosComRelatorios] = useState([]); + const [showModal, setShowModal] = useState(false); + const [index, setIndex] = useState(); + + // busca lista de relatórios + useEffect(() => { + const fetchReports = async () => { + try { + var myHeaders = new Headers(); + myHeaders.append('apikey', API_KEY); + myHeaders.append('Authorization', authHeader); + var requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; + + const res = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/reports?select=*", requestOptions); + const data = await res.json(); + setRelatorios(data || []); + } catch (err) { + console.error('Erro listar relatórios', err); + setRelatorios([]); + } + }; + fetchReports(); + }, [authHeader]); + + // depois que RelatoriosFiltrados mudar, busca pacientes e médicos correspondentes + useEffect(() => { + const fetchRelData = async () => { + const pacientes = []; + const medicos = []; for (let i = 0; i < RelatoriosFiltrados.length; i++) { - let relatorio = RelatoriosFiltrados[i]; - let paciente_id = relatorio.patient_id; - const paciente = await GetPatientByID(paciente_id, authHeader); - console.log(paciente) - if (paciente.length > 0) { - pacientesDosRelatorios.push(paciente[0]); + const rel = RelatoriosFiltrados[i]; + // paciente + try { + const pacienteRes = await GetPatientByID(rel.patient_id, authHeader); + pacientes.push(Array.isArray(pacienteRes) ? pacienteRes[0] : pacienteRes); + } catch (err) { + pacientes.push(null); + } + // médico: tenta created_by ou requested_by id se existir + try { + const doctorId = rel.created_by || rel.requested_by || null; + if (doctorId) { + // se created_by é id (uuid) usamos GetDoctorByID, senão se requested_by for nome, guardamos nome + const docRes = await GetDoctorByID(doctorId, authHeader); + medicos.push(Array.isArray(docRes) ? docRes[0] : docRes); + } else { + medicos.push({ full_name: rel.requested_by || '' }); + } + } catch (err) { + medicos.push({ full_name: rel.requested_by || '' }); } } - setPacientesComRelatorios(pacientesDosRelatorios); + setPacientesComRelatorios(pacientes); + setMedicosComRelatorios(medicos); + }; + if (RelatoriosFiltrados.length > 0) fetchRelData(); + else { + setPacientesComRelatorios([]); + setMedicosComRelatorios([]); } - ListarPacientes() - - }, [RelatoriosFiltrados, authHeader]); - // NOVO: useEffect para logar PacientesComRelatorios após a atualização - useEffect(() => { - console.log(PacientesComRelatorios, 'aqui') - }, [PacientesComRelatorios]) - - // 2º useEffect: Busca a lista de relatórios - useEffect(() => { - var myHeaders = new Headers(); -myHeaders.append("apikey", API_KEY); -myHeaders.append("Authorization", authHeader); -var requestOptions = { - method: 'GET', - headers: myHeaders, - redirect: 'follow' -}; -fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/reports?patient_id&status", requestOptions) - .then(response => response.json()) - .then(data => { setRelatorios(data); console.log(data) }) - .catch(error => console.log('error', error)); - }, [authHeader]) - const BaixarPDFdoRelatorio = (nome_paciente) => { - const elemento = document.getElementById("folhaA4"); // tua div do relatório - const opt = { - margin: 0, - filename: `relatorio_${nome_paciente || "paciente"}.pdf`, - html2canvas: { scale: 2 }, - jsPDF: { unit: "mm", format: "a4", orientation: "portrait" }, + }, [RelatoriosFiltrados, authHeader]); + + const BaixarPDFdoRelatorio = (nome_paciente) => { + const elemento = document.getElementById("folhaA4"); + const opt = { margin: 0, filename: `relatorio_${nome_paciente || "paciente"}.pdf`, html2canvas: { scale: 2 }, jsPDF: { unit: "mm", format: "a4", orientation: "portrait" } }; + html2pdf().set(opt).from(elemento).save(); }; - html2pdf().set(opt).from(elemento).save(); - } - return ( + + return (
Clinica Rise up
-Dr - CRM/SP 123456
-Avenida - (79) 9 4444-4444
-Paciente: {PacientesComRelatorios[index]?.full_name}
-Data de nascimento: {PacientesComRelatorios[index]?.birth_date}
-Data do exame: {}
-Exame: {RelatoriosFiltrados[index]?.exam}
- {/* INÍCIO DA MUDANÇA (da resposta anterior) */} -Conteúdo do Relatório:
-Dr {RelatoriosFiltrados[index]?.required_by}
-Emitido em: 0
-Clinica Rise up
+Dr - CRM/SP 123456
+Avenida - (79) 9 4444-4444
+Paciente: {PacientesComRelatorios[index]?.full_name}
+Data de nascimento: {PacientesComRelatorios[index]?.birth_date}
+Data do exame: {RelatoriosFiltrados[index]?.due_at || ''}
+ {/* Exibe conteúdo salvo (content_html) */} +Conteúdo do Relatório:
+Dr {MedicosComRelatorios[index]?.full_name || RelatoriosFiltrados[index]?.requested_by}
+Emitido em: {RelatoriosFiltrados[index]?.created_at || '—'}
| Paciente | -CPF | -Exame | - +Doutor | ||||
|---|---|---|---|---|---|---|---|
| {PacientesComRelatorios[index]?.full_name} | -{PacientesComRelatorios[index]?.cpf} | -{relatorio.exam} | - - +{PacientesComRelatorios[idx]?.full_name} | +{MedicosComRelatorios[idx]?.full_name || relatorio.requested_by || '-'} |
-
-
-
-
-
-
-
-
+
+
+
+
|
-
||
| - Nenhum paciente encontrado. - | -|||||||
| Nenhum paciente encontrado. | |||||||
Clinica Rise up
-Dr - CRM/SP 123456
-Avenida - (79) 9 4444-4444
-Clinica Rise up
+Dr - CRM/SP 123456
+Avenida - (79) 9 4444-4444
+Paciente: ${patientName}
Data de nascimento: ${birthDate}
-Data do exame:
+Data do exame:
Exame: ${exam}
-Conteúdo do Relatório:
-1
-Dr
+Diagnóstico:
+${r?.diagnosis || ''}
+Conclusão:
+${r?.conclusion || ''}
+Dr ${doctorName}
Emitido em: 0
Clinica Rise up
+Dr - CRM/SP 123456
+Avenida - (79) 9 4444-4444
+Paciente: ${patientName}
+Data de nascimento: ${birthDate}
+Data do exame:
+Exame:
+Diagnóstico:
+ +Conclusão:
+ +Dr ${doctorName}
+Emitido em: 0
+Inicie o relatório aqui...
', onUpdate: ({ editor }) => { - // Quando o conteúdo muda, chama a função onChange com o HTML - onChange(editor.getHTML()); + onChange && onChange(editor.getHTML()); }, }); + + // Se o pai mudar 'content', atualizamos o editor + useEffect(() => { + if (!editor) return; + // Só setContent se for diferente para evitar perda de edição + try { + const current = editor.getHTML(); + if ((content || '').trim() && content !== current) { + editor.commands.setContent(content); + } + } catch (e) { + // ignore + } + }, [editor, content]); + return ( -