This commit is contained in:
Dr Masroor Ehsan 2025-01-09 13:33:31 +06:00
parent 98d4e4e4b7
commit 66b808d029
10 changed files with 1004 additions and 36 deletions

View File

@ -8,12 +8,13 @@
use App\Http\Requests\CreateReportRequest; use App\Http\Requests\CreateReportRequest;
use App\Models\Study; use App\Models\Study;
use App\Models\StudyReport; use App\Models\StudyReport;
use App\Services\DocumentGenerator\Word;
class ReportController extends HashidControllerBase class ReportController extends HashidControllerBase
{ {
public function popup() public function popup()
{ {
abort_unless(me()->may([Permission::ReportEdit, Permission::ReportDictate, Permission::ReportDownload]), 403); abort_unless(me()->may([Permission::ReportEdit, Permission::ReportDictate, Permission::ReportApprove, Permission::ReportDownload]), 403);
$this->decodeKeys(); $this->decodeKeys();
$study = Study::with(['reports.radiologist', 'readingPhysician'])->findOrFail($this->key); $study = Study::with(['reports.radiologist', 'readingPhysician'])->findOrFail($this->key);
if (me()->isRadiologist()) { if (me()->isRadiologist()) {
@ -37,7 +38,7 @@ public function save(CreateReportRequest $request)
'report_status' => ReportStatus::Preliminary->value, 'report_status' => ReportStatus::Preliminary->value,
'read_by_id' => me()->id, 'read_by_id' => me()->id,
]); ]);
$report->setContent(request('content')); $report->saveContent(request('content'));
$report->save(); $report->save();
return redirect()->back()->with('success', 'Report saved successfully.'); return redirect()->back()->with('success', 'Report saved successfully.');
@ -58,4 +59,22 @@ public function create()
return view('staff.reports.create', compact('study', 'report')); return view('staff.reports.create', compact('study', 'report'));
} }
public function view(string $uuid)
{
abort_unless(me()->may([Permission::ReportEdit, Permission::ReportDictate, Permission::ReportApprove, Permission::ReportDownload]), 403);
// $study = Study::with(['reports.radiologist', 'readingPhysician'])->where('accession_number', $uuid)->firstOrFail();
$report = StudyReport::where('accession_number', $uuid)->firstOrFail();
return view('staff.reports.view', compact('report'));
}
public function download(string $uuid)
{
abort_unless(me()->may([Permission::ReportEdit, Permission::ReportDictate, Permission::ReportApprove, Permission::ReportDownload]), 403);
// $study = Study::with(['reports.radiologist', 'readingPhysician'])->where('accession_number', $uuid)->firstOrFail();
$report = StudyReport::where('accession_number', $uuid)->firstOrFail();
return Word::make($report->study, $report);
}
} }

View File

@ -2,10 +2,11 @@
namespace App\Models; namespace App\Models;
use App\Casts\Compressed;
use App\Domain\Report\ReportStatus; use App\Domain\Report\ReportStatus;
use App\Services\ReportStorage;
use Illuminate\Database\Eloquent\Concerns\HasTimestamps; use Illuminate\Database\Eloquent\Concerns\HasTimestamps;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Facades\Storage;
class StudyReport extends BaseModel class StudyReport extends BaseModel
{ {
@ -56,6 +57,17 @@ public function viewUrl(): string
return route('staff.report.view', $this->accession_number); return route('staff.report.view', $this->accession_number);
} }
public function saveContent(string $content): void
{
$this->file_path = ReportStorage::reportFilepath($this->study);
Storage::disk('public')->put($this->file_path, $content);
}
public function getContent(): ?string
{
return Storage::disk('public')->get($this->file_path);
}
/** /**
* @return array<string, string> * @return array<string, string>
*/ */
@ -63,7 +75,6 @@ protected function casts(): array
{ {
return [ return [
'report_status' => ReportStatus::class, 'report_status' => ReportStatus::class,
'content' => Compressed::class,
]; ];
} }
} }

View File

