Explorar el Código

modulo comunicazioni - set up editor e upload immagini

ferrari hace 4 meses
padre
commit
b0708e0d11
Se han modificado 100 ficheros con 1045 adiciones y 12 borrados
  1. 29 0
      app/Http/Controllers/FileUpload.php
  2. 30 7
      app/Http/Livewire/EmailComunications.php
  3. 40 4
      app/Http/Livewire/Member.php
  4. 6 1
      app/Models/EmailTemplate.php
  5. 28 0
      app/Models/EmailTemplateAttachment.php
  6. 38 0
      database/migrations/2025_09_23_195123_create_email_attachments_table.php
  7. 55 0
      public/assets/libraries/ckeditor5/LICENSE-ckeditor5.md
  8. 4 0
      public/assets/libraries/ckeditor5/ckeditor5-content.css
  9. 4 0
      public/assets/libraries/ckeditor5/ckeditor5-editor.css
  10. 4 0
      public/assets/libraries/ckeditor5/ckeditor5.css
  11. 0 0
      public/assets/libraries/ckeditor5/ckeditor5.css.map
  12. 4 0
      public/assets/libraries/ckeditor5/ckeditor5.js
  13. 0 0
      public/assets/libraries/ckeditor5/ckeditor5.js.map
  14. 10 0
      public/assets/libraries/ckeditor5/ckeditor5.umd.js
  15. 0 0
      public/assets/libraries/ckeditor5/ckeditor5.umd.js.map
  16. 289 0
      public/assets/libraries/ckeditor5/config.js
  17. 8 0
      public/assets/libraries/ckeditor5/translations/af.d.ts
  18. 4 0
      public/assets/libraries/ckeditor5/translations/af.js
  19. 6 0
      public/assets/libraries/ckeditor5/translations/af.umd.js
  20. 8 0
      public/assets/libraries/ckeditor5/translations/ar.d.ts
  21. 4 0
      public/assets/libraries/ckeditor5/translations/ar.js
  22. 6 0
      public/assets/libraries/ckeditor5/translations/ar.umd.js
  23. 8 0
      public/assets/libraries/ckeditor5/translations/ast.d.ts
  24. 4 0
      public/assets/libraries/ckeditor5/translations/ast.js
  25. 6 0
      public/assets/libraries/ckeditor5/translations/ast.umd.js
  26. 8 0
      public/assets/libraries/ckeditor5/translations/az.d.ts
  27. 4 0
      public/assets/libraries/ckeditor5/translations/az.js
  28. 6 0
      public/assets/libraries/ckeditor5/translations/az.umd.js
  29. 8 0
      public/assets/libraries/ckeditor5/translations/be.d.ts
  30. 4 0
      public/assets/libraries/ckeditor5/translations/be.js
  31. 6 0
      public/assets/libraries/ckeditor5/translations/be.umd.js
  32. 8 0
      public/assets/libraries/ckeditor5/translations/bg.d.ts
  33. 4 0
      public/assets/libraries/ckeditor5/translations/bg.js
  34. 6 0
      public/assets/libraries/ckeditor5/translations/bg.umd.js
  35. 8 0
      public/assets/libraries/ckeditor5/translations/bn.d.ts
  36. 4 0
      public/assets/libraries/ckeditor5/translations/bn.js
  37. 6 0
      public/assets/libraries/ckeditor5/translations/bn.umd.js
  38. 8 0
      public/assets/libraries/ckeditor5/translations/bs.d.ts
  39. 4 0
      public/assets/libraries/ckeditor5/translations/bs.js
  40. 6 0
      public/assets/libraries/ckeditor5/translations/bs.umd.js
  41. 8 0
      public/assets/libraries/ckeditor5/translations/ca.d.ts
  42. 4 0
      public/assets/libraries/ckeditor5/translations/ca.js
  43. 6 0
      public/assets/libraries/ckeditor5/translations/ca.umd.js
  44. 8 0
      public/assets/libraries/ckeditor5/translations/cs.d.ts
  45. 4 0
      public/assets/libraries/ckeditor5/translations/cs.js
  46. 6 0
      public/assets/libraries/ckeditor5/translations/cs.umd.js
  47. 8 0
      public/assets/libraries/ckeditor5/translations/da.d.ts
  48. 4 0
      public/assets/libraries/ckeditor5/translations/da.js
  49. 6 0
      public/assets/libraries/ckeditor5/translations/da.umd.js
  50. 8 0
      public/assets/libraries/ckeditor5/translations/de-ch.d.ts
  51. 4 0
      public/assets/libraries/ckeditor5/translations/de-ch.js
  52. 6 0
      public/assets/libraries/ckeditor5/translations/de-ch.umd.js
  53. 8 0
      public/assets/libraries/ckeditor5/translations/de.d.ts
  54. 4 0
      public/assets/libraries/ckeditor5/translations/de.js
  55. 6 0
      public/assets/libraries/ckeditor5/translations/de.umd.js
  56. 8 0
      public/assets/libraries/ckeditor5/translations/el.d.ts
  57. 4 0
      public/assets/libraries/ckeditor5/translations/el.js
  58. 6 0
      public/assets/libraries/ckeditor5/translations/el.umd.js
  59. 8 0
      public/assets/libraries/ckeditor5/translations/en-au.d.ts
  60. 4 0
      public/assets/libraries/ckeditor5/translations/en-au.js
  61. 6 0
      public/assets/libraries/ckeditor5/translations/en-au.umd.js
  62. 8 0
      public/assets/libraries/ckeditor5/translations/en-gb.d.ts
  63. 4 0
      public/assets/libraries/ckeditor5/translations/en-gb.js
  64. 6 0
      public/assets/libraries/ckeditor5/translations/en-gb.umd.js
  65. 8 0
      public/assets/libraries/ckeditor5/translations/en.d.ts
  66. 4 0
      public/assets/libraries/ckeditor5/translations/en.js
  67. 6 0
      public/assets/libraries/ckeditor5/translations/en.umd.js
  68. 8 0
      public/assets/libraries/ckeditor5/translations/eo.d.ts
  69. 4 0
      public/assets/libraries/ckeditor5/translations/eo.js
  70. 6 0
      public/assets/libraries/ckeditor5/translations/eo.umd.js
  71. 8 0
      public/assets/libraries/ckeditor5/translations/es-co.d.ts
  72. 4 0
      public/assets/libraries/ckeditor5/translations/es-co.js
  73. 6 0
      public/assets/libraries/ckeditor5/translations/es-co.umd.js
  74. 8 0
      public/assets/libraries/ckeditor5/translations/es.d.ts
  75. 4 0
      public/assets/libraries/ckeditor5/translations/es.js
  76. 6 0
      public/assets/libraries/ckeditor5/translations/es.umd.js
  77. 8 0
      public/assets/libraries/ckeditor5/translations/et.d.ts
  78. 4 0
      public/assets/libraries/ckeditor5/translations/et.js
  79. 6 0
      public/assets/libraries/ckeditor5/translations/et.umd.js
  80. 8 0
      public/assets/libraries/ckeditor5/translations/eu.d.ts
  81. 4 0
      public/assets/libraries/ckeditor5/translations/eu.js
  82. 6 0
      public/assets/libraries/ckeditor5/translations/eu.umd.js
  83. 8 0
      public/assets/libraries/ckeditor5/translations/fa.d.ts
  84. 4 0
      public/assets/libraries/ckeditor5/translations/fa.js
  85. 6 0
      public/assets/libraries/ckeditor5/translations/fa.umd.js
  86. 8 0
      public/assets/libraries/ckeditor5/translations/fi.d.ts
  87. 4 0
      public/assets/libraries/ckeditor5/translations/fi.js
  88. 6 0
      public/assets/libraries/ckeditor5/translations/fi.umd.js
  89. 8 0
      public/assets/libraries/ckeditor5/translations/fr.d.ts
  90. 4 0
      public/assets/libraries/ckeditor5/translations/fr.js
  91. 6 0
      public/assets/libraries/ckeditor5/translations/fr.umd.js
  92. 8 0
      public/assets/libraries/ckeditor5/translations/gl.d.ts
  93. 4 0
      public/assets/libraries/ckeditor5/translations/gl.js
  94. 6 0
      public/assets/libraries/ckeditor5/translations/gl.umd.js
  95. 8 0
      public/assets/libraries/ckeditor5/translations/gu.d.ts
  96. 4 0
      public/assets/libraries/ckeditor5/translations/gu.js
  97. 6 0
      public/assets/libraries/ckeditor5/translations/gu.umd.js
  98. 8 0
      public/assets/libraries/ckeditor5/translations/he.d.ts
  99. 4 0
      public/assets/libraries/ckeditor5/translations/he.js
  100. 6 0
      public/assets/libraries/ckeditor5/translations/he.umd.js