@ -0,0 +1,39 @@
<?php
namespace App\Services\DocumentGenerator;
use App\Models\Study;
use App\Models\StudyReport;
use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\Shared\Html;
class Word
{
public static function make(Study $study, StudyReport $report)
{
$html = $report->getContent();
$phpWord = new PhpWord;
$section = $phpWord->addSection();
// Add HTML content to the section
Html::addHtml($section, $html, false, false);
// Save the document as a DOCX file
// $filename = 'report.docx';
$writer = IOFactory::createWriter($phpWord, 'Word2007');
ob_start();
$writer->save('php://output');
$content = ob_get_clean();
return $content;
$content = view('staff.reports.word', compact('study', 'report'))->render();
$filepath = ReportStorage::reportFilepath($study, '.docx');
Storage::put($filepath, $content);
return $filepath;
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Services;
use App\Models\Study;
use Illuminate\Support\Str;
final readonly class ReportStorage
{
public static function studyFolder(Study|int $study): string
{
$hash = md5($study instanceof Study ? $study->id : $study);
return 'reports/' . substr($hash, 0, 2) . '/' . substr($hash, 2, 2) . '/' . substr($hash, 4, 2);
}
public static function reportFilepath(Study|int $study, string $ext = '.html'): string
{
$directory = self::studyFolder($study);
$filename = Str::random(16) . $ext;
return $directory . '/' . $filename;
}
}

View File

@ -26,7 +26,7 @@ public function up(): void
$table->foreignIdFor(User::class, 'approved_by_id')->index()->nullable()->constrained()->nullOnDelete(); $table->foreignIdFor(User::class, 'approved_by_id')->index()->nullable()->constrained()->nullOnDelete();
$table->string('report_title')->nullable(); $table->string('report_title')->nullable();
$table->binary('content')->nullable(); $table->string('file_path');
$table->string('remarks')->nullable(); $table->string('remarks')->nullable();
$table->timestamps(); $table->timestamps();
}); });

885
package-lock.json generated
View File