+ 29 - 0
app/Http/Controllers/FileUpload.php

@@ -0,0 +1,29 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+
+class FileUpload extends Controller
+{
+    public function upload(Request $request)
+    {
+        if ($request->hasFile('upload')) {
+            $file = $request->file('upload');
+            $originName = $file->getClientOriginalName();
+            $extension = $file->getClientOriginalExtension();
+            $fileName = pathinfo($originName, PATHINFO_FILENAME) . '_' . time() . '.' . $extension;
+            
+            $file->move(public_path('uploads'), $fileName);
+
+            $url = asset('uploads/' . $fileName);
+
+
+            return response()->json([
+                'fileName' => $fileName,
+                'uploaded' => true,
+                'url' => $url
+            ]);
+        }
+    }
+}

+ 30 - 7
app/Http/Livewire/EmailComunications.php

@@ -16,21 +16,22 @@ use Illuminate\Support\Facades\Log;
 
 
 class EmailComunications extends Component
 class EmailComunications extends Component
 {
 {
-    public $records, $subject, $message, $selectedRecipients = [], $scheduledDateTime, $sendNow = true;
+    public $records, $subject, $message, $attachments = [], $recipients = [], $scheduledDateTime, $sendNow = true;
     public $dataId, $update = false, $add = false;
     public $dataId, $update = false, $add = false;
     public $users = [];
     public $users = [];
+    public $categories = [];
 
 
     protected $rules = [
     protected $rules = [
         'subject' => 'required|string|max:255',
         'subject' => 'required|string|max:255',
         'message' => 'required|string',
         'message' => 'required|string',
-        'selectedRecipients' => 'required|array|min:1',
+        // 'recipients' => 'required|array|min:1',
         'scheduledDateTime' => 'required_if:sendNow,false|date|after:now',
         'scheduledDateTime' => 'required_if:sendNow,false|date|after:now',
     ];
     ];
 
 
     protected $messages = [
     protected $messages = [
         'subject.required' => 'L\'oggetto è obbligatorio',
         'subject.required' => 'L\'oggetto è obbligatorio',
         'message.required' => 'Il messaggio è obbligatorio',
         'message.required' => 'Il messaggio è obbligatorio',
-        'selectedRecipients.required' => 'Seleziona almeno un gruppo di destinatari',
+        // 'recipients.required' => 'Seleziona almeno un gruppo di destinatari',
         'scheduledDateTime.required_if' => 'La data di programmazione è obbligatoria',
         'scheduledDateTime.required_if' => 'La data di programmazione è obbligatoria',
         'scheduledDateTime.after' => 'La data di programmazione deve essere futura',
         'scheduledDateTime.after' => 'La data di programmazione deve essere futura',
     ];
     ];
@@ -45,7 +46,7 @@ class EmailComunications extends Component
 
 
     public function sortBy($field)
     public function sortBy($field)
     {
     {
-        if($this->sortField === $field) {
+        if ($this->sortField === $field) {
             $this->sortAsc = ! $this->sortAsc;
             $this->sortAsc = ! $this->sortAsc;
         } else {
         } else {
             $this->sortAsc = true;
             $this->sortAsc = true;
@@ -58,24 +59,35 @@ class EmailComunications extends Component
     {
     {
         $this->subject = '';
         $this->subject = '';
         $this->message = '';
         $this->message = '';
-        $this->selectedRecipients = [];
+        $this->attachments = [];
+        $this->recipients = [];
         $this->sendNow = true;
         $this->sendNow = true;
         $this->scheduledDateTime = now()->addHour()->format('Y-m-d\TH:i');
         $this->scheduledDateTime = now()->addHour()->format('Y-m-d\TH:i');
+
         $this->emit('load-data-table');
         $this->emit('load-data-table');
+        $this->emit('load-editor');
     }
     }
 
 
     public function mount()
     public function mount()
     {
     {
-        if(Auth::user()->level != env('LEVEL_ADMIN', 0))
+        if (Auth::user()->level != env('LEVEL_ADMIN', 0))
             return redirect()->to('/dashboard');
             return redirect()->to('/dashboard');
 
 
         $this->users = Member::select('id', 'last_name', 'email')->get();
         $this->users = Member::select('id', 'last_name', 'email')->get();
+
+        $this->categories = [];
+        $this->getCategories(\App\Models\Category::select('id', 'name')->where('parent_id', null)->orderBy('name')->get(), 0);
+
         $this->scheduledDateTime = now()->addHour()->format('Y-m-d\TH:i');
         $this->scheduledDateTime = now()->addHour()->format('Y-m-d\TH:i');
     }
     }
 
 
     public function render()
     public function render()
     {
     {
         $this->records = EmailTemplate::orderBy($this->sortField, $this->sortAsc ? 'asc' : 'desc')->get();
         $this->records = EmailTemplate::orderBy($this->sortField, $this->sortAsc ? 'asc' : 'desc')->get();
+
+        $this->categories = [];
+        $this->getCategories(\App\Models\Category::select('id', 'name')->where('parent_id', null)->orderBy('name')->get(), 0);
+
         return view('livewire.email_comunications');
         return view('livewire.email_comunications');
     }
     }
 
 
@@ -97,7 +109,7 @@ class EmailComunications extends Component
                 'created_by' => Auth::id(),
                 'created_by' => Auth::id(),
             ]);
             ]);
 
 
-            $recipients = User::whereIn('id', $this->selectedRecipients)->get();
+            $recipients = User::whereIn('id', $this->recipients)->get();
 
 
             if ($this->sendNow) {
             if ($this->sendNow) {
                 $this->sendEmailNow($template, $recipients);
                 $this->sendEmailNow($template, $recipients);
@@ -127,6 +139,8 @@ class EmailComunications extends Component
                 $this->dataId = $template->id;
                 $this->dataId = $template->id;
                 $this->update = true;
                 $this->update = true;
                 $this->add = false;
                 $this->add = false;
+
+                $this->emit('load-editor');
             }
             }
         } catch (\Exception $ex) {
         } catch (\Exception $ex) {
             session()->flash('error', 'Errore (' . $ex->getMessage() . ')');
             session()->flash('error', 'Errore (' . $ex->getMessage() . ')');
@@ -203,4 +217,13 @@ class EmailComunications extends Component
 
 
         Log::info("Email scheduled for {$this->scheduledDateTime} to {$recipients->count()} recipients: {$template->name}");
         Log::info("Email scheduled for {$this->scheduledDateTime} to {$recipients->count()} recipients: {$template->name}");
     }
     }