@ -40,6 +40,7 @@
"bootstrap-select": "1.14.0-beta3", "bootstrap-select": "1.14.0-beta3",
"bs-stepper": "1.7.0", "bs-stepper": "1.7.0",
"chart.js": "4.4.3", "chart.js": "4.4.3",
"ckeditor5": "^44.1.0",
"cleave.js": "1.6.0", "cleave.js": "1.6.0",
"clipboard": "2.0.11", "clipboard": "2.0.11",
"datatables.net-bs5": "1.13.11", "datatables.net-bs5": "1.13.11",
@ -1802,6 +1803,762 @@
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@ckeditor/ckeditor5-adapter-ckfinder": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-44.1.0.tgz",
"integrity": "sha512-RCamOkjMHlhUg7MhRbP/ZZJ7mq0zk1hj6Hg25efv22WHb2SNnesiwzLtYoyc6ess72/1CYpgZPfamhxsOTXoMA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-upload": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-alignment": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-44.1.0.tgz",
"integrity": "sha512-t+xIuGiG9pvG4lkglSQfXwoZU9zCPUvrBYISI8G0WAJXdWdmyWUN2Vj84CKQQ6LRgnqq/eybSR2O2l02psgtZw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-autoformat": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-44.1.0.tgz",
"integrity": "sha512-JHJh+iD9//sYsVlwdGZTV+ScPMlWjqFuR7xwF2QbU7xYGMqTy4mPnFvkT6fF73e3PZvtAzgENLU45pUAS9oo/A==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-autosave": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autosave/-/ckeditor5-autosave-44.1.0.tgz",
"integrity": "sha512-KlkJcgu5THkfdwzYzVa9zKkADGd8J5VW5kRrRSK4oJYONA5mmiZ9UsIcoIk2QbGnDGnZW1Iih5Pjrvz0HYjIKw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-basic-styles": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-44.1.0.tgz",
"integrity": "sha512-/pZ0wBdXlv8AX43O/nZ4ENg8Xk/SwZZMAJKKVZa3SwtxNRmeGYTNKIEQEQouWF1PLz3SEZ8L5sS/j9AYX7f5Xw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-block-quote": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-44.1.0.tgz",
"integrity": "sha512-mApNvTckUbAjeHFaPg7+Je3zTkJDDsM5FWNJJuzaRhl5TBvyW9BM+p7AN8B9cx+pj2Srzlbu+056c0jg4ibCIw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-enter": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-bookmark": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-bookmark/-/ckeditor5-bookmark-44.1.0.tgz",
"integrity": "sha512-gzUOspXUb4sN308JbeVWLGxGdFHeYpobiBn8Zj2/Niw6y+/4ZQfssn7fLhKnoHM12bzoxYYq3DvcMUrs78Ukvg==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-ckbox": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-44.1.0.tgz",
"integrity": "sha512-J+vJckr25Oi3KjJcTYIIUFa2KIXHitknW8iNPegavCV/FFNieTezvvpjJzROlWRiy+U7CRYvgrNbSJXHx5pR6Q==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-upload": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"blurhash": "2.0.5",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-ckfinder": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-44.1.0.tgz",
"integrity": "sha512-oRWHiejta6irRuO78KmtQEiYRrzcad+BycTrFsLRCIZp0hzKx5Vp5olAhXodX+d8gZaV8fJJpswdK0LTjrfKNA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-clipboard": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-44.1.0.tgz",
"integrity": "sha512-Z5P1P6ATLVy/c7AvI3Akt3mEqQfCnhZmz4EdAS7sF34WTayrHQ/TQjdte/0mN+6LXcQV1whhXe1xLM7GVsG+bg==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-cloud-services": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-44.1.0.tgz",
"integrity": "sha512-3Nr8EM6CyRpNkmm+7tbhg/4H16SY5Tqo0TLGHtXdyRxx7y2GLev5OsN01qBhSSGifALTCHyOWymxt5Qo9V5wXg==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-code-block": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-44.1.0.tgz",
"integrity": "sha512-2z4ULLehgMjwxvo0a26UkA2p3MdDITGVDpt7FZkO+P9XCim/j5DdXK4/xVNXLbrOifpFq/5kfrAZvjDX0lPMIw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-enter": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-core": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-44.1.0.tgz",
"integrity": "sha512-vBxHT/g37uWM5QKj0i7++clGd85htX9rPtlqzjz3I26NJQvcKCmT39Szv3oPFzAJKuUaqKso5iLq+Sw+VtQRBg==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-watchdog": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-easy-image": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-44.1.0.tgz",
"integrity": "sha512-hmn9MmVebb/abTBq1ci2fYi7uK93Dt2F3lDYErqsFWCxZ4S2PQW3+qON44E5phE9aDKOLEZ/B61niGrLgcWS5g==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-upload": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-editor-balloon": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-balloon/-/ckeditor5-editor-balloon-44.1.0.tgz",
"integrity": "sha512-BVxO3WECurMZEhxIVb2JMqeMcqaqefvc/YfrWNRriVyK7muW47EH74IIZdCXSm7g5i0npEIk808sKqA0t/xR0g==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-editor-classic": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-44.1.0.tgz",
"integrity": "sha512-rZtJ1KpJGxW8iWE0wVhp9giiYiu3XypjsmthkK8oeMf4+8wTr3ySncLKKts3/BDiAcFdJnog5lv5LQbrAVqO+Q==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-editor-decoupled": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-44.1.0.tgz",
"integrity": "sha512-pRnDrPVyIM4uCLCjhgzvRk4v63Cc1u9Nc21yx1igswvxAfhGx2BMO+JiC6+8PAHT/mOSbgFB83N+A823sms3uA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-editor-inline": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-inline/-/ckeditor5-editor-inline-44.1.0.tgz",
"integrity": "sha512-NglsnVkzioMU9XirmjyTM/DKSL/rzkBBwFaZFiTVyGfhuVzTUClPxGtxKOlML2v0Mtqg/OdRUMPMIo+qtjymeQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-editor-multi-root": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-multi-root/-/ckeditor5-editor-multi-root-44.1.0.tgz",
"integrity": "sha512-NAMBGIDn/xMGHXv2IeLRDa84yW9OwHri9H5NdJJ4F+gFtiQbOhIhTQj4nZ8TuLIaYr2NOUrTpTrkw3frgd0lLg==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-engine": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-44.1.0.tgz",
"integrity": "sha512-+149hsqfZX+Q+ho7P64XUrIpkLqX2jGBuEWjC2ZZYujv1ZIOWOMihkpJL8jE6Vcplee6vsTXGSj2sIHNoOp+3g==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-utils": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-enter": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-44.1.0.tgz",
"integrity": "sha512-NmtqxEov25rYRN8Uq7MRabsqYfvL6ZNj/mvBHqn3PE9aHE+lTwD51D3zgCw1RN2sipXsvedwo3g+NynAtS/HIw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-essentials": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-44.1.0.tgz",
"integrity": "sha512-UWSc2lSCqztfy3LLeuHfyKU/oSbFyw/4KEbQso9DsMPQ4vdmX/sW6BoklCYF9mPJrg+zNSseJj9T/M1Q+Z6U0Q==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-enter": "44.1.0",
"@ckeditor/ckeditor5-select-all": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-undo": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-find-and-replace": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-44.1.0.tgz",
"integrity": "sha512-SwZYRdXpYCu3t3+k9fxO8JXjNb/Q/OK3nmtVBNly/ZWYmORGQd3ua9XlipcnwIB8aBQqhuV/izDKqSiFZc23zA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-font": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-font/-/ckeditor5-font-44.1.0.tgz",
"integrity": "sha512-q4r7I7C2uG9gkBx9WlARNN5ZWp4USHVFS2kLTyMVAN1/iHAKIx03m+N3W0FTZVpXV+xscn7H6KaLcQXmWc4OiQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-heading": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-44.1.0.tgz",
"integrity": "sha512-cROqN/dnq8xBdxMQoe+1Zjh8bfoVePh6WSl+wjcc4OIozYe/V2QAmCODpYiVm4RntenH0IidHteSTCqtGM4L9w==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-paragraph": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-highlight": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-44.1.0.tgz",
"integrity": "sha512-bj7DBo1miBf6f7LPLiNa5inziXBKt6dFQupWAgJNJvPxYeGf4jTKDeVc9FLBESJ7eOWKjmCjaNeSsV2smHTAKQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-horizontal-line": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-44.1.0.tgz",
"integrity": "sha512-xwqQPJQsgwEvbZb3EqjFEcvj1tmlxcX9hFL9I66oGblfYNEIX8Q4DWxbjWCDrfY2IvLO3zNUDI9J5EcxSnd9Pw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-html-embed": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-44.1.0.tgz",
"integrity": "sha512-eFXTBHhvRIGflrgpNa2wP0W9IiHx2t2TxQX8881EbF/H3/LDqreyNR7LHBXXgPk1j+H5V/MOGAqG5ntlvq2SdQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-html-support": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-44.1.0.tgz",
"integrity": "sha512-cBUtojLEreXNYV54B/FT1WBjV+dU5i8vsVKBmYw2QOxmaWl4i/wyEtzPh21Ytcsy2ApmIMT/X27ZppffnKcyGQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-enter": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-image": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-image/-/ckeditor5-image-44.1.0.tgz",
"integrity": "sha512-8BbS0y1YSGnQAiA6rTps05DIJ8CcdbGYb+1XFb8QOUCzJenFzNGAe4gnlEPw0zW1C8ZjdahRY1K2Fcb16/q7TQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-undo": "44.1.0",
"@ckeditor/ckeditor5-upload": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-indent": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-44.1.0.tgz",
"integrity": "sha512-iFrtDVkXhbHHTJIs+yw0x9X/uEH0kyjQ5pQZM5fAzX6g9TFd71iiJ2l8xBSefXRcqEEPVaMWZgikBeRHmQDyOA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-language": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-language/-/ckeditor5-language-44.1.0.tgz",
"integrity": "sha512-CudeLs2RvADdchJ6FFznsNrMYHDcOrj8CGuSgyTW9PcsnhAzUOYWuaunJ3xXd8MXwu6pGwEReVYuouc2JQQg6A==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-link": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-link/-/ckeditor5-link-44.1.0.tgz",
"integrity": "sha512-+tDlzrhOrl3TMlj01DsGJwQEsrXZl6A7fD4gFfYS3rO9sgGZSLU+fSxOwWHdQyBp1ujiJGsGFXmKFAUZxs7M/w==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-list": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-list/-/ckeditor5-list-44.1.0.tgz",
"integrity": "sha512-lwUAtK68GfNVr1yI+VLom54K8F5bRZee8HKkzFZPgTCANYLUnmHGUNF9La7qETeqjNV6bljUnKwn/knOeserGg==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-enter": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-markdown-gfm": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-44.1.0.tgz",
"integrity": "sha512-ZlFa3xi8vSCCqs4cvfxjZrcXz87i7XIKAd+eTQdwoInQDJHnGpUcM67hKIMSU3E8AjEz+tXdsaauxSofZTS+zQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"ckeditor5": "44.1.0",
"marked": "4.0.12",
"turndown": "7.2.0",
"turndown-plugin-gfm": "1.0.2"
}
},
"node_modules/@ckeditor/ckeditor5-media-embed": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-44.1.0.tgz",
"integrity": "sha512-ymG55dCUv+i0o0th4+vYMvVHhC2DXTs6J+5t40tNvdMS7apt882Tbq9vAE6iqgQZbtQVVlRpQbGD0UByBO5LVA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-undo": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-mention": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-mention/-/ckeditor5-mention-44.1.0.tgz",
"integrity": "sha512-LJ2aT5nJ9I8eZT/E/RqD/iPv4fyU8MJqtGQXExEwwAfQDqkx0X5u3mv3uAR/HhyFyj6jFw+z26bTdt13wdSaEw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-minimap": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-minimap/-/ckeditor5-minimap-44.1.0.tgz",
"integrity": "sha512-V9xOrUqLxnrOGXOiQVu4QGLV0zam3xMCi+vVR3/jFrVEPRCY1swdC6JhT4PAYt5lPBbrlmyF7u+pZjal8I7F1Q==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-page-break": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-page-break/-/ckeditor5-page-break-44.1.0.tgz",
"integrity": "sha512-6uNuctQnPTr2WFcyKGdTQ/1gTkGmIhiZg8y9UMIY74aEW9AQfGwCaBkAO5AveaBTfmGBkSsAISS3T8k5OGsV0Q==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-paragraph": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-44.1.0.tgz",
"integrity": "sha512-tfERMEQRrvM5zdZuiWC5IjCPtUrpncXY4ewn9mcGJ5KqmLaX3e+2dN4GVZpcagwOtZNQNQBONZnuWt9ZVkquFQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-paste-from-office": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-44.1.0.tgz",
"integrity": "sha512-NIhtkFoDXNpOaPBDH6dDTU2BC3GUJ1rE5gUV0i4hrtOeERuk9EdkADCOBEHEm7UC31kCQ4si6wkry+d4oZ5FMw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-remove-format": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-44.1.0.tgz",
"integrity": "sha512-97ppktKeKIhGYrRKwfzVP0DOktcaY4gFXEtKINmse8kw0C7jO4SE82sDJxWSP/3h74oncZzd/q/Qa6P65JmhWA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-restricted-editing": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-restricted-editing/-/ckeditor5-restricted-editing-44.1.0.tgz",
"integrity": "sha512-dsjeug3TCn32idHe4XWaD8ZBtKloAHSDYzv05uEuJDTEkTnSOp8ynVxUCKlTTMeHKjpRPr5kaxJkycqnxOqsvw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-select-all": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-44.1.0.tgz",
"integrity": "sha512-jQH9745sYWpQcZXC4z1lNS4XqrTJWHljWEMa4KKTZgo6zjR/L53tRZdIKbE6O/JgaW805Xpl74cJGXJvwre8VA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-show-blocks": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-show-blocks/-/ckeditor5-show-blocks-44.1.0.tgz",
"integrity": "sha512-qPjba3VFXgRnnEjlZAfv1XgfC1jNpYUWpfxlniZixvcZ1bEOzEX6rkEqBioNgGFWBU8siPTPiwI2mmT/8/58Vw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-source-editing": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-44.1.0.tgz",
"integrity": "sha512-gg/tWANOiJckvXxKqwthkvR531bPuen+lJN3y2qnqMKMQLLNbWWIUoTuE3PZRHDprT0JmTjnvlHrwsaSdpOkVg==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-theme-lark": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-special-characters": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-44.1.0.tgz",
"integrity": "sha512-btw7qEPjrdp/XigtXOXy1KkK481PEeuJ5xdPD2xLlWvZkF0tGbEqIpDIMxkW1w7NmmC+5Aa8qJqXkV6dN4jZ5A==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-style": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-style/-/ckeditor5-style-44.1.0.tgz",
"integrity": "sha512-A6udrCj1IxuiPE8OGue/aDtoqs8ZAPsbabnT9OS46WBlDGjXaSStXD7Dx6uJwEkaRdmhdGaObi4UnF7gkHRXHA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-table": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-table/-/ckeditor5-table-44.1.0.tgz",
"integrity": "sha512-8iQUW5apSYFrsJhguW0ROPBf+gmKhtP75KIeal6GdEtYlOMA8vP/ixUhQB5HZBmecfAVULyu1fF4YfGzHelZhw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-theme-lark": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-44.1.0.tgz",
"integrity": "sha512-Ym9ZKtQBqh5xOYGVa+va6CtYJSbhqIfVOsoCRZnMTzg3RTfwp8F78yeWUdplF6DS4JaM966yQumX9DcJGYn5AA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-ui": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-typing": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-44.1.0.tgz",
"integrity": "sha512-YlIpXSp2mkzgCCwqa4Dd870K4UvKsjlHRDod50G8VSz2qFCkE6PaLGGBAci1IoZ5nBXZMpCrnhrkQ1jAJwx2RA==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-ui": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-44.1.0.tgz",
"integrity": "sha512-Qga/eO6/4rCzK6m/JLMVq0gbgNDEV7K/J+ida1UQFYxrMric7qfriusT1q0Y+6jFYuGMdyLg0e0imORbMyw9Zw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"color-convert": "2.0.1",
"color-parse": "1.4.2",
"lodash-es": "4.17.21",
"vanilla-colorful": "0.7.2"
}
},
"node_modules/@ckeditor/ckeditor5-undo": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-44.1.0.tgz",
"integrity": "sha512-sULkc7Pvbc431uZCjzcAKd//jYE3B8fT8PEOFG8pYRnQJHc5GyodvH0RmXDhCtKCGtzvh1Dlpb4iSNpPNpVvJQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-upload": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-44.1.0.tgz",
"integrity": "sha512-+608NL4Jl6t2PA02Ft8myPV5r2oXwD+4wTCLKg4Oh2KPQYCyGOm5vj8dLxwWNsbMXZrdPxeQOK3UHq8bxYyI6A==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0"
}
},
"node_modules/@ckeditor/ckeditor5-utils": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-44.1.0.tgz",
"integrity": "sha512-PILjaPvEMuQ0qlnPAFeNTTQcLuXgGionSxaxF8HGnZolaqWnsJ11xGYxqUslNOGtdZNp/88/FC9TjCY/ksiibg==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-ui": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-watchdog": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-44.1.0.tgz",
"integrity": "sha512-fTwYEW1TbbxC7PVmZtfWfwHT5aMREfBTDvH3KQWKpowTcoAiMBlQQKA/lvkRJ1bFMp4AZFjqs1IWZyap/sanAg==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-widget": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-44.1.0.tgz",
"integrity": "sha512-dBG1EFJjq38wF0k1p3R2yIfZRHwgY5+hLuF1sp02q/lUJu59U/rPscfjj4dGpE4eKaqCD9z/UNEtOjPGnaJzKw==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-enter": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@ckeditor/ckeditor5-word-count": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-44.1.0.tgz",
"integrity": "sha512-dM8jeZfRA2nodWdE1Ty3ZzaAl3M523ri9/ahLpG/JcCud2QZn9XRPrEwaIxC/1VtZg/Z2SUuI2LcPrbtPkQ0UQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"ckeditor5": "44.1.0",
"lodash-es": "4.17.21"
}
},
"node_modules/@esbuild/aix-ppc64": { "node_modules/@esbuild/aix-ppc64": {
"version": "0.24.2", "version": "0.24.2",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
@ -3392,6 +4149,12 @@
"node": ">=6.0.0" "node": ">=6.0.0"
} }
}, },
"node_modules/@mixmark-io/domino": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz",
"integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==",
"license": "BSD-2-Clause"
},
"node_modules/@nodelib/fs.scandir": { "node_modules/@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@ -4665,6 +5428,12 @@
"superagent": "^3.8.3" "superagent": "^3.8.3"
} }
}, },
"node_modules/blurhash": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz",
"integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==",
"license": "MIT"
},
"node_modules/bootstrap": { "node_modules/bootstrap": {
"version": "5.3.3", "version": "5.3.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
@ -5082,6 +5851,72 @@
"node": ">=6.0" "node": ">=6.0"
} }
}, },
"node_modules/ckeditor5": {
"version": "44.1.0",
"resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-44.1.0.tgz",
"integrity": "sha512-6e1KFUE2giaSI0ZOKfAAFF5Tk7PF5DCyKVROPY9/46tti9AZpUFUzr7NhBsZjyMiMX1eqxqfsSZT7f9tKgcVAQ==",
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
"@ckeditor/ckeditor5-adapter-ckfinder": "44.1.0",
"@ckeditor/ckeditor5-alignment": "44.1.0",
"@ckeditor/ckeditor5-autoformat": "44.1.0",
"@ckeditor/ckeditor5-autosave": "44.1.0",
"@ckeditor/ckeditor5-basic-styles": "44.1.0",
"@ckeditor/ckeditor5-block-quote": "44.1.0",
"@ckeditor/ckeditor5-bookmark": "44.1.0",
"@ckeditor/ckeditor5-ckbox": "44.1.0",
"@ckeditor/ckeditor5-ckfinder": "44.1.0",
"@ckeditor/ckeditor5-clipboard": "44.1.0",
"@ckeditor/ckeditor5-cloud-services": "44.1.0",
"@ckeditor/ckeditor5-code-block": "44.1.0",
"@ckeditor/ckeditor5-core": "44.1.0",
"@ckeditor/ckeditor5-easy-image": "44.1.0",
"@ckeditor/ckeditor5-editor-balloon": "44.1.0",
"@ckeditor/ckeditor5-editor-classic": "44.1.0",
"@ckeditor/ckeditor5-editor-decoupled": "44.1.0",
"@ckeditor/ckeditor5-editor-inline": "44.1.0",
"@ckeditor/ckeditor5-editor-multi-root": "44.1.0",
"@ckeditor/ckeditor5-engine": "44.1.0",
"@ckeditor/ckeditor5-enter": "44.1.0",
"@ckeditor/ckeditor5-essentials": "44.1.0",
"@ckeditor/ckeditor5-find-and-replace": "44.1.0",
"@ckeditor/ckeditor5-font": "44.1.0",
"@ckeditor/ckeditor5-heading": "44.1.0",
"@ckeditor/ckeditor5-highlight": "44.1.0",
"@ckeditor/ckeditor5-horizontal-line": "44.1.0",
"@ckeditor/ckeditor5-html-embed": "44.1.0",
"@ckeditor/ckeditor5-html-support": "44.1.0",
"@ckeditor/ckeditor5-image": "44.1.0",
"@ckeditor/ckeditor5-indent": "44.1.0",
"@ckeditor/ckeditor5-language": "44.1.0",
"@ckeditor/ckeditor5-link": "44.1.0",
"@ckeditor/ckeditor5-list": "44.1.0",
"@ckeditor/ckeditor5-markdown-gfm": "44.1.0",
"@ckeditor/ckeditor5-media-embed": "44.1.0",
"@ckeditor/ckeditor5-mention": "44.1.0",
"@ckeditor/ckeditor5-minimap": "44.1.0",
"@ckeditor/ckeditor5-page-break": "44.1.0",
"@ckeditor/ckeditor5-paragraph": "44.1.0",
"@ckeditor/ckeditor5-paste-from-office": "44.1.0",
"@ckeditor/ckeditor5-remove-format": "44.1.0",
"@ckeditor/ckeditor5-restricted-editing": "44.1.0",
"@ckeditor/ckeditor5-select-all": "44.1.0",
"@ckeditor/ckeditor5-show-blocks": "44.1.0",
"@ckeditor/ckeditor5-source-editing": "44.1.0",
"@ckeditor/ckeditor5-special-characters": "44.1.0",
"@ckeditor/ckeditor5-style": "44.1.0",
"@ckeditor/ckeditor5-table": "44.1.0",
"@ckeditor/ckeditor5-theme-lark": "44.1.0",
"@ckeditor/ckeditor5-typing": "44.1.0",
"@ckeditor/ckeditor5-ui": "44.1.0",
"@ckeditor/ckeditor5-undo": "44.1.0",
"@ckeditor/ckeditor5-upload": "44.1.0",
"@ckeditor/ckeditor5-utils": "44.1.0",
"@ckeditor/ckeditor5-watchdog": "44.1.0",
"@ckeditor/ckeditor5-widget": "44.1.0",
"@ckeditor/ckeditor5-word-count": "44.1.0"
}
},
"node_modules/classlist-polyfill": { "node_modules/classlist-polyfill": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz", "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz",
@ -5173,7 +6008,6 @@
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"color-name": "~1.1.4" "color-name": "~1.1.4"
@ -5186,9 +6020,17 @@
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/color-parse": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.2.tgz",
"integrity": "sha512-RI7s49/8yqDj3fECFZjUI1Yi0z/Gq1py43oNJivAIIDSyJiOZLfYCRQEgn8HEVAj++PcRe8AnL2XF0fRJ3BTnA==",
"license": "MIT",
"dependencies": {
"color-name": "^1.0.0"
}
},
"node_modules/combined-stream": { "node_modules/combined-stream": {
"version": "1.0.8", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@ -8468,6 +9310,12 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"license": "MIT"
},
"node_modules/lodash.debounce": { "node_modules/lodash.debounce": {
"version": "4.0.8", "version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@ -8561,6 +9409,18 @@
"vt-pbf": "^3.1.3" "vt-pbf": "^3.1.3"
} }
}, },
"node_modules/marked": {
"version": "4.0.12",
"resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz",
"integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==",
"license": "MIT",
"bin": {
"marked": "bin/marked.js"
},
"engines": {
"node": ">= 12"
}
},
"node_modules/masonry-layout": { "node_modules/masonry-layout": {
"version": "4.2.2", "version": "4.2.2",
"resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz",
@ -11711,6 +12571,21 @@
"dev": true, "dev": true,
"license": "0BSD" "license": "0BSD"
}, },
"node_modules/turndown": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.0.tgz",
"integrity": "sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A==",
"license": "MIT",
"dependencies": {
"@mixmark-io/domino": "^2.2.0"
}
},
"node_modules/turndown-plugin-gfm": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.2.tgz",
"integrity": "sha512-vwz9tfvF7XN/jE0dGoBei3FXWuvll78ohzCZQuOb+ZjWrs3a0XhQVomJEb2Qh4VHTPNRO4GPZh0V7VRbiWwkRg==",
"license": "MIT"
},
"node_modules/type-check": { "node_modules/type-check": {
"version": "0.4.0", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@ -12035,6 +12910,12 @@
"node": ">= 0.4.0" "node": ">= 0.4.0"
} }
}, },
"node_modules/vanilla-colorful": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/vanilla-colorful/-/vanilla-colorful-0.7.2.tgz",
"integrity": "sha512-z2YZusTFC6KnLERx1cgoIRX2CjPRP0W75N+3CC6gbvdX5Ch47rZkEMGO2Xnf+IEmi3RiFLxS18gayMA27iU7Kg==",
"license": "MIT"
},
"node_modules/vary": { "node_modules/vary": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",

View File

@ -136,6 +136,7 @@
"bootstrap-select": "1.14.0-beta3", "bootstrap-select": "1.14.0-beta3",
"bs-stepper": "1.7.0", "bs-stepper": "1.7.0",
"chart.js": "4.4.3", "chart.js": "4.4.3",
"ckeditor5": "^44.1.0",
"cleave.js": "1.6.0", "cleave.js": "1.6.0",
"clipboard": "2.0.11", "clipboard": "2.0.11",
"datatables.net-bs5": "1.13.11", "datatables.net-bs5": "1.13.11",

View File

@ -3,44 +3,33 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>CKEditor 5 Sample</title> <title>SAVE</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.ckeditor.com/ckeditor5/44.1.0/ckeditor5.css" crossorigin> <link rel="stylesheet" href="https://cdn.ckeditor.com/ckeditor5/44.1.0/ckeditor5.css" crossorigin>
<link rel="stylesheet" <link rel="stylesheet"
href="https://cdn.ckeditor.com/ckeditor5-premium-features/44.1.0/ckeditor5-premium-features.css" crossorigin> href="https://cdn.ckeditor.com/ckeditor5-premium-features/44.1.0/ckeditor5-premium-features.css" crossorigin>
<link rel="stylesheet" href="./ck.css"> <link rel="stylesheet" href="./ck.css">
<link rel="stylesheet" href="./splitter.css">
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<div class="mt-8"> <div class="mt-8">
<div class="row "> <div class="row ">
<div class="container-split"> <iframe class="fixed-container" src="{{ $study->getOhifLink() }}">
</iframe>
<div class="container__left"> <form action="{{ route('staff.report.save') }}" method="POST">
<iframe class="fixed-container" src="{{ $study->getOhifLink() }}"> @csrf
</iframe> <input type="hidden" value="{{ $study->hash }}" name="hashid">
</div> <div
<div class="resizer"></div> class="ck-editor editor-container editor-container_classic-editor editor-container_include-word-count fixed-container"
<div class="container__right"> id="editor-container">
<form action="{{ route('staff.report.save') }}" method="POST"> <div class="editor-container__editor">
@csrf <input id="editor" name="content"/>
<input type="hidden" value="{{ $study->hash }}" name="hashid">
<div
class="ck-editor editor-container editor-container_classic-editor editor-container_include-word-count fixed-container"
id="editor-container">
<div class="editor-container__editor">
<textarea id="editor" name="content">
{!! $report?->getContent() !!}
</textarea>
</div>
<div class="editor_container__word-count" id="editor-word-count"></div>
</div> </div>
<button type="submit" class="btn btn-primary">Save</button> <div class="editor_container__word-count" id="editor-word-count"></div>
</form>
</div> </div>
</div> <button type="submit" class="btn btn-primary">Save</button>
</form>
</div> </div>
</div> </div>
@ -268,8 +257,7 @@ class: 'ck-heading_heading6'
} }
] ]
}, },
initialData: initialData: '{!! $report?->getContent() !!}',
'',
licenseKey: LICENSE_KEY, licenseKey: LICENSE_KEY,
link: { link: {
addTargetToExternalLinks: true, addTargetToExternalLinks: true,

View File

@ -4,8 +4,8 @@
<td>{{ $report->created_at }}</td> <td>{{ $report->created_at }}</td>
<td>{{ $report->report_status->name }}</td> <td>{{ $report->report_status->name }}</td>
<td>{{ $report->radiologist?->name }}</td> <td>{{ $report->radiologist?->name }}</td>
<td><a class="btn btn-primary btn-xs" target="_blank" href="{{ $report->viewUrl() }}"></a></td> <td><a class="btn btn-primary btn-xs" target="_blank" href="{{ $report->viewUrl() }}">VW</a></td>
<td><a class="btn btn-info btn-xs" target="_blank" href="{{ $report->downloadUrl() }}"></a></td> <td><a class="btn btn-info btn-xs" target="_blank" href="{{ $report->downloadUrl() }}">DL</a></td>
</tr> </tr>
@endforeach @endforeach

View File

@ -0,0 +1,5 @@
<html>
<body>
{!! $report->getContent() !!}
</body>
</html>