+
+    public function getCategories($records, $indentation)
+    {
+        foreach ($records as $record) {
+            $this->categories[] = array('id' => $record->id, 'name' => $record->getTree());
+            if (count($record->childs))
+                $this->getCategories($record->childs, $indentation + 1);
+        }
+    }
 }
 }

+ 40 - 4
app/Http/Livewire/Member.php

@@ -620,8 +620,12 @@ class Member extends Component
 
 
     public function checkIsItaly()
     public function checkIsItaly()
     {
     {
-        $n = \App\Models\Nation::findOrFail($this->nation_id);
-        $this->isItaly = $n->is_italy;
+        if ($this->nation_id > 0) {
+            $n = \App\Models\Nation::findOrFail($this->nation_id);
+            $this->isItaly = $n->is_italy;
+        } else {
+            $this->isItaly = false;
+        }
     }
     }
 
 
     public function checkIsBirthItaly()
     public function checkIsBirthItaly()
@@ -888,6 +892,13 @@ class Member extends Component
             $rules['mother_fiscal_code'] = 'required_without:father_fiscal_code';
             $rules['mother_fiscal_code'] = 'required_without:father_fiscal_code';
         }
         }
 
 
+        
+        $std_rules = $rules;
+        $rules = [
+            'first_name' => 'required',
+            'last_name' => 'required'
+        ];
+
         try {
         try {
             $this->validate($rules);
             $this->validate($rules);
         } catch (\Illuminate\Validation\ValidationException $e) {
         } catch (\Illuminate\Validation\ValidationException $e) {
@@ -912,6 +923,14 @@ class Member extends Component
             $mother_docs = implode("|", $this->mother_document_files);
             $mother_docs = implode("|", $this->mother_document_files);
 
 
 
 
+            $to_complete = false;
+            // try {
+            //     $this->validate($std_rules);
+            // } catch(\Illuminate\Validation\ValidationException $e) {
+            //     $to_complete = true;
+            // } catch (\Exception $e) {
+            //     $to_complete = true;
+            // }
 
 
             $member = \App\Models\Member::create([
             $member = \App\Models\Member::create([
                 'first_name' => strtoupper($this->first_name),
                 'first_name' => strtoupper($this->first_name),
@@ -955,7 +974,7 @@ class Member extends Component
                 'phone3' => $this->phone3,
                 'phone3' => $this->phone3,
                 'email' => strtolower($this->email),
                 'email' => strtolower($this->email),
                 'image' => $imageName,
                 'image' => $imageName,
-                'to_complete' => false,
+                'to_complete' => $to_complete,
                 'enabled' => $this->enabled
                 'enabled' => $this->enabled
             ]);
             ]);
             $this->fileService->createMemberFolders($member->id);
             $this->fileService->createMemberFolders($member->id);
@@ -1209,6 +1228,7 @@ class Member extends Component
         Log::info('isItaly', ['isItaly' => $this->isItaly]);
         Log::info('isItaly', ['isItaly' => $this->isItaly]);
         $this->isItaly = $this->checkIsItaly();
         $this->isItaly = $this->checkIsItaly();
 
 
+
         if ($this->isItaly) {
         if ($this->isItaly) {
             $rules['province_id'] = 'required';
             $rules['province_id'] = 'required';
             $rules['city_id'] = 'required';
             $rules['city_id'] = 'required';
@@ -1243,6 +1263,13 @@ class Member extends Component
             $rules['mother_fiscal_code'] = 'required_without:father_fiscal_code';
             $rules['mother_fiscal_code'] = 'required_without:father_fiscal_code';
         }
         }
 
 
+        
+        $std_rules = $rules;
+        $rules = [
+            'first_name' => 'required',
+            'last_name' => 'required'
+        ];
+
         try {
         try {
             $this->validate($rules);
             $this->validate($rules);
         } catch (\Illuminate\Validation\ValidationException $e) {
         } catch (\Illuminate\Validation\ValidationException $e) {
@@ -1267,6 +1294,15 @@ class Member extends Component
             $father_docs = implode("|", $this->father_document_files);
             $father_docs = implode("|", $this->father_document_files);
             $mother_docs = implode("|", $this->mother_document_files);
             $mother_docs = implode("|", $this->mother_document_files);
 
 
+            $to_complete = false;
+            // try {
+            //     $this->validate($std_rules);
+            // } catch(\Illuminate\Validation\ValidationException $e) {
+            //     $to_complete = true;
+            // } catch (Exception $e) {
+            //     $to_complete = true;
+            // }
+
             \App\Models\Member::whereId($this->dataId)->update([
             \App\Models\Member::whereId($this->dataId)->update([
                 'first_name' => strtoupper($this->first_name),
                 'first_name' => strtoupper($this->first_name),
                 'last_name' => strtoupper($this->last_name),
                 'last_name' => strtoupper($this->last_name),
@@ -1309,7 +1345,7 @@ class Member extends Component
                 'phone2' => $this->phone2,
                 'phone2' => $this->phone2,
                 'phone3' => $this->phone3,
                 'phone3' => $this->phone3,
                 'email' => strtolower($this->email),
                 'email' => strtolower($this->email),
-                'to_complete' => false,
+                'to_complete' => $to_complete,
                 'enabled' => $this->enabled
                 'enabled' => $this->enabled
             ]);
             ]);
             updateMemberData($this->dataId);
             updateMemberData($this->dataId);

+ 6 - 1
app/Models/EmailTemplate.php

@@ -11,7 +11,7 @@ class EmailTemplate extends Model
     protected $fillable = [
     protected $fillable = [
         'name',
         'name',
         'content',
         'content',
-        'created_by'
+        'created_by',
     ];
     ];
 
 
     protected $casts = [
     protected $casts = [
@@ -24,6 +24,11 @@ class EmailTemplate extends Model
         return $this->belongsTo(User::class, 'created_by');
         return $this->belongsTo(User::class, 'created_by');
     }
     }
 
 
+    public function attachments()
+    {
+        return $this->hasMany(EmailTemplateAttachment::class, 'attachments');
+    }
+
     public function scheduledEmails()
     public function scheduledEmails()
     {
     {
         return $this->hasMany(EmailScheduled::class, 'template_id');
         return $this->hasMany(EmailScheduled::class, 'template_id');

+ 28 - 0
app/Models/EmailTemplateAttachment.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class EmailTemplateAttachment extends Model
+{
+    use HasFactory;
+    
+    protected $fillable = [
+        'template_id',
+        'name',
+        'path',
+        'size',
+    ];
+
+    protected $casts = [
+        'created_at' => 'datetime',
+        'updated_at' => 'datetime',
+    ];
+
+    public function template()
+    {
+        return $this->belongsTo(EmailTemplate::class, 'template_id');
+    }
+}

+ 38 - 0
database/migrations/2025_09_23_195123_create_email_attachments_table.php

@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+use App\Database\Migrations\TenantMigration;
+
+return new class extends TenantMigration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('email_attachments', function (Blueprint $table) {
+            $table->id();
+            $table->unsignedBigInteger('template_id')->nullable();
+            $table->string('name');
+            $table->string('path');
+            $table->integer('size');
+            $table->timestamps();
+
+            $table->foreign('template_id')->references('id')->on('email_templates')->onDelete('set null');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('email_attachments');
+    }
+};

+ 55 - 0
public/assets/libraries/ckeditor5/LICENSE-ckeditor5.md

@@ -0,0 +1,55 @@
+Software License Agreement
+==========================
+
+**CKEditor&nbsp;5** (https://github.com/ckeditor/ckeditor5)<br>
+Copyright (c) 2003–2025, [CKSource Holding sp. z o.o.](https://cksource.com) All rights reserved.
+
+Licensed under a dual-license model, this software is available under:
+
+* the [GNU General Public License Version 2 or later](https://www.gnu.org/licenses/gpl.html) (see COPYING.GPL),
+* or commercial license terms from CKSource Holding sp. z o.o.
+
+For more information, see: [https://ckeditor.com/legal/ckeditor-licensing-options](https://ckeditor.com/legal/ckeditor-licensing-options).
+
+If you are using CKEditor under commercial terms, you are free to remove the COPYING.GPL file with the full copy of a GPL license.
+
+Sources of Intellectual Property Included in CKEditor
+-----------------------------------------------------
+
+Where not otherwise indicated, all CKEditor content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, CKEditor will incorporate work done by developers outside of CKSource with their express permission.
+
+The following libraries are included in CKEditor under the [MIT license](https://opensource.org/licenses/MIT):
+
+* @types/color-convert - Copyright (c) DefinitelyTyped.
+* blurhash - Copyright (c) Wolt Enterprises.
+* color-convert - Copyright (c) 2011–2016 Heather Arthur <fayearthur@gmail.com>, copyright (c) 2016–2021 Josh Junon <josh@junon.me>.
+* color-parse - Copyright (c) 2015 Dmitry Ivanov.
+* emojibase-data - Copyright (c) 2017-2019 Miles Johnson.
+* es-toolkit - Copyright (c) 2024 Viva Republica, Inc.
+* fuzzysort - Copyright (c) 2018 Stephen Kamenar.
+* is-emoji-supported - Copyright (c) 2016-2020 Koala Interactive, Inc.
+* vanilla-colorful - Copyright (c) 2020 Serhii Kulykov <iamkulykov@gmail.com>.
+* Regular Expression for URL validation - Copyright (c) 2010-2018 Diego Perini.
+* @types/hast - Copyright (c) Microsoft Corporation.
+* hast-util-to-html - Copyright (c) Titus Wormer <tituswormer@gmail.com>
+* hast-util-to-mdast - Copyright (c) Titus Wormer <tituswormer@gmail.com> and Copyright (c) Seth Vincent <sethvincent@gmail.com>
+* hastscript - Copyright (c) Titus Wormer <tituswormer@gmail.com>
+* rehype-remark - Copyright (c) Titus Wormer <tituswormer@gmail.com>
+* remark-breaks - Copyright (c) 2017 Titus Wormer <tituswormer@gmail.com>
+* remark-gfm - Copyright (c) Titus Wormer <tituswormer@gmail.com>
+* remark-parse - Copyright (c) 2014 Titus Wormer <tituswormer@gmail.com>
+* remark-rehype - Copyright (c) Titus Wormer <tituswormer@gmail.com>
+* remark-stringify - Copyright (c) 2014 Titus Wormer <tituswormer@gmail.com>
+* unified - Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com>
+* unist-util-visit - Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com>
+
+The following libraries are included in CKEditor under the [ISC license](https://opensource.org/license/isc-license-txt):
+
+* hast-util-from-dom - Copyright (c) Keith McKnight <keith@mcknig.ht>
+* rehype-dom-parse - Copyright (c) 2018 Keith McKnight <keith@mcknig.ht>
+* rehype-dom-stringify - Copyright (c) 2018 Keith McKnight <keith@mcknig.ht>
+
+Trademarks
+----------
+
+**CKEditor** is a trademark of [CKSource Holding sp. z o.o.](https://cksource.com) All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/ckeditor5-content.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/ckeditor5-editor.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/ckeditor5.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
public/assets/libraries/ckeditor5/ckeditor5.css.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/ckeditor5.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
public/assets/libraries/ckeditor5/ckeditor5.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 10 - 0
public/assets/libraries/ckeditor5/ckeditor5.umd.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
public/assets/libraries/ckeditor5/ckeditor5.umd.js.map


+ 289 - 0
public/assets/libraries/ckeditor5/config.js

@@ -0,0 +1,289 @@
+/**
+ * This configuration was generated using the CKEditor 5 Builder. You can modify it anytime using this link:
+ * https://ckeditor.com/ckeditor-5/builder/#installation/NoRgLANARATAdAdjgVitEAGMA2AzNgDgE5CQFlcFcZwzcCxkZkQRiRciMbmiWY0UAJYAXNBgigIIabJkYAuugAmAUwIAjTFAVA==
+ */
+
+import {
+	Alignment,
+	Autoformat,
+	AutoImage,
+	AutoLink,
+	Autosave,
+	BalloonToolbar,
+	Bold,
+	Essentials,
+	FontBackgroundColor,
+	FontColor,
+	FontFamily,
+	FontSize,
+	GeneralHtmlSupport,
+	Heading,
+	ImageEditing,
+	ImageInline,
+	ImageInsert,
+	ImageInsertViaUrl,
+	ImageResize,
+	ImageStyle,
+	ImageTextAlternative,
+	ImageToolbar,
+	ImageUpload,
+	ImageUtils,
+	Indent,
+	IndentBlock,
+	Italic,
+	Link,
+	List,
+	ListProperties,
+	Paragraph,
+	PasteFromOffice,
+	PlainTableOutput,
+	RemoveFormat,
+	SimpleUploadAdapter,
+	Strikethrough,
+	Style,
+	Table,
+	TableCaption,
+	TableCellProperties,
+	TableColumnResize,
+	TableLayout,
+	TableProperties,
+	TableToolbar,
+	TextTransformation,
+	Underline
+} from 'ckeditor5';
+
+import translations from 'ckeditor5/translations/it.js';
+
+/**
+ * Create a free account with a trial: https://portal.ckeditor.com/checkout?plan=free
+ */
+const LICENSE_KEY = 'GPL'; // or <YOUR_LICENSE_KEY>.
+
+const editorConfig = {
+	toolbar: {
+		items: [
+			'undo',
+			'redo',
+			'|',
+			'heading',
+			'style',
+			'|',
+			'fontSize',
+			'fontFamily',
+			'fontColor',
+			'fontBackgroundColor',
+			'|',
+			'bold',
+			'italic',
+			'underline',
+			'|',
+			'link',
+			'insertImage',
+			'insertTable',
+			'insertTableLayout',
+			'|',
+			'alignment',
+			'|',
+			'bulletedList',
+			'numberedList',
+			'outdent',
+			'indent'
+		],
+		shouldNotGroupWhenFull: false
+	},
+	plugins: [
+		Alignment,
+		Autoformat,
+		AutoImage,
+		AutoLink,
+		Autosave,
+		BalloonToolbar,
+		Bold,
+		Essentials,
+		FontBackgroundColor,
+		FontColor,
+		FontFamily,
+		FontSize,
+		GeneralHtmlSupport,
+		Heading,
+		ImageEditing,
+		ImageInline,
+		ImageInsert,
+		ImageInsertViaUrl,
+		ImageResize,
+		ImageStyle,
+		ImageTextAlternative,
+		ImageToolbar,
+		ImageUpload,
+		ImageUtils,
+		Indent,
+		IndentBlock,
+		Italic,
+		Link,
+		List,
+		ListProperties,
+		Paragraph,
+		PasteFromOffice,
+		PlainTableOutput,
+		RemoveFormat,
+		SimpleUploadAdapter,
+		Strikethrough,
+		Style,
+		Table,
+		TableCaption,
+		TableCellProperties,
+		TableColumnResize,
+		TableLayout,
+		TableProperties,
+		TableToolbar,
+		TextTransformation,
+		Underline
+	],
+	balloonToolbar: ['bold', 'italic', '|', 'link', 'insertImage', '|', 'bulletedList', 'numberedList'],
+	fontFamily: {
+		supportAllValues: true
+	},
+	fontSize: {
+		options: [10, 12, 14, 'default', 18, 20, 22],
+		supportAllValues: true
+	},
+	heading: {
+		options: [
+			{
+				model: 'paragraph',
+				title: 'Paragraph',
+				class: 'ck-heading_paragraph'
+			},
+			{
+				model: 'heading1',
+				view: 'h1',
+				title: 'Heading 1',
+				class: 'ck-heading_heading1'
+			},
+			{
+				model: 'heading2',
+				view: 'h2',
+				title: 'Heading 2',
+				class: 'ck-heading_heading2'
+			},
+			{
+				model: 'heading3',
+				view: 'h3',
+				title: 'Heading 3',
+				class: 'ck-heading_heading3'
+			},
+			{
+				model: 'heading4',
+				view: 'h4',
+				title: 'Heading 4',
+				class: 'ck-heading_heading4'
+			},
+			{
+				model: 'heading5',
+				view: 'h5',
+				title: 'Heading 5',
+				class: 'ck-heading_heading5'
+			},
+			{
+				model: 'heading6',
+				view: 'h6',
+				title: 'Heading 6',
+				class: 'ck-heading_heading6'
+			}
+		]
+	},
+	htmlSupport: {
+		allow: [
+			{
+				name: /^.*$/,
+				styles: true,
+				attributes: true,
+				classes: true
+			}
+		]
+	},
+	image: {
+		toolbar: ['imageTextAlternative', '|', 'imageStyle:inline', 'imageStyle:alignLeft', 'imageStyle:alignRight', '|', 'resizeImage'],
+		styles: {
+			options: ['inline', 'alignLeft', 'alignRight']
+		}
+	},
+	language: 'it',
+	licenseKey: LICENSE_KEY,
+	link: {
+		addTargetToExternalLinks: true,
+		defaultProtocol: 'https://',
+		decorators: {
+			toggleDownloadable: {
+				mode: 'manual',
+				label: 'Downloadable',
+				attributes: {
+					download: 'file'
+				}
+			}
+		}
+	},
+	list: {
+		properties: {
+			styles: true,
+			startIndex: true,
+			reversed: true
+		}
+	},
+	menuBar: {
+		isVisible: true
+	},
+	placeholder: 'Inserisci qui il messaggio',
+	style: {
+		definitions: [
+			{
+				name: 'Article category',
+				element: 'h3',
+				classes: ['category']
+			},
+			{
+				name: 'Title',
+				element: 'h2',
+				classes: ['document-title']
+			},
+			{
+				name: 'Subtitle',
+				element: 'h3',
+				classes: ['document-subtitle']
+			},
+			{
+				name: 'Info box',
+				element: 'p',
+				classes: ['info-box']
+			},
+			{
+				name: 'CTA Link Primary',
+				element: 'a',
+				classes: ['button', 'button--green']
+			},
+			{
+				name: 'CTA Link Secondary',
+				element: 'a',
+				classes: ['button', 'button--black']
+			},
+			{
+				name: 'Marker',
+				element: 'span',
+				classes: ['marker']
+			},
+			{
+				name: 'Spoiler',
+				element: 'span',
+				classes: ['spoiler']
+			}
+		]
+	},
+	table: {
+		contentToolbar: ['tableColumn', 'tableRow', 'mergeTableCells', 'tableProperties', 'tableCellProperties']
+	},
+	translations: [translations],
+};
+
+
+// ClassicEditor.create(document.querySelector('#editor'), editorConfig);
+export {editorConfig};

+ 8 - 0
public/assets/libraries/ckeditor5/translations/af.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/af.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/af.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/ar.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/ar.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/ar.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/ast.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/ast.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/ast.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/az.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/az.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/az.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/be.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/be.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/be.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/bg.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/bg.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/bg.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/bn.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/bn.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/bn.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/bs.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/bs.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/bs.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/ca.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/ca.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/ca.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/cs.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/cs.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/cs.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/da.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/da.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/da.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/de-ch.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/de-ch.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/de-ch.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/de.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/de.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/de.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/el.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/el.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/el.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/en-au.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/en-au.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/en-au.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/en-gb.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/en-gb.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/en-gb.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/en.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/en.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/en.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/eo.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/eo.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/eo.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/es-co.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/es-co.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/es-co.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/es.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/es.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/es.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/et.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/et.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/et.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/eu.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/eu.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/eu.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/fa.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/fa.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/fa.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/fi.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/fi.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/fi.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/fr.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/fr.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/fr.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/gl.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/gl.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/gl.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/gu.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/gu.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/gu.umd.js


+ 8 - 0
public/assets/libraries/ckeditor5/translations/he.d.ts

@@ -0,0 +1,8 @@
+/**
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
+ */
+
+import type { Translations } from '@ckeditor/ckeditor5-utils';
+declare const translations: Translations;
+export default translations;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 4 - 0
public/assets/libraries/ckeditor5/translations/he.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 6 - 0
public/assets/libraries/ckeditor5/translations/he.umd.js


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio