commit 954ef3d036d7416aaba1d1168762db2678c6dff9
Author: David Edit Page Header
+//
+// something here to access the page header.
+//
+// Edit New Member Information
+//
+// something here to edit the new member information
+//
+// Edit Membership Dues Information
+//
+
+$formSubmission = false;
+$FormData = array();
+
+$CleanRequestData = array();
+$CleanFiles = array();
+foreach ($_REQUEST as $key => $value) {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "$key => $value");
+ $CleanRequestData[$key] = $value;
+}
+if (isset($_FILES)) {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "");
+ $CleanFiles = $_FILES;
+}
+
+if (isset($CleanRequestData['ErrorNotice'])) {
+ ShowTransientPage($CleanRequestData['ErrorNotice'], $CleanRequestData['ErrorCode']);
+ exit;
+}
+
+$Action = (isset($CleanRequestData['Action'])) ? $CleanRequestData['Action'] : "";
+TraceProgram(__FILE__, __FUNCTION__, __LINE__, "\nClean RQST: " . print_r($CleanRequestData, true));
+TraceProgram(__FILE__, __FUNCTION__, __LINE__, "\nClean FILE: " . print_r($CleanFiles, true));
+
+switch ($Action) {
+ case 'DeleteEventItem':
+ case 'EventNew':
+ case 'EventEdit':
+ ShowEventForm();
+ break;
+ case 'PlaceEdit':
+ case 'PlaceSubmit':
+ ShowPlaceForm();
+ break;
+ case 'ProgChairEdit':
+ ShowProgChairForm();
+ break;
+ case 'HeaderEdit':
+ case 'HeaderSubmit':
+ ShowHeaderform();
+ break;
+ default:
+ ShowEventSelector();
+ break;
+}
+TraceProgram(__FILE__, __FUNCTION__, __LINE__, "end", TR_EXIT);
+exit;
+
+#################################################################
+
+function ShowTransientPage($errNotice, $errCode) {
+?>
+
+
+
+Error Notification
+Apologies, but an error occurred.
+
Error: %s, ErrorCode: %d.", basename($errNotice, '.php'), $errCode); ?>
+
+You will be forwarded to the Admin page in a few seconds, or
+Click here.", $_SERVER['PHP_SELF']); ?>
+
+
+
+}
+
+
+?>
\ No newline at end of file
diff --git a/Upload.php b/Upload.php
new file mode 100644
index 0000000..c21170a
--- /dev/null
+++ b/Upload.php
@@ -0,0 +1,58 @@
+ 0, 'error' => ['message' => $msg]]);
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "fail: $msg", TR_EXIT);
+ exit;
+}
+
+// Check if file is uploaded
+if (!isset($_FILES['upload']) || $_FILES['upload']['error'] !== UPLOAD_ERR_OK) {
+ UploadFail('No file uploaded (error code ' . ($_FILES['upload']['error'] ?? 'none') . ')');
+}
+
+$file = $_FILES['upload'];
+$allowedTypes = ['image/jpeg', 'image/jfif', 'image/png', 'image/gif'];
+
+// Validate file type
+if (!in_array($file['type'], $allowedTypes)) {
+ UploadFail('Invalid file type');
+}
+
+$filename = basename($file['name']);
+$targetPath = __DIR__ . '/inc/Uploads/' . $filename;
+TraceProgram(__FILE__, __FUNCTION__, __LINE__, "target: $targetPath");
+
+if (!is_uploaded_file($file['tmp_name']) || !@copy($file['tmp_name'], $targetPath)) {
+ $err = error_get_last();
+ UploadFail('Failed to save uploaded file: ' . ($err['message'] ?? 'unknown error'));
+}
+@unlink($file['tmp_name']);
+
+TraceProgram(__FILE__, __FUNCTION__, __LINE__, "$filename");
+echo json_encode([
+ 'uploaded' => 1,
+ 'fileName' => $filename,
+ 'url' => 'inc/Uploads/' . rawurlencode($filename)
+]);
+TraceProgram(__FILE__, __FUNCTION__, __LINE__, "end", TR_EXIT);
+
+?>
diff --git a/inc/Administrator.php b/inc/Administrator.php
new file mode 100644
index 0000000..85a16a7
--- /dev/null
+++ b/inc/Administrator.php
@@ -0,0 +1,64 @@
+
+
+
+Event Manager
+
+
+Meeting Places
+
+
+Edit Prog Chair
+
+
+Edit Page Header
+
+
+Edit New Member Information
+
+ something here to edit the new member information
+
+Edit Membership Dues Information
+
+ something here to edit the membership dues information
+
+
+todo
+
+
+todone
+
+
+
diff --git a/inc/BonW.png b/inc/BonW.png
new file mode 100644
index 0000000..ee8605c
Binary files /dev/null and b/inc/BonW.png differ
diff --git a/inc/Config.inc.php b/inc/Config.inc.php
new file mode 100644
index 0000000..1700bcb
--- /dev/null
+++ b/inc/Config.inc.php
@@ -0,0 +1,271 @@
+ '.jpg',
+ 'image/jfif' => '.jpg',
+ 'image/png' => '.png',
+ 'image/gif' => '.gif',
+ 'application/pdf' => '.pdf',
+];
+
+$Artifacts = "./Artifacts"; // no trailing slashes
+$UploadPath = "./inc/Uploads";
+$EventsPath = "./Artifacts/Events";
+$PlacesPath = "./Artifacts/Places";
+$HeadersPath = "./Artifacts/Headers";
+$ProgChairPath = "./Artifacts/ProgChair";
+
+$WritableFolders = array(
+ $Artifacts,$UploadPath, $EventsPath, $PlacesPath, $HeadersPath,
+);
+foreach ($WritableFolders as $folder) {
+ if (!is_dir($folder)) {
+ mkdir($folder, 0777, true);
+ }
+}
+
+$CK_EditorFieldIDs = array(); // holds the ids of the html edit fields
+// bg: 1 = draw a separator before this item
+// Attr:
+$EventFormFields = [
+ 'ProgramDate' => ['Label' => 'Program Date', 'FieldType' => 'date', 'RW' => 'R', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'ProgramTitle' => ['Label' => 'Program Title', 'FieldType' => 'text', 'RW' => 'W', 'bg' => '1', 'Attr' => '', 'Placeholder' => 'What is this program about?', 'Default' => ''],
+ 'ProgramDetails' => ['Label' => 'Program Details', 'FieldType' => 'html', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'ProgramPix' => ['Label' => 'Program Pictures', 'FieldType' => 'pix', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'ProgramTime' => ['Label' => 'Program Time', 'FieldType' => 'time', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => '19:00'],
+ 'ProgramChair' => ['Label' => 'Program Chair', 'FieldType' => 'chair', 'RW' => 'W', 'bg' => '0', 'Addr' => '', 'Placeholder' => 'Chairman', 'Default' => ''],
+ 'SpeakerName' => ['Label' => 'Speaker Name', 'FieldType' => 'text', 'RW' => 'W', 'bg' => '1', 'Attr' => '', 'Placeholder' => 'Joe Speaker', 'Default' => ''],
+ 'SpeakerBio' => ['Label' => 'Speaker Bio', 'FieldType' => 'html', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => 'Tell us about the speaker', 'Default' => ''],
+ 'SpeakerPix' => ['Label' => 'Speaker Picture', 'FieldType' => 'pix' , 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'SocialFlag' => ['Label' => 'Social', 'FieldType' => 'bool', 'RW' => 'W', 'bg' => '1', 'Attr' => '', 'Placeholder' => '', 'Default' => '1'],
+ 'SocialTime' => ['Label' => 'Social Time', 'FieldType' => 'time', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => '17:30'],
+ 'DinnerFlag' => ['Label' => 'Dinner', 'FieldType' => 'bool', 'RW' => 'W', 'bg' => '1', 'Attr' => '', 'Placeholder' => '', 'Default' => '1'],
+ 'DinnerTime' => ['Label' => 'Dinner Time', 'FieldType' => 'time', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => '18:00'],
+ 'DinnerPlace' => ['Label' => 'Dinner Place', 'FieldType' => 'place', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'DinnerMenu' => ['Label' => 'Dinner Menu', 'FieldType' => 'html', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'TourFlag' => ['Label' => 'Tour', 'FieldType' => 'bool', 'RW' => 'W', 'bg' => '1', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'TourTime' => ['Label' => 'Tour Time', 'FieldType' => 'time', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'TourLocationName' => ['Label' => 'Tour Location', 'FieldType' => 'text', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'TourAddress' => ['Label' => 'Tour Address', 'FieldType' => 'html', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'TourContact' => ['Label' => 'Tour Contact', 'FieldType' => 'html', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'SpecialNotes' => ['Label' => 'Special Notes', 'FieldType' => 'html', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+];
+
+$PlaceFormFields = [
+ 'PlaceName' => ['Label' => 'Place Name', 'FieldType' => 'text', 'RW' => 'R', 'bg' => '1', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'PlaceAddress' => ['Label' => 'Place Address', 'FieldType' => 'html', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'PlacePix' => ['Label' => 'Place Picture', 'FieldType' => 'pix' , 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+];
+
+$HeaderFormFields = [
+ 'HeaderText' => ['Label' => 'Header Text', 'FieldType' => 'text', 'RW' => 'R', 'bg' => '1', 'Attr' => '', 'Placeholder' => '', 'Default' => 'Waterloo Tech Soc.'],
+ 'SubHeaderText' => ['Label' => 'Sub-Header Text', 'FieldType' => 'html', 'RW' => 'W', 'bg' => '1', 'Attr' => '', 'Placeholder' => '', 'Default' => '112 Years'],
+ 'PlacePix' => ['Label' => 'Place Picture', 'FieldType' => 'pix' , 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+];
+
+$ProgChairFormFields = [
+ 'ProgramChair' => ['Label' => 'Program Chair', 'FieldType' => 'text', 'RW' => 'R', 'bg' => '1', 'Attr' => '', 'Placeholder' => 'President', 'Default' => ''],
+ 'ProgChairNotes' => ['Label' => 'Chair Notes', 'FieldType' => 'html', 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+ 'ProgChairPix' => ['Label' => 'Chair Picture', 'FieldType' => 'pix' , 'RW' => 'W', 'bg' => '0', 'Attr' => '', 'Placeholder' => '', 'Default' => ''],
+];
+
+///////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////
+// System Configuration settings start here
+///////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////
+
+// When there is a particularly difficult problem to unravel, typically causing server
+// timeouts or web page crash-garbage, enable the tracelog.
+//
+// Note that this may slow performance quite a bit but will leave you the breadcrumbs you
+// may need to solve the problem.
+//
+// When run on IIS, the following command shell item is helpful if you have tail.exe
+// tail -f \\server\c$\Writable\Folder\tracelog.log
+// or on linux
+// tail -f /path/to/tracefile/filename.ext
+//
+define("TRACELOG", true);
+define("TRACEPATH", __DIR__ . "/TraceLog"); // "/var/spool/php/"); /var/services/tmp
+define("TRACEFILE", "trace.log");
+
+
+
+// SECURITY SECURITY SECURITY SECURITY SECURITY SECURITY SECURITY SECURITY
+// This should be set to false.
+// For a brand new install, it may be set to true long enough to create your actual entry
+// in the database, and configure yourself as the super user. Once you have done so, you
+// should set this back to false.
+//
+#define("ROOTUSERENABLED", false); // false=Secure, true=Enable the following
+#define("ROOTEMAIL", "root"); // please don't use root:root
+#define("ROOTPASS", "root"); // and do not leave this enabled!
+
+
+//
+// Who to contact when things go wrong. This shows up on the login page.
+//
+define("CONTACT", "David@Smart-Family.net");
+define("CONTACTNAME", "David Smart");
+
+
+// Access the database
+//
+// it seems that if the computer has support for IPV6, then "localhost" may not work
+// and you may want to substitute "127.0.0.1" instead.
+#define("DB_SERVER", "localhost"); // Where is mySQL server from this web server
+// Typical mySQL servers run on port 3306, but if you have more than one, or if you've
+// changed it from the default, then 3307 is usually the next setting.
+#define("DB_PORTNUM", "3307"); // Port number (typically 3306, sometimes 3307)
+// This is the name of the db, and must be unique compared to any other db on your
+// mysql server.
+#define("DB_DBNAME", "PartsDB"); // And the name of the database to access
+// This is the 'username' when the scripts access the database, not to be confused
+// with the system administrator, or the expert (admin) user of the db.
+#define("DB_APPNAME", "PartsDB"); // What is the username to access the db
+// Similarly the script needs a password, which should be quite complex, and unlike
+// any other password you may have.
+#define("DB_PASSWORD", "DTM52qg0r%#WesfS7d"); // PartsDB
+
+// Default domain for username entry, if any.
+// You can probably leave this blank if you do not have a domain name.
+//
+#define("DEFAULT_DOMAIN", "Smart-Family.net");
+
+// Session Name Prefix
+//
+// This is a text string that is unique for this implementation of the db
+// application on a system. This is required because a single user that logs
+// on to another instance of this tool on the same system may have differing
+// access and reference information.
+// This text is not seen by any user and would typically be the same as
+// the "SiteFolder" (below) only without any extraneous characters (like slashes)
+// and with a single trailing underscore (that is for the admin debugging things).
+#$SessionName = "PartsDB";
+
+// Create a catchy Application name to put in the header and title of web pages
+$AppName = "Event Manager";
+
+
+// Path to the site, which is case sensitive.
+// Linux based servers are case-sensitive, so this must match
+// the actual installation folder. For Windows Users, Google Map
+// detects "http://domain/Path/To/Site" as a different
+// site than "http://domain/path/TO/SiTe".
+// For Windows systems, they all access the site correctly, but we'll redirect
+// the user to the correct case-sensitive mapping so the Google Map Key
+// will work properly.
+#$SiteFolder = "/db/";
+
+// SiteLogo
+// If there is a graphic representing this site, it should be placed in the SiteFolder
+// and the name of it identified here. Standard graphic file types are allowed.
+//
+#$SiteLogo = array("logo.png", "logoSmall.png");
+
+
+// If guest mode is enabled, anyone may wander further into the system (read-only)
+// and with limited access.
+//
+// FOR SECURITY, THIS OPTION SHOULD NOT BE ENABLED ON AN INTERNET FACING SERVER.
+#define("GUEST_MODE_ENABLED", false); // True | False
+
+
+// What's the biggest artifact we're willing to accept?
+// pdf, image, zip file, whatever...
+//
+#define("MAXFILESIZE", 100000000);
+
+// Allowed image types to upload. This is a bit weak in that it may
+// only be inspecting them by their suffix, but that's better than not
+// [Hint: Order them by most popular type first for modest speed boost]
+// Use lower-case letters.
+#$UploadImageExts = array("png", "jfif", "jpg", "jpeg", "bmp");
+
+// Other filetypes that don't automatically render (like png's do).
+// Other allowed filetypes that don't automatically render (like png's do).
+// Each of the following should have a png icon named as in: inc/image/icon-pdf.png
+#$UploadOtherExts = array("pdf","csv","xls","xlsx","stp","fcstd","lbr","zip","7z" );
+
+
+// Target Path for uploads of various artifacts during normal usage (e.g. datasheet)
+// or via the import operation of a compatible spreadsheet.
+// This is relative to the calling page, which is probably up one
+// folder from here. It can also be absolute, with respect to the file system.
+//
+// INCLUDE Trailing /
+//
+// REQUIRES: Server Write Access
+$ImportPath = "./Events/";
+
+
+// Formatted Description Field
+//
+// If you have ckEditor version 5 installed, the Description field will
+// support formatted editing.
+// If it cannot find this file, or if the setting is blank, it will be
+// plain text.
+//
+$ckEditor_FQFN = "/inc/ckeditor5/ckeditor.js";
+
+
+// The following enable the use of cookies for a "Remember Me" period of time.
+// If the value is zero, then this feature is disabled.
+// If the value is non-zero, this is the number of days to remember this user.
+//
+// The theory is that you close the browser (before the timeout shown below).
+// Then if you come back before the remember me expiration, you're in!
+#define("REMEMBER_ME_DAYS", 7);
+
+// But, if you forget and leave a tab open, or the whole browser, and just walk
+// away for this long, it will actively log you out...
+#define("USER_TIMEOUT_SEC", 3600);
+
+// Table Colorization
+#$BoldBackColor = "#66CCFF"; // Header and other "bold" background
+#$Alt1BackColor = "#DDEEFF"; // Pale, which alternates with Alt2
+#$Alt2BackColor = "#BBDDFF"; // Pale, but a little darker#
+
+// If PhpSpreadsheet is installed, set this.
+#define("SPREADSHEET_ENABLE", true);
+
+// Don't mess with this.
+//require_once("inc/Config.php");
+
+/// @endcond
+
+?>
\ No newline at end of file
diff --git a/inc/Editor_Event.php b/inc/Editor_Event.php
new file mode 100644
index 0000000..eeed9ec
--- /dev/null
+++ b/inc/Editor_Event.php
@@ -0,0 +1,244 @@
+
+
+
+
+DeleteEventItem is not yet supported
\n";
+ }
+ if ($Action == 'EventEdit') {
+ // Form Submission check FILES and then EventFormFields
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "");
+ $success = ReadTableData($EventPath, $EventFormFields, $evData);
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "ReadTableData: $success");
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, print_r($evData, true));
+ foreach ($CleanFiles as $fileKey => $fileInfo) {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "Check ". print_r($fileKey, true));
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "Check ". print_r($fileInfo, true));
+ if (in_array($fileInfo['type'], array_keys($allowedTypes))) {
+ $basename = basename($fileInfo['name']);
+ $filename = $fileKey . $allowedTypes[$fileInfo['type']];
+ if ($EventFormFields[$fileKey]['FieldType'] == 'pix') {
+ $targetFile = $EventPath . '/' . $filename;
+ $un = $EventPath . '/' . $fileKey . ".*";
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "unlink $un");
+ deleteFilesWithWildcard($EventPath, $fileKey . ".*");
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "target $targetFile");
+ if (!is_uploaded_file($fileInfo['tmp_name']) || !@copy($fileInfo['tmp_name'], $targetFile)) {
+ $err = error_get_last();
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, $err);
+ } else {
+ $FormData[$fileKey] = $filename;
+ $formSubmission = true;
+ }
+ @unlink($fileInfo['tmp_name']);
+ } else {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "$basename not legitimate for a pix upload");
+ }
+ } else {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "Nothing to upload");
+ }
+ }
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, print_r($CleanRequestData, true));
+ foreach ($CleanRequestData as $key => $value) {
+ //TraceProgram(__FILE__, __FUNCTION__, __LINE__, "Request[$key] = '$value'");
+ if (isset($EventFormFields[$key])) {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "Request[$key] = '$value'");
+ $FormData[$key] = $value;
+ $formSubmission = true;
+ }
+ }
+ }
+ if ($formSubmission && $ProgramDate != '') {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "");
+ SaveTableData($EventPath, $EventFormFields, $FormData);
+ MoveFiles($UploadPath, $EventPath);
+ }
+ $success = ReadTableData($EventPath, $EventFormFields, $FormData);
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "ReadTableData: " . ($success) ? 'success' : 'fail');
+ EmitHTMLStart("Event Editor");
+ EmitBodyStart();
+ EmitPageHeader("Event Editor");
+?>
+
+
+
+
diff --git a/inc/Editor_Header.php b/inc/Editor_Header.php
new file mode 100644
index 0000000..6ba70c7
--- /dev/null
+++ b/inc/Editor_Header.php
@@ -0,0 +1,161 @@
+ 'NewHeaderForm', // must be unique
+ 'ActionValue' => 'HeaderEdit',
+ 'Field1Label' => 'New Header',
+ 'Input1Name' => 'HeaderText',
+ 'Field2Label' => 'Edit Header',
+ 'Select1Name' => 'ExistingHeader',
+ 'DocPath' => $HeadersPath,
+ 'FormFields' => $HeaderFormFields,
+ 'dbKey' => 'HeaderText',
+ ];
+ EmitAdminFormType2($args);
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "", TR_EXIT);
+}
+
+
+// X Action=HeaderEdit
+// X HeaderText=
",
+ $file, $func, $line, $msg);
+ }
+ $func_elapsed = sprintf("%9.4f", $elapsed - $timeFuncs[$nest]);
+ break;
+ default:
+ $flag = 1;
+ $pre = " | ";
+ break;
+ }
+ if (strlen($AppRoot) && strpos($file, $AppRoot) >= 0) {
+ $file = substr($file, strlen($AppRoot));
+ }
+// if ($nest < 0)
+// $nest = 0;
+ // + Elapsed,
+ // | + Function Elapsed
+ // | | +tag, +nest,
+ // | | | | +type,
+ // | | | | | +timestamp,
+ // | | | | | | +file, +line,
+ // | | | | | | | | +whitespace
+ // | | | | | | | | | +flag
+ // | | | | | | | | | | +function,
+ // | | | | | | | | | | | +user text.
+ $o = sprintf("%9.4f, %9s, %03d, %2d, %s, %s, %-26s, %5s, %s%s%-24s, %s",
+ $elapsed,
+ $func_elapsed,
+ $tag,
+ $nest,
+ $flag,
+ date("H:i.s"),
+ $file,
+ $line,
+ str_repeat(" ",$nest), $pre, $func,
+ $msg);
+
+ // Uncomment these when you need to see the details from the command line, but don't
+ // want to generate the tracefile.
+ //
+ //if (!count($_SESSION)) // && $flag == TR_ENTRY) // zero if running from a command shell
+ // printf("%s\n", $o);
+ if (TRACELOG) {
+ $fh = @fopen(TRACEPATH . "/" . TRACEFILE, "at");
+ if ($fh) {
+ if ($flag == TR_ENTRY && $func == "")
+ fprintf($fh, "\r\n\r\n");
+ fprintf($fh, "%s\n", $o);
+ fclose($fh);
+ } else {
+ echo "Configuration Error, cannot write to trace file [" . TRACEPATH ."/" . TRACEFILE . "\n";
+ }
+ }
+ // Track the stack depth
+ if ($flag == TR_ENTRY)
+ $nest++;
+}
+
+
+function deleteFilesWithWildcard($directory, $pattern) {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "del($directory, $pattern)", TR_ENTRY);
+ if (!is_dir($directory)) {
+ throw new InvalidArgumentException("Directory does not exist: $directory");
+ }
+ $searchPath = rtrim($directory, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $pattern;
+ $files = glob($searchPath);
+ if ($files === false) {
+ throw new RuntimeException("Error reading files with glob()");
+ }
+
+ // Delete each file
+ foreach ($files as $file) {
+ if (is_file($file)) { // Ensure it's a file, not a directory
+ if (@unlink($file)) {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "Deleted $file");
+ } else {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "Delete Failed on $file");
+ }
+ }
+ }
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "", TR_EXIT);
+}
+
+function GetFolderUp(string $path): ?string {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "", TR_ENTRY);
+ if (trim($path) === '') { // Basic validation
+ return null; // Empty path
+ }
+ $normalizedPath = str_replace(['\\', '/'], DIRECTORY_SEPARATOR, $path); // Normalize slashes for cross-platform compatibility
+ $parent = dirname($normalizedPath); // Use dirname to get one level up
+ if ($parent === '.' || $parent === DIRECTORY_SEPARATOR) { // If dirname returns '.' for relative paths, handle it
+ $parent = null; // No parent directory
+ }
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, $parent, TR_EXIT);
+ return $parent;
+}
+
+
+
+function GetPrevEvent($curItem = '') {
+ global $EventsPath, $EventFormFields;
+
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "", TR_ENTRY);
+ $prevEvent = '';
+ $ref = ($curItem != '') ? $curItem : date("Y-m-d");
+ $events = GetDocMap($EventsPath, $EventFormFields, 'ProgramDate');
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "$ref: " . print_r($events, true));
+ foreach (array_keys($events) as $event) {
+ if ($ref > $event) {
+ $prevEvent = $event;
+ }
+ }
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, $prevEvent, TR_EXIT);
+ return $prevEvent;
+}
+
+
+function GetNextEvent($curItem = '') {
+ global $EventsPath, $EventFormFields;
+
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "", TR_ENTRY);
+ $nextEvent = '';
+ $ref = ($curItem != '') ? $curItem : date("Y-m-d");
+ $events = GetDocMap($EventsPath, $EventFormFields, 'ProgramDate');
+ foreach (array_keys($events) as $event) {
+ if ($nextEvent == '') {
+ if (($curItem == '') && ($ref <= $event)) {
+ $nextEvent = $event;
+ } else if (($curItem != '') && ($ref < $event)) {
+ $nextEvent = $event;
+ }
+ }
+ }
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "[$nextEvent]", TR_EXIT);
+ return $nextEvent;
+}
+
+
+
+
+function EmitForm($formFields, $formData, $pathToArtifacts, $thisItem, $showNavigation = false) {
+ global $PlacesPath, $PlaceFormFields;
+ global $ProgChairPath, $ProgChairFormFields;
+
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "$pathToArtifacts, $thisItem", TR_ENTRY);
+ $CK_EditorFieldIDs = array();
+ $showHR = false;
+ printf("\n", TBL_BORDER);
+ if ($showNavigation) {
+ $prev = GetPrevEvent($thisItem);
+ $next = GetNextEvent($thisItem);
+ if ($prev != '') {
+ $linkPrev = "<==";
+ } else {
+ $linkPrev = "<==";
+ }
+ if ($next != '') {
+ $linkNext = "==>";
+ } else {
+ $linkNext = "==>";
+ }
+ printf("
+
+
+ => \n", $linkPrev, $linkNext);
+ $showHR = true;
+ }
+ foreach ($formFields as $key => $data) {
+ if ($data['bg']) {
+ printf("%s Navigate %s \n");
+ $showHR = true;
+ }
+ printf("\n");
+ printf("\t \n");
+ }
+?>
+
+\n",
+ $key, $data['Label']);
+ $value = ($formData[$key]) ?? $formFields[$key]['Default'];
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "[$value]");
+ switch ($data['FieldType']) {
+ case 'text':
+ if ($formFields[$key]['RW'] == 'W') {
+ printf(" \n",
+ $key, $key, $value, $formFields[$key]['Placeholder']);
+ } else {
+ printf(" %s \n",
+ $value, $key, $key, $value, $formFields[$key]['Placeholder']);
+ }
+ break;
+ case 'date':
+ printf("\n");
+ if ($formFields[$key]['RW'] == 'W') {
+ printf("\n",
+ $key, $key, $value, ($formFields[$key]['RW'] != 'W') ? 'disabled' : '');
+ } else {
+ printf("%s \n",
+ DateToMDY($value), $key, $key, $value);
+ }
+ printf("\n");
+ break;
+ case 'time':
+ printf("\n",
+ $key, $key, $value);
+ break;
+ case 'bool':
+ printf(" \n",
+ $key, $key, ($value) ? "checked" : "");
+ break;
+ case 'html':
+ printf(" %s \n",
+ $key, $key, $value);
+ $CK_EditorFieldIDs[] = $key;
+ break;
+ case 'pix':
+ printf("\n",
+ $key, $key, $key
+ );
+ if (isset($formData[$key])) {
+ $pix = $formData[$key];
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "key: $key, " . $pix);
+ $fqfn = ($pix != '') ? $pathToArtifacts . '/' . $pix : '';
+ if (!file_exists($fqfn)) {
+ $pix = $fqfn = '';
+ }
+ } else {
+ $pix = $fqfn = '';
+ }
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "pathToArtifacts: $pathToArtifacts, fqfn: $fqfn");
+ printf(" \n");
+ break;
+ case 'chair':
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "pathToArtifacts: $pathToArtifacts");
+ //TraceProgram(__FILE__, __FUNCTION__, __LINE__, print_r($formFields, true));
+ $map = GetDocMap($ProgChairPath, $ProgChairFormFields, 'ProgramChair');
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, print_r($map, true));
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, print_r($formData, true));
+ printf("\n");
+ printf(" ");
+ break;
+ case 'place':
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "pathToArtifacts: $pathToArtifacts, 'placeName'");
+ //TraceProgram(__FILE__, __FUNCTION__, __LINE__, print_r($formFields, true));
+ $map = GetDocMap($PlacesPath, $PlaceFormFields, 'PlaceName');
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, print_r($map, true));
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, print_r($formData, true));
+ printf("\n");
+ printf(" ");
+ break;
+ default:
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "unexpected path from '" . $data['FieldType'] . "'");
+ break;
+ }
+ //printf("\t%s \n", $data['FieldType']);
+ printf("
+
+
+
+
+
+
+
+
\n", $path, $place);
+ $fqPath = sprintf("%s/%s", $path, $place);
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, $fqPath);
+ $success = ReadTableData($fqPath, $formFields, $tag);
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, $success);
+ $name = $tag[$tagOfInterest] ?? 'untitled';
+ $map[$place] = $name;
+ }
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "", TR_EXIT);
+ return $map;
+}
+
+
+function DateToMDY($inDate) {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "[$inDate]", TR_ENTRY);
+ if ($inDate != '') {
+ $parts = explode("-", $inDate);
+ $mmddyyyy = sprintf("%s/%s/%s", $parts[1], $parts[2], $parts[0]);
+ } else {
+ $mmddyyyy = $inDate;
+ }
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, $mmddyyyy, TR_EXIT);
+ return $mmddyyyy;
+}
+
+function TimeTo12HR($t) {
+ $AMPM = '';
+ $parts = explode(':', $t);
+ if ($parts[0] == '00') {
+ $parts[0] = '12';
+ $AMPM = 'AM';
+ } else if ($parts[0] > 12) {
+ $parts[0] -= 12;
+ $AMPM = 'PM';
+ }
+ return sprintf("%s %s", implode(':', $parts), $AMPM);
+}
+
+function EmitPageHeader($title, $subtitle = '') {
+ $sub = ($subtitle != '') ? "
$subtitle" : "";
+ echo "
+
+
+";
+}
+
+function EmitHTMLStart($title) {
+ global $ckEditor_FQFN;
+ ?>
+
+
+
+
+
+
+
+
+
+ $title
+ $sub
+
+
+
+
+
+
+ Go Admin
+ \n", TBL_BORDER);
+ $prev = GetPrevEvent($event);
+ $next = GetNextEvent($event);
+ if ($prev != '') {
+ $linkPrev = "<==";
+ } else {
+ $linkPrev = "<==";
+ }
+ if ($next != '') {
+ $linkNext = "==>";
+ } else {
+ $linkNext = "==>";
+ }
+ printf("
+
+%s\n", print_r($evData, true));
+ printf("%s \n", $linkPrev, $linkNext);
+ foreach ($EventFormFields as $key => $data) {
+ if ($data['bg']) {
+ printf("%s Navigate %s \n");
+ }
+ printf("\n");
+ printf("\t \n");
+ }
+?>
+\n",
+ $key, $data['Label']);
+ $value = $evData[$key] ?? $EventFormFields[$key]['Default'];
+ switch ($data['FieldType']) {
+ case 'text':
+ printf(" %s \n", $value);
+ break;
+ case 'date':
+ printf("%s \n", DateToMDY($value));
+ break;
+ case 'time':
+ printf("%s \n", TimeTo12HR($value));
+ break;
+ case 'bool':
+ printf("\n",
+ $key, ($value) ? "checked" : "");
+ break;
+ case 'html':
+ printf(" %s \n", $value);
+ break;
+ case 'pix':
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "$key, $value");
+ $pix = $value;
+ $fqfn = ($pix != '') ? $EventPath . '/' . $pix : '';
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "$pix, $fqfn, $EventPath");
+ if (file_exists($fqfn)) {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "EventPath: $EventPath, fqfn: $fqfn");
+ printf(" \n");
+ }
+ break;
+ case 'chair':
+ printf("%s \n", $value);
+ break;
+ case 'place':
+ $refPlaceName = $evData[$key] ?? '';
+ printf("\n");
+ //printf("%s \n");
+ break;
+ default:
+ break;
+ }
+ printf("
", $refPlaceName);
+ $placeHash = GetDocMap($PlacesPath, $PlaceFormFields, 'PlaceName');
+ //printf("%s
", print_r($placeHash, true));
+ foreach ($placeHash as $folder => $placeName) {
+ // TraceProgram(__FILE__, __FUNCTION__, __LINE__, $formData[$key] . ", $folder => $placeName");
+ if ($placeName == $refPlaceName) {
+ //printf("%s, %s
", $placeName, $folder);
+ EmitPlace($folder);
+ }
+ }
+ printf("
%s
\n", $evData['PlaceName'], $evData['PlaceAddress']);
+ $imgFQFN = sprintf("%s/%s/%s", $PlacesPath, $place, $evData['PlacePix']);
+ printf("\n", $imgFQFN);
+ }
+}
+
+
+/// EmitAdminFormType1
+///
+/// This is in the Editor_Event.php at the top of the file.
+///
+/// This is the admin event manager form
+/// New item: [date picker] Pick Place: [Pick list] Pick Chair: [Pick list]
+/// Edit item: [Pick list]
+/// [Submit] [Reset]
+
+
+
+/// EmitAdminFormType2
+///
+/// Emit a small form for the Admin page
+/// New item: [ free form text ]
+/// Edit item: [ selection list ]
+/// [Submit] [Reset]
+/// Validate that the form is not empty in order to accept it.
+///
+function EmitAdminFormType2($args) {
+ TraceProgram(__FILE__, __FUNCTION__, __LINE__, "", TR_ENTRY);
+?>
+
+
+
+
+
diff --git a/inc/SiteLogo.png b/inc/SiteLogo.png
new file mode 100644
index 0000000..50bbba3
Binary files /dev/null and b/inc/SiteLogo.png differ
diff --git a/inc/UploadPreview.js b/inc/UploadPreview.js
new file mode 100644
index 0000000..f5ce616
--- /dev/null
+++ b/inc/UploadPreview.js
@@ -0,0 +1,33 @@
+/*
+ * Shows a pix if they add one
+ */
+document.querySelectorAll('input[type=file]').forEach(input => {
+
+ input.addEventListener('change', function () {
+
+ const preview = document.getElementById(
+ this.dataset.preview
+ );
+ console.log("preview: ", {preview});
+ if (!preview) {
+ console.error(
+ "Preview element not found:",
+ this.dataset.preview
+ );
+ return;
+ }
+ if (!this.files.length) return;
+ const reader = new FileReader();
+
+ reader.onload = e => {
+ console.log("loaded");
+ //console.log(e.target.result.substring(0,50));
+ preview.src = e.target.result;
+ preview.style.display = 'block';
+ //console.log("preview.src = ", preview.src);
+ };
+ console.log("reading: ", this.files[0]);
+ reader.readAsDataURL(this.files[0]);
+ });
+});
+
diff --git a/inc/WonB.png b/inc/WonB.png
new file mode 100644
index 0000000..02d4623
Binary files /dev/null and b/inc/WonB.png differ
diff --git a/inc/ckeditor5/LICENSE.md b/inc/ckeditor5/LICENSE.md
new file mode 100644
index 0000000..437e62c
--- /dev/null
+++ b/inc/ckeditor5/LICENSE.md
@@ -0,0 +1,21 @@
+Software License Agreement
+==========================
+
+**CKEditor 5 classic editor build** – https://github.com/ckeditor/ckeditor5-build-classic
+Copyright (c) 2003-2021, [CKSource](http://cksource.com) Frederico Knabben. All rights reserved.
+
+Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
+
+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):
+
+* Lo-Dash - Copyright (c) JS Foundation and other contributors https://js.foundation/. Based on Underscore.js, copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors http://underscorejs.org/.
+
+Trademarks
+----------
+
+**CKEditor** is a trademark of [CKSource](http://cksource.com) Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.
diff --git a/inc/ckeditor5/README.md b/inc/ckeditor5/README.md
new file mode 100644
index 0000000..e698ae1
--- /dev/null
+++ b/inc/ckeditor5/README.md
@@ -0,0 +1,9 @@
+CKEditor 5 classic editor build v27.1.0
+=======================================
+
+In order to start using CKEditor 5 Builds, configure or customize them, please visit http://docs.ckeditor.com/ckeditor5/latest/builds/index.html
+
+## License
+
+Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
+For full details about the license, please check the LICENSE.md file.
diff --git a/inc/ckeditor5/ckeditor-manifest.json b/inc/ckeditor5/ckeditor-manifest.json
new file mode 100644
index 0000000..161daae
--- /dev/null
+++ b/inc/ckeditor5/ckeditor-manifest.json
@@ -0,0 +1,10888 @@
+{
+ "content": {
+ "../../node_modules/lodash-es/_DataView.js": {
+ "id": "../../node_modules/lodash-es/_DataView.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_Hash.js": {
+ "id": "../../node_modules/lodash-es/_Hash.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_LazyWrapper.js": {
+ "id": "../../node_modules/lodash-es/_LazyWrapper.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_ListCache.js": {
+ "id": "../../node_modules/lodash-es/_ListCache.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_LodashWrapper.js": {
+ "id": "../../node_modules/lodash-es/_LodashWrapper.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_Map.js": {
+ "id": "../../node_modules/lodash-es/_Map.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_MapCache.js": {
+ "id": "../../node_modules/lodash-es/_MapCache.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_Promise.js": {
+ "id": "../../node_modules/lodash-es/_Promise.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_Set.js": {
+ "id": "../../node_modules/lodash-es/_Set.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_SetCache.js": {
+ "id": "../../node_modules/lodash-es/_SetCache.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_Stack.js": {
+ "id": "../../node_modules/lodash-es/_Stack.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_Symbol.js": {
+ "id": "../../node_modules/lodash-es/_Symbol.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_Uint8Array.js": {
+ "id": "../../node_modules/lodash-es/_Uint8Array.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_WeakMap.js": {
+ "id": "../../node_modules/lodash-es/_WeakMap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_apply.js": {
+ "id": "../../node_modules/lodash-es/_apply.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayAggregator.js": {
+ "id": "../../node_modules/lodash-es/_arrayAggregator.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayEach.js": {
+ "id": "../../node_modules/lodash-es/_arrayEach.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayEachRight.js": {
+ "id": "../../node_modules/lodash-es/_arrayEachRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayEvery.js": {
+ "id": "../../node_modules/lodash-es/_arrayEvery.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayFilter.js": {
+ "id": "../../node_modules/lodash-es/_arrayFilter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayIncludes.js": {
+ "id": "../../node_modules/lodash-es/_arrayIncludes.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayIncludesWith.js": {
+ "id": "../../node_modules/lodash-es/_arrayIncludesWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayLikeKeys.js": {
+ "id": "../../node_modules/lodash-es/_arrayLikeKeys.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayMap.js": {
+ "id": "../../node_modules/lodash-es/_arrayMap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayPush.js": {
+ "id": "../../node_modules/lodash-es/_arrayPush.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayReduce.js": {
+ "id": "../../node_modules/lodash-es/_arrayReduce.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayReduceRight.js": {
+ "id": "../../node_modules/lodash-es/_arrayReduceRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arraySample.js": {
+ "id": "../../node_modules/lodash-es/_arraySample.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arraySampleSize.js": {
+ "id": "../../node_modules/lodash-es/_arraySampleSize.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arrayShuffle.js": {
+ "id": "../../node_modules/lodash-es/_arrayShuffle.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_arraySome.js": {
+ "id": "../../node_modules/lodash-es/_arraySome.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_asciiSize.js": {
+ "id": "../../node_modules/lodash-es/_asciiSize.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_asciiToArray.js": {
+ "id": "../../node_modules/lodash-es/_asciiToArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_asciiWords.js": {
+ "id": "../../node_modules/lodash-es/_asciiWords.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_assignMergeValue.js": {
+ "id": "../../node_modules/lodash-es/_assignMergeValue.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_assignValue.js": {
+ "id": "../../node_modules/lodash-es/_assignValue.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_assocIndexOf.js": {
+ "id": "../../node_modules/lodash-es/_assocIndexOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseAggregator.js": {
+ "id": "../../node_modules/lodash-es/_baseAggregator.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseAssign.js": {
+ "id": "../../node_modules/lodash-es/_baseAssign.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseAssignIn.js": {
+ "id": "../../node_modules/lodash-es/_baseAssignIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseAssignValue.js": {
+ "id": "../../node_modules/lodash-es/_baseAssignValue.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseAt.js": {
+ "id": "../../node_modules/lodash-es/_baseAt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseClamp.js": {
+ "id": "../../node_modules/lodash-es/_baseClamp.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseClone.js": {
+ "id": "../../node_modules/lodash-es/_baseClone.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseConforms.js": {
+ "id": "../../node_modules/lodash-es/_baseConforms.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseConformsTo.js": {
+ "id": "../../node_modules/lodash-es/_baseConformsTo.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseCreate.js": {
+ "id": "../../node_modules/lodash-es/_baseCreate.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseDelay.js": {
+ "id": "../../node_modules/lodash-es/_baseDelay.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseDifference.js": {
+ "id": "../../node_modules/lodash-es/_baseDifference.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseEach.js": {
+ "id": "../../node_modules/lodash-es/_baseEach.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseEachRight.js": {
+ "id": "../../node_modules/lodash-es/_baseEachRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseEvery.js": {
+ "id": "../../node_modules/lodash-es/_baseEvery.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseExtremum.js": {
+ "id": "../../node_modules/lodash-es/_baseExtremum.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseFill.js": {
+ "id": "../../node_modules/lodash-es/_baseFill.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseFilter.js": {
+ "id": "../../node_modules/lodash-es/_baseFilter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseFindIndex.js": {
+ "id": "../../node_modules/lodash-es/_baseFindIndex.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseFindKey.js": {
+ "id": "../../node_modules/lodash-es/_baseFindKey.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseFlatten.js": {
+ "id": "../../node_modules/lodash-es/_baseFlatten.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseFor.js": {
+ "id": "../../node_modules/lodash-es/_baseFor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseForOwn.js": {
+ "id": "../../node_modules/lodash-es/_baseForOwn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseForOwnRight.js": {
+ "id": "../../node_modules/lodash-es/_baseForOwnRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseForRight.js": {
+ "id": "../../node_modules/lodash-es/_baseForRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseFunctions.js": {
+ "id": "../../node_modules/lodash-es/_baseFunctions.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseGet.js": {
+ "id": "../../node_modules/lodash-es/_baseGet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseGetAllKeys.js": {
+ "id": "../../node_modules/lodash-es/_baseGetAllKeys.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseGetTag.js": {
+ "id": "../../node_modules/lodash-es/_baseGetTag.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseGt.js": {
+ "id": "../../node_modules/lodash-es/_baseGt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseHas.js": {
+ "id": "../../node_modules/lodash-es/_baseHas.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseHasIn.js": {
+ "id": "../../node_modules/lodash-es/_baseHasIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseInRange.js": {
+ "id": "../../node_modules/lodash-es/_baseInRange.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIndexOf.js": {
+ "id": "../../node_modules/lodash-es/_baseIndexOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIndexOfWith.js": {
+ "id": "../../node_modules/lodash-es/_baseIndexOfWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIntersection.js": {
+ "id": "../../node_modules/lodash-es/_baseIntersection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseInverter.js": {
+ "id": "../../node_modules/lodash-es/_baseInverter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseInvoke.js": {
+ "id": "../../node_modules/lodash-es/_baseInvoke.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsArguments.js": {
+ "id": "../../node_modules/lodash-es/_baseIsArguments.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsArrayBuffer.js": {
+ "id": "../../node_modules/lodash-es/_baseIsArrayBuffer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsDate.js": {
+ "id": "../../node_modules/lodash-es/_baseIsDate.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsEqual.js": {
+ "id": "../../node_modules/lodash-es/_baseIsEqual.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsEqualDeep.js": {
+ "id": "../../node_modules/lodash-es/_baseIsEqualDeep.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsMap.js": {
+ "id": "../../node_modules/lodash-es/_baseIsMap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsMatch.js": {
+ "id": "../../node_modules/lodash-es/_baseIsMatch.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsNaN.js": {
+ "id": "../../node_modules/lodash-es/_baseIsNaN.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsNative.js": {
+ "id": "../../node_modules/lodash-es/_baseIsNative.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsRegExp.js": {
+ "id": "../../node_modules/lodash-es/_baseIsRegExp.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsSet.js": {
+ "id": "../../node_modules/lodash-es/_baseIsSet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIsTypedArray.js": {
+ "id": "../../node_modules/lodash-es/_baseIsTypedArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseIteratee.js": {
+ "id": "../../node_modules/lodash-es/_baseIteratee.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseKeys.js": {
+ "id": "../../node_modules/lodash-es/_baseKeys.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseKeysIn.js": {
+ "id": "../../node_modules/lodash-es/_baseKeysIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseLodash.js": {
+ "id": "../../node_modules/lodash-es/_baseLodash.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseLt.js": {
+ "id": "../../node_modules/lodash-es/_baseLt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseMap.js": {
+ "id": "../../node_modules/lodash-es/_baseMap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseMatches.js": {
+ "id": "../../node_modules/lodash-es/_baseMatches.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseMatchesProperty.js": {
+ "id": "../../node_modules/lodash-es/_baseMatchesProperty.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseMean.js": {
+ "id": "../../node_modules/lodash-es/_baseMean.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseMerge.js": {
+ "id": "../../node_modules/lodash-es/_baseMerge.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseMergeDeep.js": {
+ "id": "../../node_modules/lodash-es/_baseMergeDeep.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseNth.js": {
+ "id": "../../node_modules/lodash-es/_baseNth.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseOrderBy.js": {
+ "id": "../../node_modules/lodash-es/_baseOrderBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_basePick.js": {
+ "id": "../../node_modules/lodash-es/_basePick.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_basePickBy.js": {
+ "id": "../../node_modules/lodash-es/_basePickBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseProperty.js": {
+ "id": "../../node_modules/lodash-es/_baseProperty.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_basePropertyDeep.js": {
+ "id": "../../node_modules/lodash-es/_basePropertyDeep.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_basePropertyOf.js": {
+ "id": "../../node_modules/lodash-es/_basePropertyOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_basePullAll.js": {
+ "id": "../../node_modules/lodash-es/_basePullAll.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_basePullAt.js": {
+ "id": "../../node_modules/lodash-es/_basePullAt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseRandom.js": {
+ "id": "../../node_modules/lodash-es/_baseRandom.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseRange.js": {
+ "id": "../../node_modules/lodash-es/_baseRange.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseReduce.js": {
+ "id": "../../node_modules/lodash-es/_baseReduce.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseRepeat.js": {
+ "id": "../../node_modules/lodash-es/_baseRepeat.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseRest.js": {
+ "id": "../../node_modules/lodash-es/_baseRest.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSample.js": {
+ "id": "../../node_modules/lodash-es/_baseSample.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSampleSize.js": {
+ "id": "../../node_modules/lodash-es/_baseSampleSize.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSet.js": {
+ "id": "../../node_modules/lodash-es/_baseSet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSetData.js": {
+ "id": "../../node_modules/lodash-es/_baseSetData.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSetToString.js": {
+ "id": "../../node_modules/lodash-es/_baseSetToString.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseShuffle.js": {
+ "id": "../../node_modules/lodash-es/_baseShuffle.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSlice.js": {
+ "id": "../../node_modules/lodash-es/_baseSlice.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSome.js": {
+ "id": "../../node_modules/lodash-es/_baseSome.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSortBy.js": {
+ "id": "../../node_modules/lodash-es/_baseSortBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSortedIndex.js": {
+ "id": "../../node_modules/lodash-es/_baseSortedIndex.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSortedIndexBy.js": {
+ "id": "../../node_modules/lodash-es/_baseSortedIndexBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSortedUniq.js": {
+ "id": "../../node_modules/lodash-es/_baseSortedUniq.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseSum.js": {
+ "id": "../../node_modules/lodash-es/_baseSum.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseTimes.js": {
+ "id": "../../node_modules/lodash-es/_baseTimes.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseToNumber.js": {
+ "id": "../../node_modules/lodash-es/_baseToNumber.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseToPairs.js": {
+ "id": "../../node_modules/lodash-es/_baseToPairs.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseToString.js": {
+ "id": "../../node_modules/lodash-es/_baseToString.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseUnary.js": {
+ "id": "../../node_modules/lodash-es/_baseUnary.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseUniq.js": {
+ "id": "../../node_modules/lodash-es/_baseUniq.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseUnset.js": {
+ "id": "../../node_modules/lodash-es/_baseUnset.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseUpdate.js": {
+ "id": "../../node_modules/lodash-es/_baseUpdate.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseValues.js": {
+ "id": "../../node_modules/lodash-es/_baseValues.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseWhile.js": {
+ "id": "../../node_modules/lodash-es/_baseWhile.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseWrapperValue.js": {
+ "id": "../../node_modules/lodash-es/_baseWrapperValue.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseXor.js": {
+ "id": "../../node_modules/lodash-es/_baseXor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_baseZipObject.js": {
+ "id": "../../node_modules/lodash-es/_baseZipObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_cacheHas.js": {
+ "id": "../../node_modules/lodash-es/_cacheHas.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_castArrayLikeObject.js": {
+ "id": "../../node_modules/lodash-es/_castArrayLikeObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_castFunction.js": {
+ "id": "../../node_modules/lodash-es/_castFunction.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_castPath.js": {
+ "id": "../../node_modules/lodash-es/_castPath.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_castRest.js": {
+ "id": "../../node_modules/lodash-es/_castRest.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_castSlice.js": {
+ "id": "../../node_modules/lodash-es/_castSlice.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_charsEndIndex.js": {
+ "id": "../../node_modules/lodash-es/_charsEndIndex.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_charsStartIndex.js": {
+ "id": "../../node_modules/lodash-es/_charsStartIndex.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_cloneArrayBuffer.js": {
+ "id": "../../node_modules/lodash-es/_cloneArrayBuffer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_cloneBuffer.js": {
+ "id": "../../node_modules/lodash-es/_cloneBuffer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_cloneDataView.js": {
+ "id": "../../node_modules/lodash-es/_cloneDataView.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_cloneRegExp.js": {
+ "id": "../../node_modules/lodash-es/_cloneRegExp.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_cloneSymbol.js": {
+ "id": "../../node_modules/lodash-es/_cloneSymbol.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_cloneTypedArray.js": {
+ "id": "../../node_modules/lodash-es/_cloneTypedArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_compareAscending.js": {
+ "id": "../../node_modules/lodash-es/_compareAscending.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_compareMultiple.js": {
+ "id": "../../node_modules/lodash-es/_compareMultiple.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_composeArgs.js": {
+ "id": "../../node_modules/lodash-es/_composeArgs.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_composeArgsRight.js": {
+ "id": "../../node_modules/lodash-es/_composeArgsRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_copyArray.js": {
+ "id": "../../node_modules/lodash-es/_copyArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_copyObject.js": {
+ "id": "../../node_modules/lodash-es/_copyObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_copySymbols.js": {
+ "id": "../../node_modules/lodash-es/_copySymbols.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_copySymbolsIn.js": {
+ "id": "../../node_modules/lodash-es/_copySymbolsIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_coreJsData.js": {
+ "id": "../../node_modules/lodash-es/_coreJsData.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_countHolders.js": {
+ "id": "../../node_modules/lodash-es/_countHolders.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createAggregator.js": {
+ "id": "../../node_modules/lodash-es/_createAggregator.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createAssigner.js": {
+ "id": "../../node_modules/lodash-es/_createAssigner.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createBaseEach.js": {
+ "id": "../../node_modules/lodash-es/_createBaseEach.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createBaseFor.js": {
+ "id": "../../node_modules/lodash-es/_createBaseFor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createBind.js": {
+ "id": "../../node_modules/lodash-es/_createBind.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createCaseFirst.js": {
+ "id": "../../node_modules/lodash-es/_createCaseFirst.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createCompounder.js": {
+ "id": "../../node_modules/lodash-es/_createCompounder.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createCtor.js": {
+ "id": "../../node_modules/lodash-es/_createCtor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createCurry.js": {
+ "id": "../../node_modules/lodash-es/_createCurry.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createFind.js": {
+ "id": "../../node_modules/lodash-es/_createFind.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createFlow.js": {
+ "id": "../../node_modules/lodash-es/_createFlow.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createHybrid.js": {
+ "id": "../../node_modules/lodash-es/_createHybrid.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createInverter.js": {
+ "id": "../../node_modules/lodash-es/_createInverter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createMathOperation.js": {
+ "id": "../../node_modules/lodash-es/_createMathOperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createOver.js": {
+ "id": "../../node_modules/lodash-es/_createOver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createPadding.js": {
+ "id": "../../node_modules/lodash-es/_createPadding.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createPartial.js": {
+ "id": "../../node_modules/lodash-es/_createPartial.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createRange.js": {
+ "id": "../../node_modules/lodash-es/_createRange.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createRecurry.js": {
+ "id": "../../node_modules/lodash-es/_createRecurry.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createRelationalOperation.js": {
+ "id": "../../node_modules/lodash-es/_createRelationalOperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createRound.js": {
+ "id": "../../node_modules/lodash-es/_createRound.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createSet.js": {
+ "id": "../../node_modules/lodash-es/_createSet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createToPairs.js": {
+ "id": "../../node_modules/lodash-es/_createToPairs.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_createWrap.js": {
+ "id": "../../node_modules/lodash-es/_createWrap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_customDefaultsAssignIn.js": {
+ "id": "../../node_modules/lodash-es/_customDefaultsAssignIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_customDefaultsMerge.js": {
+ "id": "../../node_modules/lodash-es/_customDefaultsMerge.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_customOmitClone.js": {
+ "id": "../../node_modules/lodash-es/_customOmitClone.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_deburrLetter.js": {
+ "id": "../../node_modules/lodash-es/_deburrLetter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_defineProperty.js": {
+ "id": "../../node_modules/lodash-es/_defineProperty.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_equalArrays.js": {
+ "id": "../../node_modules/lodash-es/_equalArrays.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_equalByTag.js": {
+ "id": "../../node_modules/lodash-es/_equalByTag.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_equalObjects.js": {
+ "id": "../../node_modules/lodash-es/_equalObjects.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_escapeHtmlChar.js": {
+ "id": "../../node_modules/lodash-es/_escapeHtmlChar.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_escapeStringChar.js": {
+ "id": "../../node_modules/lodash-es/_escapeStringChar.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_flatRest.js": {
+ "id": "../../node_modules/lodash-es/_flatRest.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_freeGlobal.js": {
+ "id": "../../node_modules/lodash-es/_freeGlobal.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getAllKeys.js": {
+ "id": "../../node_modules/lodash-es/_getAllKeys.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getAllKeysIn.js": {
+ "id": "../../node_modules/lodash-es/_getAllKeysIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getData.js": {
+ "id": "../../node_modules/lodash-es/_getData.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getFuncName.js": {
+ "id": "../../node_modules/lodash-es/_getFuncName.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getHolder.js": {
+ "id": "../../node_modules/lodash-es/_getHolder.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getMapData.js": {
+ "id": "../../node_modules/lodash-es/_getMapData.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getMatchData.js": {
+ "id": "../../node_modules/lodash-es/_getMatchData.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getNative.js": {
+ "id": "../../node_modules/lodash-es/_getNative.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getPrototype.js": {
+ "id": "../../node_modules/lodash-es/_getPrototype.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getRawTag.js": {
+ "id": "../../node_modules/lodash-es/_getRawTag.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getSymbols.js": {
+ "id": "../../node_modules/lodash-es/_getSymbols.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getSymbolsIn.js": {
+ "id": "../../node_modules/lodash-es/_getSymbolsIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getTag.js": {
+ "id": "../../node_modules/lodash-es/_getTag.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getValue.js": {
+ "id": "../../node_modules/lodash-es/_getValue.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getView.js": {
+ "id": "../../node_modules/lodash-es/_getView.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_getWrapDetails.js": {
+ "id": "../../node_modules/lodash-es/_getWrapDetails.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_hasPath.js": {
+ "id": "../../node_modules/lodash-es/_hasPath.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_hasUnicode.js": {
+ "id": "../../node_modules/lodash-es/_hasUnicode.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_hasUnicodeWord.js": {
+ "id": "../../node_modules/lodash-es/_hasUnicodeWord.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_hashClear.js": {
+ "id": "../../node_modules/lodash-es/_hashClear.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_hashDelete.js": {
+ "id": "../../node_modules/lodash-es/_hashDelete.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_hashGet.js": {
+ "id": "../../node_modules/lodash-es/_hashGet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_hashHas.js": {
+ "id": "../../node_modules/lodash-es/_hashHas.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_hashSet.js": {
+ "id": "../../node_modules/lodash-es/_hashSet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_initCloneArray.js": {
+ "id": "../../node_modules/lodash-es/_initCloneArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_initCloneByTag.js": {
+ "id": "../../node_modules/lodash-es/_initCloneByTag.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_initCloneObject.js": {
+ "id": "../../node_modules/lodash-es/_initCloneObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_insertWrapDetails.js": {
+ "id": "../../node_modules/lodash-es/_insertWrapDetails.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isFlattenable.js": {
+ "id": "../../node_modules/lodash-es/_isFlattenable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isIndex.js": {
+ "id": "../../node_modules/lodash-es/_isIndex.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isIterateeCall.js": {
+ "id": "../../node_modules/lodash-es/_isIterateeCall.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isKey.js": {
+ "id": "../../node_modules/lodash-es/_isKey.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isKeyable.js": {
+ "id": "../../node_modules/lodash-es/_isKeyable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isLaziable.js": {
+ "id": "../../node_modules/lodash-es/_isLaziable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isMaskable.js": {
+ "id": "../../node_modules/lodash-es/_isMaskable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isMasked.js": {
+ "id": "../../node_modules/lodash-es/_isMasked.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isPrototype.js": {
+ "id": "../../node_modules/lodash-es/_isPrototype.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_isStrictComparable.js": {
+ "id": "../../node_modules/lodash-es/_isStrictComparable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_iteratorToArray.js": {
+ "id": "../../node_modules/lodash-es/_iteratorToArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_lazyClone.js": {
+ "id": "../../node_modules/lodash-es/_lazyClone.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_lazyReverse.js": {
+ "id": "../../node_modules/lodash-es/_lazyReverse.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_lazyValue.js": {
+ "id": "../../node_modules/lodash-es/_lazyValue.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_listCacheClear.js": {
+ "id": "../../node_modules/lodash-es/_listCacheClear.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_listCacheDelete.js": {
+ "id": "../../node_modules/lodash-es/_listCacheDelete.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_listCacheGet.js": {
+ "id": "../../node_modules/lodash-es/_listCacheGet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_listCacheHas.js": {
+ "id": "../../node_modules/lodash-es/_listCacheHas.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_listCacheSet.js": {
+ "id": "../../node_modules/lodash-es/_listCacheSet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_mapCacheClear.js": {
+ "id": "../../node_modules/lodash-es/_mapCacheClear.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_mapCacheDelete.js": {
+ "id": "../../node_modules/lodash-es/_mapCacheDelete.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_mapCacheGet.js": {
+ "id": "../../node_modules/lodash-es/_mapCacheGet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_mapCacheHas.js": {
+ "id": "../../node_modules/lodash-es/_mapCacheHas.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_mapCacheSet.js": {
+ "id": "../../node_modules/lodash-es/_mapCacheSet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_mapToArray.js": {
+ "id": "../../node_modules/lodash-es/_mapToArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_matchesStrictComparable.js": {
+ "id": "../../node_modules/lodash-es/_matchesStrictComparable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_memoizeCapped.js": {
+ "id": "../../node_modules/lodash-es/_memoizeCapped.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_mergeData.js": {
+ "id": "../../node_modules/lodash-es/_mergeData.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_metaMap.js": {
+ "id": "../../node_modules/lodash-es/_metaMap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_nativeCreate.js": {
+ "id": "../../node_modules/lodash-es/_nativeCreate.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_nativeKeys.js": {
+ "id": "../../node_modules/lodash-es/_nativeKeys.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_nativeKeysIn.js": {
+ "id": "../../node_modules/lodash-es/_nativeKeysIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_nodeUtil.js": {
+ "id": "../../node_modules/lodash-es/_nodeUtil.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_objectToString.js": {
+ "id": "../../node_modules/lodash-es/_objectToString.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_overArg.js": {
+ "id": "../../node_modules/lodash-es/_overArg.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_overRest.js": {
+ "id": "../../node_modules/lodash-es/_overRest.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_parent.js": {
+ "id": "../../node_modules/lodash-es/_parent.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_reEscape.js": {
+ "id": "../../node_modules/lodash-es/_reEscape.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_reEvaluate.js": {
+ "id": "../../node_modules/lodash-es/_reEvaluate.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_reInterpolate.js": {
+ "id": "../../node_modules/lodash-es/_reInterpolate.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_realNames.js": {
+ "id": "../../node_modules/lodash-es/_realNames.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_reorder.js": {
+ "id": "../../node_modules/lodash-es/_reorder.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_replaceHolders.js": {
+ "id": "../../node_modules/lodash-es/_replaceHolders.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_root.js": {
+ "id": "../../node_modules/lodash-es/_root.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_safeGet.js": {
+ "id": "../../node_modules/lodash-es/_safeGet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_setCacheAdd.js": {
+ "id": "../../node_modules/lodash-es/_setCacheAdd.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_setCacheHas.js": {
+ "id": "../../node_modules/lodash-es/_setCacheHas.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_setData.js": {
+ "id": "../../node_modules/lodash-es/_setData.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_setToArray.js": {
+ "id": "../../node_modules/lodash-es/_setToArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_setToPairs.js": {
+ "id": "../../node_modules/lodash-es/_setToPairs.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_setToString.js": {
+ "id": "../../node_modules/lodash-es/_setToString.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_setWrapToString.js": {
+ "id": "../../node_modules/lodash-es/_setWrapToString.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_shortOut.js": {
+ "id": "../../node_modules/lodash-es/_shortOut.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_shuffleSelf.js": {
+ "id": "../../node_modules/lodash-es/_shuffleSelf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_stackClear.js": {
+ "id": "../../node_modules/lodash-es/_stackClear.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_stackDelete.js": {
+ "id": "../../node_modules/lodash-es/_stackDelete.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_stackGet.js": {
+ "id": "../../node_modules/lodash-es/_stackGet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_stackHas.js": {
+ "id": "../../node_modules/lodash-es/_stackHas.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_stackSet.js": {
+ "id": "../../node_modules/lodash-es/_stackSet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_strictIndexOf.js": {
+ "id": "../../node_modules/lodash-es/_strictIndexOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_strictLastIndexOf.js": {
+ "id": "../../node_modules/lodash-es/_strictLastIndexOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_stringSize.js": {
+ "id": "../../node_modules/lodash-es/_stringSize.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_stringToArray.js": {
+ "id": "../../node_modules/lodash-es/_stringToArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_stringToPath.js": {
+ "id": "../../node_modules/lodash-es/_stringToPath.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_toKey.js": {
+ "id": "../../node_modules/lodash-es/_toKey.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_toSource.js": {
+ "id": "../../node_modules/lodash-es/_toSource.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_unescapeHtmlChar.js": {
+ "id": "../../node_modules/lodash-es/_unescapeHtmlChar.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_unicodeSize.js": {
+ "id": "../../node_modules/lodash-es/_unicodeSize.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_unicodeToArray.js": {
+ "id": "../../node_modules/lodash-es/_unicodeToArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_unicodeWords.js": {
+ "id": "../../node_modules/lodash-es/_unicodeWords.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_updateWrapDetails.js": {
+ "id": "../../node_modules/lodash-es/_updateWrapDetails.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/_wrapperClone.js": {
+ "id": "../../node_modules/lodash-es/_wrapperClone.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/add.js": {
+ "id": "../../node_modules/lodash-es/add.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/after.js": {
+ "id": "../../node_modules/lodash-es/after.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/array.default.js": {
+ "id": "../../node_modules/lodash-es/array.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/array.js": {
+ "id": "../../node_modules/lodash-es/array.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "chunk",
+ "compact",
+ "concat",
+ "difference",
+ "differenceBy",
+ "differenceWith",
+ "drop",
+ "dropRight",
+ "dropRightWhile",
+ "dropWhile",
+ "fill",
+ "findIndex",
+ "findLastIndex",
+ "first",
+ "flatten",
+ "flattenDeep",
+ "flattenDepth",
+ "fromPairs",
+ "head",
+ "indexOf",
+ "initial",
+ "intersection",
+ "intersectionBy",
+ "intersectionWith",
+ "join",
+ "last",
+ "lastIndexOf",
+ "nth",
+ "pull",
+ "pullAll",
+ "pullAllBy",
+ "pullAllWith",
+ "pullAt",
+ "remove",
+ "reverse",
+ "slice",
+ "sortedIndex",
+ "sortedIndexBy",
+ "sortedIndexOf",
+ "sortedLastIndex",
+ "sortedLastIndexBy",
+ "sortedLastIndexOf",
+ "sortedUniq",
+ "sortedUniqBy",
+ "tail",
+ "take",
+ "takeRight",
+ "takeRightWhile",
+ "takeWhile",
+ "union",
+ "unionBy",
+ "unionWith",
+ "uniq",
+ "uniqBy",
+ "uniqWith",
+ "unzip",
+ "unzipWith",
+ "without",
+ "xor",
+ "xorBy",
+ "xorWith",
+ "zip",
+ "zipObject",
+ "zipObjectDeep",
+ "zipWith",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/ary.js": {
+ "id": "../../node_modules/lodash-es/ary.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/assign.js": {
+ "id": "../../node_modules/lodash-es/assign.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/assignIn.js": {
+ "id": "../../node_modules/lodash-es/assignIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/assignInWith.js": {
+ "id": "../../node_modules/lodash-es/assignInWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/assignWith.js": {
+ "id": "../../node_modules/lodash-es/assignWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/at.js": {
+ "id": "../../node_modules/lodash-es/at.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/attempt.js": {
+ "id": "../../node_modules/lodash-es/attempt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/before.js": {
+ "id": "../../node_modules/lodash-es/before.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/bind.js": {
+ "id": "../../node_modules/lodash-es/bind.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/bindAll.js": {
+ "id": "../../node_modules/lodash-es/bindAll.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/bindKey.js": {
+ "id": "../../node_modules/lodash-es/bindKey.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/camelCase.js": {
+ "id": "../../node_modules/lodash-es/camelCase.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/capitalize.js": {
+ "id": "../../node_modules/lodash-es/capitalize.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/castArray.js": {
+ "id": "../../node_modules/lodash-es/castArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/ceil.js": {
+ "id": "../../node_modules/lodash-es/ceil.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/chain.js": {
+ "id": "../../node_modules/lodash-es/chain.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/chunk.js": {
+ "id": "../../node_modules/lodash-es/chunk.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/clamp.js": {
+ "id": "../../node_modules/lodash-es/clamp.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/clone.js": {
+ "id": "../../node_modules/lodash-es/clone.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/cloneDeep.js": {
+ "id": "../../node_modules/lodash-es/cloneDeep.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/cloneDeepWith.js": {
+ "id": "../../node_modules/lodash-es/cloneDeepWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/cloneWith.js": {
+ "id": "../../node_modules/lodash-es/cloneWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/collection.default.js": {
+ "id": "../../node_modules/lodash-es/collection.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/collection.js": {
+ "id": "../../node_modules/lodash-es/collection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "countBy",
+ "each",
+ "eachRight",
+ "every",
+ "filter",
+ "find",
+ "findLast",
+ "flatMap",
+ "flatMapDeep",
+ "flatMapDepth",
+ "forEach",
+ "forEachRight",
+ "groupBy",
+ "includes",
+ "invokeMap",
+ "keyBy",
+ "map",
+ "orderBy",
+ "partition",
+ "reduce",
+ "reduceRight",
+ "reject",
+ "sample",
+ "sampleSize",
+ "shuffle",
+ "size",
+ "some",
+ "sortBy",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/commit.js": {
+ "id": "../../node_modules/lodash-es/commit.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/compact.js": {
+ "id": "../../node_modules/lodash-es/compact.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/concat.js": {
+ "id": "../../node_modules/lodash-es/concat.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/cond.js": {
+ "id": "../../node_modules/lodash-es/cond.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/conforms.js": {
+ "id": "../../node_modules/lodash-es/conforms.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/conformsTo.js": {
+ "id": "../../node_modules/lodash-es/conformsTo.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/constant.js": {
+ "id": "../../node_modules/lodash-es/constant.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/countBy.js": {
+ "id": "../../node_modules/lodash-es/countBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/create.js": {
+ "id": "../../node_modules/lodash-es/create.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/curry.js": {
+ "id": "../../node_modules/lodash-es/curry.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/curryRight.js": {
+ "id": "../../node_modules/lodash-es/curryRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/date.default.js": {
+ "id": "../../node_modules/lodash-es/date.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/date.js": {
+ "id": "../../node_modules/lodash-es/date.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "now",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/debounce.js": {
+ "id": "../../node_modules/lodash-es/debounce.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/deburr.js": {
+ "id": "../../node_modules/lodash-es/deburr.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/defaultTo.js": {
+ "id": "../../node_modules/lodash-es/defaultTo.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/defaults.js": {
+ "id": "../../node_modules/lodash-es/defaults.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/defaultsDeep.js": {
+ "id": "../../node_modules/lodash-es/defaultsDeep.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/defer.js": {
+ "id": "../../node_modules/lodash-es/defer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/delay.js": {
+ "id": "../../node_modules/lodash-es/delay.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/difference.js": {
+ "id": "../../node_modules/lodash-es/difference.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/differenceBy.js": {
+ "id": "../../node_modules/lodash-es/differenceBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/differenceWith.js": {
+ "id": "../../node_modules/lodash-es/differenceWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/divide.js": {
+ "id": "../../node_modules/lodash-es/divide.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/drop.js": {
+ "id": "../../node_modules/lodash-es/drop.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/dropRight.js": {
+ "id": "../../node_modules/lodash-es/dropRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/dropRightWhile.js": {
+ "id": "../../node_modules/lodash-es/dropRightWhile.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/dropWhile.js": {
+ "id": "../../node_modules/lodash-es/dropWhile.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/each.js": {
+ "id": "../../node_modules/lodash-es/each.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/eachRight.js": {
+ "id": "../../node_modules/lodash-es/eachRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/endsWith.js": {
+ "id": "../../node_modules/lodash-es/endsWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/entries.js": {
+ "id": "../../node_modules/lodash-es/entries.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/entriesIn.js": {
+ "id": "../../node_modules/lodash-es/entriesIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/eq.js": {
+ "id": "../../node_modules/lodash-es/eq.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/escape.js": {
+ "id": "../../node_modules/lodash-es/escape.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/escapeRegExp.js": {
+ "id": "../../node_modules/lodash-es/escapeRegExp.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/every.js": {
+ "id": "../../node_modules/lodash-es/every.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/extend.js": {
+ "id": "../../node_modules/lodash-es/extend.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/extendWith.js": {
+ "id": "../../node_modules/lodash-es/extendWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/fill.js": {
+ "id": "../../node_modules/lodash-es/fill.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/filter.js": {
+ "id": "../../node_modules/lodash-es/filter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/find.js": {
+ "id": "../../node_modules/lodash-es/find.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/findIndex.js": {
+ "id": "../../node_modules/lodash-es/findIndex.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/findKey.js": {
+ "id": "../../node_modules/lodash-es/findKey.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/findLast.js": {
+ "id": "../../node_modules/lodash-es/findLast.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/findLastIndex.js": {
+ "id": "../../node_modules/lodash-es/findLastIndex.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/findLastKey.js": {
+ "id": "../../node_modules/lodash-es/findLastKey.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/first.js": {
+ "id": "../../node_modules/lodash-es/first.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/flatMap.js": {
+ "id": "../../node_modules/lodash-es/flatMap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/flatMapDeep.js": {
+ "id": "../../node_modules/lodash-es/flatMapDeep.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/flatMapDepth.js": {
+ "id": "../../node_modules/lodash-es/flatMapDepth.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/flatten.js": {
+ "id": "../../node_modules/lodash-es/flatten.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/flattenDeep.js": {
+ "id": "../../node_modules/lodash-es/flattenDeep.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/flattenDepth.js": {
+ "id": "../../node_modules/lodash-es/flattenDepth.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/flip.js": {
+ "id": "../../node_modules/lodash-es/flip.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/floor.js": {
+ "id": "../../node_modules/lodash-es/floor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/flow.js": {
+ "id": "../../node_modules/lodash-es/flow.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/flowRight.js": {
+ "id": "../../node_modules/lodash-es/flowRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/forEach.js": {
+ "id": "../../node_modules/lodash-es/forEach.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/forEachRight.js": {
+ "id": "../../node_modules/lodash-es/forEachRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/forIn.js": {
+ "id": "../../node_modules/lodash-es/forIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/forInRight.js": {
+ "id": "../../node_modules/lodash-es/forInRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/forOwn.js": {
+ "id": "../../node_modules/lodash-es/forOwn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/forOwnRight.js": {
+ "id": "../../node_modules/lodash-es/forOwnRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/fromPairs.js": {
+ "id": "../../node_modules/lodash-es/fromPairs.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/function.default.js": {
+ "id": "../../node_modules/lodash-es/function.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/function.js": {
+ "id": "../../node_modules/lodash-es/function.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "after",
+ "ary",
+ "before",
+ "bind",
+ "bindKey",
+ "curry",
+ "curryRight",
+ "debounce",
+ "defer",
+ "delay",
+ "flip",
+ "memoize",
+ "negate",
+ "once",
+ "overArgs",
+ "partial",
+ "partialRight",
+ "rearg",
+ "rest",
+ "spread",
+ "throttle",
+ "unary",
+ "wrap",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/functions.js": {
+ "id": "../../node_modules/lodash-es/functions.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/functionsIn.js": {
+ "id": "../../node_modules/lodash-es/functionsIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/get.js": {
+ "id": "../../node_modules/lodash-es/get.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/groupBy.js": {
+ "id": "../../node_modules/lodash-es/groupBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/gt.js": {
+ "id": "../../node_modules/lodash-es/gt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/gte.js": {
+ "id": "../../node_modules/lodash-es/gte.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/has.js": {
+ "id": "../../node_modules/lodash-es/has.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/hasIn.js": {
+ "id": "../../node_modules/lodash-es/hasIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/head.js": {
+ "id": "../../node_modules/lodash-es/head.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/identity.js": {
+ "id": "../../node_modules/lodash-es/identity.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/inRange.js": {
+ "id": "../../node_modules/lodash-es/inRange.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/includes.js": {
+ "id": "../../node_modules/lodash-es/includes.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/indexOf.js": {
+ "id": "../../node_modules/lodash-es/indexOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/initial.js": {
+ "id": "../../node_modules/lodash-es/initial.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/intersection.js": {
+ "id": "../../node_modules/lodash-es/intersection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/intersectionBy.js": {
+ "id": "../../node_modules/lodash-es/intersectionBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/intersectionWith.js": {
+ "id": "../../node_modules/lodash-es/intersectionWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/invert.js": {
+ "id": "../../node_modules/lodash-es/invert.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/invertBy.js": {
+ "id": "../../node_modules/lodash-es/invertBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/invoke.js": {
+ "id": "../../node_modules/lodash-es/invoke.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/invokeMap.js": {
+ "id": "../../node_modules/lodash-es/invokeMap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isArguments.js": {
+ "id": "../../node_modules/lodash-es/isArguments.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isArray.js": {
+ "id": "../../node_modules/lodash-es/isArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isArrayBuffer.js": {
+ "id": "../../node_modules/lodash-es/isArrayBuffer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isArrayLike.js": {
+ "id": "../../node_modules/lodash-es/isArrayLike.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isArrayLikeObject.js": {
+ "id": "../../node_modules/lodash-es/isArrayLikeObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isBoolean.js": {
+ "id": "../../node_modules/lodash-es/isBoolean.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isBuffer.js": {
+ "id": "../../node_modules/lodash-es/isBuffer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isDate.js": {
+ "id": "../../node_modules/lodash-es/isDate.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isElement.js": {
+ "id": "../../node_modules/lodash-es/isElement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isEmpty.js": {
+ "id": "../../node_modules/lodash-es/isEmpty.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isEqual.js": {
+ "id": "../../node_modules/lodash-es/isEqual.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isEqualWith.js": {
+ "id": "../../node_modules/lodash-es/isEqualWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isError.js": {
+ "id": "../../node_modules/lodash-es/isError.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isFinite.js": {
+ "id": "../../node_modules/lodash-es/isFinite.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isFunction.js": {
+ "id": "../../node_modules/lodash-es/isFunction.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isInteger.js": {
+ "id": "../../node_modules/lodash-es/isInteger.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isLength.js": {
+ "id": "../../node_modules/lodash-es/isLength.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isMap.js": {
+ "id": "../../node_modules/lodash-es/isMap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isMatch.js": {
+ "id": "../../node_modules/lodash-es/isMatch.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isMatchWith.js": {
+ "id": "../../node_modules/lodash-es/isMatchWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isNaN.js": {
+ "id": "../../node_modules/lodash-es/isNaN.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isNative.js": {
+ "id": "../../node_modules/lodash-es/isNative.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isNil.js": {
+ "id": "../../node_modules/lodash-es/isNil.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isNull.js": {
+ "id": "../../node_modules/lodash-es/isNull.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isNumber.js": {
+ "id": "../../node_modules/lodash-es/isNumber.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isObject.js": {
+ "id": "../../node_modules/lodash-es/isObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isObjectLike.js": {
+ "id": "../../node_modules/lodash-es/isObjectLike.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isPlainObject.js": {
+ "id": "../../node_modules/lodash-es/isPlainObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isRegExp.js": {
+ "id": "../../node_modules/lodash-es/isRegExp.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isSafeInteger.js": {
+ "id": "../../node_modules/lodash-es/isSafeInteger.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isSet.js": {
+ "id": "../../node_modules/lodash-es/isSet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isString.js": {
+ "id": "../../node_modules/lodash-es/isString.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isSymbol.js": {
+ "id": "../../node_modules/lodash-es/isSymbol.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isTypedArray.js": {
+ "id": "../../node_modules/lodash-es/isTypedArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isUndefined.js": {
+ "id": "../../node_modules/lodash-es/isUndefined.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isWeakMap.js": {
+ "id": "../../node_modules/lodash-es/isWeakMap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/isWeakSet.js": {
+ "id": "../../node_modules/lodash-es/isWeakSet.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/iteratee.js": {
+ "id": "../../node_modules/lodash-es/iteratee.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/join.js": {
+ "id": "../../node_modules/lodash-es/join.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/kebabCase.js": {
+ "id": "../../node_modules/lodash-es/kebabCase.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/keyBy.js": {
+ "id": "../../node_modules/lodash-es/keyBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/keys.js": {
+ "id": "../../node_modules/lodash-es/keys.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/keysIn.js": {
+ "id": "../../node_modules/lodash-es/keysIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/lang.default.js": {
+ "id": "../../node_modules/lodash-es/lang.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/lang.js": {
+ "id": "../../node_modules/lodash-es/lang.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "castArray",
+ "clone",
+ "cloneDeep",
+ "cloneDeepWith",
+ "cloneWith",
+ "conformsTo",
+ "eq",
+ "gt",
+ "gte",
+ "isArguments",
+ "isArray",
+ "isArrayBuffer",
+ "isArrayLike",
+ "isArrayLikeObject",
+ "isBoolean",
+ "isBuffer",
+ "isDate",
+ "isElement",
+ "isEmpty",
+ "isEqual",
+ "isEqualWith",
+ "isError",
+ "isFinite",
+ "isFunction",
+ "isInteger",
+ "isLength",
+ "isMap",
+ "isMatch",
+ "isMatchWith",
+ "isNaN",
+ "isNative",
+ "isNil",
+ "isNull",
+ "isNumber",
+ "isObject",
+ "isObjectLike",
+ "isPlainObject",
+ "isRegExp",
+ "isSafeInteger",
+ "isSet",
+ "isString",
+ "isSymbol",
+ "isTypedArray",
+ "isUndefined",
+ "isWeakMap",
+ "isWeakSet",
+ "lt",
+ "lte",
+ "toArray",
+ "toFinite",
+ "toInteger",
+ "toLength",
+ "toNumber",
+ "toPlainObject",
+ "toSafeInteger",
+ "toString",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/last.js": {
+ "id": "../../node_modules/lodash-es/last.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/lastIndexOf.js": {
+ "id": "../../node_modules/lodash-es/lastIndexOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/lodash.default.js": {
+ "id": "../../node_modules/lodash-es/lodash.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/lodash.js": {
+ "id": "../../node_modules/lodash-es/lodash.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "add",
+ "after",
+ "ary",
+ "assign",
+ "assignIn",
+ "assignInWith",
+ "assignWith",
+ "at",
+ "attempt",
+ "before",
+ "bind",
+ "bindAll",
+ "bindKey",
+ "camelCase",
+ "capitalize",
+ "castArray",
+ "ceil",
+ "chain",
+ "chunk",
+ "clamp",
+ "clone",
+ "cloneDeep",
+ "cloneDeepWith",
+ "cloneWith",
+ "commit",
+ "compact",
+ "concat",
+ "cond",
+ "conforms",
+ "conformsTo",
+ "constant",
+ "countBy",
+ "create",
+ "curry",
+ "curryRight",
+ "debounce",
+ "deburr",
+ "defaultTo",
+ "defaults",
+ "defaultsDeep",
+ "defer",
+ "delay",
+ "difference",
+ "differenceBy",
+ "differenceWith",
+ "divide",
+ "drop",
+ "dropRight",
+ "dropRightWhile",
+ "dropWhile",
+ "each",
+ "eachRight",
+ "endsWith",
+ "entries",
+ "entriesIn",
+ "eq",
+ "escape",
+ "escapeRegExp",
+ "every",
+ "extend",
+ "extendWith",
+ "fill",
+ "filter",
+ "find",
+ "findIndex",
+ "findKey",
+ "findLast",
+ "findLastIndex",
+ "findLastKey",
+ "first",
+ "flatMap",
+ "flatMapDeep",
+ "flatMapDepth",
+ "flatten",
+ "flattenDeep",
+ "flattenDepth",
+ "flip",
+ "floor",
+ "flow",
+ "flowRight",
+ "forEach",
+ "forEachRight",
+ "forIn",
+ "forInRight",
+ "forOwn",
+ "forOwnRight",
+ "fromPairs",
+ "functions",
+ "functionsIn",
+ "get",
+ "groupBy",
+ "gt",
+ "gte",
+ "has",
+ "hasIn",
+ "head",
+ "identity",
+ "inRange",
+ "includes",
+ "indexOf",
+ "initial",
+ "intersection",
+ "intersectionBy",
+ "intersectionWith",
+ "invert",
+ "invertBy",
+ "invoke",
+ "invokeMap",
+ "isArguments",
+ "isArray",
+ "isArrayBuffer",
+ "isArrayLike",
+ "isArrayLikeObject",
+ "isBoolean",
+ "isBuffer",
+ "isDate",
+ "isElement",
+ "isEmpty",
+ "isEqual",
+ "isEqualWith",
+ "isError",
+ "isFinite",
+ "isFunction",
+ "isInteger",
+ "isLength",
+ "isMap",
+ "isMatch",
+ "isMatchWith",
+ "isNaN",
+ "isNative",
+ "isNil",
+ "isNull",
+ "isNumber",
+ "isObject",
+ "isObjectLike",
+ "isPlainObject",
+ "isRegExp",
+ "isSafeInteger",
+ "isSet",
+ "isString",
+ "isSymbol",
+ "isTypedArray",
+ "isUndefined",
+ "isWeakMap",
+ "isWeakSet",
+ "iteratee",
+ "join",
+ "kebabCase",
+ "keyBy",
+ "keys",
+ "keysIn",
+ "last",
+ "lastIndexOf",
+ "lodash",
+ "lowerCase",
+ "lowerFirst",
+ "lt",
+ "lte",
+ "map",
+ "mapKeys",
+ "mapValues",
+ "matches",
+ "matchesProperty",
+ "max",
+ "maxBy",
+ "mean",
+ "meanBy",
+ "memoize",
+ "merge",
+ "mergeWith",
+ "method",
+ "methodOf",
+ "min",
+ "minBy",
+ "mixin",
+ "multiply",
+ "negate",
+ "next",
+ "noop",
+ "now",
+ "nth",
+ "nthArg",
+ "omit",
+ "omitBy",
+ "once",
+ "orderBy",
+ "over",
+ "overArgs",
+ "overEvery",
+ "overSome",
+ "pad",
+ "padEnd",
+ "padStart",
+ "parseInt",
+ "partial",
+ "partialRight",
+ "partition",
+ "pick",
+ "pickBy",
+ "plant",
+ "property",
+ "propertyOf",
+ "pull",
+ "pullAll",
+ "pullAllBy",
+ "pullAllWith",
+ "pullAt",
+ "random",
+ "range",
+ "rangeRight",
+ "rearg",
+ "reduce",
+ "reduceRight",
+ "reject",
+ "remove",
+ "repeat",
+ "replace",
+ "rest",
+ "result",
+ "reverse",
+ "round",
+ "sample",
+ "sampleSize",
+ "set",
+ "setWith",
+ "shuffle",
+ "size",
+ "slice",
+ "snakeCase",
+ "some",
+ "sortBy",
+ "sortedIndex",
+ "sortedIndexBy",
+ "sortedIndexOf",
+ "sortedLastIndex",
+ "sortedLastIndexBy",
+ "sortedLastIndexOf",
+ "sortedUniq",
+ "sortedUniqBy",
+ "split",
+ "spread",
+ "startCase",
+ "startsWith",
+ "stubArray",
+ "stubFalse",
+ "stubObject",
+ "stubString",
+ "stubTrue",
+ "subtract",
+ "sum",
+ "sumBy",
+ "tail",
+ "take",
+ "takeRight",
+ "takeRightWhile",
+ "takeWhile",
+ "tap",
+ "template",
+ "templateSettings",
+ "throttle",
+ "thru",
+ "times",
+ "toArray",
+ "toFinite",
+ "toInteger",
+ "toIterator",
+ "toJSON",
+ "toLength",
+ "toLower",
+ "toNumber",
+ "toPairs",
+ "toPairsIn",
+ "toPath",
+ "toPlainObject",
+ "toSafeInteger",
+ "toString",
+ "toUpper",
+ "transform",
+ "trim",
+ "trimEnd",
+ "trimStart",
+ "truncate",
+ "unary",
+ "unescape",
+ "union",
+ "unionBy",
+ "unionWith",
+ "uniq",
+ "uniqBy",
+ "uniqWith",
+ "uniqueId",
+ "unset",
+ "unzip",
+ "unzipWith",
+ "update",
+ "updateWith",
+ "upperCase",
+ "upperFirst",
+ "value",
+ "valueOf",
+ "values",
+ "valuesIn",
+ "without",
+ "words",
+ "wrap",
+ "wrapperAt",
+ "wrapperChain",
+ "wrapperCommit",
+ "wrapperLodash",
+ "wrapperNext",
+ "wrapperPlant",
+ "wrapperReverse",
+ "wrapperToIterator",
+ "wrapperValue",
+ "xor",
+ "xorBy",
+ "xorWith",
+ "zip",
+ "zipObject",
+ "zipObjectDeep",
+ "zipWith",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/lowerCase.js": {
+ "id": "../../node_modules/lodash-es/lowerCase.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/lowerFirst.js": {
+ "id": "../../node_modules/lodash-es/lowerFirst.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/lt.js": {
+ "id": "../../node_modules/lodash-es/lt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/lte.js": {
+ "id": "../../node_modules/lodash-es/lte.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/map.js": {
+ "id": "../../node_modules/lodash-es/map.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/mapKeys.js": {
+ "id": "../../node_modules/lodash-es/mapKeys.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/mapValues.js": {
+ "id": "../../node_modules/lodash-es/mapValues.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/matches.js": {
+ "id": "../../node_modules/lodash-es/matches.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/matchesProperty.js": {
+ "id": "../../node_modules/lodash-es/matchesProperty.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/math.default.js": {
+ "id": "../../node_modules/lodash-es/math.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/math.js": {
+ "id": "../../node_modules/lodash-es/math.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "add",
+ "ceil",
+ "divide",
+ "floor",
+ "max",
+ "maxBy",
+ "mean",
+ "meanBy",
+ "min",
+ "minBy",
+ "multiply",
+ "round",
+ "subtract",
+ "sum",
+ "sumBy",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/max.js": {
+ "id": "../../node_modules/lodash-es/max.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/maxBy.js": {
+ "id": "../../node_modules/lodash-es/maxBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/mean.js": {
+ "id": "../../node_modules/lodash-es/mean.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/meanBy.js": {
+ "id": "../../node_modules/lodash-es/meanBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/memoize.js": {
+ "id": "../../node_modules/lodash-es/memoize.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/merge.js": {
+ "id": "../../node_modules/lodash-es/merge.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/mergeWith.js": {
+ "id": "../../node_modules/lodash-es/mergeWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/method.js": {
+ "id": "../../node_modules/lodash-es/method.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/methodOf.js": {
+ "id": "../../node_modules/lodash-es/methodOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/min.js": {
+ "id": "../../node_modules/lodash-es/min.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/minBy.js": {
+ "id": "../../node_modules/lodash-es/minBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/mixin.js": {
+ "id": "../../node_modules/lodash-es/mixin.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/multiply.js": {
+ "id": "../../node_modules/lodash-es/multiply.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/negate.js": {
+ "id": "../../node_modules/lodash-es/negate.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/next.js": {
+ "id": "../../node_modules/lodash-es/next.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/noop.js": {
+ "id": "../../node_modules/lodash-es/noop.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/now.js": {
+ "id": "../../node_modules/lodash-es/now.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/nth.js": {
+ "id": "../../node_modules/lodash-es/nth.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/nthArg.js": {
+ "id": "../../node_modules/lodash-es/nthArg.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/number.default.js": {
+ "id": "../../node_modules/lodash-es/number.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/number.js": {
+ "id": "../../node_modules/lodash-es/number.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "clamp",
+ "inRange",
+ "random",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/object.default.js": {
+ "id": "../../node_modules/lodash-es/object.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/object.js": {
+ "id": "../../node_modules/lodash-es/object.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "assign",
+ "assignIn",
+ "assignInWith",
+ "assignWith",
+ "at",
+ "create",
+ "defaults",
+ "defaultsDeep",
+ "entries",
+ "entriesIn",
+ "extend",
+ "extendWith",
+ "findKey",
+ "findLastKey",
+ "forIn",
+ "forInRight",
+ "forOwn",
+ "forOwnRight",
+ "functions",
+ "functionsIn",
+ "get",
+ "has",
+ "hasIn",
+ "invert",
+ "invertBy",
+ "invoke",
+ "keys",
+ "keysIn",
+ "mapKeys",
+ "mapValues",
+ "merge",
+ "mergeWith",
+ "omit",
+ "omitBy",
+ "pick",
+ "pickBy",
+ "result",
+ "set",
+ "setWith",
+ "toPairs",
+ "toPairsIn",
+ "transform",
+ "unset",
+ "update",
+ "updateWith",
+ "values",
+ "valuesIn",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/omit.js": {
+ "id": "../../node_modules/lodash-es/omit.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/omitBy.js": {
+ "id": "../../node_modules/lodash-es/omitBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/once.js": {
+ "id": "../../node_modules/lodash-es/once.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/orderBy.js": {
+ "id": "../../node_modules/lodash-es/orderBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/over.js": {
+ "id": "../../node_modules/lodash-es/over.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/overArgs.js": {
+ "id": "../../node_modules/lodash-es/overArgs.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/overEvery.js": {
+ "id": "../../node_modules/lodash-es/overEvery.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/overSome.js": {
+ "id": "../../node_modules/lodash-es/overSome.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/pad.js": {
+ "id": "../../node_modules/lodash-es/pad.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/padEnd.js": {
+ "id": "../../node_modules/lodash-es/padEnd.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/padStart.js": {
+ "id": "../../node_modules/lodash-es/padStart.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/parseInt.js": {
+ "id": "../../node_modules/lodash-es/parseInt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/partial.js": {
+ "id": "../../node_modules/lodash-es/partial.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/partialRight.js": {
+ "id": "../../node_modules/lodash-es/partialRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/partition.js": {
+ "id": "../../node_modules/lodash-es/partition.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/pick.js": {
+ "id": "../../node_modules/lodash-es/pick.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/pickBy.js": {
+ "id": "../../node_modules/lodash-es/pickBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/plant.js": {
+ "id": "../../node_modules/lodash-es/plant.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/property.js": {
+ "id": "../../node_modules/lodash-es/property.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/propertyOf.js": {
+ "id": "../../node_modules/lodash-es/propertyOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/pull.js": {
+ "id": "../../node_modules/lodash-es/pull.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/pullAll.js": {
+ "id": "../../node_modules/lodash-es/pullAll.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/pullAllBy.js": {
+ "id": "../../node_modules/lodash-es/pullAllBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/pullAllWith.js": {
+ "id": "../../node_modules/lodash-es/pullAllWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/pullAt.js": {
+ "id": "../../node_modules/lodash-es/pullAt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/random.js": {
+ "id": "../../node_modules/lodash-es/random.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/range.js": {
+ "id": "../../node_modules/lodash-es/range.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/rangeRight.js": {
+ "id": "../../node_modules/lodash-es/rangeRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/rearg.js": {
+ "id": "../../node_modules/lodash-es/rearg.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/reduce.js": {
+ "id": "../../node_modules/lodash-es/reduce.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/reduceRight.js": {
+ "id": "../../node_modules/lodash-es/reduceRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/reject.js": {
+ "id": "../../node_modules/lodash-es/reject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/remove.js": {
+ "id": "../../node_modules/lodash-es/remove.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/repeat.js": {
+ "id": "../../node_modules/lodash-es/repeat.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/replace.js": {
+ "id": "../../node_modules/lodash-es/replace.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/rest.js": {
+ "id": "../../node_modules/lodash-es/rest.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/result.js": {
+ "id": "../../node_modules/lodash-es/result.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/reverse.js": {
+ "id": "../../node_modules/lodash-es/reverse.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/round.js": {
+ "id": "../../node_modules/lodash-es/round.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sample.js": {
+ "id": "../../node_modules/lodash-es/sample.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sampleSize.js": {
+ "id": "../../node_modules/lodash-es/sampleSize.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/seq.default.js": {
+ "id": "../../node_modules/lodash-es/seq.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/seq.js": {
+ "id": "../../node_modules/lodash-es/seq.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "at",
+ "chain",
+ "commit",
+ "lodash",
+ "next",
+ "plant",
+ "reverse",
+ "tap",
+ "thru",
+ "toIterator",
+ "toJSON",
+ "value",
+ "valueOf",
+ "wrapperChain",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/set.js": {
+ "id": "../../node_modules/lodash-es/set.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/setWith.js": {
+ "id": "../../node_modules/lodash-es/setWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/shuffle.js": {
+ "id": "../../node_modules/lodash-es/shuffle.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/size.js": {
+ "id": "../../node_modules/lodash-es/size.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/slice.js": {
+ "id": "../../node_modules/lodash-es/slice.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/snakeCase.js": {
+ "id": "../../node_modules/lodash-es/snakeCase.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/some.js": {
+ "id": "../../node_modules/lodash-es/some.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sortBy.js": {
+ "id": "../../node_modules/lodash-es/sortBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sortedIndex.js": {
+ "id": "../../node_modules/lodash-es/sortedIndex.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sortedIndexBy.js": {
+ "id": "../../node_modules/lodash-es/sortedIndexBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sortedIndexOf.js": {
+ "id": "../../node_modules/lodash-es/sortedIndexOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sortedLastIndex.js": {
+ "id": "../../node_modules/lodash-es/sortedLastIndex.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sortedLastIndexBy.js": {
+ "id": "../../node_modules/lodash-es/sortedLastIndexBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sortedLastIndexOf.js": {
+ "id": "../../node_modules/lodash-es/sortedLastIndexOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sortedUniq.js": {
+ "id": "../../node_modules/lodash-es/sortedUniq.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sortedUniqBy.js": {
+ "id": "../../node_modules/lodash-es/sortedUniqBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/split.js": {
+ "id": "../../node_modules/lodash-es/split.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/spread.js": {
+ "id": "../../node_modules/lodash-es/spread.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/startCase.js": {
+ "id": "../../node_modules/lodash-es/startCase.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/startsWith.js": {
+ "id": "../../node_modules/lodash-es/startsWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/string.default.js": {
+ "id": "../../node_modules/lodash-es/string.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/string.js": {
+ "id": "../../node_modules/lodash-es/string.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "camelCase",
+ "capitalize",
+ "deburr",
+ "endsWith",
+ "escape",
+ "escapeRegExp",
+ "kebabCase",
+ "lowerCase",
+ "lowerFirst",
+ "pad",
+ "padEnd",
+ "padStart",
+ "parseInt",
+ "repeat",
+ "replace",
+ "snakeCase",
+ "split",
+ "startCase",
+ "startsWith",
+ "template",
+ "templateSettings",
+ "toLower",
+ "toUpper",
+ "trim",
+ "trimEnd",
+ "trimStart",
+ "truncate",
+ "unescape",
+ "upperCase",
+ "upperFirst",
+ "words",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/stubArray.js": {
+ "id": "../../node_modules/lodash-es/stubArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/stubFalse.js": {
+ "id": "../../node_modules/lodash-es/stubFalse.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/stubObject.js": {
+ "id": "../../node_modules/lodash-es/stubObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/stubString.js": {
+ "id": "../../node_modules/lodash-es/stubString.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/stubTrue.js": {
+ "id": "../../node_modules/lodash-es/stubTrue.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/subtract.js": {
+ "id": "../../node_modules/lodash-es/subtract.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sum.js": {
+ "id": "../../node_modules/lodash-es/sum.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/sumBy.js": {
+ "id": "../../node_modules/lodash-es/sumBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/tail.js": {
+ "id": "../../node_modules/lodash-es/tail.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/take.js": {
+ "id": "../../node_modules/lodash-es/take.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/takeRight.js": {
+ "id": "../../node_modules/lodash-es/takeRight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/takeRightWhile.js": {
+ "id": "../../node_modules/lodash-es/takeRightWhile.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/takeWhile.js": {
+ "id": "../../node_modules/lodash-es/takeWhile.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/tap.js": {
+ "id": "../../node_modules/lodash-es/tap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/template.js": {
+ "id": "../../node_modules/lodash-es/template.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/templateSettings.js": {
+ "id": "../../node_modules/lodash-es/templateSettings.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/throttle.js": {
+ "id": "../../node_modules/lodash-es/throttle.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/thru.js": {
+ "id": "../../node_modules/lodash-es/thru.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/times.js": {
+ "id": "../../node_modules/lodash-es/times.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toArray.js": {
+ "id": "../../node_modules/lodash-es/toArray.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toFinite.js": {
+ "id": "../../node_modules/lodash-es/toFinite.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toInteger.js": {
+ "id": "../../node_modules/lodash-es/toInteger.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toIterator.js": {
+ "id": "../../node_modules/lodash-es/toIterator.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toJSON.js": {
+ "id": "../../node_modules/lodash-es/toJSON.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toLength.js": {
+ "id": "../../node_modules/lodash-es/toLength.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toLower.js": {
+ "id": "../../node_modules/lodash-es/toLower.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toNumber.js": {
+ "id": "../../node_modules/lodash-es/toNumber.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toPairs.js": {
+ "id": "../../node_modules/lodash-es/toPairs.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toPairsIn.js": {
+ "id": "../../node_modules/lodash-es/toPairsIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toPath.js": {
+ "id": "../../node_modules/lodash-es/toPath.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toPlainObject.js": {
+ "id": "../../node_modules/lodash-es/toPlainObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toSafeInteger.js": {
+ "id": "../../node_modules/lodash-es/toSafeInteger.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toString.js": {
+ "id": "../../node_modules/lodash-es/toString.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/toUpper.js": {
+ "id": "../../node_modules/lodash-es/toUpper.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/transform.js": {
+ "id": "../../node_modules/lodash-es/transform.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/trim.js": {
+ "id": "../../node_modules/lodash-es/trim.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/trimEnd.js": {
+ "id": "../../node_modules/lodash-es/trimEnd.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/trimStart.js": {
+ "id": "../../node_modules/lodash-es/trimStart.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/truncate.js": {
+ "id": "../../node_modules/lodash-es/truncate.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/unary.js": {
+ "id": "../../node_modules/lodash-es/unary.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/unescape.js": {
+ "id": "../../node_modules/lodash-es/unescape.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/union.js": {
+ "id": "../../node_modules/lodash-es/union.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/unionBy.js": {
+ "id": "../../node_modules/lodash-es/unionBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/unionWith.js": {
+ "id": "../../node_modules/lodash-es/unionWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/uniq.js": {
+ "id": "../../node_modules/lodash-es/uniq.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/uniqBy.js": {
+ "id": "../../node_modules/lodash-es/uniqBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/uniqWith.js": {
+ "id": "../../node_modules/lodash-es/uniqWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/uniqueId.js": {
+ "id": "../../node_modules/lodash-es/uniqueId.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/unset.js": {
+ "id": "../../node_modules/lodash-es/unset.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/unzip.js": {
+ "id": "../../node_modules/lodash-es/unzip.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/unzipWith.js": {
+ "id": "../../node_modules/lodash-es/unzipWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/update.js": {
+ "id": "../../node_modules/lodash-es/update.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/updateWith.js": {
+ "id": "../../node_modules/lodash-es/updateWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/upperCase.js": {
+ "id": "../../node_modules/lodash-es/upperCase.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/upperFirst.js": {
+ "id": "../../node_modules/lodash-es/upperFirst.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/util.default.js": {
+ "id": "../../node_modules/lodash-es/util.default.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/util.js": {
+ "id": "../../node_modules/lodash-es/util.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "attempt",
+ "bindAll",
+ "cond",
+ "conforms",
+ "constant",
+ "defaultTo",
+ "flow",
+ "flowRight",
+ "identity",
+ "iteratee",
+ "matches",
+ "matchesProperty",
+ "method",
+ "methodOf",
+ "mixin",
+ "noop",
+ "nthArg",
+ "over",
+ "overEvery",
+ "overSome",
+ "property",
+ "propertyOf",
+ "range",
+ "rangeRight",
+ "stubArray",
+ "stubFalse",
+ "stubObject",
+ "stubString",
+ "stubTrue",
+ "times",
+ "toPath",
+ "uniqueId",
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/value.js": {
+ "id": "../../node_modules/lodash-es/value.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/valueOf.js": {
+ "id": "../../node_modules/lodash-es/valueOf.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/values.js": {
+ "id": "../../node_modules/lodash-es/values.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/valuesIn.js": {
+ "id": "../../node_modules/lodash-es/valuesIn.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/without.js": {
+ "id": "../../node_modules/lodash-es/without.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/words.js": {
+ "id": "../../node_modules/lodash-es/words.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/wrap.js": {
+ "id": "../../node_modules/lodash-es/wrap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/wrapperAt.js": {
+ "id": "../../node_modules/lodash-es/wrapperAt.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/wrapperChain.js": {
+ "id": "../../node_modules/lodash-es/wrapperChain.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/wrapperLodash.js": {
+ "id": "../../node_modules/lodash-es/wrapperLodash.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/wrapperReverse.js": {
+ "id": "../../node_modules/lodash-es/wrapperReverse.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/wrapperValue.js": {
+ "id": "../../node_modules/lodash-es/wrapperValue.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/xor.js": {
+ "id": "../../node_modules/lodash-es/xor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/xorBy.js": {
+ "id": "../../node_modules/lodash-es/xorBy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/xorWith.js": {
+ "id": "../../node_modules/lodash-es/xorWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/zip.js": {
+ "id": "../../node_modules/lodash-es/zip.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/zipObject.js": {
+ "id": "../../node_modules/lodash-es/zipObject.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/zipObjectDeep.js": {
+ "id": "../../node_modules/lodash-es/zipObjectDeep.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/lodash-es/zipWith.js": {
+ "id": "../../node_modules/lodash-es/zipWith.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-block-quote/theme/blockquote.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-block-quote/theme/blockquote.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-editor-classic/theme/classiceditor.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-editor-classic/theme/classiceditor.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-engine/theme/placeholder.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-engine/theme/placeholder.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-heading/theme/heading.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-heading/theme/heading.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/image.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/image.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imagecaption.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imagecaption.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imagestyle.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imagestyle.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imageuploadicon.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imageuploadicon.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imageuploadloader.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imageuploadloader.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imageuploadprogress.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/imageuploadprogress.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/textalternativeform.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-image/theme/textalternativeform.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-link/theme/link.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-link/theme/link.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-link/theme/linkactions.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-link/theme/linkactions.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-link/theme/linkform.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-link/theme/linkform.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-media-embed/theme/mediaembed.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-media-embed/theme/mediaembed.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-media-embed/theme/mediaembedediting.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-media-embed/theme/mediaembedediting.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-media-embed/theme/mediaform.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-media-embed/theme/mediaform.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-table/theme/inserttable.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-table/theme/inserttable.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-table/theme/table.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-table/theme/table.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-table/theme/tableediting.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-table/theme/tableediting.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-table/theme/tableselection.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-table/theme/tableselection.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/button/button.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/button/button.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/button/switchbutton.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/button/switchbutton.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/dropdown/dropdown.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/dropdown/dropdown.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/dropdown/listdropdown.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/dropdown/listdropdown.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/dropdown/splitbutton.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/dropdown/splitbutton.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/dropdown/toolbardropdown.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/dropdown/toolbardropdown.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/editorui/editorui.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/editorui/editorui.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/icon/icon.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/icon/icon.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/inputtext/inputtext.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/inputtext/inputtext.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/label/label.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/label/label.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/list/list.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/list/list.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/panel/balloonpanel.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/panel/balloonpanel.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/panel/balloonrotator.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/panel/balloonrotator.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/panel/fakepanel.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/panel/fakepanel.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/panel/stickypanel.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/panel/stickypanel.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/responsive-form/responsiveform.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/responsive-form/responsiveform.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/toolbar/toolbar.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/toolbar/toolbar.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/tooltip/tooltip.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/components/tooltip/tooltip.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/globals/globals.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-ui/theme/globals/globals.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-widget/theme/widget.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-widget/theme/widget.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-widget/theme/widgettypearound.css": {
+ "id": "../../node_modules/postcss-loader/src/index.js?!../ckeditor5-widget/theme/widgettypearound.css",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": {
+ "id": "../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/webpack/buildin/global.js": {
+ "id": "../../node_modules/webpack/buildin/global.js",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../../node_modules/webpack/buildin/harmony-module.js": {
+ "id": "../../node_modules/webpack/buildin/harmony-module.js",
+ "buildMeta": {
+ "providedExports": true
+ }
+ },
+ "../ckeditor-cloud-services-core/src/token/token.js": {
+ "id": "../ckeditor-cloud-services-core/src/token/token.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor-cloud-services-core/src/uploadgateway/fileuploader.js": {
+ "id": "../ckeditor-cloud-services-core/src/uploadgateway/fileuploader.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor-cloud-services-core/src/uploadgateway/uploadgateway.js": {
+ "id": "../ckeditor-cloud-services-core/src/uploadgateway/uploadgateway.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-adapter-ckfinder/src/uploadadapter.js": {
+ "id": "../ckeditor5-adapter-ckfinder/src/uploadadapter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-adapter-ckfinder/src/utils.js": {
+ "id": "../ckeditor5-adapter-ckfinder/src/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "getCsrfToken",
+ "getCookie",
+ "setCookie"
+ ]
+ }
+ },
+ "../ckeditor5-autoformat/src/autoformat.js": {
+ "id": "../ckeditor5-autoformat/src/autoformat.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-autoformat/src/blockautoformatediting.js": {
+ "id": "../ckeditor5-autoformat/src/blockautoformatediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-autoformat/src/inlineautoformatediting.js": {
+ "id": "../ckeditor5-autoformat/src/inlineautoformatediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-basic-styles/src/attributecommand.js": {
+ "id": "../ckeditor5-basic-styles/src/attributecommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-basic-styles/src/bold.js": {
+ "id": "../ckeditor5-basic-styles/src/bold.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-basic-styles/src/bold/boldediting.js": {
+ "id": "../ckeditor5-basic-styles/src/bold/boldediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-basic-styles/src/bold/boldui.js": {
+ "id": "../ckeditor5-basic-styles/src/bold/boldui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-basic-styles/src/italic.js": {
+ "id": "../ckeditor5-basic-styles/src/italic.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-basic-styles/src/italic/italicediting.js": {
+ "id": "../ckeditor5-basic-styles/src/italic/italicediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-basic-styles/src/italic/italicui.js": {
+ "id": "../ckeditor5-basic-styles/src/italic/italicui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-basic-styles/theme/icons/bold.svg": {
+ "id": "../ckeditor5-basic-styles/theme/icons/bold.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-basic-styles/theme/icons/italic.svg": {
+ "id": "../ckeditor5-basic-styles/theme/icons/italic.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-block-quote/src/blockquote.js": {
+ "id": "../ckeditor5-block-quote/src/blockquote.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-block-quote/src/blockquotecommand.js": {
+ "id": "../ckeditor5-block-quote/src/blockquotecommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-block-quote/src/blockquoteediting.js": {
+ "id": "../ckeditor5-block-quote/src/blockquoteediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-block-quote/src/blockquoteui.js": {
+ "id": "../ckeditor5-block-quote/src/blockquoteui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-block-quote/theme/blockquote.css": {
+ "id": "../ckeditor5-block-quote/theme/blockquote.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ckfinder/src/ckfinder.js": {
+ "id": "../ckeditor5-ckfinder/src/ckfinder.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ckfinder/src/ckfindercommand.js": {
+ "id": "../ckeditor5-ckfinder/src/ckfindercommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ckfinder/src/ckfinderediting.js": {
+ "id": "../ckeditor5-ckfinder/src/ckfinderediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ckfinder/src/ckfinderui.js": {
+ "id": "../ckeditor5-ckfinder/src/ckfinderui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ckfinder/theme/icons/browse-files.svg": {
+ "id": "../ckeditor5-ckfinder/theme/icons/browse-files.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-clipboard/src/clipboard.js": {
+ "id": "../ckeditor5-clipboard/src/clipboard.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-clipboard/src/clipboardobserver.js": {
+ "id": "../ckeditor5-clipboard/src/clipboardobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-clipboard/src/datatransfer.js": {
+ "id": "../ckeditor5-clipboard/src/datatransfer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-clipboard/src/pasteplaintext.js": {
+ "id": "../ckeditor5-clipboard/src/pasteplaintext.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-clipboard/src/utils/normalizeclipboarddata.js": {
+ "id": "../ckeditor5-clipboard/src/utils/normalizeclipboarddata.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-clipboard/src/utils/plaintexttohtml.js": {
+ "id": "../ckeditor5-clipboard/src/utils/plaintexttohtml.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-clipboard/src/utils/viewtoplaintext.js": {
+ "id": "../ckeditor5-clipboard/src/utils/viewtoplaintext.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-cloud-services/src/cloudservices.js": {
+ "id": "../ckeditor5-cloud-services/src/cloudservices.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/command.js": {
+ "id": "../ckeditor5-core/src/command.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/commandcollection.js": {
+ "id": "../ckeditor5-core/src/commandcollection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/context.js": {
+ "id": "../ckeditor5-core/src/context.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/contextplugin.js": {
+ "id": "../ckeditor5-core/src/contextplugin.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/editingkeystrokehandler.js": {
+ "id": "../ckeditor5-core/src/editingkeystrokehandler.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/editor/editor.js": {
+ "id": "../ckeditor5-core/src/editor/editor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/editor/editorui.js": {
+ "id": "../ckeditor5-core/src/editor/editorui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/editor/utils/attachtoform.js": {
+ "id": "../ckeditor5-core/src/editor/utils/attachtoform.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/editor/utils/dataapimixin.js": {
+ "id": "../ckeditor5-core/src/editor/utils/dataapimixin.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/editor/utils/elementapimixin.js": {
+ "id": "../ckeditor5-core/src/editor/utils/elementapimixin.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/multicommand.js": {
+ "id": "../ckeditor5-core/src/multicommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/pendingactions.js": {
+ "id": "../ckeditor5-core/src/pendingactions.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/plugin.js": {
+ "id": "../ckeditor5-core/src/plugin.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/src/plugincollection.js": {
+ "id": "../ckeditor5-core/src/plugincollection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/cancel.svg": {
+ "id": "../ckeditor5-core/theme/icons/cancel.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/check.svg": {
+ "id": "../ckeditor5-core/theme/icons/check.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/image.svg": {
+ "id": "../ckeditor5-core/theme/icons/image.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/low-vision.svg": {
+ "id": "../ckeditor5-core/theme/icons/low-vision.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/object-center.svg": {
+ "id": "../ckeditor5-core/theme/icons/object-center.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/object-full-width.svg": {
+ "id": "../ckeditor5-core/theme/icons/object-full-width.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/object-left.svg": {
+ "id": "../ckeditor5-core/theme/icons/object-left.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/object-right.svg": {
+ "id": "../ckeditor5-core/theme/icons/object-right.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/pencil.svg": {
+ "id": "../ckeditor5-core/theme/icons/pencil.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/quote.svg": {
+ "id": "../ckeditor5-core/theme/icons/quote.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-core/theme/icons/three-vertical-dots.svg": {
+ "id": "../ckeditor5-core/theme/icons/three-vertical-dots.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-easy-image/src/cloudservicesuploadadapter.js": {
+ "id": "../ckeditor5-easy-image/src/cloudservicesuploadadapter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-easy-image/src/easyimage.js": {
+ "id": "../ckeditor5-easy-image/src/easyimage.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-editor-classic/src/classiceditor.js": {
+ "id": "../ckeditor5-editor-classic/src/classiceditor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-editor-classic/src/classiceditorui.js": {
+ "id": "../ckeditor5-editor-classic/src/classiceditorui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-editor-classic/src/classiceditoruiview.js": {
+ "id": "../ckeditor5-editor-classic/src/classiceditoruiview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-editor-classic/theme/classiceditor.css": {
+ "id": "../ckeditor5-editor-classic/theme/classiceditor.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-engine/src/controller/datacontroller.js": {
+ "id": "../ckeditor5-engine/src/controller/datacontroller.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/controller/editingcontroller.js": {
+ "id": "../ckeditor5-engine/src/controller/editingcontroller.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/conversion/conversion.js": {
+ "id": "../ckeditor5-engine/src/conversion/conversion.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/conversion/conversionhelpers.js": {
+ "id": "../ckeditor5-engine/src/conversion/conversionhelpers.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/conversion/downcastdispatcher.js": {
+ "id": "../ckeditor5-engine/src/conversion/downcastdispatcher.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/conversion/downcasthelpers.js": {
+ "id": "../ckeditor5-engine/src/conversion/downcasthelpers.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "insertText",
+ "remove",
+ "createViewElementFromHighlightDescriptor",
+ "convertRangeSelection",
+ "convertCollapsedSelection",
+ "clearAttributes",
+ "wrap",
+ "insertElement",
+ "insertUIElement"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/conversion/mapper.js": {
+ "id": "../ckeditor5-engine/src/conversion/mapper.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/conversion/modelconsumable.js": {
+ "id": "../ckeditor5-engine/src/conversion/modelconsumable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/conversion/upcastdispatcher.js": {
+ "id": "../ckeditor5-engine/src/conversion/upcastdispatcher.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/conversion/upcasthelpers.js": {
+ "id": "../ckeditor5-engine/src/conversion/upcasthelpers.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "convertToModelFragment",
+ "convertText",
+ "convertSelectionChange"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/conversion/viewconsumable.js": {
+ "id": "../ckeditor5-engine/src/conversion/viewconsumable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/dataprocessor/basichtmlwriter.js": {
+ "id": "../ckeditor5-engine/src/dataprocessor/basichtmlwriter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/dataprocessor/htmldataprocessor.js": {
+ "id": "../ckeditor5-engine/src/dataprocessor/htmldataprocessor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/batch.js": {
+ "id": "../ckeditor5-engine/src/model/batch.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/differ.js": {
+ "id": "../ckeditor5-engine/src/model/differ.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/document.js": {
+ "id": "../ckeditor5-engine/src/model/document.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/documentfragment.js": {
+ "id": "../ckeditor5-engine/src/model/documentfragment.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/documentselection.js": {
+ "id": "../ckeditor5-engine/src/model/documentselection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/element.js": {
+ "id": "../ckeditor5-engine/src/model/element.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/history.js": {
+ "id": "../ckeditor5-engine/src/model/history.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/liveposition.js": {
+ "id": "../ckeditor5-engine/src/model/liveposition.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/liverange.js": {
+ "id": "../ckeditor5-engine/src/model/liverange.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/markercollection.js": {
+ "id": "../ckeditor5-engine/src/model/markercollection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/model.js": {
+ "id": "../ckeditor5-engine/src/model/model.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/node.js": {
+ "id": "../ckeditor5-engine/src/model/node.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/nodelist.js": {
+ "id": "../ckeditor5-engine/src/model/nodelist.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/attributeoperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/attributeoperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/detachoperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/detachoperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/insertoperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/insertoperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/markeroperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/markeroperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/mergeoperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/mergeoperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/moveoperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/moveoperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/nooperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/nooperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/operation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/operation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/operationfactory.js": {
+ "id": "../ckeditor5-engine/src/model/operation/operationfactory.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/renameoperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/renameoperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/rootattributeoperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/rootattributeoperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/splitoperation.js": {
+ "id": "../ckeditor5-engine/src/model/operation/splitoperation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/transform.js": {
+ "id": "../ckeditor5-engine/src/model/operation/transform.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "transform",
+ "transformSets"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/operation/utils.js": {
+ "id": "../ckeditor5-engine/src/model/operation/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "_insert",
+ "_remove",
+ "_move",
+ "_setAttribute",
+ "_normalizeNodes"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/position.js": {
+ "id": "../ckeditor5-engine/src/model/position.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "getTextNodeAtPosition",
+ "getNodeAfterPosition",
+ "getNodeBeforePosition"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/range.js": {
+ "id": "../ckeditor5-engine/src/model/range.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/rootelement.js": {
+ "id": "../ckeditor5-engine/src/model/rootelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/schema.js": {
+ "id": "../ckeditor5-engine/src/model/schema.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "SchemaContext"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/selection.js": {
+ "id": "../ckeditor5-engine/src/model/selection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/text.js": {
+ "id": "../ckeditor5-engine/src/model/text.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/textproxy.js": {
+ "id": "../ckeditor5-engine/src/model/textproxy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/treewalker.js": {
+ "id": "../ckeditor5-engine/src/model/treewalker.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/utils/autoparagraphing.js": {
+ "id": "../ckeditor5-engine/src/model/utils/autoparagraphing.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "autoParagraphEmptyRoots",
+ "isParagraphable",
+ "wrapInParagraph"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/utils/deletecontent.js": {
+ "id": "../ckeditor5-engine/src/model/utils/deletecontent.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/utils/getselectedcontent.js": {
+ "id": "../ckeditor5-engine/src/model/utils/getselectedcontent.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/utils/insertcontent.js": {
+ "id": "../ckeditor5-engine/src/model/utils/insertcontent.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/utils/modifyselection.js": {
+ "id": "../ckeditor5-engine/src/model/utils/modifyselection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/utils/selection-post-fixer.js": {
+ "id": "../ckeditor5-engine/src/model/utils/selection-post-fixer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "injectSelectionPostFixer"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/model/writer.js": {
+ "id": "../ckeditor5-engine/src/model/writer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/attributeelement.js": {
+ "id": "../ckeditor5-engine/src/view/attributeelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/containerelement.js": {
+ "id": "../ckeditor5-engine/src/view/containerelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "getFillerOffset"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/document.js": {
+ "id": "../ckeditor5-engine/src/view/document.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/documentfragment.js": {
+ "id": "../ckeditor5-engine/src/view/documentfragment.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/documentselection.js": {
+ "id": "../ckeditor5-engine/src/view/documentselection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/domconverter.js": {
+ "id": "../ckeditor5-engine/src/view/domconverter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/downcastwriter.js": {
+ "id": "../ckeditor5-engine/src/view/downcastwriter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/editableelement.js": {
+ "id": "../ckeditor5-engine/src/view/editableelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/element.js": {
+ "id": "../ckeditor5-engine/src/view/element.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/emptyelement.js": {
+ "id": "../ckeditor5-engine/src/view/emptyelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/filler.js": {
+ "id": "../ckeditor5-engine/src/view/filler.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "NBSP_FILLER",
+ "BR_FILLER",
+ "INLINE_FILLER_LENGTH",
+ "INLINE_FILLER",
+ "startsWithFiller",
+ "isInlineFiller",
+ "getDataWithoutFiller",
+ "injectQuirksHandling"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/matcher.js": {
+ "id": "../ckeditor5-engine/src/view/matcher.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/node.js": {
+ "id": "../ckeditor5-engine/src/view/node.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/clickobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/clickobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/compositionobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/compositionobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/domeventdata.js": {
+ "id": "../ckeditor5-engine/src/view/observer/domeventdata.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/domeventobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/domeventobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/fakeselectionobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/fakeselectionobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/focusobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/focusobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/inputobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/inputobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/keyobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/keyobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/mouseobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/mouseobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/mutationobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/mutationobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/observer.js": {
+ "id": "../ckeditor5-engine/src/view/observer/observer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/observer/selectionobserver.js": {
+ "id": "../ckeditor5-engine/src/view/observer/selectionobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/placeholder.js": {
+ "id": "../ckeditor5-engine/src/view/placeholder.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "enablePlaceholder",
+ "disablePlaceholder",
+ "showPlaceholder",
+ "hidePlaceholder",
+ "needsPlaceholder"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/position.js": {
+ "id": "../ckeditor5-engine/src/view/position.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/range.js": {
+ "id": "../ckeditor5-engine/src/view/range.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/rawelement.js": {
+ "id": "../ckeditor5-engine/src/view/rawelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/renderer.js": {
+ "id": "../ckeditor5-engine/src/view/renderer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/rooteditableelement.js": {
+ "id": "../ckeditor5-engine/src/view/rooteditableelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/selection.js": {
+ "id": "../ckeditor5-engine/src/view/selection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/stylesmap.js": {
+ "id": "../ckeditor5-engine/src/view/stylesmap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "StylesProcessor"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/text.js": {
+ "id": "../ckeditor5-engine/src/view/text.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/textproxy.js": {
+ "id": "../ckeditor5-engine/src/view/textproxy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/treewalker.js": {
+ "id": "../ckeditor5-engine/src/view/treewalker.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/uielement.js": {
+ "id": "../ckeditor5-engine/src/view/uielement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "injectUiElementHandling"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/upcastwriter.js": {
+ "id": "../ckeditor5-engine/src/view/upcastwriter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/src/view/view.js": {
+ "id": "../ckeditor5-engine/src/view/view.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-engine/theme/placeholder.css": {
+ "id": "../ckeditor5-engine/theme/placeholder.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-enter/src/enter.js": {
+ "id": "../ckeditor5-enter/src/enter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-enter/src/entercommand.js": {
+ "id": "../ckeditor5-enter/src/entercommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-enter/src/enterobserver.js": {
+ "id": "../ckeditor5-enter/src/enterobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-enter/src/shiftenter.js": {
+ "id": "../ckeditor5-enter/src/shiftenter.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-enter/src/shiftentercommand.js": {
+ "id": "../ckeditor5-enter/src/shiftentercommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-enter/src/utils.js": {
+ "id": "../ckeditor5-enter/src/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "getCopyOnEnterAttributes"
+ ]
+ }
+ },
+ "../ckeditor5-essentials/src/essentials.js": {
+ "id": "../ckeditor5-essentials/src/essentials.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-heading/src/heading.js": {
+ "id": "../ckeditor5-heading/src/heading.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-heading/src/headingcommand.js": {
+ "id": "../ckeditor5-heading/src/headingcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-heading/src/headingediting.js": {
+ "id": "../ckeditor5-heading/src/headingediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-heading/src/headingui.js": {
+ "id": "../ckeditor5-heading/src/headingui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-heading/src/utils.js": {
+ "id": "../ckeditor5-heading/src/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "getLocalizedOptions"
+ ]
+ }
+ },
+ "../ckeditor5-heading/theme/heading.css": {
+ "id": "../ckeditor5-heading/theme/heading.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-image/src/image.js": {
+ "id": "../ckeditor5-image/src/image.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/image/converters.js": {
+ "id": "../ckeditor5-image/src/image/converters.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "viewFigureToModel",
+ "srcsetAttributeConverter",
+ "modelToViewAttributeConverter"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/image/imageediting.js": {
+ "id": "../ckeditor5-image/src/image/imageediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "createImageViewElement"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/image/imageinsertcommand.js": {
+ "id": "../ckeditor5-image/src/image/imageinsertcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/image/imageloadobserver.js": {
+ "id": "../ckeditor5-image/src/image/imageloadobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/image/ui/utils.js": {
+ "id": "../ckeditor5-image/src/image/ui/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "repositionContextualBalloon",
+ "getBalloonPositionData"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/image/utils.js": {
+ "id": "../ckeditor5-image/src/image/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "toImageWidget",
+ "isImageWidget",
+ "getSelectedImageWidget",
+ "isImage",
+ "insertImage",
+ "isImageAllowed",
+ "getViewImgFromWidget"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagecaption.js": {
+ "id": "../ckeditor5-image/src/imagecaption.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagecaption/imagecaptionediting.js": {
+ "id": "../ckeditor5-image/src/imagecaption/imagecaptionediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagecaption/utils.js": {
+ "id": "../ckeditor5-image/src/imagecaption/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "captionElementCreator",
+ "isCaption",
+ "getCaptionFromImage",
+ "matchImageCaption"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagestyle.js": {
+ "id": "../ckeditor5-image/src/imagestyle.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagestyle/converters.js": {
+ "id": "../ckeditor5-image/src/imagestyle/converters.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "modelToViewStyleAttribute",
+ "viewToModelStyleAttribute"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagestyle/imagestylecommand.js": {
+ "id": "../ckeditor5-image/src/imagestyle/imagestylecommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagestyle/imagestyleediting.js": {
+ "id": "../ckeditor5-image/src/imagestyle/imagestyleediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagestyle/imagestyleui.js": {
+ "id": "../ckeditor5-image/src/imagestyle/imagestyleui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagestyle/utils.js": {
+ "id": "../ckeditor5-image/src/imagestyle/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "normalizeImageStyles"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagetextalternative.js": {
+ "id": "../ckeditor5-image/src/imagetextalternative.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagetextalternative/imagetextalternativecommand.js": {
+ "id": "../ckeditor5-image/src/imagetextalternative/imagetextalternativecommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagetextalternative/imagetextalternativeediting.js": {
+ "id": "../ckeditor5-image/src/imagetextalternative/imagetextalternativeediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagetextalternative/imagetextalternativeui.js": {
+ "id": "../ckeditor5-image/src/imagetextalternative/imagetextalternativeui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagetextalternative/ui/textalternativeformview.js": {
+ "id": "../ckeditor5-image/src/imagetextalternative/ui/textalternativeformview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imagetoolbar.js": {
+ "id": "../ckeditor5-image/src/imagetoolbar.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imageupload.js": {
+ "id": "../ckeditor5-image/src/imageupload.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imageupload/imageuploadcommand.js": {
+ "id": "../ckeditor5-image/src/imageupload/imageuploadcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imageupload/imageuploadediting.js": {
+ "id": "../ckeditor5-image/src/imageupload/imageuploadediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "isHtmlIncluded"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imageupload/imageuploadprogress.js": {
+ "id": "../ckeditor5-image/src/imageupload/imageuploadprogress.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imageupload/imageuploadui.js": {
+ "id": "../ckeditor5-image/src/imageupload/imageuploadui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/src/imageupload/utils.js": {
+ "id": "../ckeditor5-image/src/imageupload/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "createImageTypeRegExp",
+ "fetchLocalImage",
+ "isLocalImage"
+ ]
+ }
+ },
+ "../ckeditor5-image/theme/icons/image_placeholder.svg": {
+ "id": "../ckeditor5-image/theme/icons/image_placeholder.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-image/theme/image.css": {
+ "id": "../ckeditor5-image/theme/image.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-image/theme/imagecaption.css": {
+ "id": "../ckeditor5-image/theme/imagecaption.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-image/theme/imagestyle.css": {
+ "id": "../ckeditor5-image/theme/imagestyle.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-image/theme/imageuploadicon.css": {
+ "id": "../ckeditor5-image/theme/imageuploadicon.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-image/theme/imageuploadloader.css": {
+ "id": "../ckeditor5-image/theme/imageuploadloader.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-image/theme/imageuploadprogress.css": {
+ "id": "../ckeditor5-image/theme/imageuploadprogress.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-image/theme/textalternativeform.css": {
+ "id": "../ckeditor5-image/theme/textalternativeform.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-indent/src/indent.js": {
+ "id": "../ckeditor5-indent/src/indent.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-indent/src/indentediting.js": {
+ "id": "../ckeditor5-indent/src/indentediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-indent/src/indentui.js": {
+ "id": "../ckeditor5-indent/src/indentui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-indent/theme/icons/indent.svg": {
+ "id": "../ckeditor5-indent/theme/icons/indent.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-indent/theme/icons/outdent.svg": {
+ "id": "../ckeditor5-indent/theme/icons/outdent.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/autolink.js": {
+ "id": "../ckeditor5-link/src/autolink.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/link.js": {
+ "id": "../ckeditor5-link/src/link.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/linkcommand.js": {
+ "id": "../ckeditor5-link/src/linkcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/linkediting.js": {
+ "id": "../ckeditor5-link/src/linkediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/linkui.js": {
+ "id": "../ckeditor5-link/src/linkui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/ui/linkactionsview.js": {
+ "id": "../ckeditor5-link/src/ui/linkactionsview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/ui/linkformview.js": {
+ "id": "../ckeditor5-link/src/ui/linkformview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/unlinkcommand.js": {
+ "id": "../ckeditor5-link/src/unlinkcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/utils.js": {
+ "id": "../ckeditor5-link/src/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "LINK_KEYSTROKE",
+ "isLinkElement",
+ "createLinkElement",
+ "ensureSafeUrl",
+ "getLocalizedDecorators",
+ "normalizeDecorators",
+ "isImageAllowed",
+ "isEmail",
+ "addLinkProtocolIfApplicable"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/utils/automaticdecorators.js": {
+ "id": "../ckeditor5-link/src/utils/automaticdecorators.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/src/utils/manualdecorator.js": {
+ "id": "../ckeditor5-link/src/utils/manualdecorator.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/theme/icons/link.svg": {
+ "id": "../ckeditor5-link/theme/icons/link.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/theme/icons/unlink.svg": {
+ "id": "../ckeditor5-link/theme/icons/unlink.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-link/theme/link.css": {
+ "id": "../ckeditor5-link/theme/link.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-link/theme/linkactions.css": {
+ "id": "../ckeditor5-link/theme/linkactions.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-link/theme/linkform.css": {
+ "id": "../ckeditor5-link/theme/linkform.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-list/src/converters.js": {
+ "id": "../ckeditor5-list/src/converters.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "modelViewInsertion",
+ "modelViewRemove",
+ "modelViewChangeType",
+ "modelViewMergeAfterChangeType",
+ "modelViewChangeIndent",
+ "modelViewSplitOnInsert",
+ "modelViewMergeAfter",
+ "viewModelConverter",
+ "cleanList",
+ "cleanListItem",
+ "modelToViewPosition",
+ "viewToModelPosition",
+ "modelChangePostFixer",
+ "modelIndentPasteFixer"
+ ]
+ }
+ },
+ "../ckeditor5-list/src/indentcommand.js": {
+ "id": "../ckeditor5-list/src/indentcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-list/src/list.js": {
+ "id": "../ckeditor5-list/src/list.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-list/src/listcommand.js": {
+ "id": "../ckeditor5-list/src/listcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-list/src/listediting.js": {
+ "id": "../ckeditor5-list/src/listediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-list/src/listui.js": {
+ "id": "../ckeditor5-list/src/listui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-list/src/utils.js": {
+ "id": "../ckeditor5-list/src/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "createViewListItemElement",
+ "generateLiInUl",
+ "injectViewList",
+ "mergeViewLists",
+ "positionAfterUiElements",
+ "getSiblingListItem",
+ "createUIComponent",
+ "findNestedList",
+ "getSiblingNodes"
+ ]
+ }
+ },
+ "../ckeditor5-list/theme/icons/bulletedlist.svg": {
+ "id": "../ckeditor5-list/theme/icons/bulletedlist.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-list/theme/icons/numberedlist.svg": {
+ "id": "../ckeditor5-list/theme/icons/numberedlist.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/src/automediaembed.js": {
+ "id": "../ckeditor5-media-embed/src/automediaembed.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/src/converters.js": {
+ "id": "../ckeditor5-media-embed/src/converters.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "modelToViewUrlAttributeConverter"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/src/mediaembed.js": {
+ "id": "../ckeditor5-media-embed/src/mediaembed.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/src/mediaembedcommand.js": {
+ "id": "../ckeditor5-media-embed/src/mediaembedcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/src/mediaembedediting.js": {
+ "id": "../ckeditor5-media-embed/src/mediaembedediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/src/mediaembedui.js": {
+ "id": "../ckeditor5-media-embed/src/mediaembedui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/src/mediaregistry.js": {
+ "id": "../ckeditor5-media-embed/src/mediaregistry.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/src/ui/mediaformview.js": {
+ "id": "../ckeditor5-media-embed/src/ui/mediaformview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/src/utils.js": {
+ "id": "../ckeditor5-media-embed/src/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "toMediaWidget",
+ "getSelectedMediaViewWidget",
+ "isMediaWidget",
+ "createMediaFigureElement",
+ "getSelectedMediaModelWidget",
+ "insertMedia"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/theme/icons/media-placeholder.svg": {
+ "id": "../ckeditor5-media-embed/theme/icons/media-placeholder.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/theme/icons/media.svg": {
+ "id": "../ckeditor5-media-embed/theme/icons/media.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-media-embed/theme/mediaembed.css": {
+ "id": "../ckeditor5-media-embed/theme/mediaembed.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-media-embed/theme/mediaembedediting.css": {
+ "id": "../ckeditor5-media-embed/theme/mediaembedediting.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-media-embed/theme/mediaform.css": {
+ "id": "../ckeditor5-media-embed/theme/mediaform.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-paragraph/src/insertparagraphcommand.js": {
+ "id": "../ckeditor5-paragraph/src/insertparagraphcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-paragraph/src/paragraph.js": {
+ "id": "../ckeditor5-paragraph/src/paragraph.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-paragraph/src/paragraphcommand.js": {
+ "id": "../ckeditor5-paragraph/src/paragraphcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-paste-from-office/src/filters/image.js": {
+ "id": "../ckeditor5-paste-from-office/src/filters/image.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "replaceImagesSourceWithBase64",
+ "_convertHexToBase64"
+ ]
+ }
+ },
+ "../ckeditor5-paste-from-office/src/filters/list.js": {
+ "id": "../ckeditor5-paste-from-office/src/filters/list.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "transformListItemLikeElementsIntoLists",
+ "unwrapParagraphInListItem"
+ ]
+ }
+ },
+ "../ckeditor5-paste-from-office/src/filters/parse.js": {
+ "id": "../ckeditor5-paste-from-office/src/filters/parse.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "parseHtml"
+ ]
+ }
+ },
+ "../ckeditor5-paste-from-office/src/filters/removeboldwrapper.js": {
+ "id": "../ckeditor5-paste-from-office/src/filters/removeboldwrapper.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-paste-from-office/src/filters/space.js": {
+ "id": "../ckeditor5-paste-from-office/src/filters/space.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "normalizeSpacing",
+ "normalizeSpacerunSpans"
+ ]
+ }
+ },
+ "../ckeditor5-paste-from-office/src/normalizers/googledocsnormalizer.js": {
+ "id": "../ckeditor5-paste-from-office/src/normalizers/googledocsnormalizer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-paste-from-office/src/normalizers/mswordnormalizer.js": {
+ "id": "../ckeditor5-paste-from-office/src/normalizers/mswordnormalizer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-paste-from-office/src/pastefromoffice.js": {
+ "id": "../ckeditor5-paste-from-office/src/pastefromoffice.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-select-all/src/selectall.js": {
+ "id": "../ckeditor5-select-all/src/selectall.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-select-all/src/selectallcommand.js": {
+ "id": "../ckeditor5-select-all/src/selectallcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-select-all/src/selectallediting.js": {
+ "id": "../ckeditor5-select-all/src/selectallediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-select-all/src/selectallui.js": {
+ "id": "../ckeditor5-select-all/src/selectallui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-select-all/theme/icons/select-all.svg": {
+ "id": "../ckeditor5-select-all/theme/icons/select-all.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/insertcolumncommand.js": {
+ "id": "../ckeditor5-table/src/commands/insertcolumncommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/insertrowcommand.js": {
+ "id": "../ckeditor5-table/src/commands/insertrowcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/inserttablecommand.js": {
+ "id": "../ckeditor5-table/src/commands/inserttablecommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/mergecellcommand.js": {
+ "id": "../ckeditor5-table/src/commands/mergecellcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/mergecellscommand.js": {
+ "id": "../ckeditor5-table/src/commands/mergecellscommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/removecolumncommand.js": {
+ "id": "../ckeditor5-table/src/commands/removecolumncommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/removerowcommand.js": {
+ "id": "../ckeditor5-table/src/commands/removerowcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/selectcolumncommand.js": {
+ "id": "../ckeditor5-table/src/commands/selectcolumncommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/selectrowcommand.js": {
+ "id": "../ckeditor5-table/src/commands/selectrowcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/setheadercolumncommand.js": {
+ "id": "../ckeditor5-table/src/commands/setheadercolumncommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/setheaderrowcommand.js": {
+ "id": "../ckeditor5-table/src/commands/setheaderrowcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/commands/splitcellcommand.js": {
+ "id": "../ckeditor5-table/src/commands/splitcellcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/converters/downcast.js": {
+ "id": "../ckeditor5-table/src/converters/downcast.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "downcastInsertTable",
+ "downcastInsertRow",
+ "downcastInsertCell",
+ "downcastTableHeadingColumnsChange",
+ "downcastRemoveRow",
+ "convertParagraphInTableCell",
+ "isSingleParagraphWithoutAttributes"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/converters/table-cell-paragraph-post-fixer.js": {
+ "id": "../ckeditor5-table/src/converters/table-cell-paragraph-post-fixer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/converters/table-cell-refresh-post-fixer.js": {
+ "id": "../ckeditor5-table/src/converters/table-cell-refresh-post-fixer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/converters/table-heading-rows-refresh-post-fixer.js": {
+ "id": "../ckeditor5-table/src/converters/table-heading-rows-refresh-post-fixer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/converters/table-layout-post-fixer.js": {
+ "id": "../ckeditor5-table/src/converters/table-layout-post-fixer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/converters/upcasttable.js": {
+ "id": "../ckeditor5-table/src/converters/upcasttable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "skipEmptyTableRow"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/table.js": {
+ "id": "../ckeditor5-table/src/table.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tableclipboard.js": {
+ "id": "../ckeditor5-table/src/tableclipboard.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "getTableIfOnlyTableInContent"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tableediting.js": {
+ "id": "../ckeditor5-table/src/tableediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tablekeyboard.js": {
+ "id": "../ckeditor5-table/src/tablekeyboard.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tablemouse.js": {
+ "id": "../ckeditor5-table/src/tablemouse.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tablemouse/mouseeventsobserver.js": {
+ "id": "../ckeditor5-table/src/tablemouse/mouseeventsobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tableselection.js": {
+ "id": "../ckeditor5-table/src/tableselection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tabletoolbar.js": {
+ "id": "../ckeditor5-table/src/tabletoolbar.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tableui.js": {
+ "id": "../ckeditor5-table/src/tableui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tableutils.js": {
+ "id": "../ckeditor5-table/src/tableutils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/tablewalker.js": {
+ "id": "../ckeditor5-table/src/tablewalker.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/ui/inserttableview.js": {
+ "id": "../ckeditor5-table/src/ui/inserttableview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/utils/common.js": {
+ "id": "../ckeditor5-table/src/utils/common.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "updateNumericAttribute",
+ "createEmptyTableCell",
+ "isHeadingColumnCell"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/utils/selection.js": {
+ "id": "../ckeditor5-table/src/utils/selection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "getSelectedTableCells",
+ "getTableCellsContainingSelection",
+ "getSelectionAffectedTableCells",
+ "getRowIndexes",
+ "getColumnIndexes",
+ "isSelectionRectangular",
+ "sortRanges"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/utils/structure.js": {
+ "id": "../ckeditor5-table/src/utils/structure.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "cropTableToDimensions",
+ "getVerticallyOverlappingCells",
+ "splitHorizontally",
+ "getHorizontallyOverlappingCells",
+ "splitVertically",
+ "trimTableCellIfNeeded",
+ "removeEmptyColumns",
+ "removeEmptyRows",
+ "removeEmptyRowsColumns",
+ "adjustLastRowIndex",
+ "adjustLastColumnIndex"
+ ]
+ }
+ },
+ "../ckeditor5-table/src/utils/ui/widget.js": {
+ "id": "../ckeditor5-table/src/utils/ui/widget.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "getSelectedTableWidget",
+ "getTableWidgetAncestor"
+ ]
+ }
+ },
+ "../ckeditor5-table/theme/icons/table-column.svg": {
+ "id": "../ckeditor5-table/theme/icons/table-column.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/theme/icons/table-merge-cell.svg": {
+ "id": "../ckeditor5-table/theme/icons/table-merge-cell.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/theme/icons/table-row.svg": {
+ "id": "../ckeditor5-table/theme/icons/table-row.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/theme/icons/table.svg": {
+ "id": "../ckeditor5-table/theme/icons/table.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-table/theme/inserttable.css": {
+ "id": "../ckeditor5-table/theme/inserttable.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-table/theme/table.css": {
+ "id": "../ckeditor5-table/theme/table.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-table/theme/tableediting.css": {
+ "id": "../ckeditor5-table/theme/tableediting.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-table/theme/tableselection.css": {
+ "id": "../ckeditor5-table/theme/tableselection.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-typing/src/delete.js": {
+ "id": "../ckeditor5-typing/src/delete.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/deletecommand.js": {
+ "id": "../ckeditor5-typing/src/deletecommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/deleteobserver.js": {
+ "id": "../ckeditor5-typing/src/deleteobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/input.js": {
+ "id": "../ckeditor5-typing/src/input.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/inputcommand.js": {
+ "id": "../ckeditor5-typing/src/inputcommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/texttransformation.js": {
+ "id": "../ckeditor5-typing/src/texttransformation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/textwatcher.js": {
+ "id": "../ckeditor5-typing/src/textwatcher.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/twostepcaretmovement.js": {
+ "id": "../ckeditor5-typing/src/twostepcaretmovement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/typing.js": {
+ "id": "../ckeditor5-typing/src/typing.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/utils/changebuffer.js": {
+ "id": "../ckeditor5-typing/src/utils/changebuffer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/utils/findattributerange.js": {
+ "id": "../ckeditor5-typing/src/utils/findattributerange.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/utils/getlasttextline.js": {
+ "id": "../ckeditor5-typing/src/utils/getlasttextline.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/utils/injecttypingmutationshandling.js": {
+ "id": "../ckeditor5-typing/src/utils/injecttypingmutationshandling.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js": {
+ "id": "../ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "isNonTypingKeystroke"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/utils/inlinehighlight.js": {
+ "id": "../ckeditor5-typing/src/utils/inlinehighlight.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-typing/src/utils/utils.js": {
+ "id": "../ckeditor5-typing/src/utils/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "containerChildrenMutated",
+ "getSingleTextNodeChange",
+ "compareChildNodes"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/bindings/clickoutsidehandler.js": {
+ "id": "../ckeditor5-ui/src/bindings/clickoutsidehandler.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/bindings/preventdefault.js": {
+ "id": "../ckeditor5-ui/src/bindings/preventdefault.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/bindings/submithandler.js": {
+ "id": "../ckeditor5-ui/src/bindings/submithandler.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/button/buttonview.js": {
+ "id": "../ckeditor5-ui/src/button/buttonview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/button/switchbuttonview.js": {
+ "id": "../ckeditor5-ui/src/button/switchbuttonview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/componentfactory.js": {
+ "id": "../ckeditor5-ui/src/componentfactory.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js": {
+ "id": "../ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/dropdown/button/splitbuttonview.js": {
+ "id": "../ckeditor5-ui/src/dropdown/button/splitbuttonview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/dropdown/dropdownpanelview.js": {
+ "id": "../ckeditor5-ui/src/dropdown/dropdownpanelview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/dropdown/dropdownview.js": {
+ "id": "../ckeditor5-ui/src/dropdown/dropdownview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/dropdown/utils.js": {
+ "id": "../ckeditor5-ui/src/dropdown/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "createDropdown",
+ "addToolbarToDropdown",
+ "addListToDropdown"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/editableui/editableuiview.js": {
+ "id": "../ckeditor5-ui/src/editableui/editableuiview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/editableui/inline/inlineeditableuiview.js": {
+ "id": "../ckeditor5-ui/src/editableui/inline/inlineeditableuiview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/editorui/bodycollection.js": {
+ "id": "../ckeditor5-ui/src/editorui/bodycollection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/editorui/boxed/boxededitoruiview.js": {
+ "id": "../ckeditor5-ui/src/editorui/boxed/boxededitoruiview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/editorui/editoruiview.js": {
+ "id": "../ckeditor5-ui/src/editorui/editoruiview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/focuscycler.js": {
+ "id": "../ckeditor5-ui/src/focuscycler.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/icon/iconview.js": {
+ "id": "../ckeditor5-ui/src/icon/iconview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/inputtext/inputtextview.js": {
+ "id": "../ckeditor5-ui/src/inputtext/inputtextview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/label/labelview.js": {
+ "id": "../ckeditor5-ui/src/label/labelview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/labeledfield/labeledfieldview.js": {
+ "id": "../ckeditor5-ui/src/labeledfield/labeledfieldview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/labeledfield/utils.js": {
+ "id": "../ckeditor5-ui/src/labeledfield/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "createLabeledInputText",
+ "createLabeledDropdown"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/list/listitemview.js": {
+ "id": "../ckeditor5-ui/src/list/listitemview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/list/listseparatorview.js": {
+ "id": "../ckeditor5-ui/src/list/listseparatorview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/list/listview.js": {
+ "id": "../ckeditor5-ui/src/list/listview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/model.js": {
+ "id": "../ckeditor5-ui/src/model.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/notification/notification.js": {
+ "id": "../ckeditor5-ui/src/notification/notification.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/panel/balloon/balloonpanelview.js": {
+ "id": "../ckeditor5-ui/src/panel/balloon/balloonpanelview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/panel/balloon/contextualballoon.js": {
+ "id": "../ckeditor5-ui/src/panel/balloon/contextualballoon.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/panel/sticky/stickypanelview.js": {
+ "id": "../ckeditor5-ui/src/panel/sticky/stickypanelview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/template.js": {
+ "id": "../ckeditor5-ui/src/template.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "TemplateBinding",
+ "TemplateToBinding",
+ "TemplateIfBinding"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/toolbar/enabletoolbarkeyboardfocus.js": {
+ "id": "../ckeditor5-ui/src/toolbar/enabletoolbarkeyboardfocus.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js": {
+ "id": "../ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/toolbar/toolbarseparatorview.js": {
+ "id": "../ckeditor5-ui/src/toolbar/toolbarseparatorview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/toolbar/toolbarview.js": {
+ "id": "../ckeditor5-ui/src/toolbar/toolbarview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/tooltip/tooltipview.js": {
+ "id": "../ckeditor5-ui/src/tooltip/tooltipview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/view.js": {
+ "id": "../ckeditor5-ui/src/view.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/src/viewcollection.js": {
+ "id": "../ckeditor5-ui/src/viewcollection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/theme/components/button/button.css": {
+ "id": "../ckeditor5-ui/theme/components/button/button.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/button/switchbutton.css": {
+ "id": "../ckeditor5-ui/theme/components/button/switchbutton.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/dropdown/dropdown.css": {
+ "id": "../ckeditor5-ui/theme/components/dropdown/dropdown.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/dropdown/listdropdown.css": {
+ "id": "../ckeditor5-ui/theme/components/dropdown/listdropdown.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/dropdown/splitbutton.css": {
+ "id": "../ckeditor5-ui/theme/components/dropdown/splitbutton.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/dropdown/toolbardropdown.css": {
+ "id": "../ckeditor5-ui/theme/components/dropdown/toolbardropdown.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/editorui/editorui.css": {
+ "id": "../ckeditor5-ui/theme/components/editorui/editorui.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/icon/icon.css": {
+ "id": "../ckeditor5-ui/theme/components/icon/icon.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/inputtext/inputtext.css": {
+ "id": "../ckeditor5-ui/theme/components/inputtext/inputtext.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/label/label.css": {
+ "id": "../ckeditor5-ui/theme/components/label/label.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css": {
+ "id": "../ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/list/list.css": {
+ "id": "../ckeditor5-ui/theme/components/list/list.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/panel/balloonpanel.css": {
+ "id": "../ckeditor5-ui/theme/components/panel/balloonpanel.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/panel/balloonrotator.css": {
+ "id": "../ckeditor5-ui/theme/components/panel/balloonrotator.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/panel/fakepanel.css": {
+ "id": "../ckeditor5-ui/theme/components/panel/fakepanel.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/panel/stickypanel.css": {
+ "id": "../ckeditor5-ui/theme/components/panel/stickypanel.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/responsive-form/responsiveform.css": {
+ "id": "../ckeditor5-ui/theme/components/responsive-form/responsiveform.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/toolbar/toolbar.css": {
+ "id": "../ckeditor5-ui/theme/components/toolbar/toolbar.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/components/tooltip/tooltip.css": {
+ "id": "../ckeditor5-ui/theme/components/tooltip/tooltip.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/globals/globals.css": {
+ "id": "../ckeditor5-ui/theme/globals/globals.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-ui/theme/icons/dropdown-arrow.svg": {
+ "id": "../ckeditor5-ui/theme/icons/dropdown-arrow.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/theme/icons/next-arrow.svg": {
+ "id": "../ckeditor5-ui/theme/icons/next-arrow.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-ui/theme/icons/previous-arrow.svg": {
+ "id": "../ckeditor5-ui/theme/icons/previous-arrow.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-undo/src/basecommand.js": {
+ "id": "../ckeditor5-undo/src/basecommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-undo/src/redocommand.js": {
+ "id": "../ckeditor5-undo/src/redocommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-undo/src/undo.js": {
+ "id": "../ckeditor5-undo/src/undo.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-undo/src/undocommand.js": {
+ "id": "../ckeditor5-undo/src/undocommand.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-undo/src/undoediting.js": {
+ "id": "../ckeditor5-undo/src/undoediting.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-undo/src/undoui.js": {
+ "id": "../ckeditor5-undo/src/undoui.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-undo/theme/icons/redo.svg": {
+ "id": "../ckeditor5-undo/theme/icons/redo.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-undo/theme/icons/undo.svg": {
+ "id": "../ckeditor5-undo/theme/icons/undo.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-upload/src/filereader.js": {
+ "id": "../ckeditor5-upload/src/filereader.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-upload/src/filerepository.js": {
+ "id": "../ckeditor5-upload/src/filerepository.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-upload/src/ui/filedialogbuttonview.js": {
+ "id": "../ckeditor5-upload/src/ui/filedialogbuttonview.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/ckeditorerror.js": {
+ "id": "../ckeditor5-utils/src/ckeditorerror.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "DOCUMENTATION_URL",
+ "default",
+ "logWarning",
+ "logError"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/collection.js": {
+ "id": "../ckeditor5-utils/src/collection.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/comparearrays.js": {
+ "id": "../ckeditor5-utils/src/comparearrays.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/config.js": {
+ "id": "../ckeditor5-utils/src/config.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/count.js": {
+ "id": "../ckeditor5-utils/src/count.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/diff.js": {
+ "id": "../ckeditor5-utils/src/diff.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/difftochanges.js": {
+ "id": "../ckeditor5-utils/src/difftochanges.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/createelement.js": {
+ "id": "../ckeditor5-utils/src/dom/createelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/emittermixin.js": {
+ "id": "../ckeditor5-utils/src/dom/emittermixin.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/getancestors.js": {
+ "id": "../ckeditor5-utils/src/dom/getancestors.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/getborderwidths.js": {
+ "id": "../ckeditor5-utils/src/dom/getborderwidths.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/getcommonancestor.js": {
+ "id": "../ckeditor5-utils/src/dom/getcommonancestor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/getdatafromelement.js": {
+ "id": "../ckeditor5-utils/src/dom/getdatafromelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/getpositionedancestor.js": {
+ "id": "../ckeditor5-utils/src/dom/getpositionedancestor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/global.js": {
+ "id": "../ckeditor5-utils/src/dom/global.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/indexof.js": {
+ "id": "../ckeditor5-utils/src/dom/indexof.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/insertat.js": {
+ "id": "../ckeditor5-utils/src/dom/insertat.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/isnode.js": {
+ "id": "../ckeditor5-utils/src/dom/isnode.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/isrange.js": {
+ "id": "../ckeditor5-utils/src/dom/isrange.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/istext.js": {
+ "id": "../ckeditor5-utils/src/dom/istext.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/iswindow.js": {
+ "id": "../ckeditor5-utils/src/dom/iswindow.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/position.js": {
+ "id": "../ckeditor5-utils/src/dom/position.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "getOptimalPosition"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/rect.js": {
+ "id": "../ckeditor5-utils/src/dom/rect.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/remove.js": {
+ "id": "../ckeditor5-utils/src/dom/remove.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/resizeobserver.js": {
+ "id": "../ckeditor5-utils/src/dom/resizeobserver.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/scroll.js": {
+ "id": "../ckeditor5-utils/src/dom/scroll.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "scrollViewportToShowTarget",
+ "scrollAncestorsToShowTarget"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/setdatainelement.js": {
+ "id": "../ckeditor5-utils/src/dom/setdatainelement.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/dom/tounit.js": {
+ "id": "../ckeditor5-utils/src/dom/tounit.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/elementreplacer.js": {
+ "id": "../ckeditor5-utils/src/elementreplacer.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/emittermixin.js": {
+ "id": "../ckeditor5-utils/src/emittermixin.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "_getEmitterListenedTo",
+ "_setEmitterId",
+ "_getEmitterId"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/env.js": {
+ "id": "../ckeditor5-utils/src/env.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default",
+ "isMac",
+ "isGecko",
+ "isSafari",
+ "isAndroid",
+ "isBlink",
+ "isRegExpUnicodePropertySupported"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/eventinfo.js": {
+ "id": "../ckeditor5-utils/src/eventinfo.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/fastdiff.js": {
+ "id": "../ckeditor5-utils/src/fastdiff.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/first.js": {
+ "id": "../ckeditor5-utils/src/first.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/focustracker.js": {
+ "id": "../ckeditor5-utils/src/focustracker.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/isiterable.js": {
+ "id": "../ckeditor5-utils/src/isiterable.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/keyboard.js": {
+ "id": "../ckeditor5-utils/src/keyboard.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "keyCodes",
+ "getCode",
+ "parseKeystroke",
+ "getEnvKeystrokeText",
+ "isArrowKeyCode",
+ "getLocalizedArrowKeyCodeDirection",
+ "isForwardArrowKeyCode"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/keystrokehandler.js": {
+ "id": "../ckeditor5-utils/src/keystrokehandler.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/locale.js": {
+ "id": "../ckeditor5-utils/src/locale.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/mix.js": {
+ "id": "../ckeditor5-utils/src/mix.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/objecttomap.js": {
+ "id": "../ckeditor5-utils/src/objecttomap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/observablemixin.js": {
+ "id": "../ckeditor5-utils/src/observablemixin.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/priorities.js": {
+ "id": "../ckeditor5-utils/src/priorities.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/spy.js": {
+ "id": "../ckeditor5-utils/src/spy.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/tomap.js": {
+ "id": "../ckeditor5-utils/src/tomap.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/translation-service.js": {
+ "id": "../ckeditor5-utils/src/translation-service.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "add",
+ "_translate",
+ "_clear"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/uid.js": {
+ "id": "../ckeditor5-utils/src/uid.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/unicode.js": {
+ "id": "../ckeditor5-utils/src/unicode.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "isCombiningMark",
+ "isHighSurrogateHalf",
+ "isLowSurrogateHalf",
+ "isInsideSurrogatePair",
+ "isInsideCombinedSymbol"
+ ]
+ }
+ },
+ "../ckeditor5-utils/src/version.js": {
+ "id": "../ckeditor5-utils/src/version.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": []
+ }
+ },
+ "../ckeditor5-widget/src/highlightstack.js": {
+ "id": "../ckeditor5-widget/src/highlightstack.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-widget/src/utils.js": {
+ "id": "../ckeditor5-widget/src/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "WIDGET_CLASS_NAME",
+ "WIDGET_SELECTED_CLASS_NAME",
+ "isWidget",
+ "toWidget",
+ "setHighlightHandling",
+ "setLabel",
+ "getLabel",
+ "toWidgetEditable",
+ "findOptimalInsertionPosition",
+ "viewToModelPositionOutsideModelElement",
+ "centeredBalloonPositionForLongWidgets"
+ ]
+ }
+ },
+ "../ckeditor5-widget/src/verticalnavigation.js": {
+ "id": "../ckeditor5-widget/src/verticalnavigation.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-widget/src/widget.js": {
+ "id": "../ckeditor5-widget/src/widget.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-widget/src/widgettoolbarrepository.js": {
+ "id": "../ckeditor5-widget/src/widgettoolbarrepository.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-widget/src/widgettypearound/utils.js": {
+ "id": "../ckeditor5-widget/src/widgettypearound/utils.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "TYPE_AROUND_SELECTION_ATTRIBUTE",
+ "isTypeAroundWidget",
+ "getClosestTypeAroundDomButton",
+ "getTypeAroundButtonPosition",
+ "getClosestWidgetViewElement",
+ "getTypeAroundFakeCaretPosition"
+ ]
+ }
+ },
+ "../ckeditor5-widget/src/widgettypearound/widgettypearound.js": {
+ "id": "../ckeditor5-widget/src/widgettypearound/widgettypearound.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-widget/theme/icons/drag-handle.svg": {
+ "id": "../ckeditor5-widget/theme/icons/drag-handle.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-widget/theme/icons/return-arrow.svg": {
+ "id": "../ckeditor5-widget/theme/icons/return-arrow.svg",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ },
+ "../ckeditor5-widget/theme/widget.css": {
+ "id": "../ckeditor5-widget/theme/widget.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "../ckeditor5-widget/theme/widgettypearound.css": {
+ "id": "../ckeditor5-widget/theme/widgettypearound.css",
+ "buildMeta": {
+ "moduleConcatenationBailout": "module.id",
+ "providedExports": true
+ }
+ },
+ "./src/ckeditor.js": {
+ "id": "./src/ckeditor.js",
+ "buildMeta": {
+ "exportsType": "namespace",
+ "providedExports": [
+ "default"
+ ]
+ }
+ }
+ }
+}
diff --git a/inc/ckeditor5/ckeditor.js b/inc/ckeditor5/ckeditor.js
new file mode 100644
index 0000000..0449c1c
--- /dev/null
+++ b/inc/ckeditor5/ckeditor.js
@@ -0,0 +1,29123 @@
+/*!
+ * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+!function (e) {
+ const t = e.en = e.en || {};
+ t.dictionary = Object.assign(t.dictionary || {}, {
+ "%0 of %1": "%0 of %1",
+ Aquamarine: "Aquamarine",
+ Black: "Black",
+ "Block quote": "Block quote",
+ Blue: "Blue",
+ Bold: "Bold",
+ "Bulleted List": "Bulleted List",
+ Cancel: "Cancel",
+ "Cannot upload file:": "Cannot upload file:",
+ "Centered image": "Centered image",
+ "Change image text alternative": "Change image text alternative",
+ "Choose heading": "Choose heading",
+ Column: "Column",
+ "Could not insert image at the current position.": "Could not insert image at the current position.",
+ "Could not obtain resized image URL.": "Could not obtain resized image URL.",
+ "Decrease indent": "Decrease indent",
+ "Delete column": "Delete column",
+ "Delete row": "Delete row",
+ "Dim grey": "Dim grey",
+ Downloadable: "Downloadable",
+ "Dropdown toolbar": "Dropdown toolbar",
+ "Edit block": "Edit block",
+ "Edit link": "Edit link",
+ "Editor toolbar": "Editor toolbar",
+ "Enter image caption": "Enter image caption",
+ "Full size image": "Full size image",
+ Green: "Green",
+ Grey: "Grey",
+ "Header column": "Header column",
+ "Header row": "Header row",
+ Heading: "Heading",
+ "Heading 1": "Heading 1",
+ "Heading 2": "Heading 2",
+ "Heading 3": "Heading 3",
+ "Heading 4": "Heading 4",
+ "Heading 5": "Heading 5",
+ "Heading 6": "Heading 6",
+ "Image toolbar": "Image toolbar",
+ "image widget": "image widget",
+ "Increase indent": "Increase indent",
+ "Insert column left": "Insert column left",
+ "Insert column right": "Insert column right",
+ "Insert image": "Insert image",
+ "Insert image or file": "Insert image or file",
+ "Insert media": "Insert media",
+ "Insert paragraph after block": "Insert paragraph after block",
+ "Insert paragraph before block": "Insert paragraph before block",
+ "Insert row above": "Insert row above",
+ "Insert row below": "Insert row below",
+ "Insert table": "Insert table",
+ "Inserting image failed": "Inserting image failed",
+ Italic: "Italic",
+ "Left aligned image": "Left aligned image",
+ "Light blue": "Light blue",
+ "Light green": "Light green",
+ "Light grey": "Light grey",
+ Link: "Link",
+ "Link URL": "Link URL",
+ "Media URL": "Media URL",
+ "media widget": "media widget",
+ "Merge cell down": "Merge cell down",
+ "Merge cell left": "Merge cell left",
+ "Merge cell right": "Merge cell right",
+ "Merge cell up": "Merge cell up",
+ "Merge cells": "Merge cells",
+ Next: "Next",
+ "Numbered List": "Numbered List",
+ "Open in a new tab": "Open in a new tab",
+ "Open link in new tab": "Open link in new tab",
+ Orange: "Orange",
+ Paragraph: "Paragraph",
+ "Paste the media URL in the input.": "Paste the media URL in the input.",
+ Previous: "Previous",
+ Purple: "Purple",
+ Red: "Red",
+ Redo: "Redo",
+ "Rich Text Editor": "Rich Text Editor",
+ "Rich Text Editor, %0": "Rich Text Editor, %0",
+ "Right aligned image": "Right aligned image",
+ Row: "Row",
+ Save: "Save",
+ "Select all": "Select all",
+ "Select column": "Select column",
+ "Select row": "Select row",
+ "Selecting resized image failed": "Selecting resized image failed",
+ "Show more items": "Show more items",
+ "Side image": "Side image",
+ "Split cell horizontally": "Split cell horizontally",
+ "Split cell vertically": "Split cell vertically",
+ "Table toolbar": "Table toolbar",
+ "Text alternative": "Text alternative",
+ "The URL must not be empty.": "The URL must not be empty.",
+ "This link has no URL": "This link has no URL",
+ "This media URL is not supported.": "This media URL is not supported.",
+ "Tip: Paste the URL into the content to embed faster.": "Tip: Paste the URL into the content to embed faster.",
+ Turquoise: "Turquoise",
+ Undo: "Undo",
+ Unlink: "Unlink",
+ "Upload failed": "Upload failed",
+ "Upload in progress": "Upload in progress",
+ White: "White",
+ "Widget toolbar": "Widget toolbar",
+ Yellow: "Yellow"
+ })
+}
+(window.CKEDITOR_TRANSLATIONS || (window.CKEDITOR_TRANSLATIONS = {})), function (e, t) {
+ "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.ClassicEditor = t() : e.ClassicEditor = t()
+}
+(window, (function () {
+ return function (e) {
+ var t = {};
+ function i(n) {
+ if (t[n])
+ return t[n].exports;
+ var o = t[n] = {
+ i: n,
+ l: !1,
+ exports: {}
+ };
+ return e[n].call(o.exports, o, o.exports, i),
+ o.l = !0,
+ o.exports
+ }
+ return i.m = e,
+ i.c = t,
+ i.d = function (e, t, n) {
+ i.o(e, t) || Object.defineProperty(e, t, {
+ enumerable: !0,
+ get: n
+ })
+ },
+ i.r = function (e) {
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
+ value: "Module"
+ }),
+ Object.defineProperty(e, "__esModule", {
+ value: !0
+ })
+ },
+ i.t = function (e, t) {
+ if (1 & t && (e = i(e)), 8 & t)
+ return e;
+ if (4 & t && "object" == typeof e && e && e.__esModule)
+ return e;
+ var n = Object.create(null);
+ if (i.r(n), Object.defineProperty(n, "default", {
+ enumerable: !0,
+ value: e
+ }), 2 & t && "string" != typeof e)
+ for (var o in e)
+ i.d(n, o, function (t) {
+ return e[t]
+ }
+ .bind(null, o));
+ return n
+ },
+ i.n = function (e) {
+ var t = e && e.__esModule ? function () {
+ return e.default
+ }
+ : function () {
+ return e
+ };
+ return i.d(t, "a", t),
+ t
+ },
+ i.o = function (e, t) {
+ return Object.prototype.hasOwnProperty.call(e, t)
+ },
+ i.p = "",
+ i(i.s = 108)
+ }
+ ([function (e, t, i) {
+ "use strict";
+ i.d(t, "a", (function () {
+ return n
+ })),
+ i.d(t, "b", (function () {
+ return o
+ }));
+ class n extends Error {
+ constructor(e, t, i) {
+ super(`${e}${i?" "+JSON.stringify(i):""}${r(e)}`),
+ this.name = "CKEditorError",
+ this.context = t,
+ this.data = i
+ }
+ is(e) {
+ return "CKEditorError" === e
+ }
+ static rethrowUnexpectedError(e, t) {
+ if (e.is && e.is("CKEditorError"))
+ throw e;
+ const i = new n(e.message, t);
+ throw i.stack = e.stack,
+ i
+ }
+ }
+ function o(e, t) {
+ console.warn(...s(e, t))
+ }
+ function r(e) {
+ return "\nRead more: https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html#error-" + e
+ }
+ function s(e, t) {
+ const i = r(e);
+ return t ? [e, t, i] : [e, i]
+ }
+ }, function (e, t, i) {
+ "use strict";
+ var n,
+ o = function () {
+ return void 0 === n && (n = Boolean(window && document && document.all && !window.atob)),
+ n
+ },
+ r = function () {
+ var e = {};
+ return function (t) {
+ if (void 0 === e[t]) {
+ var i = document.querySelector(t);
+ if (window.HTMLIFrameElement && i instanceof window.HTMLIFrameElement)
+ try {
+ i = i.contentDocument.head
+ } catch (e) {
+ i = null
+ }
+ e[t] = i
+ }
+ return e[t]
+ }
+ }
+ (),
+ s = [];
+ function a(e) {
+ for (var t = -1, i = 0; i < s.length; i++)
+ if (s[i].identifier === e) {
+ t = i;
+ break
+ }
+ return t
+ }
+ function c(e, t) {
+ for (var i = {}, n = [], o = 0; o < e.length; o++) {
+ var r = e[o],
+ c = t.base ? r[0] + t.base : r[0],
+ l = i[c] || 0,
+ d = "".concat(c, " ").concat(l);
+ i[c] = l + 1;
+ var u = a(d),
+ h = {
+ css: r[1],
+ media: r[2],
+ sourceMap: r[3]
+ };
+ -1 !== u ? (s[u].references++, s[u].updater(h)) : s.push({
+ identifier: d,
+ updater: p(h, t),
+ references: 1
+ }),
+ n.push(d)
+ }
+ return n
+ }
+ function l(e) {
+ var t = document.createElement("style"),
+ n = e.attributes || {};
+ if (void 0 === n.nonce) {
+ var o = i.nc;
+ o && (n.nonce = o)
+ }
+ if (Object.keys(n).forEach((function (e) {
+ t.setAttribute(e, n[e])
+ })), "function" == typeof e.insert)
+ e.insert(t);
+ else {
+ var s = r(e.insert || "head");
+ if (!s)
+ throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
+ s.appendChild(t)
+ }
+ return t
+ }
+ var d,
+ u = (d = [], function (e, t) {
+ return d[e] = t,
+ d.filter(Boolean).join("\n")
+ });
+ function h(e, t, i, n) {
+ var o = i ? "" : n.media ? "@media ".concat(n.media, " {").concat(n.css, "}") : n.css;
+ if (e.styleSheet)
+ e.styleSheet.cssText = u(t, o);
+ else {
+ var r = document.createTextNode(o),
+ s = e.childNodes;
+ s[t] && e.removeChild(s[t]),
+ s.length ? e.insertBefore(r, s[t]) : e.appendChild(r)
+ }
+ }
+ function f(e, t, i) {
+ var n = i.css,
+ o = i.media,
+ r = i.sourceMap;
+ if (o ? e.setAttribute("media", o) : e.removeAttribute("media"), r && "undefined" != typeof btoa && (n += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r)))), " */")), e.styleSheet)
+ e.styleSheet.cssText = n;
+ else {
+ for (; e.firstChild; )
+ e.removeChild(e.firstChild);
+ e.appendChild(document.createTextNode(n))
+ }
+ }
+ var g = null,
+ m = 0;
+ function p(e, t) {
+ var i,
+ n,
+ o;
+ if (t.singleton) {
+ var r = m++;
+ i = g || (g = l(t)),
+ n = h.bind(null, i, r, !1),
+ o = h.bind(null, i, r, !0)
+ } else
+ i = l(t), n = f.bind(null, i, t), o = function () {
+ !function (e) {
+ if (null === e.parentNode)
+ return !1;
+ e.parentNode.removeChild(e)
+ }
+ (i)
+ };
+ return n(e),
+ function (t) {
+ if (t) {
+ if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap)
+ return;
+ n(e = t)
+ } else
+ o()
+ }
+ }
+ e.exports = function (e, t) {
+ (t = t || {}).singleton || "boolean" == typeof t.singleton || (t.singleton = o());
+ var i = c(e = e || [], t);
+ return function (e) {
+ if (e = e || [], "[object Array]" === Object.prototype.toString.call(e)) {
+ for (var n = 0; n < i.length; n++) {
+ var o = a(i[n]);
+ s[o].references--
+ }
+ for (var r = c(e, t), l = 0; l < i.length; l++) {
+ var d = a(i[l]);
+ 0 === s[d].references && (s[d].updater(), s.splice(d, 1))
+ }
+ i = r
+ }
+ }
+ }
+ }, , function (e, t, i) {
+ "use strict";
+ var n = i(8),
+ o = "object" == typeof self && self && self.Object === Object && self,
+ r = n.a || o || Function("return this")();
+ t.a = r
+ }, function (e, t, i) {
+ "use strict";
+ (function (e) {
+ var n = i(3),
+ o = i(13),
+ r = "object" == typeof exports && exports && !exports.nodeType && exports,
+ s = r && "object" == typeof e && e && !e.nodeType && e,
+ a = s && s.exports === r ? n.a.Buffer : void 0,
+ c = (a ? a.isBuffer : void 0) || o.a;
+ t.a = c
+ }).call(this, i(10)(e))
+ }, function (e, t, i) {
+ "use strict";
+ (function (e) {
+ var n = i(8),
+ o = "object" == typeof exports && exports && !exports.nodeType && exports,
+ r = o && "object" == typeof e && e && !e.nodeType && e,
+ s = r && r.exports === o && n.a.process,
+ a = function () {
+ try {
+ var e = r && r.require && r.require("util").types;
+ return e || s && s.binding && s.binding("util")
+ } catch (e) {}
+ }
+ ();
+ t.a = a
+ }).call(this, i(10)(e))
+ }, function (e, t, i) {
+ "use strict";
+ (function (e) {
+ var t = i(0);
+ const n = "object" == typeof window ? window : e;
+ if (n.CKEDITOR_VERSION)
+ throw new t.a("ckeditor-duplicated-modules", null);
+ n.CKEDITOR_VERSION = "27.1.0"
+ }).call(this, i(11))
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(75);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t, i) {
+ "use strict";
+ (function (e) {
+ var i = "object" == typeof e && e && e.Object === Object && e;
+ t.a = i
+ }).call(this, i(11))
+ }, function (e, t, i) {
+ "use strict";
+ (function (e) {
+ var n = i(3),
+ o = "object" == typeof exports && exports && !exports.nodeType && exports,
+ r = o && "object" == typeof e && e && !e.nodeType && e,
+ s = r && r.exports === o ? n.a.Buffer : void 0,
+ a = s ? s.allocUnsafe : void 0;
+ t.a = function (e, t) {
+ if (t)
+ return e.slice();
+ var i = e.length,
+ n = a ? a(i) : new e.constructor(i);
+ return e.copy(n),
+ n
+ }
+ }).call(this, i(10)(e))
+ }, function (e, t) {
+ e.exports = function (e) {
+ if (!e.webpackPolyfill) {
+ var t = Object.create(e);
+ t.children || (t.children = []),
+ Object.defineProperty(t, "loaded", {
+ enumerable: !0,
+ get: function () {
+ return t.l
+ }
+ }),
+ Object.defineProperty(t, "id", {
+ enumerable: !0,
+ get: function () {
+ return t.i
+ }
+ }),
+ Object.defineProperty(t, "exports", {
+ enumerable: !0
+ }),
+ t.webpackPolyfill = 1
+ }
+ return t
+ }
+ }, function (e, t) {
+ var i;
+ i = function () {
+ return this
+ }
+ ();
+ try {
+ i = i || new Function("return this")()
+ } catch (e) {
+ "object" == typeof window && (i = window)
+ }
+ e.exports = i
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(70);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t, i) {
+ "use strict";
+ t.a = function () {
+ return !1
+ }
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(15);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck-hidden{display:none!important}.ck.ck-reset,.ck.ck-reset_all,.ck.ck-reset_all *{box-sizing:border-box;width:auto;height:auto;position:static}:root{--ck-z-default:1;--ck-z-modal:calc(var(--ck-z-default) + 999)}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#c4c4c4;--ck-color-base-action:#61b045;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#198cf0;--ck-color-base-active-focus:#0e7fe1;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:208,79%,51%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#bcdefb;--ck-color-focus-disabled-shadow:rgba(119,186,248,0.3);--ck-color-focus-error-shadow:rgba(255,64,31,0.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,0.15);--ck-color-shadow-drop-active:rgba(0,0,0,0.2);--ck-color-shadow-inner:rgba(0,0,0,0.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#e6e6e6;--ck-color-button-default-active-background:#d9d9d9;--ck-color-button-default-active-shadow:#bfbfbf;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#dedede;--ck-color-button-on-hover-background:#c4c4c4;--ck-color-button-on-active-background:#bababa;--ck-color-button-on-active-shadow:#a1a1a1;--ck-color-button-on-disabled-background:#dedede;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#579e3d;--ck-color-button-action-active-background:#53973b;--ck-color-button-action-active-shadow:#498433;--ck-color-button-action-disabled-background:#7ec365;--ck-color-button-action-text:var(--ck-color-base-background);--ck-color-button-save:#008a00;--ck-color-button-cancel:#db3700;--ck-color-switch-button-off-background:#b0b0b0;--ck-color-switch-button-off-hover-background:#a3a3a3;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#579e3d;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(0,0,0,0.1);--ck-color-dropdown-panel-background:var(--ck-color-base-background);--ck-color-dropdown-panel-border:var(--ck-color-base-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:#c7c7c7;--ck-color-input-error-border:var(--ck-color-base-error);--ck-color-input-text:var(--ck-color-base-text);--ck-color-input-disabled-background:#f2f2f2;--ck-color-input-disabled-border:#c7c7c7;--ck-color-input-disabled-text:#757575;--ck-color-list-background:var(--ck-color-base-background);--ck-color-list-button-hover-background:var(--ck-color-button-default-hover-background);--ck-color-list-button-on-background:var(--ck-color-base-active);--ck-color-list-button-on-background-focus:var(--ck-color-base-active-focus);--ck-color-list-button-on-text:var(--ck-color-base-background);--ck-color-panel-background:var(--ck-color-base-background);--ck-color-panel-border:var(--ck-color-base-border);--ck-color-toolbar-background:var(--ck-color-base-foreground);--ck-color-toolbar-border:var(--ck-color-base-border);--ck-color-tooltip-background:var(--ck-color-base-text);--ck-color-tooltip-text:var(--ck-color-base-background);--ck-color-engine-placeholder-text:#707070;--ck-color-upload-bar-background:#6cb5f9;--ck-color-link-default:#0000f0;--ck-color-link-selected-background:rgba(31,177,255,0.1);--ck-color-link-fake-selection:rgba(31,177,255,0.3);--ck-disabled-opacity:.5;--ck-focus-outer-shadow-geometry:0 0 0 3px;--ck-focus-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);--ck-focus-disabled-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);--ck-focus-error-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);--ck-focus-ring:1px solid var(--ck-color-focus-border);--ck-font-size-base:13px;--ck-line-height-base:1.84615;--ck-font-face:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;--ck-font-size-tiny:0.7em;--ck-font-size-small:0.75em;--ck-font-size-normal:1em;--ck-font-size-big:1.4em;--ck-font-size-large:1.8em;--ck-ui-component-min-height:2.3em}.ck.ck-reset,.ck.ck-reset_all,.ck.ck-reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;vertical-align:middle;transition:none;word-wrap:break-word}.ck.ck-reset_all,.ck.ck-reset_all *{border-collapse:collapse;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);color:var(--ck-color-text);text-align:left;white-space:nowrap;cursor:auto;float:none}.ck.ck-reset_all .ck-rtl *{text-align:right}.ck.ck-reset_all iframe{vertical-align:inherit}.ck.ck-reset_all textarea{white-space:pre-wrap}.ck.ck-reset_all input[type=password],.ck.ck-reset_all input[type=text],.ck.ck-reset_all textarea{cursor:text}.ck.ck-reset_all input[type=password][disabled],.ck.ck-reset_all input[type=text][disabled],.ck.ck-reset_all textarea[disabled]{cursor:default}.ck.ck-reset_all fieldset{padding:10px;border:2px groove #dfdee3}.ck.ck-reset_all button::-moz-focus-inner{padding:0;border:0}.ck[dir=rtl],.ck[dir=rtl] .ck{text-align:right}:root{--ck-border-radius:2px;--ck-inner-shadow:2px 2px 3px var(--ck-color-shadow-inner) inset;--ck-drop-shadow:0 1px 2px 1px var(--ck-color-shadow-drop);--ck-drop-shadow-active:0 3px 6px 1px var(--ck-color-shadow-drop-active);--ck-spacing-unit:0.6em;--ck-spacing-large:calc(var(--ck-spacing-unit)*1.5);--ck-spacing-standard:var(--ck-spacing-unit);--ck-spacing-medium:calc(var(--ck-spacing-unit)*0.8);--ck-spacing-small:calc(var(--ck-spacing-unit)*0.5);--ck-spacing-tiny:calc(var(--ck-spacing-unit)*0.3);--ck-spacing-extra-tiny:calc(var(--ck-spacing-unit)*0.16)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(17);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{width:var(--ck-icon-size);height:var(--ck-icon-size);font-size:.8333350694em;will-change:transform}.ck.ck-icon,.ck.ck-icon *{color:inherit;cursor:inherit}.ck.ck-icon :not([fill]){fill:currentColor}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(19);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = '.ck.ck-tooltip,.ck.ck-tooltip .ck-tooltip__text:after{position:absolute;pointer-events:none;-webkit-backface-visibility:hidden}.ck.ck-tooltip{visibility:hidden;opacity:0;display:none;z-index:var(--ck-z-modal)}.ck.ck-tooltip .ck-tooltip__text{display:inline-block}.ck.ck-tooltip .ck-tooltip__text:after{content:"";width:0;height:0}:root{--ck-tooltip-arrow-size:5px}.ck.ck-tooltip{left:50%;top:0;transition:opacity .2s ease-in-out .2s}.ck.ck-tooltip .ck-tooltip__text{border-radius:0}.ck-rounded-corners .ck.ck-tooltip .ck-tooltip__text,.ck.ck-tooltip .ck-tooltip__text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-tooltip .ck-tooltip__text{font-size:.9em;line-height:1.5;color:var(--ck-color-tooltip-text);padding:var(--ck-spacing-small) var(--ck-spacing-medium);background:var(--ck-color-tooltip-background);position:relative;left:-50%}.ck.ck-tooltip .ck-tooltip__text:after{transition:opacity .2s ease-in-out .2s;border-style:solid;left:50%}.ck.ck-tooltip.ck-tooltip_s,.ck.ck-tooltip.ck-tooltip_se,.ck.ck-tooltip.ck-tooltip_sw{bottom:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateY(100%)}.ck.ck-tooltip.ck-tooltip_s .ck-tooltip__text:after,.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text:after,.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text:after{top:calc(var(--ck-tooltip-arrow-size)*-1 + 1px);transform:translateX(-50%);border-left-color:transparent;border-bottom-color:var(--ck-color-tooltip-background);border-right-color:transparent;border-top-color:transparent;border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:var(--ck-tooltip-arrow-size);border-right-width:var(--ck-tooltip-arrow-size);border-top-width:0}.ck.ck-tooltip.ck-tooltip_sw{right:50%;left:auto}.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text{left:auto;right:calc(var(--ck-tooltip-arrow-size)*-2)}.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text:after{left:auto;right:0}.ck.ck-tooltip.ck-tooltip_se{left:50%;right:auto}.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text{right:auto;left:calc(var(--ck-tooltip-arrow-size)*-2)}.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text:after{right:auto;left:0;transform:translateX(50%)}.ck.ck-tooltip.ck-tooltip_n{top:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateY(-100%)}.ck.ck-tooltip.ck-tooltip_n .ck-tooltip__text:after{bottom:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateX(-50%);border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent;border-top-color:var(--ck-color-tooltip-background);border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:0;border-right-width:var(--ck-tooltip-arrow-size);border-top-width:var(--ck-tooltip-arrow-size)}.ck.ck-tooltip.ck-tooltip_e{left:calc(100% + var(--ck-tooltip-arrow-size));top:50%}.ck.ck-tooltip.ck-tooltip_e .ck-tooltip__text{left:0;transform:translateY(-50%)}.ck.ck-tooltip.ck-tooltip_e .ck-tooltip__text:after{left:calc(var(--ck-tooltip-arrow-size)*-1);top:calc(50% - var(--ck-tooltip-arrow-size)*1);border-left-color:transparent;border-bottom-color:transparent;border-right-color:var(--ck-color-tooltip-background);border-top-color:transparent;border-left-width:0;border-bottom-width:var(--ck-tooltip-arrow-size);border-right-width:var(--ck-tooltip-arrow-size);border-top-width:var(--ck-tooltip-arrow-size)}.ck.ck-tooltip.ck-tooltip_w{right:calc(100% + var(--ck-tooltip-arrow-size));left:auto;top:50%}.ck.ck-tooltip.ck-tooltip_w .ck-tooltip__text{left:0;transform:translateY(-50%)}.ck.ck-tooltip.ck-tooltip_w .ck-tooltip__text:after{left:100%;top:calc(50% - var(--ck-tooltip-arrow-size)*1);border-left-color:var(--ck-color-tooltip-background);border-bottom-color:transparent;border-right-color:transparent;border-top-color:transparent;border-left-width:var(--ck-tooltip-arrow-size);border-bottom-width:var(--ck-tooltip-arrow-size);border-right-width:0;border-top-width:var(--ck-tooltip-arrow-size)}'
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(21);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-button,a.ck.ck-button{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:block}@media (hover:none){.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:none}}.ck.ck-button,a.ck.ck-button{position:relative;display:inline-flex;align-items:center;justify-content:left}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button:hover .ck-tooltip,a.ck.ck-button:hover .ck-tooltip{visibility:visible;opacity:1}.ck.ck-button:focus:not(:hover) .ck-tooltip,a.ck.ck-button:focus:not(:hover) .ck-tooltip{display:none}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-default-active-shadow)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{white-space:nowrap;cursor:default;vertical-align:middle;padding:var(--ck-spacing-tiny);text-align:center;min-width:var(--ck-ui-component-min-height);min-height:var(--ck-ui-component-min-height);line-height:1;font-size:inherit;border:1px solid transparent;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;-webkit-appearance:none}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{font-size:inherit;font-weight:inherit;color:inherit;cursor:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__icon{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-right:calc(var(--ck-spacing-small)*-1);margin-left:var(--ck-spacing-small)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-on-active-shadow)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-action-active-shadow)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(23);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:1.0769230769em;--ck-switch-button-toggle-spacing:1px;--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - var(--ck-switch-button-toggle-spacing)*2)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{transition:background .4s ease;width:var(--ck-switch-button-toggle-width);background:var(--ck-color-switch-button-off-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*0.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{margin:var(--ck-switch-button-toggle-spacing);width:var(--ck-switch-button-toggle-inner-size);height:var(--ck-switch-button-toggle-inner-size);background:var(--ck-color-switch-button-inner-background);transition:all .3s ease}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var(--ck-switch-button-translation))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var(--ck-switch-button-translation)*-1))}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(25);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#000}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{width:var(--ck-color-grid-tile-size);height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;border:0}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-table__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{display:none;color:var(--ck-color-color-grid-check-icon)}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(27);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button .ck-tooltip{display:none}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__action{border-top-right-radius:unset;border-bottom-right-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__action{border-top-left-radius:unset;border-bottom-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-radius:0}.ck-rounded-corners [dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow,[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:unset;border-bottom-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-top-right-radius:unset;border-bottom-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled){border-left-color:var(--ck-color-split-button-hover-border)}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled){border-right-color:var(--ck-color-split-button-hover-border)}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(29);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on .ck-tooltip{display:none}.ck.ck-dropdown .ck-dropdown__panel{-webkit-backface-visibility:hidden;display:none;z-index:var(--ck-z-modal);max-width:var(--ck-dropdown-max-width);position:absolute}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{top:100%;bottom:auto}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{width:7em;overflow:hidden;text-overflow:ellipsis}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{box-shadow:var(--ck-drop-shadow),0 0;background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(31);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-toolbar{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-flow:row nowrap;align-items:center}.ck.ck-toolbar>.ck-toolbar__items{display:flex;flex-flow:row wrap;align-items:center;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);padding:0 var(--ck-spacing-small);border:1px solid var(--ck-color-toolbar-border)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;width:1px;min-width:1px;background:var(--ck-color-toolbar-border);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{width:100%;margin:0;border-radius:0;border:0}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=rtl].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ck.ck-toolbar[dir=ltr].ck-toolbar_compact>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr].ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child){margin-right:var(--ck-spacing-small)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(33);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-list{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{list-style-type:none;background:var(--ck-color-list-background)}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{min-height:unset;width:100%;text-align:left;border-radius:0;padding:calc(var(--ck-line-height-base)*0.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*0.4*var(--ck-font-size-base))}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{height:1px;width:100%;background:var(--ck-color-base-border)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(35);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{width:max-content;max-width:var(--ck-toolbar-dropdown-max-width)}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(37);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(39);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-focused{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0}.ck.ck-editor__editable_inline{overflow:auto;padding:0 var(--ck-spacing-standard);border:1px solid transparent}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(41);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(43);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-form__header{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{padding:var(--ck-spacing-small) var(--ck-spacing-large);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);border-bottom:1px solid var(--ck-color-base-border)}.ck.ck-form__header .ck-form__header__label{font-weight:700}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(45);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ":root{--ck-input-text-width:18em}.ck.ck-input-text{border-radius:0}.ck-rounded-corners .ck.ck-input-text,.ck.ck-input-text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-text{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);min-width:var(--ck-input-text-width);min-height:var(--ck-ui-component-min-height);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck.ck-input-text:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-input-text[readonly]{border:1px solid var(--ck-color-input-disabled-border);background:var(--ck-color-input-disabled-background);color:var(--ck-color-input-disabled-text)}.ck.ck-input-text[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input-text.ck-error{border-color:var(--ck-color-input-error-border);animation:ck-text-input-shake .3s ease both}.ck.ck-input-text.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-text-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(47);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{pointer-events:none;transform-origin:0 0;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);background:var(--ck-color-labeled-field-label-background);padding:0 calc(var(--ck-font-size-tiny)*0.5);line-height:normal;font-weight:400;text-overflow:ellipsis;overflow:hidden;max-width:100%;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-spacing-medium),calc(var(--ck-font-size-base)*0.6)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-spacing-medium)*-1),calc(var(--ck-font-size-base)*0.6)) scale(1)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));background:transparent;padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(49);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{width:0;height:0;border-style:solid}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:var(--ck-balloon-arrow-height);border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:0}.ck.ck-balloon-panel[class*=arrow_n]:before{border-bottom-color:var(--ck-color-panel-border)}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-left-color:transparent;border-right-color:transparent;border-top-color:transparent}.ck.ck-balloon-panel[class*=arrow_n]:after{border-bottom-color:var(--ck-color-panel-background);margin-top:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-width:var(--ck-balloon-arrow-half-width);border-bottom-width:0;border-right-width:var(--ck-balloon-arrow-half-width);border-top-width:var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-top-color:var(--ck-color-panel-border);filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-left-color:transparent;border-bottom-color:transparent;border-right-color:transparent}.ck.ck-balloon-panel[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background);margin-bottom:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{right:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{right:25%;margin-right:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);bottom:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{right:25%;margin-right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}'
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(51);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck .ck-balloon-rotator__navigation{display:flex;align-items:center;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);margin-bottom:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-right:var(--ck-spacing-standard);margin-left:var(--ck-spacing-small)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(53);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{box-shadow:var(--ck-drop-shadow),0 0;min-height:15px;background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);width:100%;height:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(55);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{z-index:var(--ck-z-modal);position:fixed;top:0}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{top:auto;position:absolute}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{box-shadow:var(--ck-drop-shadow),0 0;border-width:0 1px 1px;border-top-left-radius:0;border-top-right-radius:0}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(57);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(59);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-placeholder,.ck .ck-placeholder{position:relative}.ck.ck-placeholder:before,.ck .ck-placeholder:before{position:absolute;left:0;right:0;content:attr(data-placeholder);pointer-events:none}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-placeholder:before,.ck .ck-placeholder:before{cursor:text;color:var(--ck-color-engine-placeholder-text)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(61);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-editor{position:relative}.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{z-index:var(--ck-z-modal)}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-bottom-width:0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar{border-bottom-width:1px;border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:0}.ck.ck-editor__main>.ck-editor__editable{background:var(--ck-color-base-background);border-radius:0}.ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,.ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused){border-color:var(--ck-color-base-border)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(63);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = '.ck .ck-widget .ck-widget__type-around__button{display:block;position:absolute;overflow:hidden;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{position:absolute;top:50%;left:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{top:calc(var(--ck-widget-outline-thickness)*-0.5);left:min(10%,30px);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-0.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;position:absolute;top:1px;left:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;position:absolute;left:0;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{top:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{width:var(--ck-widget-type-around-button-size);height:var(--ck-widget-type-around-button-size);background:var(--ck-color-widget-type-around-button);border-radius:100px;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);opacity:0;pointer-events:none}.ck .ck-widget .ck-widget__type-around__button svg{width:10px;height:8px;transform:translate(-50%,-50%);transition:transform .5s ease;margin-top:1px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{width:calc(var(--ck-widget-type-around-button-size) - 2px);height:calc(var(--ck-widget-type-around-button-size) - 2px);border-radius:100px;background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3))}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{pointer-events:none;height:1px;animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;outline:1px solid hsla(0,0%,100%,.5);background:var(--ck-color-base-text)}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}'
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(65);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);color:var(--ck-color-resizer-tooltip-text);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);font-size:var(--ck-font-size-tiny);display:block;padding:var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{top:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{top:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-width:var(--ck-widget-outline-thickness);outline-style:solid;outline-color:transparent;transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{outline:none;border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;background-color:var(--ck-color-widget-editable-focus-background)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{padding:4px;box-sizing:border-box;background-color:transparent;opacity:0;transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;transform:translateY(-100%);left:calc(0px - var(--ck-widget-outline-thickness))}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{width:var(--ck-widget-handler-icon-size);height:var(--ck-widget-handler-icon-size);color:var(--ck-color-widget-drag-handler-icon-color)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:1;background-color:var(--ck-color-focus-border)}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(67);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = '.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;position:relative;pointer-events:none}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-0.5);top:calc(var(--ck-clipboard-drop-target-dot-height)*-0.5);border:1px solid var(--ck-clipboard-drop-target-color);background:var(--ck-clipboard-drop-target-color);margin-left:-1px}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{content:"";width:0;height:0;display:block;position:absolute;left:50%;top:calc(var(--ck-clipboard-drop-target-dot-height)*-0.5);transform:translateX(-50%);border-left:calc(var(--ck-clipboard-drop-target-dot-width)*0.5) solid transparent;border-bottom:0 solid transparent;border-right:calc(var(--ck-clipboard-drop-target-dot-width)*0.5) solid transparent;border-top:calc(var(--ck-clipboard-drop-target-dot-height)) solid var(--ck-clipboard-drop-target-color)}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}'
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(69);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck-content blockquote{overflow:hidden;padding-right:1.5em;padding-left:1.5em;margin-left:0;margin-right:0;font-style:italic;border-left:5px solid #ccc}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}"
+ }, function (e, t) {
+ e.exports = ".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(72);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;position:absolute;pointer-events:none;left:0;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{position:absolute;pointer-events:all}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{width:var(--ck-resizer-size);height:var(--ck-resizer-size);background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{top:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{top:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(74);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}"
+ }, function (e, t) {
+ e.exports = '.ck-vertical-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-text-width)*0.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-large);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after,[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}'
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(77);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck-content .image{display:table;clear:both;text-align:center;margin:1em auto}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:50px}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{position:static}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(79);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck-content .image>figcaption{display:table-caption;caption-side:bottom;word-break:break-word;color:#333;background-color:#f7f7f7;padding:.6em;font-size:.75em;outline-offset:-1px}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(81);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ":root{--ck-image-style-spacing:1.5em}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(83);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-editor__editable .image{position:relative}.ck.ck-editor__editable .image .ck-progress-bar{position:absolute;top:0;left:0}.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar{height:2px;width:0;background:var(--ck-color-upload-bar-background);transition:width .1s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(85);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = '.ck-image-upload-complete-icon{display:block;position:absolute;top:10px;right:10px;border-radius:50%}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20px;--ck-image-upload-icon-width:2px}.ck-image-upload-complete-icon{width:var(--ck-image-upload-icon-size);height:var(--ck-image-upload-icon-size);opacity:0;background:var(--ck-color-image-upload-icon-background);animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;animation-fill-mode:forwards,forwards;animation-duration:.5s,.5s;font-size:var(--ck-image-upload-icon-size);animation-delay:0ms,3s}.ck-image-upload-complete-icon:after{left:25%;top:50%;opacity:0;height:0;width:0;transform:scaleX(-1) rotate(135deg);transform-origin:left top;border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);animation-name:ck-upload-complete-icon-check;animation-duration:.5s;animation-delay:.5s;animation-fill-mode:forwards;box-sizing:border-box}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{opacity:1;width:0;height:0}33%{width:.3em;height:0}to{opacity:1;width:.3em;height:.45em}}'
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(87);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = '.ck .ck-upload-placeholder-loader{position:absolute;display:flex;align-items:center;justify-content:center;top:0;left:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px}.ck .ck-image-upload-placeholder{width:100%;margin:0}.ck .ck-upload-placeholder-loader{width:100%;height:100%}.ck .ck-upload-placeholder-loader:before{width:var(--ck-upload-placeholder-loader-size);height:var(--ck-upload-placeholder-loader-size);border-radius:50%;border-top:3px solid var(--ck-color-upload-placeholder-loader);border-right:2px solid transparent;animation:ck-upload-placeholder-loader 1s linear infinite}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}'
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(89);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{height:100%;border-right:1px solid var(--ck-color-base-text);margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(91);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{padding:0;min-width:var(--ck-input-text-width)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical .ck-button{padding:var(--ck-spacing-standard);margin:0;border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border);width:50%}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{border:0;padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(93);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{padding:0 var(--ck-spacing-medium);color:var(--ck-color-link-default);text-overflow:ellipsis;cursor:pointer;max-width:var(--ck-input-text-width);min-width:3em;text-align:center}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{min-width:0;max-width:100%}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(95);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = '.ck-media__wrapper .ck-media__placeholder{display:flex;flex-direction:column;align-items:center}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:block}@media (hover:none){.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-tooltip{display:none}}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url{max-width:100%;position:relative}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url:hover .ck-tooltip{visibility:visible;opacity:1}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text{overflow:hidden;display:block}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck-media__placeholder__icon *{display:none}.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper>:not(.ck-media__placeholder),.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder{pointer-events:none}:root{--ck-media-embed-placeholder-icon-size:3em;--ck-color-media-embed-placeholder-url-text:#757575;--ck-color-media-embed-placeholder-url-text-hover:var(--ck-color-base-text)}.ck-media__wrapper{margin:0 auto}.ck-media__wrapper .ck-media__placeholder{padding:calc(var(--ck-spacing-standard)*3);background:var(--ck-color-base-foreground)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon{min-width:var(--ck-media-embed-placeholder-icon-size);height:var(--ck-media-embed-placeholder-icon-size);margin-bottom:var(--ck-spacing-large);background-position:50%;background-size:cover}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon .ck-icon{width:100%;height:100%}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text{color:var(--ck-color-media-embed-placeholder-url-text);white-space:nowrap;text-align:center;font-style:italic;text-overflow:ellipsis}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:var(--ck-color-media-embed-placeholder-url-text-hover);cursor:pointer;text-decoration:underline}.ck-media__wrapper[data-oembed-url*="open.spotify.com"]{max-width:300px;max-height:380px}.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMDAzLjc4IDEuNjFoNDkuNjIxYzEuNjk0IDAgMy4xOS0uNzk4IDQuMTQ2LTIuMDM3eiIgZmlsbD0iIzVjODhjNSIvPjxwYXRoIGQ9Ik0yMjYuNzQyIDIyMi45ODhjLTkuMjY2IDAtMTYuNzc3IDcuMTctMTYuNzc3IDE2LjAxNC4wMDcgMi43NjIuNjYzIDUuNDc0IDIuMDkzIDcuODc1LjQzLjcwMy44MyAxLjQwOCAxLjE5IDIuMTA3LjMzMy41MDIuNjUgMS4wMDUuOTUgMS41MDguMzQzLjQ3Ny42NzMuOTU3Ljk4OCAxLjQ0IDEuMzEgMS43NjkgMi41IDMuNTAyIDMuNjM3IDUuMTY4Ljc5MyAxLjI3NSAxLjY4MyAyLjY0IDIuNDY2IDMuOTkgMi4zNjMgNC4wOTQgNC4wMDcgOC4wOTIgNC42IDEzLjkxNHYuMDEyYy4xODIuNDEyLjUxNi42NjYuODc5LjY2Ny40MDMtLjAwMS43NjgtLjMxNC45My0uNzk5LjYwMy01Ljc1NiAyLjIzOC05LjcyOSA0LjU4NS0xMy43OTQuNzgyLTEuMzUgMS42NzMtMi43MTUgMi40NjUtMy45OSAxLjEzNy0xLjY2NiAyLjMyOC0zLjQgMy42MzgtNS4xNjkuMzE1LS40ODIuNjQ1LS45NjIuOTg4LTEuNDM5LjMtLjUwMy42MTctMS4wMDYuOTUtMS41MDguMzU5LS43Ljc2LTEuNDA0IDEuMTktMi4xMDcgMS40MjYtMi40MDIgMi01LjExNCAyLjAwNC03Ljg3NSAwLTguODQ0LTcuNTExLTE2LjAxNC0xNi43NzYtMTYuMDE0eiIgZmlsbD0iI2RkNGIzZSIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48ZWxsaXBzZSByeT0iNS41NjQiIHJ4PSI1LjgyOCIgY3k9IjIzOS4wMDIiIGN4PSIyMjYuNzQyIiBmaWxsPSIjODAyZDI3IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0xOTAuMzAxIDIzNy4yODNjLTQuNjcgMC04LjQ1NyAzLjg1My04LjQ1NyA4LjYwNnMzLjc4NiA4LjYwNyA4LjQ1NyA4LjYwN2MzLjA0MyAwIDQuODA2LS45NTggNi4zMzctMi41MTYgMS41My0xLjU1NyAyLjA4Ny0zLjkxMyAyLjA4Ny02LjI5IDAtLjM2Mi0uMDIzLS43MjItLjA2NC0xLjA3OWgtOC4yNTd2My4wNDNoNC44NWMtLjE5Ny43NTktLjUzMSAxLjQ1LTEuMDU4IDEuOTg2LS45NDIuOTU4LTIuMDI4IDEuNTQ4LTMuOTAxIDEuNTQ4LTIuODc2IDAtNS4yMDgtMi4zNzItNS4yMDgtNS4yOTkgMC0yLjkyNiAyLjMzMi01LjI5OSA1LjIwOC01LjI5OSAxLjM5OSAwIDIuNjE4LjQwNyAzLjU4NCAxLjI5M2wyLjM4MS0yLjM4YzAtLjAwMi0uMDAzLS4wMDQtLjAwNC0uMDA1LTEuNTg4LTEuNTI0LTMuNjItMi4yMTUtNS45NTUtMi4yMTV6bTQuNDMgNS42NmwuMDAzLjAwNnYtLjAwM3oiIGZpbGw9IiNmZmYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxNS4xODQgMjUxLjkyOWwtNy45OCA3Ljk3OSAyOC40NzcgMjguNDc1YTUuMjMzIDUuMjMzIDAgMDAuNDQ5LTIuMTIzdi0zMS4xNjVjLS40NjkuNjc1LS45MzQgMS4zNDktMS4zODIgMi4wMDUtLjc5MiAxLjI3NS0xLjY4MiAyLjY0LTIuNDY1IDMuOTktMi4zNDcgNC4wNjUtMy45ODIgOC4wMzgtNC41ODUgMTMuNzk0LS4xNjIuNDg1LS41MjcuNzk4LS45My43OTktLjM2My0uMDAxLS42OTctLjI1NS0uODc5LS42Njd2LS4wMTJjLS41OTMtNS44MjItMi4yMzctOS44Mi00LjYtMTMuOTE0LS43ODMtMS4zNS0xLjY3My0yLjcxNS0yLjQ2Ni0zLjk5LTEuMTM3LTEuNjY2LTIuMzI3LTMuNC0zLjYzNy01LjE2OWwtLjAwMi0uMDAzeiIgZmlsbD0iI2MzYzNjMyIvPjxwYXRoIGQ9Ik0yMTIuOTgzIDI0OC40OTVsLTM2Ljk1MiAzNi45NTN2LjgxMmE1LjIyNyA1LjIyNyAwIDAwNS4yMzggNS4yMzhoMS4wMTVsMzUuNjY2LTM1LjY2NmExMzYuMjc1IDEzNi4yNzUgMCAwMC0yLjc2NC0zLjkgMzcuNTc1IDM3LjU3NSAwIDAwLS45ODktMS40NCAzNS4xMjcgMzUuMTI3IDAgMDAtLjk1LTEuNTA4Yy0uMDgzLS4xNjItLjE3Ni0uMzI2LS4yNjQtLjQ4OXoiIGZpbGw9IiNmZGRjNGYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTIxMS45OTggMjYxLjA4M2wtNi4xNTIgNi4xNTEgMjQuMjY0IDI0LjI2NGguNzgxYTUuMjI3IDUuMjI3IDAgMDA1LjIzOS01LjIzOHYtMS4wNDV6IiBmaWxsPSIjZmZmIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjwvZz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder{background:#4268b3}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05NjcuNDg0IDBINTYuNTE3QzI1LjMwNCAwIDAgMjUuMzA0IDAgNTYuNTE3djkxMC45NjZDMCA5OTguNjk0IDI1LjI5NyAxMDI0IDU2LjUyMiAxMDI0SDU0N1Y2MjhINDE0VjQ3M2gxMzNWMzU5LjAyOWMwLTEzMi4yNjIgODAuNzczLTIwNC4yODIgMTk4Ljc1Ni0yMDQuMjgyIDU2LjUxMyAwIDEwNS4wODYgNC4yMDggMTE5LjI0NCA2LjA4OVYyOTlsLTgxLjYxNi4wMzdjLTYzLjk5MyAwLTc2LjM4NCAzMC40OTItNzYuMzg0IDc1LjIzNlY0NzNoMTUzLjQ4N2wtMTkuOTg2IDE1NUg3MDd2Mzk2aDI2MC40ODRjMzEuMjEzIDAgNTYuNTE2LTI1LjMwMyA1Ni41MTYtNTYuNTE2VjU2LjUxNUMxMDI0IDI1LjMwMyA5OTguNjk3IDAgOTY3LjQ4NCAwIiBmaWxsPSIjRkZGRkZFIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#cdf}.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder{background:linear-gradient(-135deg,#1400c7,#b800b1,#f50000)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTA0IiBoZWlnaHQ9IjUwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIC4xNTloNTAzLjg0MVY1MDMuOTRIMHoiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48cGF0aCBkPSJNMjUxLjkyMS4xNTljLTY4LjQxOCAwLTc2Ljk5Ny4yOS0xMDMuODY3IDEuNTE2LTI2LjgxNCAxLjIyMy00NS4xMjcgNS40ODItNjEuMTUxIDExLjcxLTE2LjU2NiA2LjQzNy0zMC42MTUgMTUuMDUxLTQ0LjYyMSAyOS4wNTYtMTQuMDA1IDE0LjAwNi0yMi42MTkgMjguMDU1LTI5LjA1NiA0NC42MjEtNi4yMjggMTYuMDI0LTEwLjQ4NyAzNC4zMzctMTEuNzEgNjEuMTUxQy4yOSAxNzUuMDgzIDAgMTgzLjY2MiAwIDI1Mi4wOGMwIDY4LjQxNy4yOSA3Ni45OTYgMS41MTYgMTAzLjg2NiAxLjIyMyAyNi44MTQgNS40ODIgNDUuMTI3IDExLjcxIDYxLjE1MSA2LjQzNyAxNi41NjYgMTUuMDUxIDMwLjYxNSAyOS4wNTYgNDQuNjIxIDE0LjAwNiAxNC4wMDUgMjguMDU1IDIyLjYxOSA0NC42MjEgMjkuMDU3IDE2LjAyNCA2LjIyNyAzNC4zMzcgMTAuNDg2IDYxLjE1MSAxMS43MDkgMjYuODcgMS4yMjYgMzUuNDQ5IDEuNTE2IDEwMy44NjcgMS41MTYgNjguNDE3IDAgNzYuOTk2LS4yOSAxMDMuODY2LTEuNTE2IDI2LjgxNC0xLjIyMyA0NS4xMjctNS40ODIgNjEuMTUxLTExLjcwOSAxNi41NjYtNi40MzggMzAuNjE1LTE1LjA1MiA0NC42MjEtMjkuMDU3IDE0LjAwNS0xNC4wMDYgMjIuNjE5LTI4LjA1NSAyOS4wNTctNDQuNjIxIDYuMjI3LTE2LjAyNCAxMC40ODYtMzQuMzM3IDExLjcwOS02MS4xNTEgMS4yMjYtMjYuODcgMS41MTYtMzUuNDQ5IDEuNTE2LTEwMy44NjYgMC02OC40MTgtLjI5LTc2Ljk5Ny0xLjUxNi0xMDMuODY3LTEuMjIzLTI2LjgxNC01LjQ4Mi00NS4xMjctMTEuNzA5LTYxLjE1MS02LjQzOC0xNi41NjYtMTUuMDUyLTMwLjYxNS0yOS4wNTctNDQuNjIxLTE0LjAwNi0xNC4wMDUtMjguMDU1LTIyLjYxOS00NC42MjEtMjkuMDU2LTE2LjAyNC02LjIyOC0zNC4zMzctMTAuNDg3LTYxLjE1MS0xMS43MUMzMjguOTE3LjQ0OSAzMjAuMzM4LjE1OSAyNTEuOTIxLjE1OXptMCA0NS4zOTFjNjcuMjY1IDAgNzUuMjMzLjI1NyAxMDEuNzk3IDEuNDY5IDI0LjU2MiAxLjEyIDM3LjkwMSA1LjIyNCA0Ni43NzggOC42NzQgMTEuNzU5IDQuNTcgMjAuMTUxIDEwLjAyOSAyOC45NjYgMTguODQ1IDguODE2IDguODE1IDE0LjI3NSAxNy4yMDcgMTguODQ1IDI4Ljk2NiAzLjQ1IDguODc3IDcuNTU0IDIyLjIxNiA4LjY3NCA0Ni43NzggMS4yMTIgMjYuNTY0IDEuNDY5IDM0LjUzMiAxLjQ2OSAxMDEuNzk4IDAgNjcuMjY1LS4yNTcgNzUuMjMzLTEuNDY5IDEwMS43OTctMS4xMiAyNC41NjItNS4yMjQgMzcuOTAxLTguNjc0IDQ2Ljc3OC00LjU3IDExLjc1OS0xMC4wMjkgMjAuMTUxLTE4Ljg0NSAyOC45NjYtOC44MTUgOC44MTYtMTcuMjA3IDE0LjI3NS0yOC45NjYgMTguODQ1LTguODc3IDMuNDUtMjIuMjE2IDcuNTU0LTQ2Ljc3OCA4LjY3NC0yNi41NiAxLjIxMi0zNC41MjcgMS40NjktMTAxLjc5NyAxLjQ2OS02Ny4yNzEgMC03NS4yMzctLjI1Ny0xMDEuNzk4LTEuNDY5LTI0LjU2Mi0xLjEyLTM3LjkwMS01LjIyNC00Ni43NzgtOC42NzQtMTEuNzU5LTQuNTctMjAuMTUxLTEwLjAyOS0yOC45NjYtMTguODQ1LTguODE1LTguODE1LTE0LjI3NS0xNy4yMDctMTguODQ1LTI4Ljk2Ni0zLjQ1LTguODc3LTcuNTU0LTIyLjIxNi04LjY3NC00Ni43NzgtMS4yMTItMjYuNTY0LTEuNDY5LTM0LjUzMi0xLjQ2OS0xMDEuNzk3IDAtNjcuMjY2LjI1Ny03NS4yMzQgMS40NjktMTAxLjc5OCAxLjEyLTI0LjU2MiA1LjIyNC0zNy45MDEgOC42NzQtNDYuNzc4IDQuNTctMTEuNzU5IDEwLjAyOS0yMC4xNTEgMTguODQ1LTI4Ljk2NiA4LjgxNS04LjgxNiAxNy4yMDctMTQuMjc1IDI4Ljk2Ni0xOC44NDUgOC44NzctMy40NSAyMi4yMTYtNy41NTQgNDYuNzc4LTguNjc0IDI2LjU2NC0xLjIxMiAzNC41MzItMS40NjkgMTAxLjc5OC0xLjQ2OXoiIGZpbGw9IiNGRkYiIG1hc2s9InVybCgjYikiLz48cGF0aCBkPSJNMjUxLjkyMSAzMzYuMDUzYy00Ni4zNzggMC04My45NzQtMzcuNTk2LTgzLjk3NC04My45NzMgMC00Ni4zNzggMzcuNTk2LTgzLjk3NCA4My45NzQtODMuOTc0IDQ2LjM3NyAwIDgzLjk3MyAzNy41OTYgODMuOTczIDgzLjk3NCAwIDQ2LjM3Ny0zNy41OTYgODMuOTczLTgzLjk3MyA4My45NzN6bTAtMjEzLjMzOGMtNzEuNDQ3IDAtMTI5LjM2NSA1Ny45MTgtMTI5LjM2NSAxMjkuMzY1IDAgNzEuNDQ2IDU3LjkxOCAxMjkuMzY0IDEyOS4zNjUgMTI5LjM2NCA3MS40NDYgMCAxMjkuMzY0LTU3LjkxOCAxMjkuMzY0LTEyOS4zNjQgMC03MS40NDctNTcuOTE4LTEyOS4zNjUtMTI5LjM2NC0xMjkuMzY1ek00MTYuNjI3IDExNy42MDRjMCAxNi42OTYtMTMuNTM1IDMwLjIzLTMwLjIzMSAzMC4yMy0xNi42OTUgMC0zMC4yMy0xMy41MzQtMzAuMjMtMzAuMjMgMC0xNi42OTYgMTMuNTM1LTMwLjIzMSAzMC4yMy0zMC4yMzEgMTYuNjk2IDAgMzAuMjMxIDEzLjUzNSAzMC4yMzEgMzAuMjMxIiBmaWxsPSIjRkZGIi8+PC9nPjwvc3ZnPg==)}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#ffe0fe}.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder{background:linear-gradient(90deg,#71c6f4,#0d70a5)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIj48cGF0aCBkPSJNNDAwIDIwMGMwIDExMC41LTg5LjUgMjAwLTIwMCAyMDBTMCAzMTAuNSAwIDIwMCA4OS41IDAgMjAwIDBzMjAwIDg5LjUgMjAwIDIwMHpNMTYzLjQgMzA1LjVjODguNyAwIDEzNy4yLTczLjUgMTM3LjItMTM3LjIgMC0yLjEgMC00LjItLjEtNi4yIDkuNC02LjggMTcuNi0xNS4zIDI0LjEtMjUtOC42IDMuOC0xNy45IDYuNC0yNy43IDcuNiAxMC02IDE3LjYtMTUuNCAyMS4yLTI2LjctOS4zIDUuNS0xOS42IDkuNS0zMC42IDExLjctOC44LTkuNC0yMS4zLTE1LjItMzUuMi0xNS4yLTI2LjYgMC00OC4yIDIxLjYtNDguMiA0OC4yIDAgMy44LjQgNy41IDEuMyAxMS00MC4xLTItNzUuNi0yMS4yLTk5LjQtNTAuNC00LjEgNy4xLTYuNSAxNS40LTYuNSAyNC4yIDAgMTYuNyA4LjUgMzEuNSAyMS41IDQwLjEtNy45LS4yLTE1LjMtMi40LTIxLjgtNnYuNmMwIDIzLjQgMTYuNiA0Mi44IDM4LjcgNDcuMy00IDEuMS04LjMgMS43LTEyLjcgMS43LTMuMSAwLTYuMS0uMy05LjEtLjkgNi4xIDE5LjIgMjMuOSAzMy4xIDQ1IDMzLjUtMTYuNSAxMi45LTM3LjMgMjAuNi01OS45IDIwLjYtMy45IDAtNy43LS4yLTExLjUtLjcgMjEuMSAxMy44IDQ2LjUgMjEuOCA3My43IDIxLjgiIGZpbGw9IiNmZmYiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text{color:#b8e6ff}.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}'
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(97);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck.ck-media-form{display:flex;align-items:flex-start;flex-direction:row;flex-wrap:nowrap}.ck.ck-media-form .ck-labeled-field-view{display:inline-block}.ck.ck-media-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-media-form{flex-wrap:wrap}.ck.ck-media-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-media-form .ck-button{flex-basis:50%}}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(99);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck-content .media{clear:both;margin:1em 0;display:block;min-width:15em}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(101);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ":root{--ck-color-table-focused-cell-background:rgba(158,207,250,0.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(103);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2);padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{width:var(--ck-insert-table-dropdown-box-width);height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);border:1px solid var(--ck-color-base-border);border-radius:1px}.ck .ck-insert-table-dropdown-grid-box.ck-on{border-color:var(--ck-color-focus-border);background:var(--ck-color-focus-outer-shadow)}"
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(105);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ':root{--ck-table-selected-cell-background:rgba(158,207,250,0.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{position:relative;caret-color:transparent;outline:unset;box-shadow:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{content:"";pointer-events:none;background-color:var(--ck-table-selected-cell-background);position:absolute;top:0;left:0;right:0;bottom:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget_selected{outline:unset}'
+ }, function (e, t, i) {
+ var n = i(1),
+ o = i(107);
+ "string" == typeof(o = o.__esModule ? o.default : o) && (o = [[e.i, o, ""]]);
+ var r = {
+ injectType: "singletonStyleTag",
+ attributes: {
+ "data-cke": !0
+ },
+ insert: "head",
+ singleton: !0
+ };
+ n(o, r);
+ e.exports = o.locals || {}
+ }, function (e, t) {
+ e.exports = ".ck-content .table{margin:1em auto;display:table}.ck-content .table table{border-collapse:collapse;border-spacing:0;width:100%;height:100%;border:1px double #b3b3b3}.ck-content .table table td,.ck-content .table table th{min-width:2em;padding:.4em;border:1px solid #bfbfbf}.ck-content .table table th{font-weight:700;background:hsla(0,0%,0%,5%)}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}"
+ }, function (e, t, i) {
+ "use strict";
+ i.r(t),
+ i.d(t, "default", (function () {
+ return _w
+ }));
+ var n = function () {
+ return function e() {
+ e.called = !0
+ }
+ };
+ class o {
+ constructor(e, t) {
+ this.source = e,
+ this.name = t,
+ this.path = [],
+ this.stop = n(),
+ this.off = n()
+ }
+ }
+ const r = new Array(256).fill().map((e, t) => ("0" + t.toString(16)).slice(-2));
+ function s() {
+ const e = 4294967296 * Math.random() >>> 0,
+ t = 4294967296 * Math.random() >>> 0,
+ i = 4294967296 * Math.random() >>> 0,
+ n = 4294967296 * Math.random() >>> 0;
+ return "e" + r[e >> 0 & 255] + r[e >> 8 & 255] + r[e >> 16 & 255] + r[e >> 24 & 255] + r[t >> 0 & 255] + r[t >> 8 & 255] + r[t >> 16 & 255] + r[t >> 24 & 255] + r[i >> 0 & 255] + r[i >> 8 & 255] + r[i >> 16 & 255] + r[i >> 24 & 255] + r[n >> 0 & 255] + r[n >> 8 & 255] + r[n >> 16 & 255] + r[n >> 24 & 255]
+ }
+ var a = {
+ get(e) {
+ return "number" != typeof e ? this[e] || this.normal : e
+ },
+ highest: 1e5,
+ high: 1e3,
+ normal: 0,
+ low: -1e3,
+ lowest: -1e5
+ },
+ c = (i(6), i(0));
+ const l = Symbol("listeningTo"),
+ d = Symbol("emitterId");
+ var u = {
+ on(e, t, i = {}) {
+ this.listenTo(this, e, t, i)
+ },
+ once(e, t, i) {
+ let n = !1;
+ this.listenTo(this, e, (function (e, ...i) {
+ n || (n = !0, e.off(), t.call(this, e, ...i))
+ }), i)
+ },
+ off(e, t) {
+ this.stopListening(this, e, t)
+ },
+ listenTo(e, t, i, n = {}) {
+ let o,
+ r;
+ this[l] || (this[l] = {});
+ const s = this[l];
+ f(e) || h(e);
+ const a = f(e);
+ (o = s[a]) || (o = s[a] = {
+ emitter: e,
+ callbacks: {}
+ }),
+ (r = o.callbacks[t]) || (r = o.callbacks[t] = []),
+ r.push(i),
+ function (e, t, i, n, o) {
+ t._addEventListener ? t._addEventListener(i, n, o) : e._addEventListener.call(t, i, n, o)
+ }
+ (this, e, t, i, n)
+ },
+ stopListening(e, t, i) {
+ const n = this[l];
+ let o = e && f(e);
+ const r = n && o && n[o],
+ s = r && t && r.callbacks[t];
+ if (!(!n || e && !r || t && !s))
+ if (i) {
+ b(this, e, t, i);
+ -1 !== s.indexOf(i) && (1 === s.length ? delete r.callbacks[t] : b(this, e, t, i))
+ } else if (s) {
+ for (; i = s.pop(); )
+ b(this, e, t, i);
+ delete r.callbacks[t]
+ } else if (r) {
+ for (t in r.callbacks)
+ this.stopListening(e, t);
+ delete n[o]
+ } else {
+ for (o in n)
+ this.stopListening(n[o].emitter);
+ delete this[l]
+ }
+ },
+ fire(e, ...t) {
+ try {
+ const i = e instanceof o ? e : new o(this, e),
+ n = i.name;
+ let r = function e(t, i) {
+ let n;
+ if (!t._events || !(n = t._events[i]) || !n.callbacks.length)
+ return i.indexOf(":") > -1 ? e(t, i.substr(0, i.lastIndexOf(":"))) : null;
+ return n.callbacks
+ }
+ (this, n);
+ if (i.path.push(this), r) {
+ const e = [i, ...t];
+ r = Array.from(r);
+ for (let t = 0; t < r.length && (r[t].callback.apply(this, e), i.off.called && (delete i.off.called, this._removeEventListener(n, r[t].callback)), !i.stop.called); t++);
+ }
+ if (this._delegations) {
+ const e = this._delegations.get(n),
+ o = this._delegations.get("*");
+ e && p(e, i, t),
+ o && p(o, i, t)
+ }
+ return i.return
+ } catch (e) {
+ c.a.rethrowUnexpectedError(e, this)
+ }
+ },
+ delegate(...e) {
+ return {
+ to: (t, i) => {
+ this._delegations || (this._delegations = new Map),
+ e.forEach(e => {
+ const n = this._delegations.get(e);
+ n ? n.set(t, i) : this._delegations.set(e, new Map([[t, i]]))
+ })
+ }
+ }
+ },
+ stopDelegating(e, t) {
+ if (this._delegations)
+ if (e)
+ if (t) {
+ const i = this._delegations.get(e);
+ i && i.delete(t)
+ } else
+ this._delegations.delete(e);
+ else
+ this._delegations.clear()
+ },
+ _addEventListener(e, t, i) {
+ !function (e, t) {
+ const i = g(e);
+ if (i[t])
+ return;
+ let n = t,
+ o = null;
+ const r = [];
+ for (; "" !== n && !i[n]; )
+ i[n] = {
+ callbacks: [],
+ childEvents: []
+ },
+ r.push(i[n]),
+ o && i[n].childEvents.push(o),
+ o = n,
+ n = n.substr(0, n.lastIndexOf(":"));
+ if ("" !== n) {
+ for (const e of r)
+ e.callbacks = i[n].callbacks.slice();
+ i[n].childEvents.push(o)
+ }
+ }
+ (this, e);
+ const n = m(this, e),
+ o = a.get(i.priority),
+ r = {
+ callback: t,
+ priority: o
+ };
+ for (const e of n) {
+ let t = !1;
+ for (let i = 0; i < e.length; i++)
+ if (e[i].priority < o) {
+ e.splice(i, 0, r),
+ t = !0;
+ break
+ }
+ t || e.push(r)
+ }
+ },
+ _removeEventListener(e, t) {
+ const i = m(this, e);
+ for (const e of i)
+ for (let i = 0; i < e.length; i++)
+ e[i].callback == t && (e.splice(i, 1), i--)
+ }
+ };
+ function h(e, t) {
+ e[d] || (e[d] = t || s())
+ }
+ function f(e) {
+ return e[d]
+ }
+ function g(e) {
+ return e._events || Object.defineProperty(e, "_events", {
+ value: {}
+ }),
+ e._events
+ }
+ function m(e, t) {
+ const i = g(e)[t];
+ if (!i)
+ return [];
+ let n = [i.callbacks];
+ for (let t = 0; t < i.childEvents.length; t++) {
+ const o = m(e, i.childEvents[t]);
+ n = n.concat(o)
+ }
+ return n
+ }
+ function p(e, t, i) {
+ for (let[n, r]of e) {
+ r ? "function" == typeof r && (r = r(t.name)) : r = t.name;
+ const e = new o(t.source, r);
+ e.path = [...t.path],
+ n.fire(e, ...i)
+ }
+ }
+ function b(e, t, i, n) {
+ t._removeEventListener ? t._removeEventListener(i, n) : e._removeEventListener.call(t, i, n)
+ }
+ var w = function (e) {
+ var t = typeof e;
+ return null != e && ("object" == t || "function" == t)
+ },
+ k = i(3),
+ _ = k.a.Symbol,
+ v = Object.prototype,
+ y = v.hasOwnProperty,
+ x = v.toString,
+ A = _ ? _.toStringTag : void 0;
+ var C = function (e) {
+ var t = y.call(e, A),
+ i = e[A];
+ try {
+ e[A] = void 0;
+ var n = !0
+ } catch (e) {}
+ var o = x.call(e);
+ return n && (t ? e[A] = i : delete e[A]),
+ o
+ },
+ T = Object.prototype.toString;
+ var E = function (e) {
+ return T.call(e)
+ },
+ P = _ ? _.toStringTag : void 0;
+ var S = function (e) {
+ return null == e ? void 0 === e ? "[object Undefined]" : "[object Null]" : P && P in Object(e) ? C(e) : E(e)
+ };
+ var M,
+ I = function (e) {
+ if (!w(e))
+ return !1;
+ var t = S(e);
+ return "[object Function]" == t || "[object GeneratorFunction]" == t || "[object AsyncFunction]" == t || "[object Proxy]" == t
+ },
+ N = k.a["__core-js_shared__"],
+ R = (M = /[^.]+$/.exec(N && N.keys && N.keys.IE_PROTO || "")) ? "Symbol(src)_1." + M : "";
+ var O = function (e) {
+ return !!R && R in e
+ },
+ D = Function.prototype.toString;
+ var L = function (e) {
+ if (null != e) {
+ try {
+ return D.call(e)
+ } catch (e) {}
+ try {
+ return e + ""
+ } catch (e) {}
+ }
+ return ""
+ },
+ z = /^\[object .+?Constructor\]$/,
+ V = Function.prototype,
+ j = Object.prototype,
+ B = V.toString,
+ F = j.hasOwnProperty,
+ H = RegExp("^" + B.call(F).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
+ var U = function (e) {
+ return !(!w(e) || O(e)) && (I(e) ? H : z).test(L(e))
+ };
+ var W = function (e, t) {
+ return null == e ? void 0 : e[t]
+ };
+ var q = function (e, t) {
+ var i = W(e, t);
+ return U(i) ? i : void 0
+ },
+ $ = function () {
+ try {
+ var e = q(Object, "defineProperty");
+ return e({}, "", {}),
+ e
+ } catch (e) {}
+ }
+ ();
+ var Y = function (e, t, i) {
+ "__proto__" == t && $ ? $(e, t, {
+ configurable: !0,
+ enumerable: !0,
+ value: i,
+ writable: !0
+ }) : e[t] = i
+ };
+ var G = function (e, t) {
+ return e === t || e != e && t != t
+ },
+ K = Object.prototype.hasOwnProperty;
+ var Q = function (e, t, i) {
+ var n = e[t];
+ K.call(e, t) && G(n, i) && (void 0 !== i || t in e) || Y(e, t, i)
+ };
+ var J = function (e, t, i, n) {
+ var o = !i;
+ i || (i = {});
+ for (var r = -1, s = t.length; ++r < s; ) {
+ var a = t[r],
+ c = n ? n(i[a], e[a], a, i, e) : void 0;
+ void 0 === c && (c = e[a]),
+ o ? Y(i, a, c) : Q(i, a, c)
+ }
+ return i
+ };
+ var Z = function (e) {
+ return e
+ };
+ var X = function (e, t, i) {
+ switch (i.length) {
+ case 0:
+ return e.call(t);
+ case 1:
+ return e.call(t, i[0]);
+ case 2:
+ return e.call(t, i[0], i[1]);
+ case 3:
+ return e.call(t, i[0], i[1], i[2])
+ }
+ return e.apply(t, i)
+ },
+ ee = Math.max;
+ var te = function (e, t, i) {
+ return t = ee(void 0 === t ? e.length - 1 : t, 0),
+ function () {
+ for (var n = arguments, o = -1, r = ee(n.length - t, 0), s = Array(r); ++o < r; )
+ s[o] = n[t + o];
+ o = -1;
+ for (var a = Array(t + 1); ++o < t; )
+ a[o] = n[o];
+ return a[t] = i(s),
+ X(e, this, a)
+ }
+ };
+ var ie = function (e) {
+ return function () {
+ return e
+ }
+ },
+ ne = $ ? function (e, t) {
+ return $(e, "toString", {
+ configurable: !0,
+ enumerable: !1,
+ value: ie(t),
+ writable: !0
+ })
+ }
+ : Z,
+ oe = Date.now;
+ var re = function (e) {
+ var t = 0,
+ i = 0;
+ return function () {
+ var n = oe(),
+ o = 16 - (n - i);
+ if (i = n, o > 0) {
+ if (++t >= 800)
+ return arguments[0]
+ } else
+ t = 0;
+ return e.apply(void 0, arguments)
+ }
+ }
+ (ne);
+ var se = function (e, t) {
+ return re(te(e, t, Z), e + "")
+ };
+ var ae = function (e) {
+ return "number" == typeof e && e > -1 && e % 1 == 0 && e <= 9007199254740991
+ };
+ var ce = function (e) {
+ return null != e && ae(e.length) && !I(e)
+ },
+ le = /^(?:0|[1-9]\d*)$/;
+ var de = function (e, t) {
+ var i = typeof e;
+ return !!(t = null == t ? 9007199254740991 : t) && ("number" == i || "symbol" != i && le.test(e)) && e > -1 && e % 1 == 0 && e < t
+ };
+ var ue = function (e, t, i) {
+ if (!w(i))
+ return !1;
+ var n = typeof t;
+ return !!("number" == n ? ce(i) && de(t, i.length) : "string" == n && t in i) && G(i[t], e)
+ };
+ var he = function (e) {
+ return se((function (t, i) {
+ var n = -1,
+ o = i.length,
+ r = o > 1 ? i[o - 1] : void 0,
+ s = o > 2 ? i[2] : void 0;
+ for (r = e.length > 3 && "function" == typeof r ? (o--, r) : void 0, s && ue(i[0], i[1], s) && (r = o < 3 ? void 0 : r, o = 1), t = Object(t); ++n < o; ) {
+ var a = i[n];
+ a && e(t, a, n, r)
+ }
+ return t
+ }))
+ };
+ var fe = function (e, t) {
+ for (var i = -1, n = Array(e); ++i < e; )
+ n[i] = t(i);
+ return n
+ };
+ var ge = function (e) {
+ return null != e && "object" == typeof e
+ };
+ var me = function (e) {
+ return ge(e) && "[object Arguments]" == S(e)
+ },
+ pe = Object.prototype,
+ be = pe.hasOwnProperty,
+ we = pe.propertyIsEnumerable,
+ ke = me(function () {
+ return arguments
+ }
+ ()) ? me : function (e) {
+ return ge(e) && be.call(e, "callee") && !we.call(e, "callee")
+ },
+ _e = Array.isArray,
+ ve = i(4),
+ ye = {};
+ ye["[object Float32Array]"] = ye["[object Float64Array]"] = ye["[object Int8Array]"] = ye["[object Int16Array]"] = ye["[object Int32Array]"] = ye["[object Uint8Array]"] = ye["[object Uint8ClampedArray]"] = ye["[object Uint16Array]"] = ye["[object Uint32Array]"] = !0,
+ ye["[object Arguments]"] = ye["[object Array]"] = ye["[object ArrayBuffer]"] = ye["[object Boolean]"] = ye["[object DataView]"] = ye["[object Date]"] = ye["[object Error]"] = ye["[object Function]"] = ye["[object Map]"] = ye["[object Number]"] = ye["[object Object]"] = ye["[object RegExp]"] = ye["[object Set]"] = ye["[object String]"] = ye["[object WeakMap]"] = !1;
+ var xe = function (e) {
+ return ge(e) && ae(e.length) && !!ye[S(e)]
+ };
+ var Ae = function (e) {
+ return function (t) {
+ return e(t)
+ }
+ },
+ Ce = i(5),
+ Te = Ce.a && Ce.a.isTypedArray,
+ Ee = Te ? Ae(Te) : xe,
+ Pe = Object.prototype.hasOwnProperty;
+ var Se = function (e, t) {
+ var i = _e(e),
+ n = !i && ke(e),
+ o = !i && !n && Object(ve.a)(e),
+ r = !i && !n && !o && Ee(e),
+ s = i || n || o || r,
+ a = s ? fe(e.length, String) : [],
+ c = a.length;
+ for (var l in e)
+ !t && !Pe.call(e, l) || s && ("length" == l || o && ("offset" == l || "parent" == l) || r && ("buffer" == l || "byteLength" == l || "byteOffset" == l) || de(l, c)) || a.push(l);
+ return a
+ },
+ Me = Object.prototype;
+ var Ie = function (e) {
+ var t = e && e.constructor;
+ return e === ("function" == typeof t && t.prototype || Me)
+ };
+ var Ne = function (e) {
+ var t = [];
+ if (null != e)
+ for (var i in Object(e))
+ t.push(i);
+ return t
+ },
+ Re = Object.prototype.hasOwnProperty;
+ var Oe = function (e) {
+ if (!w(e))
+ return Ne(e);
+ var t = Ie(e),
+ i = [];
+ for (var n in e)
+ ("constructor" != n || !t && Re.call(e, n)) && i.push(n);
+ return i
+ };
+ var De = function (e) {
+ return ce(e) ? Se(e, !0) : Oe(e)
+ },
+ Le = he((function (e, t) {
+ J(t, De(t), e)
+ }));
+ const ze = Symbol("observableProperties"),
+ Ve = Symbol("boundObservables"),
+ je = Symbol("boundProperties"),
+ Be = Symbol("decoratedMethods"),
+ Fe = Symbol("decoratedOriginal"),
+ He = {
+ set(e, t) {
+ if (w(e))
+ return void Object.keys(e).forEach(t => {
+ this.set(t, e[t])
+ }, this);
+ We(this);
+ const i = this[ze];
+ if (e in this && !i.has(e))
+ throw new c.a("observable-set-cannot-override", this);
+ Object.defineProperty(this, e, {
+ enumerable: !0,
+ configurable: !0,
+ get: () => i.get(e),
+ set(t) {
+ const n = i.get(e);
+ let o = this.fire("set:" + e, e, t, n);
+ void 0 === o && (o = t),
+ n === o && i.has(e) || (i.set(e, o), this.fire("change:" + e, e, o, n))
+ }
+ }),
+ this[e] = t
+ },
+ bind(...e) {
+ if (!e.length || !Ye(e))
+ throw new c.a("observable-bind-wrong-properties", this);
+ if (new Set(e).size !== e.length)
+ throw new c.a("observable-bind-duplicate-properties", this);
+ We(this);
+ const t = this[je];
+ e.forEach(e => {
+ if (t.has(e))
+ throw new c.a("observable-bind-rebind", this)
+ });
+ const i = new Map;
+ return e.forEach(e => {
+ const n = {
+ property: e,
+ to: []
+ };
+ t.set(e, n),
+ i.set(e, n)
+ }), {
+ to: qe,
+ toMany: $e,
+ _observable: this,
+ _bindProperties: e,
+ _to: [],
+ _bindings: i
+ }
+ },
+ unbind(...e) {
+ if (!this[ze])
+ return;
+ const t = this[je],
+ i = this[Ve];
+ if (e.length) {
+ if (!Ye(e))
+ throw new c.a("observable-unbind-wrong-properties", this);
+ e.forEach(e => {
+ const n = t.get(e);
+ if (!n)
+ return;
+ let o,
+ r,
+ s,
+ a;
+ n.to.forEach(e => {
+ o = e[0],
+ r = e[1],
+ s = i.get(o),
+ a = s[r],
+ a.delete(n),
+ a.size || delete s[r],
+ Object.keys(s).length || (i.delete(o), this.stopListening(o, "change"))
+ }),
+ t.delete(e)
+ })
+ } else
+ i.forEach((e, t) => {
+ this.stopListening(t, "change")
+ }), i.clear(), t.clear()
+ },
+ decorate(e) {
+ const t = this[e];
+ if (!t)
+ throw new c.a("observablemixin-cannot-decorate-undefined", this, {
+ object: this,
+ methodName: e
+ });
+ this.on(e, (e, i) => {
+ e.return = t.apply(this, i)
+ }),
+ this[e] = function (...t) {
+ return this.fire(e, t)
+ },
+ this[e][Fe] = t,
+ this[Be] || (this[Be] = []),
+ this[Be].push(e)
+ }
+ };
+ Le(He, u),
+ He.stopListening = function (e, t, i) {
+ if (!e && this[Be]) {
+ for (const e of this[Be])
+ this[e] = this[e][Fe];
+ delete this[Be]
+ }
+ u.stopListening.call(this, e, t, i)
+ };
+ var Ue = He;
+ function We(e) {
+ e[ze] || (Object.defineProperty(e, ze, {
+ value: new Map
+ }), Object.defineProperty(e, Ve, {
+ value: new Map
+ }), Object.defineProperty(e, je, {
+ value: new Map
+ }))
+ }
+ function qe(...e) {
+ const t = function (...e) {
+ if (!e.length)
+ throw new c.a("observable-bind-to-parse-error", null);
+ const t = {
+ to: []
+ };
+ let i;
+ "function" == typeof e[e.length - 1] && (t.callback = e.pop());
+ return e.forEach(e => {
+ if ("string" == typeof e)
+ i.properties.push(e);
+ else {
+ if ("object" != typeof e)
+ throw new c.a("observable-bind-to-parse-error", null);
+ i = {
+ observable: e,
+ properties: []
+ },
+ t.to.push(i)
+ }
+ }),
+ t
+ }
+ (...e),
+ i = Array.from(this._bindings.keys()),
+ n = i.length;
+ if (!t.callback && t.to.length > 1)
+ throw new c.a("observable-bind-to-no-callback", this);
+ if (n > 1 && t.callback)
+ throw new c.a("observable-bind-to-extra-callback", this);
+ var o;
+ t.to.forEach(e => {
+ if (e.properties.length && e.properties.length !== n)
+ throw new c.a("observable-bind-to-properties-length", this);
+ e.properties.length || (e.properties = this._bindProperties)
+ }),
+ this._to = t.to,
+ t.callback && (this._bindings.get(i[0]).callback = t.callback),
+ o = this._observable,
+ this._to.forEach(e => {
+ const t = o[Ve];
+ let i;
+ t.get(e.observable) || o.listenTo(e.observable, "change", (n, r) => {
+ i = t.get(e.observable)[r],
+ i && i.forEach(e => {
+ Ge(o, e.property)
+ })
+ })
+ }),
+ function (e) {
+ let t;
+ e._bindings.forEach((i, n) => {
+ e._to.forEach(o => {
+ t = o.properties[i.callback ? 0 : e._bindProperties.indexOf(n)],
+ i.to.push([o.observable, t]),
+ function (e, t, i, n) {
+ const o = e[Ve],
+ r = o.get(i),
+ s = r || {};
+ s[n] || (s[n] = new Set);
+ s[n].add(t),
+ r || o.set(i, s)
+ }
+ (e._observable, i, o.observable, t)
+ })
+ })
+ }
+ (this),
+ this._bindProperties.forEach(e => {
+ Ge(this._observable, e)
+ })
+ }
+ function $e(e, t, i) {
+ if (this._bindings.size > 1)
+ throw new c.a("observable-bind-to-many-not-one-binding", this);
+ this.to(...function(e, t) {
+ const i = e.map(e => [e, t]);
+ return Array.prototype.concat.apply([], i)
+ }
+ (e, t), i)
+ }
+ function Ye(e) {
+ return e.every(e => "string" == typeof e)
+ }
+ function Ge(e, t) {
+ const i = e[je].get(t);
+ let n;
+ i.callback ? n = i.callback.apply(e, i.to.map(e => e[0][e[1]])) : (n = i.to[0], n = n[0][n[1]]),
+ Object.prototype.hasOwnProperty.call(e, t) ? e[t] = n : e.set(t, n)
+ }
+ function Ke(e, ...t) {
+ t.forEach(t => {
+ Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t)).forEach(i => {
+ if (i in e.prototype)
+ return;
+ const n = Object.getOwnPropertyDescriptor(t, i);
+ n.enumerable = !1,
+ Object.defineProperty(e.prototype, i, n)
+ })
+ })
+ }
+ class Qe {
+ constructor(e) {
+ this.editor = e,
+ this.set("isEnabled", !0),
+ this._disableStack = new Set
+ }
+ forceDisabled(e) {
+ this._disableStack.add(e),
+ 1 == this._disableStack.size && (this.on("set:isEnabled", Je, {
+ priority: "highest"
+ }), this.isEnabled = !1)
+ }
+ clearForceDisabled(e) {
+ this._disableStack.delete(e),
+ 0 == this._disableStack.size && (this.off("set:isEnabled", Je), this.isEnabled = !0)
+ }
+ destroy() {
+ this.stopListening()
+ }
+ static get isContextPlugin() {
+ return !1
+ }
+ }
+ function Je(e) {
+ e.return = !1,
+ e.stop()
+ }
+ Ke(Qe, Ue);
+ class Ze {
+ constructor(e) {
+ this.editor = e,
+ this.set("value", void 0),
+ this.set("isEnabled", !1),
+ this._disableStack = new Set,
+ this.decorate("execute"),
+ this.listenTo(this.editor.model.document, "change", () => {
+ this.refresh()
+ }),
+ this.on("execute", e => {
+ this.isEnabled || e.stop()
+ }, {
+ priority: "high"
+ }),
+ this.listenTo(e, "change:isReadOnly", (e, t, i) => {
+ i ? this.forceDisabled("readOnlyMode") : this.clearForceDisabled("readOnlyMode")
+ })
+ }
+ refresh() {
+ this.isEnabled = !0
+ }
+ forceDisabled(e) {
+ this._disableStack.add(e),
+ 1 == this._disableStack.size && (this.on("set:isEnabled", Xe, {
+ priority: "highest"
+ }), this.isEnabled = !1)
+ }
+ clearForceDisabled(e) {
+ this._disableStack.delete(e),
+ 0 == this._disableStack.size && (this.off("set:isEnabled", Xe), this.refresh())
+ }
+ execute() {}
+ destroy() {
+ this.stopListening()
+ }
+ }
+ function Xe(e) {
+ e.return = !1,
+ e.stop()
+ }
+ Ke(Ze, Ue);
+ class et extends Ze {
+ constructor(e) {
+ super(e),
+ this._childCommands = []
+ }
+ refresh() {}
+ execute(...e) {
+ const t = this._getFirstEnabledCommand();
+ return null != t && t.execute(e)
+ }
+ registerChildCommand(e) {
+ this._childCommands.push(e),
+ e.on("change:isEnabled", () => this._checkEnabled()),
+ this._checkEnabled()
+ }
+ _checkEnabled() {
+ this.isEnabled = !!this._getFirstEnabledCommand()
+ }
+ _getFirstEnabledCommand() {
+ return this._childCommands.find(e => e.isEnabled)
+ }
+ }
+ var tt = function (e, t) {
+ return function (i) {
+ return e(t(i))
+ }
+ },
+ it = tt(Object.getPrototypeOf, Object),
+ nt = Function.prototype,
+ ot = Object.prototype,
+ rt = nt.toString,
+ st = ot.hasOwnProperty,
+ at = rt.call(Object);
+ var ct = function (e) {
+ if (!ge(e) || "[object Object]" != S(e))
+ return !1;
+ var t = it(e);
+ if (null === t)
+ return !0;
+ var i = st.call(t, "constructor") && t.constructor;
+ return "function" == typeof i && i instanceof i && rt.call(i) == at
+ };
+ var lt = function () {
+ this.__data__ = [],
+ this.size = 0
+ };
+ var dt = function (e, t) {
+ for (var i = e.length; i--; )
+ if (G(e[i][0], t))
+ return i;
+ return -1
+ },
+ ut = Array.prototype.splice;
+ var ht = function (e) {
+ var t = this.__data__,
+ i = dt(t, e);
+ return !(i < 0) && (i == t.length - 1 ? t.pop() : ut.call(t, i, 1), --this.size, !0)
+ };
+ var ft = function (e) {
+ var t = this.__data__,
+ i = dt(t, e);
+ return i < 0 ? void 0 : t[i][1]
+ };
+ var gt = function (e) {
+ return dt(this.__data__, e) > -1
+ };
+ var mt = function (e, t) {
+ var i = this.__data__,
+ n = dt(i, e);
+ return n < 0 ? (++this.size, i.push([e, t])) : i[n][1] = t,
+ this
+ };
+ function pt(e) {
+ var t = -1,
+ i = null == e ? 0 : e.length;
+ for (this.clear(); ++t < i; ) {
+ var n = e[t];
+ this.set(n[0], n[1])
+ }
+ }
+ pt.prototype.clear = lt,
+ pt.prototype.delete = ht,
+ pt.prototype.get = ft,
+ pt.prototype.has = gt,
+ pt.prototype.set = mt;
+ var bt = pt;
+ var wt = function () {
+ this.__data__ = new bt,
+ this.size = 0
+ };
+ var kt = function (e) {
+ var t = this.__data__,
+ i = t.delete(e);
+ return this.size = t.size,
+ i
+ };
+ var _t = function (e) {
+ return this.__data__.get(e)
+ };
+ var vt = function (e) {
+ return this.__data__.has(e)
+ },
+ yt = q(k.a, "Map"),
+ xt = q(Object, "create");
+ var At = function () {
+ this.__data__ = xt ? xt(null) : {},
+ this.size = 0
+ };
+ var Ct = function (e) {
+ var t = this.has(e) && delete this.__data__[e];
+ return this.size -= t ? 1 : 0,
+ t
+ },
+ Tt = Object.prototype.hasOwnProperty;
+ var Et = function (e) {
+ var t = this.__data__;
+ if (xt) {
+ var i = t[e];
+ return "__lodash_hash_undefined__" === i ? void 0 : i
+ }
+ return Tt.call(t, e) ? t[e] : void 0
+ },
+ Pt = Object.prototype.hasOwnProperty;
+ var St = function (e) {
+ var t = this.__data__;
+ return xt ? void 0 !== t[e] : Pt.call(t, e)
+ };
+ var Mt = function (e, t) {
+ var i = this.__data__;
+ return this.size += this.has(e) ? 0 : 1,
+ i[e] = xt && void 0 === t ? "__lodash_hash_undefined__" : t,
+ this
+ };
+ function It(e) {
+ var t = -1,
+ i = null == e ? 0 : e.length;
+ for (this.clear(); ++t < i; ) {
+ var n = e[t];
+ this.set(n[0], n[1])
+ }
+ }
+ It.prototype.clear = At,
+ It.prototype.delete = Ct,
+ It.prototype.get = Et,
+ It.prototype.has = St,
+ It.prototype.set = Mt;
+ var Nt = It;
+ var Rt = function () {
+ this.size = 0,
+ this.__data__ = {
+ hash: new Nt,
+ map: new(yt || bt),
+ string: new Nt
+ }
+ };
+ var Ot = function (e) {
+ var t = typeof e;
+ return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e
+ };
+ var Dt = function (e, t) {
+ var i = e.__data__;
+ return Ot(t) ? i["string" == typeof t ? "string" : "hash"] : i.map
+ };
+ var Lt = function (e) {
+ var t = Dt(this, e).delete(e);
+ return this.size -= t ? 1 : 0,
+ t
+ };
+ var zt = function (e) {
+ return Dt(this, e).get(e)
+ };
+ var Vt = function (e) {
+ return Dt(this, e).has(e)
+ };
+ var jt = function (e, t) {
+ var i = Dt(this, e),
+ n = i.size;
+ return i.set(e, t),
+ this.size += i.size == n ? 0 : 1,
+ this
+ };
+ function Bt(e) {
+ var t = -1,
+ i = null == e ? 0 : e.length;
+ for (this.clear(); ++t < i; ) {
+ var n = e[t];
+ this.set(n[0], n[1])
+ }
+ }
+ Bt.prototype.clear = Rt,
+ Bt.prototype.delete = Lt,
+ Bt.prototype.get = zt,
+ Bt.prototype.has = Vt,
+ Bt.prototype.set = jt;
+ var Ft = Bt;
+ var Ht = function (e, t) {
+ var i = this.__data__;
+ if (i instanceof bt) {
+ var n = i.__data__;
+ if (!yt || n.length < 199)
+ return n.push([e, t]), this.size = ++i.size, this;
+ i = this.__data__ = new Ft(n)
+ }
+ return i.set(e, t),
+ this.size = i.size,
+ this
+ };
+ function Ut(e) {
+ var t = this.__data__ = new bt(e);
+ this.size = t.size
+ }
+ Ut.prototype.clear = wt,
+ Ut.prototype.delete = kt,
+ Ut.prototype.get = _t,
+ Ut.prototype.has = vt,
+ Ut.prototype.set = Ht;
+ var Wt = Ut;
+ var qt = function (e, t) {
+ for (var i = -1, n = null == e ? 0 : e.length; ++i < n && !1 !== t(e[i], i, e); );
+ return e
+ },
+ $t = tt(Object.keys, Object),
+ Yt = Object.prototype.hasOwnProperty;
+ var Gt = function (e) {
+ if (!Ie(e))
+ return $t(e);
+ var t = [];
+ for (var i in Object(e))
+ Yt.call(e, i) && "constructor" != i && t.push(i);
+ return t
+ };
+ var Kt = function (e) {
+ return ce(e) ? Se(e) : Gt(e)
+ };
+ var Qt = function (e, t) {
+ return e && J(t, Kt(t), e)
+ };
+ var Jt = function (e, t) {
+ return e && J(t, De(t), e)
+ },
+ Zt = i(9);
+ var Xt = function (e, t) {
+ var i = -1,
+ n = e.length;
+ for (t || (t = Array(n)); ++i < n; )
+ t[i] = e[i];
+ return t
+ };
+ var ei = function (e, t) {
+ for (var i = -1, n = null == e ? 0 : e.length, o = 0, r = []; ++i < n; ) {
+ var s = e[i];
+ t(s, i, e) && (r[o++] = s)
+ }
+ return r
+ };
+ var ti = function () {
+ return []
+ },
+ ii = Object.prototype.propertyIsEnumerable,
+ ni = Object.getOwnPropertySymbols,
+ oi = ni ? function (e) {
+ return null == e ? [] : (e = Object(e), ei(ni(e), (function (t) {
+ return ii.call(e, t)
+ })))
+ }
+ : ti;
+ var ri = function (e, t) {
+ return J(e, oi(e), t)
+ };
+ var si = function (e, t) {
+ for (var i = -1, n = t.length, o = e.length; ++i < n; )
+ e[o + i] = t[i];
+ return e
+ },
+ ai = Object.getOwnPropertySymbols ? function (e) {
+ for (var t = []; e; )
+ si(t, oi(e)), e = it(e);
+ return t
+ }
+ : ti;
+ var ci = function (e, t) {
+ return J(e, ai(e), t)
+ };
+ var li = function (e, t, i) {
+ var n = t(e);
+ return _e(e) ? n : si(n, i(e))
+ };
+ var di = function (e) {
+ return li(e, Kt, oi)
+ };
+ var ui = function (e) {
+ return li(e, De, ai)
+ },
+ hi = q(k.a, "DataView"),
+ fi = q(k.a, "Promise"),
+ gi = q(k.a, "Set"),
+ mi = q(k.a, "WeakMap"),
+ pi = L(hi),
+ bi = L(yt),
+ wi = L(fi),
+ ki = L(gi),
+ _i = L(mi),
+ vi = S;
+ (hi && "[object DataView]" != vi(new hi(new ArrayBuffer(1))) || yt && "[object Map]" != vi(new yt) || fi && "[object Promise]" != vi(fi.resolve()) || gi && "[object Set]" != vi(new gi) || mi && "[object WeakMap]" != vi(new mi)) && (vi = function (e) {
+ var t = S(e),
+ i = "[object Object]" == t ? e.constructor : void 0,
+ n = i ? L(i) : "";
+ if (n)
+ switch (n) {
+ case pi:
+ return "[object DataView]";
+ case bi:
+ return "[object Map]";
+ case wi:
+ return "[object Promise]";
+ case ki:
+ return "[object Set]";
+ case _i:
+ return "[object WeakMap]"
+ }
+ return t
+ });
+ var yi = vi,
+ xi = Object.prototype.hasOwnProperty;
+ var Ai = function (e) {
+ var t = e.length,
+ i = new e.constructor(t);
+ return t && "string" == typeof e[0] && xi.call(e, "index") && (i.index = e.index, i.input = e.input),
+ i
+ },
+ Ci = k.a.Uint8Array;
+ var Ti = function (e) {
+ var t = new e.constructor(e.byteLength);
+ return new Ci(t).set(new Ci(e)),
+ t
+ };
+ var Ei = function (e, t) {
+ var i = t ? Ti(e.buffer) : e.buffer;
+ return new e.constructor(i, e.byteOffset, e.byteLength)
+ },
+ Pi = /\w*$/;
+ var Si = function (e) {
+ var t = new e.constructor(e.source, Pi.exec(e));
+ return t.lastIndex = e.lastIndex,
+ t
+ },
+ Mi = _ ? _.prototype : void 0,
+ Ii = Mi ? Mi.valueOf : void 0;
+ var Ni = function (e) {
+ return Ii ? Object(Ii.call(e)) : {}
+ };
+ var Ri = function (e, t) {
+ var i = t ? Ti(e.buffer) : e.buffer;
+ return new e.constructor(i, e.byteOffset, e.length)
+ };
+ var Oi = function (e, t, i) {
+ var n = e.constructor;
+ switch (t) {
+ case "[object ArrayBuffer]":
+ return Ti(e);
+ case "[object Boolean]":
+ case "[object Date]":
+ return new n(+e);
+ case "[object DataView]":
+ return Ei(e, i);
+ case "[object Float32Array]":
+ case "[object Float64Array]":
+ case "[object Int8Array]":
+ case "[object Int16Array]":
+ case "[object Int32Array]":
+ case "[object Uint8Array]":
+ case "[object Uint8ClampedArray]":
+ case "[object Uint16Array]":
+ case "[object Uint32Array]":
+ return Ri(e, i);
+ case "[object Map]":
+ return new n;
+ case "[object Number]":
+ case "[object String]":
+ return new n(e);
+ case "[object RegExp]":
+ return Si(e);
+ case "[object Set]":
+ return new n;
+ case "[object Symbol]":
+ return Ni(e)
+ }
+ },
+ Di = Object.create,
+ Li = function () {
+ function e() {}
+ return function (t) {
+ if (!w(t))
+ return {};
+ if (Di)
+ return Di(t);
+ e.prototype = t;
+ var i = new e;
+ return e.prototype = void 0,
+ i
+ }
+ }
+ ();
+ var zi = function (e) {
+ return "function" != typeof e.constructor || Ie(e) ? {}
+ : Li(it(e))
+ };
+ var Vi = function (e) {
+ return ge(e) && "[object Map]" == yi(e)
+ },
+ ji = Ce.a && Ce.a.isMap,
+ Bi = ji ? Ae(ji) : Vi;
+ var Fi = function (e) {
+ return ge(e) && "[object Set]" == yi(e)
+ },
+ Hi = Ce.a && Ce.a.isSet,
+ Ui = Hi ? Ae(Hi) : Fi,
+ Wi = {};
+ Wi["[object Arguments]"] = Wi["[object Array]"] = Wi["[object ArrayBuffer]"] = Wi["[object DataView]"] = Wi["[object Boolean]"] = Wi["[object Date]"] = Wi["[object Float32Array]"] = Wi["[object Float64Array]"] = Wi["[object Int8Array]"] = Wi["[object Int16Array]"] = Wi["[object Int32Array]"] = Wi["[object Map]"] = Wi["[object Number]"] = Wi["[object Object]"] = Wi["[object RegExp]"] = Wi["[object Set]"] = Wi["[object String]"] = Wi["[object Symbol]"] = Wi["[object Uint8Array]"] = Wi["[object Uint8ClampedArray]"] = Wi["[object Uint16Array]"] = Wi["[object Uint32Array]"] = !0,
+ Wi["[object Error]"] = Wi["[object Function]"] = Wi["[object WeakMap]"] = !1;
+ var qi = function e(t, i, n, o, r, s) {
+ var a,
+ c = 1 & i,
+ l = 2 & i,
+ d = 4 & i;
+ if (n && (a = r ? n(t, o, r, s) : n(t)), void 0 !== a)
+ return a;
+ if (!w(t))
+ return t;
+ var u = _e(t);
+ if (u) {
+ if (a = Ai(t), !c)
+ return Xt(t, a)
+ } else {
+ var h = yi(t),
+ f = "[object Function]" == h || "[object GeneratorFunction]" == h;
+ if (Object(ve.a)(t))
+ return Object(Zt.a)(t, c);
+ if ("[object Object]" == h || "[object Arguments]" == h || f && !r) {
+ if (a = l || f ? {}
+ : zi(t), !c)
+ return l ? ci(t, Jt(a, t)) : ri(t, Qt(a, t))
+ } else {
+ if (!Wi[h])
+ return r ? t : {};
+ a = Oi(t, h, c)
+ }
+ }
+ s || (s = new Wt);
+ var g = s.get(t);
+ if (g)
+ return g;
+ s.set(t, a),
+ Ui(t) ? t.forEach((function (o) {
+ a.add(e(o, i, n, o, t, s))
+ })) : Bi(t) && t.forEach((function (o, r) {
+ a.set(r, e(o, i, n, r, t, s))
+ }));
+ var m = u ? void 0 : (d ? l ? ui : di : l ? De : Kt)(t);
+ return qt(m || t, (function (o, r) {
+ m && (o = t[r = o]),
+ Q(a, r, e(o, i, n, r, t, s))
+ })),
+ a
+ };
+ var $i = function (e, t) {
+ return qi(e, 5, t = "function" == typeof t ? t : void 0)
+ };
+ var Yi = function (e) {
+ return ge(e) && 1 === e.nodeType && !ct(e)
+ };
+ class Gi {
+ constructor(e, t) {
+ this._config = {},
+ t && this.define(Ki(t)),
+ e && this._setObjectToTarget(this._config, e)
+ }
+ set(e, t) {
+ this._setToTarget(this._config, e, t)
+ }
+ define(e, t) {
+ this._setToTarget(this._config, e, t, !0)
+ }
+ get(e) {
+ return this._getFromSource(this._config, e)
+ }
+ * names() {
+ for (const e of Object.keys(this._config))
+ yield e
+ }
+ _setToTarget(e, t, i, n = !1) {
+ if (ct(t))
+ return void this._setObjectToTarget(e, t, n);
+ const o = t.split(".");
+ t = o.pop();
+ for (const t of o)
+ ct(e[t]) || (e[t] = {}), e = e[t];
+ if (ct(i))
+ return ct(e[t]) || (e[t] = {}), e = e[t], void this._setObjectToTarget(e, i, n);
+ n && void 0 !== e[t] || (e[t] = i)
+ }
+ _getFromSource(e, t) {
+ const i = t.split(".");
+ t = i.pop();
+ for (const t of i) {
+ if (!ct(e[t])) {
+ e = null;
+ break
+ }
+ e = e[t]
+ }
+ return e ? Ki(e[t]) : void 0
+ }
+ _setObjectToTarget(e, t, i) {
+ Object.keys(t).forEach(n => {
+ this._setToTarget(e, n, t[n], i)
+ })
+ }
+ }
+ function Ki(e) {
+ return $i(e, Qi)
+ }
+ function Qi(e) {
+ return Yi(e) ? e : void 0
+ }
+ function Ji(e) {
+ return !(!e || !e[Symbol.iterator])
+ }
+ class Zi {
+ constructor(e = {}, t = {}) {
+ const i = Ji(e);
+ if (i || (t = e), this._items = [], this._itemMap = new Map, this._idProperty = t.idProperty || "id", this._bindToExternalToInternalMap = new WeakMap, this._bindToInternalToExternalMap = new WeakMap, this._skippedIndexesFromExternal = [], i)
+ for (const t of e)
+ this._items.push(t), this._itemMap.set(this._getItemIdBeforeAdding(t), t)
+ }
+ get length() {
+ return this._items.length
+ }
+ get first() {
+ return this._items[0] || null
+ }
+ get last() {
+ return this._items[this.length - 1] || null
+ }
+ add(e, t) {
+ return this.addMany([e], t)
+ }
+ addMany(e, t) {
+ if (void 0 === t)
+ t = this._items.length;
+ else if (t > this._items.length || t < 0)
+ throw new c.a("collection-add-item-invalid-index", this);
+ for (let i = 0; i < e.length; i++) {
+ const n = e[i],
+ o = this._getItemIdBeforeAdding(n),
+ r = t + i;
+ this._items.splice(r, 0, n),
+ this._itemMap.set(o, n),
+ this.fire("add", n, r)
+ }
+ return this.fire("change", {
+ added: e,
+ removed: [],
+ index: t
+ }),
+ this
+ }
+ get(e) {
+ let t;
+ if ("string" == typeof e)
+ t = this._itemMap.get(e);
+ else {
+ if ("number" != typeof e)
+ throw new c.a("collection-get-invalid-arg", this);
+ t = this._items[e]
+ }
+ return t || null
+ }
+ has(e) {
+ if ("string" == typeof e)
+ return this._itemMap.has(e); {
+ const t = e[this._idProperty];
+ return this._itemMap.has(t)
+ }
+ }
+ getIndex(e) {
+ let t;
+ return t = "string" == typeof e ? this._itemMap.get(e) : e,
+ this._items.indexOf(t)
+ }
+ remove(e) {
+ const[t, i] = this._remove(e);
+ return this.fire("change", {
+ added: [],
+ removed: [t],
+ index: i
+ }),
+ t
+ }
+ map(e, t) {
+ return this._items.map(e, t)
+ }
+ find(e, t) {
+ return this._items.find(e, t)
+ }
+ filter(e, t) {
+ return this._items.filter(e, t)
+ }
+ clear() {
+ this._bindToCollection && (this.stopListening(this._bindToCollection), this._bindToCollection = null);
+ const e = Array.from(this._items);
+ for (; this.length; )
+ this._remove(0);
+ this.fire("change", {
+ added: [],
+ removed: e,
+ index: 0
+ })
+ }
+ bindTo(e) {
+ if (this._bindToCollection)
+ throw new c.a("collection-bind-to-rebind", this);
+ return this._bindToCollection = e, {
+ as: e => {
+ this._setUpBindToBinding(t => new e(t))
+ },
+ using: e => {
+ "function" == typeof e ? this._setUpBindToBinding(t => e(t)) : this._setUpBindToBinding(t => t[e])
+ }
+ }
+ }
+ _setUpBindToBinding(e) {
+ const t = this._bindToCollection,
+ i = (i, n, o) => {
+ const r = t._bindToCollection == this,
+ s = t._bindToInternalToExternalMap.get(n);
+ if (r && s)
+ this._bindToExternalToInternalMap.set(n, s), this._bindToInternalToExternalMap.set(s, n);
+ else {
+ const i = e(n);
+ if (!i)
+ return void this._skippedIndexesFromExternal.push(o);
+ let r = o;
+ for (const e of this._skippedIndexesFromExternal)
+ o > e && r--;
+ for (const e of t._skippedIndexesFromExternal)
+ r >= e && r++;
+ this._bindToExternalToInternalMap.set(n, i),
+ this._bindToInternalToExternalMap.set(i, n),
+ this.add(i, r);
+ for (let e = 0; e < t._skippedIndexesFromExternal.length; e++)
+ r <= t._skippedIndexesFromExternal[e] && t._skippedIndexesFromExternal[e]++
+ }
+ };
+ for (const e of t)
+ i(0, e, t.getIndex(e));
+ this.listenTo(t, "add", i),
+ this.listenTo(t, "remove", (e, t, i) => {
+ const n = this._bindToExternalToInternalMap.get(t);
+ n && this.remove(n),
+ this._skippedIndexesFromExternal = this._skippedIndexesFromExternal.reduce((e, t) => (i < t && e.push(t - 1), i > t && e.push(t), e), [])
+ })
+ }
+ _getItemIdBeforeAdding(e) {
+ const t = this._idProperty;
+ let i;
+ if (t in e) {
+ if (i = e[t], "string" != typeof i)
+ throw new c.a("collection-add-invalid-id", this);
+ if (this.get(i))
+ throw new c.a("collection-add-item-already-exists", this)
+ } else
+ e[t] = i = s();
+ return i
+ }
+ _remove(e) {
+ let t,
+ i,
+ n,
+ o = !1;
+ const r = this._idProperty;
+ if ("string" == typeof e ? (i = e, n = this._itemMap.get(i), o = !n, n && (t = this._items.indexOf(n))) : "number" == typeof e ? (t = e, n = this._items[t], o = !n, n && (i = n[r])) : (n = e, i = n[r], t = this._items.indexOf(n), o = -1 == t || !this._itemMap.get(i)), o)
+ throw new c.a("collection-remove-404", this);
+ this._items.splice(t, 1),
+ this._itemMap.delete(i);
+ const s = this._bindToInternalToExternalMap.get(n);
+ return this._bindToInternalToExternalMap.delete(n),
+ this._bindToExternalToInternalMap.delete(s),
+ this.fire("remove", n, t),
+ [n, t]
+ }
+ [Symbol.iterator]() {
+ return this._items[Symbol.iterator]()
+ }
+ }
+ Ke(Zi, u);
+ class Xi {
+ constructor(e, t = [], i = []) {
+ this._context = e,
+ this._plugins = new Map,
+ this._availablePlugins = new Map;
+ for (const e of t)
+ e.pluginName && this._availablePlugins.set(e.pluginName, e);
+ this._contextPlugins = new Map;
+ for (const[e, t]of i)
+ this._contextPlugins.set(e, t), this._contextPlugins.set(t, e), e.pluginName && this._availablePlugins.set(e.pluginName, e)
+ }
+ * [Symbol.iterator]() {
+ for (const e of this._plugins)
+ "function" == typeof e[0] && (yield e)
+ }
+ get(e) {
+ const t = this._plugins.get(e);
+ if (!t) {
+ let t = e;
+ throw "function" == typeof e && (t = e.pluginName || e.name),
+ new c.a("plugincollection-plugin-not-loaded", this._context, {
+ plugin: t
+ })
+ }
+ return t
+ }
+ has(e) {
+ return this._plugins.has(e)
+ }
+ init(e, t = [], i = []) {
+ const n = this,
+ o = this._context;
+ !function e(t, i = new Set) {
+ t.forEach(t => {
+ a(t) && (i.has(t) || (i.add(t), t.pluginName && !n._availablePlugins.has(t.pluginName) && n._availablePlugins.set(t.pluginName, t), t.requires && e(t.requires, i)))
+ })
+ }
+ (e),
+ h(e);
+ const r = [...function e(t, i = new Set) {
+ return t.map(e => a(e) ? e : n._availablePlugins.get(e)).reduce((t, n) => i.has(n) ? t : (i.add(n), n.requires && (h(n.requires, n), e(n.requires, i).forEach(e => t.add(e))), t.add(n)), new Set)
+ }
+ (e.filter(e => !d(e, t)))];
+ !function (e, t) {
+ for (const i of t) {
+ if ("function" != typeof i)
+ throw new c.a("plugincollection-replace-plugin-invalid-type", null, {
+ pluginItem: i
+ });
+ const t = i.pluginName;
+ if (!t)
+ throw new c.a("plugincollection-replace-plugin-missing-name", null, {
+ pluginItem: i
+ });
+ if (i.requires && i.requires.length)
+ throw new c.a("plugincollection-plugin-for-replacing-cannot-have-dependencies", null, {
+ pluginName: t
+ });
+ const o = n._availablePlugins.get(t);
+ if (!o)
+ throw new c.a("plugincollection-plugin-for-replacing-not-exist", null, {
+ pluginName: t
+ });
+ const r = e.indexOf(o);
+ if (-1 === r) {
+ if (n._contextPlugins.has(o))
+ return;
+ throw new c.a("plugincollection-plugin-for-replacing-not-loaded", null, {
+ pluginName: t
+ })
+ }
+ if (o.requires && o.requires.length)
+ throw new c.a("plugincollection-replaced-plugin-cannot-have-dependencies", null, {
+ pluginName: t
+ });
+ e.splice(r, 1, i),
+ n._availablePlugins.set(t, i)
+ }
+ }
+ (r, i);
+ const s = function (e) {
+ return e.map(e => {
+ const t = n._contextPlugins.get(e) || new e(o);
+ return n._add(e, t),
+ t
+ })
+ }
+ (r);
+ return f(s, "init").then(() => f(s, "afterInit")).then(() => s);
+ function a(e) {
+ return "function" == typeof e
+ }
+ function l(e) {
+ return a(e) && e.isContextPlugin
+ }
+ function d(e, t) {
+ return t.some(t => t === e || (u(e) === t || u(t) === e))
+ }
+ function u(e) {
+ return a(e) ? e.pluginName || e.name : e
+ }
+ function h(e, i = null) {
+ e.map(e => a(e) ? e : n._availablePlugins.get(e) || e).forEach(e => {
+ !function (e, t) {
+ if (a(e))
+ return;
+ if (t)
+ throw new c.a("plugincollection-soft-required", o, {
+ missingPlugin: e,
+ requiredBy: u(t)
+ });
+ throw new c.a("plugincollection-plugin-not-found", o, {
+ plugin: e
+ })
+ }
+ (e, i),
+ function (e, t) {
+ if (!l(t))
+ return;
+ if (l(e))
+ return;
+ throw new c.a("plugincollection-context-required", o, {
+ plugin: u(e),
+ requiredBy: u(t)
+ })
+ }
+ (e, i),
+ function (e, i) {
+ if (!i)
+ return;
+ if (!d(e, t))
+ return;
+ throw new c.a("plugincollection-required", o, {
+ plugin: u(e),
+ requiredBy: u(i)
+ })
+ }
+ (e, i)
+ })
+ }
+ function f(e, t) {
+ return e.reduce((e, i) => i[t] ? n._contextPlugins.has(i) ? e : e.then(i[t].bind(i)) : e, Promise.resolve())
+ }
+ }
+ destroy() {
+ const e = [];
+ for (const[, t]of this)
+ "function" != typeof t.destroy || this._contextPlugins.has(t) || e.push(t.destroy());
+ return Promise.all(e)
+ }
+ _add(e, t) {
+ this._plugins.set(e, t);
+ const i = e.pluginName;
+ if (i) {
+ if (this._plugins.has(i))
+ throw new c.a("plugincollection-plugin-name-conflict", null, {
+ pluginName: i,
+ plugin1: this._plugins.get(i).constructor,
+ plugin2: e
+ });
+ this._plugins.set(i, t)
+ }
+ }
+ }
+ function en(e) {
+ return Array.isArray(e) ? e : [e]
+ }
+ function tn(e, t, i = 1) {
+ if ("number" != typeof i)
+ throw new c.a("translation-service-quantity-not-a-number", null, {
+ quantity: i
+ });
+ const n = Object.keys(window.CKEDITOR_TRANSLATIONS).length;
+ 1 === n && (e = Object.keys(window.CKEDITOR_TRANSLATIONS)[0]);
+ const o = t.id || t.string;
+ if (0 === n || !function (e, t) {
+ return !!window.CKEDITOR_TRANSLATIONS[e] && !!window.CKEDITOR_TRANSLATIONS[e].dictionary[t]
+ }
+ (e, o))
+ return 1 !== i ? t.plural : t.string;
+ const r = window.CKEDITOR_TRANSLATIONS[e].dictionary,
+ s = window.CKEDITOR_TRANSLATIONS[e].getPluralForm || (e => 1 === e ? 0 : 1);
+ if ("string" == typeof r[o])
+ return r[o];
+ const a = Number(s(i));
+ return r[o][a]
+ }
+ Ke(Xi, u),
+ window.CKEDITOR_TRANSLATIONS || (window.CKEDITOR_TRANSLATIONS = {});
+ const nn = ["ar", "ara", "fa", "per", "fas", "he", "heb", "ku", "kur", "ug", "uig"];
+ function on(e) {
+ return nn.includes(e) ? "rtl" : "ltr"
+ }
+ class rn {
+ constructor(e = {}) {
+ this.uiLanguage = e.uiLanguage || "en",
+ this.contentLanguage = e.contentLanguage || this.uiLanguage,
+ this.uiLanguageDirection = on(this.uiLanguage),
+ this.contentLanguageDirection = on(this.contentLanguage),
+ this.t = (e, t) => this._t(e, t)
+ }
+ get language() {
+ return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),
+ this.uiLanguage
+ }
+ _t(e, t = []) {
+ t = en(t),
+ "string" == typeof e && (e = {
+ string: e
+ });
+ const i = !!e.plural ? t[0] : 1;
+ return function (e, t) {
+ return e.replace(/%(\d+)/g, (e, i) => i < t.length ? t[i] : e)
+ }
+ (tn(this.uiLanguage, e, i), t)
+ }
+ }
+ class sn {
+ constructor(e) {
+ this.config = new Gi(e, this.constructor.defaultConfig);
+ const t = this.constructor.builtinPlugins;
+ this.config.define("plugins", t),
+ this.plugins = new Xi(this, t);
+ const i = this.config.get("language") || {};
+ this.locale = new rn({
+ uiLanguage: "string" == typeof i ? i : i.ui,
+ contentLanguage: this.config.get("language.content")
+ }),
+ this.t = this.locale.t,
+ this.editors = new Zi,
+ this._contextOwner = null
+ }
+ initPlugins() {
+ const e = this.config.get("plugins") || [],
+ t = this.config.get("substitutePlugins") || [];
+ for (const i of e.concat(t)) {
+ if ("function" != typeof i)
+ throw new c.a("context-initplugins-constructor-only", null, {
+ Plugin: i
+ });
+ if (!0 !== i.isContextPlugin)
+ throw new c.a("context-initplugins-invalid-plugin", null, {
+ Plugin: i
+ })
+ }
+ return this.plugins.init(e, [], t)
+ }
+ destroy() {
+ return Promise.all(Array.from(this.editors, e => e.destroy())).then(() => this.plugins.destroy())
+ }
+ _addEditor(e, t) {
+ if (this._contextOwner)
+ throw new c.a("context-addeditor-private-context");
+ this.editors.add(e),
+ t && (this._contextOwner = e)
+ }
+ _removeEditor(e) {
+ return this.editors.has(e) && this.editors.remove(e),
+ this._contextOwner === e ? this.destroy() : Promise.resolve()
+ }
+ _getEditorConfig() {
+ const e = {};
+ for (const t of this.config.names())
+ ["plugins", "removePlugins", "extraPlugins"].includes(t) || (e[t] = this.config.get(t));
+ return e
+ }
+ static create(e) {
+ return new Promise(t => {
+ const i = new this(e);
+ t(i.initPlugins().then(() => i))
+ })
+ }
+ }
+ class an {
+ constructor(e) {
+ this.context = e
+ }
+ destroy() {
+ this.stopListening()
+ }
+ static get isContextPlugin() {
+ return !0
+ }
+ }
+ function cn(e, t) {
+ const i = Math.min(e.length, t.length);
+ for (let n = 0; n < i; n++)
+ if (e[n] != t[n])
+ return n;
+ return e.length == t.length ? "same" : e.length < t.length ? "prefix" : "extension"
+ }
+ Ke(an, Ue);
+ var ln = function (e) {
+ return qi(e, 4)
+ };
+ class dn {
+ constructor(e) {
+ this.document = e,
+ this.parent = null
+ }
+ get index() {
+ let e;
+ if (!this.parent)
+ return null;
+ if (-1 == (e = this.parent.getChildIndex(this)))
+ throw new c.a("view-node-not-found-in-parent", this);
+ return e
+ }
+ get nextSibling() {
+ const e = this.index;
+ return null !== e && this.parent.getChild(e + 1) || null
+ }
+ get previousSibling() {
+ const e = this.index;
+ return null !== e && this.parent.getChild(e - 1) || null
+ }
+ get root() {
+ let e = this;
+ for (; e.parent; )
+ e = e.parent;
+ return e
+ }
+ isAttached() {
+ return this.root.is("rootElement")
+ }
+ getPath() {
+ const e = [];
+ let t = this;
+ for (; t.parent; )
+ e.unshift(t.index), t = t.parent;
+ return e
+ }
+ getAncestors(e = {
+ includeSelf: !1,
+ parentFirst: !1
+ }) {
+ const t = [];
+ let i = e.includeSelf ? this : this.parent;
+ for (; i; )
+ t[e.parentFirst ? "push" : "unshift"](i), i = i.parent;
+ return t
+ }
+ getCommonAncestor(e, t = {}) {
+ const i = this.getAncestors(t),
+ n = e.getAncestors(t);
+ let o = 0;
+ for (; i[o] == n[o] && i[o]; )
+ o++;
+ return 0 === o ? null : i[o - 1]
+ }
+ isBefore(e) {
+ if (this == e)
+ return !1;
+ if (this.root !== e.root)
+ return !1;
+ const t = this.getPath(),
+ i = e.getPath(),
+ n = cn(t, i);
+ switch (n) {
+ case "prefix":
+ return !0;
+ case "extension":
+ return !1;
+ default:
+ return t[n] < i[n]
+ }
+ }
+ isAfter(e) {
+ return this != e && (this.root === e.root && !this.isBefore(e))
+ }
+ _remove() {
+ this.parent._removeChildren(this.index)
+ }
+ _fireChange(e, t) {
+ this.fire("change:" + e, t),
+ this.parent && this.parent._fireChange(e, t)
+ }
+ toJSON() {
+ const e = ln(this);
+ return delete e.parent,
+ e
+ }
+ is(e) {
+ return "node" === e || "view:node" === e
+ }
+ }
+ Ke(dn, u);
+ class un extends dn {
+ constructor(e, t) {
+ super(e),
+ this._textData = t
+ }
+ is(e) {
+ return "$text" === e || "view:$text" === e || "text" === e || "view:text" === e || "node" === e || "view:node" === e
+ }
+ get data() {
+ return this._textData
+ }
+ get _data() {
+ return this.data
+ }
+ set _data(e) {
+ this._fireChange("text", this),
+ this._textData = e
+ }
+ isSimilar(e) {
+ return e instanceof un && (this === e || this.data === e.data)
+ }
+ _clone() {
+ return new un(this.document, this.data)
+ }
+ }
+ class hn {
+ constructor(e, t, i) {
+ if (this.textNode = e, t < 0 || t > e.data.length)
+ throw new c.a("view-textproxy-wrong-offsetintext", this);
+ if (i < 0 || t + i > e.data.length)
+ throw new c.a("view-textproxy-wrong-length", this);
+ this.data = e.data.substring(t, t + i),
+ this.offsetInText = t
+ }
+ get offsetSize() {
+ return this.data.length
+ }
+ get isPartial() {
+ return this.data.length !== this.textNode.data.length
+ }
+ get parent() {
+ return this.textNode.parent
+ }
+ get root() {
+ return this.textNode.root
+ }
+ get document() {
+ return this.textNode.document
+ }
+ is(e) {
+ return "$textProxy" === e || "view:$textProxy" === e || "textProxy" === e || "view:textProxy" === e
+ }
+ getAncestors(e = {
+ includeSelf: !1,
+ parentFirst: !1
+ }) {
+ const t = [];
+ let i = e.includeSelf ? this.textNode : this.parent;
+ for (; null !== i; )
+ t[e.parentFirst ? "push" : "unshift"](i), i = i.parent;
+ return t
+ }
+ }
+ function fn(e) {
+ return Ji(e) ? new Map(e) : function (e) {
+ const t = new Map;
+ for (const i in e)
+ t.set(i, e[i]);
+ return t
+ }
+ (e)
+ }
+ class gn {
+ constructor(...e) {
+ this._patterns = [],
+ this.add(...e)
+ }
+ add(...e) {
+ for (let t of e)
+ ("string" == typeof t || t instanceof RegExp) && (t = {
+ name: t
+ }), t.classes && ("string" == typeof t.classes || t.classes instanceof RegExp) && (t.classes = [t.classes]), this._patterns.push(t)
+ }
+ match(...e) {
+ for (const t of e)
+ for (const e of this._patterns) {
+ const i = mn(t, e);
+ if (i)
+ return {
+ element: t,
+ pattern: e,
+ match: i
+ }
+ }
+ return null
+ }
+ matchAll(...e) {
+ const t = [];
+ for (const i of e)
+ for (const e of this._patterns) {
+ const n = mn(i, e);
+ n && t.push({
+ element: i,
+ pattern: e,
+ match: n
+ })
+ }
+ return t.length > 0 ? t : null
+ }
+ getElementName() {
+ if (1 !== this._patterns.length)
+ return null;
+ const e = this._patterns[0],
+ t = e.name;
+ return "function" == typeof e || !t || t instanceof RegExp ? null : t
+ }
+ }
+ function mn(e, t) {
+ if ("function" == typeof t)
+ return t(e);
+ const i = {};
+ return t.name && (i.name = function (e, t) {
+ if (e instanceof RegExp)
+ return e.test(t);
+ return e === t
+ }
+ (t.name, e.name), !i.name) || t.attributes && (i.attributes = function (e, t) {
+ const i = [];
+ for (const n in e) {
+ const o = e[n];
+ if (!t.hasAttribute(n))
+ return null; {
+ const e = t.getAttribute(n);
+ if (!0 === o)
+ i.push(n);
+ else if (o instanceof RegExp) {
+ if (!o.test(e))
+ return null;
+ i.push(n)
+ } else {
+ if (e !== o)
+ return null;
+ i.push(n)
+ }
+ }
+ }
+ return i
+ }
+ (t.attributes, e), !i.attributes) ? null : !(t.classes && (i.classes = function (e, t) {
+ const i = [];
+ for (const n of e)
+ if (n instanceof RegExp) {
+ const e = t.getClassNames();
+ for (const t of e)
+ n.test(t) && i.push(t);
+ if (0 === i.length)
+ return null
+ } else {
+ if (!t.hasClass(n))
+ return null;
+ i.push(n)
+ }
+ return i
+ }
+ (t.classes, e), !i.classes)) && (!(t.styles && (i.styles = function (e, t) {
+ const i = [];
+ for (const n in e) {
+ const o = e[n];
+ if (!t.hasStyle(n))
+ return null; {
+ const e = t.getStyle(n);
+ if (o instanceof RegExp) {
+ if (!o.test(e))
+ return null;
+ i.push(n)
+ } else {
+ if (e !== o)
+ return null;
+ i.push(n)
+ }
+ }
+ }
+ return i
+ }
+ (t.styles, e), !i.styles)) && i)
+ }
+ var pn = function (e) {
+ return "symbol" == typeof e || ge(e) && "[object Symbol]" == S(e)
+ },
+ bn = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
+ wn = /^\w*$/;
+ var kn = function (e, t) {
+ if (_e(e))
+ return !1;
+ var i = typeof e;
+ return !("number" != i && "symbol" != i && "boolean" != i && null != e && !pn(e)) || (wn.test(e) || !bn.test(e) || null != t && e in Object(t))
+ };
+ function _n(e, t) {
+ if ("function" != typeof e || null != t && "function" != typeof t)
+ throw new TypeError("Expected a function");
+ var i = function () {
+ var n = arguments,
+ o = t ? t.apply(this, n) : n[0],
+ r = i.cache;
+ if (r.has(o))
+ return r.get(o);
+ var s = e.apply(this, n);
+ return i.cache = r.set(o, s) || r,
+ s
+ };
+ return i.cache = new(_n.Cache || Ft),
+ i
+ }
+ _n.Cache = Ft;
+ var vn = _n;
+ var yn = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
+ xn = /\\(\\)?/g,
+ An = function (e) {
+ var t = vn(e, (function (e) {
+ return 500 === i.size && i.clear(),
+ e
+ })),
+ i = t.cache;
+ return t
+ }
+ ((function (e) {
+ var t = [];
+ return 46 === e.charCodeAt(0) && t.push(""),
+ e.replace(yn, (function (e, i, n, o) {
+ t.push(n ? o.replace(xn, "$1") : i || e)
+ })),
+ t
+ }));
+ var Cn = function (e, t) {
+ for (var i = -1, n = null == e ? 0 : e.length, o = Array(n); ++i < n; )
+ o[i] = t(e[i], i, e);
+ return o
+ },
+ Tn = _ ? _.prototype : void 0,
+ En = Tn ? Tn.toString : void 0;
+ var Pn = function e(t) {
+ if ("string" == typeof t)
+ return t;
+ if (_e(t))
+ return Cn(t, e) + "";
+ if (pn(t))
+ return En ? En.call(t) : "";
+ var i = t + "";
+ return "0" == i && 1 / t == -1 / 0 ? "-0" : i
+ };
+ var Sn = function (e) {
+ return null == e ? "" : Pn(e)
+ };
+ var Mn = function (e, t) {
+ return _e(e) ? e : kn(e, t) ? [e] : An(Sn(e))
+ };
+ var In = function (e) {
+ var t = null == e ? 0 : e.length;
+ return t ? e[t - 1] : void 0
+ };
+ var Nn = function (e) {
+ if ("string" == typeof e || pn(e))
+ return e;
+ var t = e + "";
+ return "0" == t && 1 / e == -1 / 0 ? "-0" : t
+ };
+ var Rn = function (e, t) {
+ for (var i = 0, n = (t = Mn(t, e)).length; null != e && i < n; )
+ e = e[Nn(t[i++])];
+ return i && i == n ? e : void 0
+ };
+ var On = function (e, t, i) {
+ var n = -1,
+ o = e.length;
+ t < 0 && (t = -t > o ? 0 : o + t),
+ (i = i > o ? o : i) < 0 && (i += o),
+ o = t > i ? 0 : i - t >>> 0,
+ t >>>= 0;
+ for (var r = Array(o); ++n < o; )
+ r[n] = e[n + t];
+ return r
+ };
+ var Dn = function (e, t) {
+ return t.length < 2 ? e : Rn(e, On(t, 0, -1))
+ };
+ var Ln = function (e, t) {
+ return t = Mn(t, e),
+ null == (e = Dn(e, t)) || delete e[Nn(In(t))]
+ };
+ var zn = function (e, t) {
+ return null == e || Ln(e, t)
+ };
+ var Vn = function (e, t, i) {
+ var n = null == e ? void 0 : Rn(e, t);
+ return void 0 === n ? i : n
+ };
+ var jn = function (e, t, i) {
+ (void 0 !== i && !G(e[t], i) || void 0 === i && !(t in e)) && Y(e, t, i)
+ };
+ var Bn = function (e) {
+ return function (t, i, n) {
+ for (var o = -1, r = Object(t), s = n(t), a = s.length; a--; ) {
+ var c = s[e ? a : ++o];
+ if (!1 === i(r[c], c, r))
+ break
+ }
+ return t
+ }
+ }
+ ();
+ var Fn = function (e) {
+ return ge(e) && ce(e)
+ };
+ var Hn = function (e, t) {
+ if (("constructor" !== t || "function" != typeof e[t]) && "__proto__" != t)
+ return e[t]
+ };
+ var Un = function (e) {
+ return J(e, De(e))
+ };
+ var Wn = function (e, t, i, n, o, r, s) {
+ var a = Hn(e, i),
+ c = Hn(t, i),
+ l = s.get(c);
+ if (l)
+ jn(e, i, l);
+ else {
+ var d = r ? r(a, c, i + "", e, t, s) : void 0,
+ u = void 0 === d;
+ if (u) {
+ var h = _e(c),
+ f = !h && Object(ve.a)(c),
+ g = !h && !f && Ee(c);
+ d = c,
+ h || f || g ? _e(a) ? d = a : Fn(a) ? d = Xt(a) : f ? (u = !1, d = Object(Zt.a)(c, !0)) : g ? (u = !1, d = Ri(c, !0)) : d = [] : ct(c) || ke(c) ? (d = a, ke(a) ? d = Un(a) : w(a) && !I(a) || (d = zi(c))) : u = !1
+ }
+ u && (s.set(c, d), o(d, c, n, r, s), s.delete(c)),
+ jn(e, i, d)
+ }
+ };
+ var qn = function e(t, i, n, o, r) {
+ t !== i && Bn(i, (function (s, a) {
+ if (r || (r = new Wt), w(s))
+ Wn(t, i, a, n, e, o, r);
+ else {
+ var c = o ? o(Hn(t, a), s, a + "", t, i, r) : void 0;
+ void 0 === c && (c = s),
+ jn(t, a, c)
+ }
+ }), De)
+ },
+ $n = he((function (e, t, i) {
+ qn(e, t, i)
+ }));
+ var Yn = function (e, t, i, n) {
+ if (!w(e))
+ return e;
+ for (var o = -1, r = (t = Mn(t, e)).length, s = r - 1, a = e; null != a && ++o < r; ) {
+ var c = Nn(t[o]),
+ l = i;
+ if ("__proto__" === c || "constructor" === c || "prototype" === c)
+ return e;
+ if (o != s) {
+ var d = a[c];
+ void 0 === (l = n ? n(d, c, a) : void 0) && (l = w(d) ? d : de(t[o + 1]) ? [] : {})
+ }
+ Q(a, c, l),
+ a = a[c]
+ }
+ return e
+ };
+ var Gn = function (e, t, i) {
+ return null == e ? e : Yn(e, t, i)
+ };
+ class Kn {
+ constructor(e) {
+ this._styles = {},
+ this._styleProcessor = e
+ }
+ get isEmpty() {
+ const e = Object.entries(this._styles);
+ return !Array.from(e).length
+ }
+ get size() {
+ return this.isEmpty ? 0 : this.getStyleNames().length
+ }
+ setTo(e) {
+ this.clear();
+ const t = Array.from(function (e) {
+ let t = null,
+ i = 0,
+ n = 0,
+ o = null;
+ const r = new Map;
+ if ("" === e)
+ return r;
+ ";" != e.charAt(e.length - 1) && (e += ";");
+ for (let s = 0; s < e.length; s++) {
+ const a = e.charAt(s);
+ if (null === t)
+ switch (a) {
+ case ":":
+ o || (o = e.substr(i, s - i), n = s + 1);
+ break;
+ case '"':
+ case "'":
+ t = a;
+ break;
+ case ";": {
+ const t = e.substr(n, s - n);
+ o && r.set(o.trim(), t.trim()),
+ o = null,
+ i = s + 1;
+ break
+ }
+ }
+ else
+ a === t && (t = null)
+ }
+ return r
+ }
+ (e).entries());
+ for (const[e, i]of t)
+ this._styleProcessor.toNormalizedForm(e, i, this._styles)
+ }
+ has(e) {
+ if (this.isEmpty)
+ return !1;
+ const t = this._styleProcessor.getReducedForm(e, this._styles).find(([t]) => t === e);
+ return Array.isArray(t)
+ }
+ set(e, t) {
+ if (w(e))
+ for (const[t, i]of Object.entries(e))
+ this._styleProcessor.toNormalizedForm(t, i, this._styles);
+ else
+ this._styleProcessor.toNormalizedForm(e, t, this._styles)
+ }
+ remove(e) {
+ const t = Jn(e);
+ zn(this._styles, t),
+ delete this._styles[e],
+ this._cleanEmptyObjectsOnPath(t)
+ }
+ getNormalized(e) {
+ return this._styleProcessor.getNormalized(e, this._styles)
+ }
+ toString() {
+ return this.isEmpty ? "" : this._getStylesEntries().map(e => e.join(":")).sort().join(";") + ";"
+ }
+ getAsString(e) {
+ if (this.isEmpty)
+ return;
+ if (this._styles[e] && !w(this._styles[e]))
+ return this._styles[e];
+ const t = this._styleProcessor.getReducedForm(e, this._styles).find(([t]) => t === e);
+ return Array.isArray(t) ? t[1] : void 0
+ }
+ getStyleNames() {
+ if (this.isEmpty)
+ return [];
+ return this._getStylesEntries().map(([e]) => e)
+ }
+ clear() {
+ this._styles = {}
+ }
+ _getStylesEntries() {
+ const e = [],
+ t = Object.keys(this._styles);
+ for (const i of t)
+ e.push(...this._styleProcessor.getReducedForm(i, this._styles));
+ return e
+ }
+ _cleanEmptyObjectsOnPath(e) {
+ const t = e.split(".");
+ if (!(t.length > 1))
+ return;
+ const i = t.splice(0, t.length - 1).join("."),
+ n = Vn(this._styles, i);
+ if (!n)
+ return;
+ !Array.from(Object.keys(n)).length && this.remove(i)
+ }
+ }
+ class Qn {
+ constructor() {
+ this._normalizers = new Map,
+ this._extractors = new Map,
+ this._reducers = new Map,
+ this._consumables = new Map
+ }
+ toNormalizedForm(e, t, i) {
+ if (w(t))
+ Zn(i, Jn(e), t);
+ else if (this._normalizers.has(e)) {
+ const n = this._normalizers.get(e), {
+ path: o,
+ value: r
+ } = n(t);
+ Zn(i, o, r)
+ } else
+ Zn(i, e, t)
+ }
+ getNormalized(e, t) {
+ if (!e)
+ return $n({}, t);
+ if (void 0 !== t[e])
+ return t[e];
+ if (this._extractors.has(e)) {
+ const i = this._extractors.get(e);
+ if ("string" == typeof i)
+ return Vn(t, i);
+ const n = i(e, t);
+ if (n)
+ return n
+ }
+ return Vn(t, Jn(e))
+ }
+ getReducedForm(e, t) {
+ const i = this.getNormalized(e, t);
+ if (void 0 === i)
+ return [];
+ if (this._reducers.has(e)) {
+ return this._reducers.get(e)(i)
+ }
+ return [[e, i]]
+ }
+ getRelatedStyles(e) {
+ return this._consumables.get(e) || []
+ }
+ setNormalizer(e, t) {
+ this._normalizers.set(e, t)
+ }
+ setExtractor(e, t) {
+ this._extractors.set(e, t)
+ }
+ setReducer(e, t) {
+ this._reducers.set(e, t)
+ }
+ setStyleRelation(e, t) {
+ this._mapStyleNames(e, t);
+ for (const i of t)
+ this._mapStyleNames(i, [e])
+ }
+ _mapStyleNames(e, t) {
+ this._consumables.has(e) || this._consumables.set(e, []),
+ this._consumables.get(e).push(...t)
+ }
+ }
+ function Jn(e) {
+ return e.replace("-", ".")
+ }
+ function Zn(e, t, i) {
+ let n = i;
+ w(i) && (n = $n({}, Vn(e, t), i)),
+ Gn(e, t, n)
+ }
+ class Xn extends dn {
+ constructor(e, t, i, n) {
+ if (super(e), this.name = t, this._attrs = function (e) {
+ e = fn(e);
+ for (const[t, i]of e)
+ null === i ? e.delete(t)
+ : "string" != typeof i && e.set(t, String(i));
+ return e
+ }
+ (i), this._children = [], n && this._insertChild(0, n), this._classes = new Set, this._attrs.has("class")) {
+ const e = this._attrs.get("class");
+ eo(this._classes, e),
+ this._attrs.delete("class")
+ }
+ this._styles = new Kn(this.document.stylesProcessor),
+ this._attrs.has("style") && (this._styles.setTo(this._attrs.get("style")), this._attrs.delete("style")),
+ this._customProperties = new Map,
+ this._isAllowedInsideAttributeElement = !1
+ }
+ get childCount() {
+ return this._children.length
+ }
+ get isEmpty() {
+ return 0 === this._children.length
+ }
+ get isAllowedInsideAttributeElement() {
+ return this._isAllowedInsideAttributeElement
+ }
+ is(e, t = null) {
+ return t ? t === this.name && ("element" === e || "view:element" === e) : "element" === e || "view:element" === e || "node" === e || "view:node" === e
+ }
+ getChild(e) {
+ return this._children[e]
+ }
+ getChildIndex(e) {
+ return this._children.indexOf(e)
+ }
+ getChildren() {
+ return this._children[Symbol.iterator]()
+ }
+ * getAttributeKeys() {
+ this._classes.size > 0 && (yield "class"),
+ this._styles.isEmpty || (yield "style"),
+ yield * this._attrs.keys()
+ }
+ * getAttributes() {
+ yield * this._attrs.entries(),
+ this._classes.size > 0 && (yield["class", this.getAttribute("class")]),
+ this._styles.isEmpty || (yield["style", this.getAttribute("style")])
+ }
+ getAttribute(e) {
+ if ("class" == e)
+ return this._classes.size > 0 ? [...this._classes].join(" ") : void 0;
+ if ("style" == e) {
+ const e = this._styles.toString();
+ return "" == e ? void 0 : e
+ }
+ return this._attrs.get(e)
+ }
+ hasAttribute(e) {
+ return "class" == e ? this._classes.size > 0 : "style" == e ? !this._styles.isEmpty : this._attrs.has(e)
+ }
+ isSimilar(e) {
+ if (!(e instanceof Xn))
+ return !1;
+ if (this === e)
+ return !0;
+ if (this.name != e.name)
+ return !1;
+ if (this.isAllowedInsideAttributeElement != e.isAllowedInsideAttributeElement)
+ return !1;
+ if (this._attrs.size !== e._attrs.size || this._classes.size !== e._classes.size || this._styles.size !== e._styles.size)
+ return !1;
+ for (const[t, i]of this._attrs)
+ if (!e._attrs.has(t) || e._attrs.get(t) !== i)
+ return !1;
+ for (const t of this._classes)
+ if (!e._classes.has(t))
+ return !1;
+ for (const t of this._styles.getStyleNames())
+ if (!e._styles.has(t) || e._styles.getAsString(t) !== this._styles.getAsString(t))
+ return !1;
+ return !0
+ }
+ hasClass(...e) {
+ for (const t of e)
+ if (!this._classes.has(t))
+ return !1;
+ return !0
+ }
+ getClassNames() {
+ return this._classes.keys()
+ }
+ getStyle(e) {
+ return this._styles.getAsString(e)
+ }
+ getNormalizedStyle(e) {
+ return this._styles.getNormalized(e)
+ }
+ getStyleNames() {
+ return this._styles.getStyleNames()
+ }
+ hasStyle(...e) {
+ for (const t of e)
+ if (!this._styles.has(t))
+ return !1;
+ return !0
+ }
+ findAncestor(...e) {
+ const t = new gn(...e);
+ let i = this.parent;
+ for (; i; ) {
+ if (t.match(i))
+ return i;
+ i = i.parent
+ }
+ return null
+ }
+ getCustomProperty(e) {
+ return this._customProperties.get(e)
+ }
+ * getCustomProperties() {
+ yield * this._customProperties.entries()
+ }
+ getIdentity() {
+ const e = Array.from(this._classes).sort().join(","),
+ t = this._styles.toString(),
+ i = Array.from(this._attrs).map(e => `${e[0]}="${e[1]}"`).sort().join(" ");
+ return this.name + ("" == e ? "" : ` class="${e}"`) + (t ? ` style="${t}"` : "") + ("" == i ? "" : " " + i)
+ }
+ _clone(e = !1) {
+ const t = [];
+ if (e)
+ for (const i of this.getChildren())
+ t.push(i._clone(e));
+ const i = new this.constructor(this.document, this.name, this._attrs, t);
+ return i._classes = new Set(this._classes),
+ i._styles.set(this._styles.getNormalized()),
+ i._customProperties = new Map(this._customProperties),
+ i.getFillerOffset = this.getFillerOffset,
+ i._isAllowedInsideAttributeElement = this.isAllowedInsideAttributeElement,
+ i
+ }
+ _appendChild(e) {
+ return this._insertChild(this.childCount, e)
+ }
+ _insertChild(e, t) {
+ this._fireChange("children", this);
+ let i = 0;
+ const n = function (e, t) {
+ if ("string" == typeof t)
+ return [new un(e, t)];
+ Ji(t) || (t = [t]);
+ return Array.from(t).map(t => "string" == typeof t ? new un(e, t) : t instanceof hn ? new un(e, t.data) : t)
+ }
+ (this.document, t);
+ for (const t of n)
+ null !== t.parent && t._remove(), t.parent = this, t.document = this.document, this._children.splice(e, 0, t), e++, i++;
+ return i
+ }
+ _removeChildren(e, t = 1) {
+ this._fireChange("children", this);
+ for (let i = e; i < e + t; i++)
+ this._children[i].parent = null;
+ return this._children.splice(e, t)
+ }
+ _setAttribute(e, t) {
+ t = String(t),
+ this._fireChange("attributes", this),
+ "class" == e ? eo(this._classes, t) : "style" == e ? this._styles.setTo(t) : this._attrs.set(e, t)
+ }
+ _removeAttribute(e) {
+ return this._fireChange("attributes", this),
+ "class" == e ? this._classes.size > 0 && (this._classes.clear(), !0) : "style" == e ? !this._styles.isEmpty && (this._styles.clear(), !0) : this._attrs.delete(e)
+ }
+ _addClass(e) {
+ this._fireChange("attributes", this);
+ for (const t of en(e))
+ this._classes.add(t)
+ }
+ _removeClass(e) {
+ this._fireChange("attributes", this);
+ for (const t of en(e))
+ this._classes.delete(t)
+ }
+ _setStyle(e, t) {
+ this._fireChange("attributes", this),
+ this._styles.set(e, t)
+ }
+ _removeStyle(e) {
+ this._fireChange("attributes", this);
+ for (const t of en(e))
+ this._styles.remove(t)
+ }
+ _setCustomProperty(e, t) {
+ this._customProperties.set(e, t)
+ }
+ _removeCustomProperty(e) {
+ return this._customProperties.delete(e)
+ }
+ }
+ function eo(e, t) {
+ const i = t.split(/\s+/);
+ e.clear(),
+ i.forEach(t => e.add(t))
+ }
+ class to extends Xn {
+ constructor(e, t, i, n) {
+ super(e, t, i, n),
+ this.getFillerOffset = io
+ }
+ is(e, t = null) {
+ return t ? t === this.name && ("containerElement" === e || "view:containerElement" === e || "element" === e || "view:element" === e) : "containerElement" === e || "view:containerElement" === e || "element" === e || "view:element" === e || "node" === e || "view:node" === e
+ }
+ }
+ function io() {
+ const e = [...this.getChildren()],
+ t = e[this.childCount - 1];
+ if (t && t.is("element", "br"))
+ return this.childCount;
+ for (const t of e)
+ if (!t.is("uiElement"))
+ return null;
+ return this.childCount
+ }
+ class no extends to {
+ constructor(e, t, i, n) {
+ super(e, t, i, n),
+ this.set("isReadOnly", !1),
+ this.set("isFocused", !1),
+ this.bind("isReadOnly").to(e),
+ this.bind("isFocused").to(e, "isFocused", t => t && e.selection.editableElement == this),
+ this.listenTo(e.selection, "change", () => {
+ this.isFocused = e.isFocused && e.selection.editableElement == this
+ })
+ }
+ is(e, t = null) {
+ return t ? t === this.name && ("editableElement" === e || "view:editableElement" === e || "containerElement" === e || "view:containerElement" === e || "element" === e || "view:element" === e) : "editableElement" === e || "view:editableElement" === e || "containerElement" === e || "view:containerElement" === e || "element" === e || "view:element" === e || "node" === e || "view:node" === e
+ }
+ destroy() {
+ this.stopListening()
+ }
+ }
+ Ke(no, Ue);
+ const oo = Symbol("rootName");
+ class ro extends no {
+ constructor(e, t) {
+ super(e, t),
+ this.rootName = "main"
+ }
+ is(e, t = null) {
+ return t ? t === this.name && ("rootElement" === e || "view:rootElement" === e || "editableElement" === e || "view:editableElement" === e || "containerElement" === e || "view:containerElement" === e || "element" === e || "view:element" === e) : "rootElement" === e || "view:rootElement" === e || "editableElement" === e || "view:editableElement" === e || "containerElement" === e || "view:containerElement" === e || "element" === e || "view:element" === e || "node" === e || "view:node" === e
+ }
+ get rootName() {
+ return this.getCustomProperty(oo)
+ }
+ set rootName(e) {
+ this._setCustomProperty(oo, e)
+ }
+ set _name(e) {
+ this.name = e
+ }
+ }
+ class so {
+ constructor(e = {}) {
+ if (!e.boundaries && !e.startPosition)
+ throw new c.a("view-tree-walker-no-start-position", null);
+ if (e.direction && "forward" != e.direction && "backward" != e.direction)
+ throw new c.a("view-tree-walker-unknown-direction", e.startPosition, {
+ direction: e.direction
+ });
+ this.boundaries = e.boundaries || null,
+ e.startPosition ? this.position = ao._createAt(e.startPosition) : this.position = ao._createAt(e.boundaries["backward" == e.direction ? "end" : "start"]),
+ this.direction = e.direction || "forward",
+ this.singleCharacters = !!e.singleCharacters,
+ this.shallow = !!e.shallow,
+ this.ignoreElementEnd = !!e.ignoreElementEnd,
+ this._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null,
+ this._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null
+ }
+ [Symbol.iterator]() {
+ return this
+ }
+ skip(e) {
+ let t,
+ i,
+ n;
+ do {
+ n = this.position,
+ ({
+ done: t,
+ value: i
+ } = this.next())
+ } while (!t && e(i));
+ t || (this.position = n)
+ }
+ next() {
+ return "forward" == this.direction ? this._next() : this._previous()
+ }
+ _next() {
+ let e = this.position.clone();
+ const t = this.position,
+ i = e.parent;
+ if (null === i.parent && e.offset === i.childCount)
+ return {
+ done: !0
+ };
+ if (i === this._boundaryEndParent && e.offset == this.boundaries.end.offset)
+ return {
+ done: !0
+ };
+ let n;
+ if (i instanceof un) {
+ if (e.isAtEnd)
+ return this.position = ao._createAfter(i), this._next();
+ n = i.data[e.offset]
+ } else
+ n = i.getChild(e.offset);
+ if (n instanceof Xn)
+ return this.shallow ? e.offset++ : e = new ao(n, 0), this.position = e, this._formatReturnValue("elementStart", n, t, e, 1);
+ if (n instanceof un) {
+ if (this.singleCharacters)
+ return e = new ao(n, 0), this.position = e, this._next(); {
+ let i,
+ o = n.data.length;
+ return n == this._boundaryEndParent ? (o = this.boundaries.end.offset, i = new hn(n, 0, o), e = ao._createAfter(i)) : (i = new hn(n, 0, n.data.length), e.offset++),
+ this.position = e,
+ this._formatReturnValue("text", i, t, e, o)
+ }
+ }
+ if ("string" == typeof n) {
+ let n;
+ if (this.singleCharacters)
+ n = 1;
+ else {
+ n = (i === this._boundaryEndParent ? this.boundaries.end.offset : i.data.length) - e.offset
+ }
+ const o = new hn(i, e.offset, n);
+ return e.offset += n,
+ this.position = e,
+ this._formatReturnValue("text", o, t, e, n)
+ }
+ return e = ao._createAfter(i),
+ this.position = e,
+ this.ignoreElementEnd ? this._next() : this._formatReturnValue("elementEnd", i, t, e)
+ }
+ _previous() {
+ let e = this.position.clone();
+ const t = this.position,
+ i = e.parent;
+ if (null === i.parent && 0 === e.offset)
+ return {
+ done: !0
+ };
+ if (i == this._boundaryStartParent && e.offset == this.boundaries.start.offset)
+ return {
+ done: !0
+ };
+ let n;
+ if (i instanceof un) {
+ if (e.isAtStart)
+ return this.position = ao._createBefore(i), this._previous();
+ n = i.data[e.offset - 1]
+ } else
+ n = i.getChild(e.offset - 1);
+ if (n instanceof Xn)
+ return this.shallow ? (e.offset--, this.position = e, this._formatReturnValue("elementStart", n, t, e, 1)) : (e = new ao(n, n.childCount), this.position = e, this.ignoreElementEnd ? this._previous() : this._formatReturnValue("elementEnd", n, t, e));
+ if (n instanceof un) {
+ if (this.singleCharacters)
+ return e = new ao(n, n.data.length), this.position = e, this._previous(); {
+ let i,
+ o = n.data.length;
+ if (n == this._boundaryStartParent) {
+ const t = this.boundaries.start.offset;
+ i = new hn(n, t, n.data.length - t),
+ o = i.data.length,
+ e = ao._createBefore(i)
+ } else
+ i = new hn(n, 0, n.data.length), e.offset--;
+ return this.position = e,
+ this._formatReturnValue("text", i, t, e, o)
+ }
+ }
+ if ("string" == typeof n) {
+ let n;
+ if (this.singleCharacters)
+ n = 1;
+ else {
+ const t = i === this._boundaryStartParent ? this.boundaries.start.offset : 0;
+ n = e.offset - t
+ }
+ e.offset -= n;
+ const o = new hn(i, e.offset, n);
+ return this.position = e,
+ this._formatReturnValue("text", o, t, e, n)
+ }
+ return e = ao._createBefore(i),
+ this.position = e,
+ this._formatReturnValue("elementStart", i, t, e, 1)
+ }
+ _formatReturnValue(e, t, i, n, o) {
+ return t instanceof hn && (t.offsetInText + t.data.length == t.textNode.data.length && ("forward" != this.direction || this.boundaries && this.boundaries.end.isEqual(this.position) ? i = ao._createAfter(t.textNode) : (n = ao._createAfter(t.textNode), this.position = n)), 0 === t.offsetInText && ("backward" != this.direction || this.boundaries && this.boundaries.start.isEqual(this.position) ? i = ao._createBefore(t.textNode) : (n = ao._createBefore(t.textNode), this.position = n))), {
+ done: !1,
+ value: {
+ type: e,
+ item: t,
+ previousPosition: i,
+ nextPosition: n,
+ length: o
+ }
+ }
+ }
+ }
+ class ao {
+ constructor(e, t) {
+ this.parent = e,
+ this.offset = t
+ }
+ get nodeAfter() {
+ return this.parent.is("$text") ? null : this.parent.getChild(this.offset) || null
+ }
+ get nodeBefore() {
+ return this.parent.is("$text") ? null : this.parent.getChild(this.offset - 1) || null
+ }
+ get isAtStart() {
+ return 0 === this.offset
+ }
+ get isAtEnd() {
+ const e = this.parent.is("$text") ? this.parent.data.length : this.parent.childCount;
+ return this.offset === e
+ }
+ get root() {
+ return this.parent.root
+ }
+ get editableElement() {
+ let e = this.parent;
+ for (; !(e instanceof no); ) {
+ if (!e.parent)
+ return null;
+ e = e.parent
+ }
+ return e
+ }
+ getShiftedBy(e) {
+ const t = ao._createAt(this),
+ i = t.offset + e;
+ return t.offset = i < 0 ? 0 : i,
+ t
+ }
+ getLastMatchingPosition(e, t = {}) {
+ t.startPosition = this;
+ const i = new so(t);
+ return i.skip(e),
+ i.position
+ }
+ getAncestors() {
+ return this.parent.is("documentFragment") ? [this.parent] : this.parent.getAncestors({
+ includeSelf: !0
+ })
+ }
+ getCommonAncestor(e) {
+ const t = this.getAncestors(),
+ i = e.getAncestors();
+ let n = 0;
+ for (; t[n] == i[n] && t[n]; )
+ n++;
+ return 0 === n ? null : t[n - 1]
+ }
+ is(e) {
+ return "position" === e || "view:position" === e
+ }
+ isEqual(e) {
+ return this.parent == e.parent && this.offset == e.offset
+ }
+ isBefore(e) {
+ return "before" == this.compareWith(e)
+ }
+ isAfter(e) {
+ return "after" == this.compareWith(e)
+ }
+ compareWith(e) {
+ if (this.root !== e.root)
+ return "different";
+ if (this.isEqual(e))
+ return "same";
+ const t = this.parent.is("node") ? this.parent.getPath() : [],
+ i = e.parent.is("node") ? e.parent.getPath() : [];
+ t.push(this.offset),
+ i.push(e.offset);
+ const n = cn(t, i);
+ switch (n) {
+ case "prefix":
+ return "before";
+ case "extension":
+ return "after";
+ default:
+ return t[n] < i[n] ? "before" : "after"
+ }
+ }
+ getWalker(e = {}) {
+ return e.startPosition = this,
+ new so(e)
+ }
+ clone() {
+ return new ao(this.parent, this.offset)
+ }
+ static _createAt(e, t) {
+ if (e instanceof ao)
+ return new this(e.parent, e.offset); {
+ const i = e;
+ if ("end" == t)
+ t = i.is("$text") ? i.data.length : i.childCount;
+ else {
+ if ("before" == t)
+ return this._createBefore(i);
+ if ("after" == t)
+ return this._createAfter(i);
+ if (0 !== t && !t)
+ throw new c.a("view-createpositionat-offset-required", i)
+ }
+ return new ao(i, t)
+ }
+ }
+ static _createAfter(e) {
+ if (e.is("$textProxy"))
+ return new ao(e.textNode, e.offsetInText + e.data.length);
+ if (!e.parent)
+ throw new c.a("view-position-after-root", e, {
+ root: e
+ });
+ return new ao(e.parent, e.index + 1)
+ }
+ static _createBefore(e) {
+ if (e.is("$textProxy"))
+ return new ao(e.textNode, e.offsetInText);
+ if (!e.parent)
+ throw new c.a("view-position-before-root", e, {
+ root: e
+ });
+ return new ao(e.parent, e.index)
+ }
+ }
+ class co {
+ constructor(e, t = null) {
+ this.start = e.clone(),
+ this.end = t ? t.clone() : e.clone()
+ }
+ * [Symbol.iterator]() {
+ yield * new so({
+ boundaries: this,
+ ignoreElementEnd: !0
+ })
+ }
+ get isCollapsed() {
+ return this.start.isEqual(this.end)
+ }
+ get isFlat() {
+ return this.start.parent === this.end.parent
+ }
+ get root() {
+ return this.start.root
+ }
+ getEnlarged() {
+ let e = this.start.getLastMatchingPosition(lo, {
+ direction: "backward"
+ }),
+ t = this.end.getLastMatchingPosition(lo);
+ return e.parent.is("$text") && e.isAtStart && (e = ao._createBefore(e.parent)),
+ t.parent.is("$text") && t.isAtEnd && (t = ao._createAfter(t.parent)),
+ new co(e, t)
+ }
+ getTrimmed() {
+ let e = this.start.getLastMatchingPosition(lo);
+ if (e.isAfter(this.end) || e.isEqual(this.end))
+ return new co(e, e);
+ let t = this.end.getLastMatchingPosition(lo, {
+ direction: "backward"
+ });
+ const i = e.nodeAfter,
+ n = t.nodeBefore;
+ return i && i.is("$text") && (e = new ao(i, 0)),
+ n && n.is("$text") && (t = new ao(n, n.data.length)),
+ new co(e, t)
+ }
+ isEqual(e) {
+ return this == e || this.start.isEqual(e.start) && this.end.isEqual(e.end)
+ }
+ containsPosition(e) {
+ return e.isAfter(this.start) && e.isBefore(this.end)
+ }
+ containsRange(e, t = !1) {
+ e.isCollapsed && (t = !1);
+ const i = this.containsPosition(e.start) || t && this.start.isEqual(e.start),
+ n = this.containsPosition(e.end) || t && this.end.isEqual(e.end);
+ return i && n
+ }
+ getDifference(e) {
+ const t = [];
+ return this.isIntersecting(e) ? (this.containsPosition(e.start) && t.push(new co(this.start, e.start)), this.containsPosition(e.end) && t.push(new co(e.end, this.end))) : t.push(this.clone()),
+ t
+ }
+ getIntersection(e) {
+ if (this.isIntersecting(e)) {
+ let t = this.start,
+ i = this.end;
+ return this.containsPosition(e.start) && (t = e.start),
+ this.containsPosition(e.end) && (i = e.end),
+ new co(t, i)
+ }
+ return null
+ }
+ getWalker(e = {}) {
+ return e.boundaries = this,
+ new so(e)
+ }
+ getCommonAncestor() {
+ return this.start.getCommonAncestor(this.end)
+ }
+ getContainedElement() {
+ if (this.isCollapsed)
+ return null;
+ let e = this.start.nodeAfter,
+ t = this.end.nodeBefore;
+ return this.start.parent.is("$text") && this.start.isAtEnd && this.start.parent.nextSibling && (e = this.start.parent.nextSibling),
+ this.end.parent.is("$text") && this.end.isAtStart && this.end.parent.previousSibling && (t = this.end.parent.previousSibling),
+ e && e.is("element") && e === t ? e : null
+ }
+ clone() {
+ return new co(this.start, this.end)
+ }
+ * getItems(e = {}) {
+ e.boundaries = this,
+ e.ignoreElementEnd = !0;
+ const t = new so(e);
+ for (const e of t)
+ yield e.item
+ }
+ * getPositions(e = {}) {
+ e.boundaries = this;
+ const t = new so(e);
+ yield t.position;
+ for (const e of t)
+ yield e.nextPosition
+ }
+ is(e) {
+ return "range" === e || "view:range" === e
+ }
+ isIntersecting(e) {
+ return this.start.isBefore(e.end) && this.end.isAfter(e.start)
+ }
+ static _createFromParentsAndOffsets(e, t, i, n) {
+ return new this(new ao(e, t), new ao(i, n))
+ }
+ static _createFromPositionAndShift(e, t) {
+ const i = e,
+ n = e.getShiftedBy(t);
+ return t > 0 ? new this(i, n) : new this(n, i)
+ }
+ static _createIn(e) {
+ return this._createFromParentsAndOffsets(e, 0, e, e.childCount)
+ }
+ static _createOn(e) {
+ const t = e.is("$textProxy") ? e.offsetSize : 1;
+ return this._createFromPositionAndShift(ao._createBefore(e), t)
+ }
+ }
+ function lo(e) {
+ return !(!e.item.is("attributeElement") && !e.item.is("uiElement"))
+ }
+ function uo(e) {
+ let t = 0;
+ for (const i of e)
+ t++;
+ return t
+ }
+ class ho {
+ constructor(e = null, t, i) {
+ this._ranges = [],
+ this._lastRangeBackward = !1,
+ this._isFake = !1,
+ this._fakeSelectionLabel = "",
+ this.setTo(e, t, i)
+ }
+ get isFake() {
+ return this._isFake
+ }
+ get fakeSelectionLabel() {
+ return this._fakeSelectionLabel
+ }
+ get anchor() {
+ if (!this._ranges.length)
+ return null;
+ const e = this._ranges[this._ranges.length - 1];
+ return (this._lastRangeBackward ? e.end : e.start).clone()
+ }
+ get focus() {
+ if (!this._ranges.length)
+ return null;
+ const e = this._ranges[this._ranges.length - 1];
+ return (this._lastRangeBackward ? e.start : e.end).clone()
+ }
+ get isCollapsed() {
+ return 1 === this.rangeCount && this._ranges[0].isCollapsed
+ }
+ get rangeCount() {
+ return this._ranges.length
+ }
+ get isBackward() {
+ return !this.isCollapsed && this._lastRangeBackward
+ }
+ get editableElement() {
+ return this.anchor ? this.anchor.editableElement : null
+ }
+ * getRanges() {
+ for (const e of this._ranges)
+ yield e.clone()
+ }
+ getFirstRange() {
+ let e = null;
+ for (const t of this._ranges)
+ e && !t.start.isBefore(e.start) || (e = t);
+ return e ? e.clone() : null
+ }
+ getLastRange() {
+ let e = null;
+ for (const t of this._ranges)
+ e && !t.end.isAfter(e.end) || (e = t);
+ return e ? e.clone() : null
+ }
+ getFirstPosition() {
+ const e = this.getFirstRange();
+ return e ? e.start.clone() : null
+ }
+ getLastPosition() {
+ const e = this.getLastRange();
+ return e ? e.end.clone() : null
+ }
+ isEqual(e) {
+ if (this.isFake != e.isFake)
+ return !1;
+ if (this.isFake && this.fakeSelectionLabel != e.fakeSelectionLabel)
+ return !1;
+ if (this.rangeCount != e.rangeCount)
+ return !1;
+ if (0 === this.rangeCount)
+ return !0;
+ if (!this.anchor.isEqual(e.anchor) || !this.focus.isEqual(e.focus))
+ return !1;
+ for (const t of this._ranges) {
+ let i = !1;
+ for (const n of e._ranges)
+ if (t.isEqual(n)) {
+ i = !0;
+ break
+ }
+ if (!i)
+ return !1
+ }
+ return !0
+ }
+ isSimilar(e) {
+ if (this.isBackward != e.isBackward)
+ return !1;
+ const t = uo(this.getRanges());
+ if (t != uo(e.getRanges()))
+ return !1;
+ if (0 == t)
+ return !0;
+ for (let t of this.getRanges()) {
+ t = t.getTrimmed();
+ let i = !1;
+ for (let n of e.getRanges())
+ if (n = n.getTrimmed(), t.start.isEqual(n.start) && t.end.isEqual(n.end)) {
+ i = !0;
+ break
+ }
+ if (!i)
+ return !1
+ }
+ return !0
+ }
+ getSelectedElement() {
+ return 1 !== this.rangeCount ? null : this.getFirstRange().getContainedElement()
+ }
+ setTo(e, t, i) {
+ if (null === e)
+ this._setRanges([]), this._setFakeOptions(t);
+ else if (e instanceof ho || e instanceof fo)
+ this._setRanges(e.getRanges(), e.isBackward), this._setFakeOptions({
+ fake: e.isFake,
+ label: e.fakeSelectionLabel
+ });
+ else if (e instanceof co)
+ this._setRanges([e], t && t.backward), this._setFakeOptions(t);
+ else if (e instanceof ao)
+ this._setRanges([new co(e)]), this._setFakeOptions(t);
+ else if (e instanceof dn) {
+ const n = !!i && !!i.backward;
+ let o;
+ if (void 0 === t)
+ throw new c.a("view-selection-setto-required-second-parameter", this);
+ o = "in" == t ? co._createIn(e) : "on" == t ? co._createOn(e) : new co(ao._createAt(e, t)),
+ this._setRanges([o], n),
+ this._setFakeOptions(i)
+ } else {
+ if (!Ji(e))
+ throw new c.a("view-selection-setto-not-selectable", this);
+ this._setRanges(e, t && t.backward),
+ this._setFakeOptions(t)
+ }
+ this.fire("change")
+ }
+ setFocus(e, t) {
+ if (null === this.anchor)
+ throw new c.a("view-selection-setfocus-no-ranges", this);
+ const i = ao._createAt(e, t);
+ if ("same" == i.compareWith(this.focus))
+ return;
+ const n = this.anchor;
+ this._ranges.pop(),
+ "before" == i.compareWith(n) ? this._addRange(new co(i, n), !0) : this._addRange(new co(n, i)),
+ this.fire("change")
+ }
+ is(e) {
+ return "selection" === e || "view:selection" === e
+ }
+ _setRanges(e, t = !1) {
+ e = Array.from(e),
+ this._ranges = [];
+ for (const t of e)
+ this._addRange(t);
+ this._lastRangeBackward = !!t
+ }
+ _setFakeOptions(e = {}) {
+ this._isFake = !!e.fake,
+ this._fakeSelectionLabel = e.fake && e.label || ""
+ }
+ _addRange(e, t = !1) {
+ if (!(e instanceof co))
+ throw new c.a("view-selection-add-range-not-range", this);
+ this._pushRange(e),
+ this._lastRangeBackward = !!t
+ }
+ _pushRange(e) {
+ for (const t of this._ranges)
+ if (e.isIntersecting(t))
+ throw new c.a("view-selection-range-intersects", this, {
+ addedRange: e,
+ intersectingRange: t
+ });
+ this._ranges.push(new co(e.start, e.end))
+ }
+ }
+ Ke(ho, u);
+ class fo {
+ constructor(e = null, t, i) {
+ this._selection = new ho,
+ this._selection.delegate("change").to(this),
+ this._selection.setTo(e, t, i)
+ }
+ get isFake() {
+ return this._selection.isFake
+ }
+ get fakeSelectionLabel() {
+ return this._selection.fakeSelectionLabel
+ }
+ get anchor() {
+ return this._selection.anchor
+ }
+ get focus() {
+ return this._selection.focus
+ }
+ get isCollapsed() {
+ return this._selection.isCollapsed
+ }
+ get rangeCount() {
+ return this._selection.rangeCount
+ }
+ get isBackward() {
+ return this._selection.isBackward
+ }
+ get editableElement() {
+ return this._selection.editableElement
+ }
+ get _ranges() {
+ return this._selection._ranges
+ }
+ * getRanges() {
+ yield * this._selection.getRanges()
+ }
+ getFirstRange() {
+ return this._selection.getFirstRange()
+ }
+ getLastRange() {
+ return this._selection.getLastRange()
+ }
+ getFirstPosition() {
+ return this._selection.getFirstPosition()
+ }
+ getLastPosition() {
+ return this._selection.getLastPosition()
+ }
+ getSelectedElement() {
+ return this._selection.getSelectedElement()
+ }
+ isEqual(e) {
+ return this._selection.isEqual(e)
+ }
+ isSimilar(e) {
+ return this._selection.isSimilar(e)
+ }
+ is(e) {
+ return "selection" === e || "documentSelection" == e || "view:selection" == e || "view:documentSelection" == e
+ }
+ _setTo(e, t, i) {
+ this._selection.setTo(e, t, i)
+ }
+ _setFocus(e, t) {
+ this._selection.setFocus(e, t)
+ }
+ }
+ Ke(fo, u);
+ class go extends o {
+ constructor(e, t, i) {
+ super(e, t),
+ this.startRange = i,
+ this._eventPhase = "none",
+ this._currentTarget = null
+ }
+ get eventPhase() {
+ return this._eventPhase
+ }
+ get currentTarget() {
+ return this._currentTarget
+ }
+ }
+ const mo = Symbol("bubbling contexts");
+ var po = {
+ fire(e, ...t) {
+ try {
+ const i = e instanceof o ? e : new o(this, e),
+ n = _o(this);
+ if (!n.size)
+ return;
+ if (bo(i, "capturing", this), wo(n, "$capture", i, ...t))
+ return i.return;
+ const r = i.startRange || this.selection.getFirstRange(),
+ s = r ? r.getContainedElement() : null,
+ a = !!s && Boolean(ko(n, s));
+ let c = s || function (e) {
+ if (!e)
+ return null;
+ const t = e.start.parent,
+ i = e.end.parent,
+ n = t.getPath(),
+ o = i.getPath();
+ return n.length > o.length ? t : i
+ }
+ (r);
+ if (bo(i, "atTarget", c), !a) {
+ if (wo(n, "$text", i, ...t))
+ return i.return;
+ bo(i, "bubbling", c)
+ }
+ for (; c; ) {
+ if (c.is("rootElement")) {
+ if (wo(n, "$root", i, ...t))
+ return i.return
+ } else if (c.is("element") && wo(n, c.name, i, ...t))
+ return i.return;
+ if (wo(n, c, i, ...t))
+ return i.return;
+ c = c.parent,
+ bo(i, "bubbling", c)
+ }
+ return bo(i, "bubbling", this),
+ wo(n, "$document", i, ...t),
+ i.return
+ } catch (e) {
+ c.a.rethrowUnexpectedError(e, this)
+ }
+ },
+ _addEventListener(e, t, i) {
+ const n = en(i.context || "$document"),
+ o = _o(this);
+ for (const r of n) {
+ let n = o.get(r);
+ n || (n = Object.create(u), o.set(r, n)),
+ this.listenTo(n, e, t, i)
+ }
+ },
+ _removeEventListener(e, t) {
+ const i = _o(this);
+ for (const n of i.values())
+ this.stopListening(n, e, t)
+ }
+ };
+ function bo(e, t, i) {
+ e instanceof go && (e._eventPhase = t, e._currentTarget = i)
+ }
+ function wo(e, t, i, ...n) {
+ const o = "string" == typeof t ? e.get(t) : ko(e, t);
+ return !!o && (o.fire(i, ...n), i.stop.called)
+ }
+ function ko(e, t) {
+ for (const[i, n]of e)
+ if ("function" == typeof i && i(t))
+ return n;
+ return null
+ }
+ function _o(e) {
+ return e[mo] || (e[mo] = new Map),
+ e[mo]
+ }
+ class vo {
+ constructor(e) {
+ this.selection = new fo,
+ this.roots = new Zi({
+ idProperty: "rootName"
+ }),
+ this.stylesProcessor = e,
+ this.set("isReadOnly", !1),
+ this.set("isFocused", !1),
+ this.set("isComposing", !1),
+ this._postFixers = new Set
+ }
+ getRoot(e = "main") {
+ return this.roots.get(e)
+ }
+ registerPostFixer(e) {
+ this._postFixers.add(e)
+ }
+ destroy() {
+ this.roots.map(e => e.destroy()),
+ this.stopListening()
+ }
+ _callPostFixers(e) {
+ let t = !1;
+ do {
+ for (const i of this._postFixers)
+ if (t = i(e), t)
+ break
+ } while (t)
+ }
+ }
+ Ke(vo, po),
+ Ke(vo, Ue);
+ class yo extends Xn {
+ constructor(e, t, i, n) {
+ super(e, t, i, n),
+ this.getFillerOffset = xo,
+ this._priority = 10,
+ this._id = null,
+ this._clonesGroup = null
+ }
+ get priority() {
+ return this._priority
+ }
+ get id() {
+ return this._id
+ }
+ getElementsWithSameId() {
+ if (null === this.id)
+ throw new c.a("attribute-element-get-elements-with-same-id-no-id", this);
+ return new Set(this._clonesGroup)
+ }
+ is(e, t = null) {
+ return t ? t === this.name && ("attributeElement" === e || "view:attributeElement" === e || "element" === e || "view:element" === e) : "attributeElement" === e || "view:attributeElement" === e || "element" === e || "view:element" === e || "node" === e || "view:node" === e
+ }
+ isSimilar(e) {
+ return null !== this.id || null !== e.id ? this.id === e.id : super.isSimilar(e) && this.priority == e.priority
+ }
+ _clone(e) {
+ const t = super._clone(e);
+ return t._priority = this._priority,
+ t._id = this._id,
+ t
+ }
+ }
+ function xo() {
+ if (Ao(this))
+ return null;
+ let e = this.parent;
+ for (; e && e.is("attributeElement"); ) {
+ if (Ao(e) > 1)
+ return null;
+ e = e.parent
+ }
+ return !e || Ao(e) > 1 ? null : this.childCount
+ }
+ function Ao(e) {
+ return Array.from(e.getChildren()).filter(e => !e.is("uiElement")).length
+ }
+ yo.DEFAULT_PRIORITY = 10;
+ class Co extends Xn {
+ constructor(e, t, i, n) {
+ super(e, t, i, n),
+ this._isAllowedInsideAttributeElement = !0,
+ this.getFillerOffset = To
+ }
+ is(e, t = null) {
+ return t ? t === this.name && ("emptyElement" === e || "view:emptyElement" === e || "element" === e || "view:element" === e) : "emptyElement" === e || "view:emptyElement" === e || "element" === e || "view:element" === e || "node" === e || "view:node" === e
+ }
+ _insertChild(e, t) {
+ if (t && (t instanceof dn || Array.from(t).length > 0))
+ throw new c.a("view-emptyelement-cannot-add", [this, t])
+ }
+ }
+ function To() {
+ return null
+ }
+ const Eo = navigator.userAgent.toLowerCase();
+ var Po = {
+ isMac: function (e) {
+ return e.indexOf("macintosh") > -1
+ }
+ (Eo),
+ isGecko: function (e) {
+ return !!e.match(/gecko\/\d+/)
+ }
+ (Eo),
+ isSafari: function (e) {
+ return e.indexOf(" applewebkit/") > -1 && -1 === e.indexOf("chrome")
+ }
+ (Eo),
+ isAndroid: function (e) {
+ return e.indexOf("android") > -1
+ }
+ (Eo),
+ isBlink: function (e) {
+ return e.indexOf("chrome/") > -1 && e.indexOf("edge/") < 0
+ }
+ (Eo),
+ features: {
+ isRegExpUnicodePropertySupported: function () {
+ let e = !1;
+ try {
+ e = 0 === "ć".search(new RegExp("[\\p{L}]", "u"))
+ } catch (e) {}
+ return e
+ }
+ ()
+ }
+ };
+ const So = {
+ ctrl: "⌃",
+ cmd: "⌘",
+ alt: "⌥",
+ shift: "⇧"
+ },
+ Mo = {
+ ctrl: "Ctrl+",
+ alt: "Alt+",
+ shift: "Shift+"
+ },
+ Io = function () {
+ const e = {
+ arrowleft: 37,
+ arrowup: 38,
+ arrowright: 39,
+ arrowdown: 40,
+ backspace: 8,
+ delete : 46,
+ enter: 13,
+ space: 32,
+ esc: 27,
+ tab: 9,
+ ctrl: 1114112,
+ shift: 2228224,
+ alt: 4456448,
+ cmd: 8912896
+ };
+ for (let t = 65; t <= 90; t++) {
+ const i = String.fromCharCode(t);
+ e[i.toLowerCase()] = t
+ }
+ for (let t = 48; t <= 57; t++)
+ e[t - 48] = t;
+ for (let t = 112; t <= 123; t++)
+ e["f" + (t - 111)] = t;
+ return e
+ }
+ (),
+ No = Object.fromEntries(Object.entries(Io).map(([e, t]) => [t, e.charAt(0).toUpperCase() + e.slice(1)]));
+ function Ro(e) {
+ let t;
+ if ("string" == typeof e) {
+ if (t = Io[e.toLowerCase()], !t)
+ throw new c.a("keyboard-unknown-key", null, {
+ key: e
+ })
+ } else
+ t = e.keyCode + (e.altKey ? Io.alt : 0) + (e.ctrlKey ? Io.ctrl : 0) + (e.shiftKey ? Io.shift : 0) + (e.metaKey ? Io.cmd : 0);
+ return t
+ }
+ function Oo(e) {
+ return "string" == typeof e && (e = function (e) {
+ return e.split("+").map(e => e.trim())
+ }
+ (e)),
+ e.map(e => "string" == typeof e ? function (e) {
+ if (e.endsWith("!"))
+ return Ro(e.slice(0, -1));
+ const t = Ro(e);
+ return Po.isMac && t == Io.ctrl ? Io.cmd : t
+ }
+ (e) : e).reduce((e, t) => t + e, 0)
+ }
+ function Do(e) {
+ let t = Oo(e);
+ return Object.entries(Po.isMac ? So : Mo).reduce((e, [i, n]) => (0 != (t & Io[i]) && (t &= ~Io[i], e += n), e), "") + (t ? No[t] : "")
+ }
+ function Lo(e, t) {
+ const i = "ltr" === t;
+ switch (e) {
+ case Io.arrowleft:
+ return i ? "left" : "right";
+ case Io.arrowright:
+ return i ? "right" : "left";
+ case Io.arrowup:
+ return "up";
+ case Io.arrowdown:
+ return "down"
+ }
+ }
+ function zo(e, t) {
+ const i = Lo(e, t);
+ return "down" === i || "right" === i
+ }
+ class Vo extends Xn {
+ constructor(e, t, i, n) {
+ super(e, t, i, n),
+ this._isAllowedInsideAttributeElement = !0,
+ this.getFillerOffset = Bo
+ }
+ is(e, t = null) {
+ return t ? t === this.name && ("uiElement" === e || "view:uiElement" === e || "element" === e || "view:element" === e) : "uiElement" === e || "view:uiElement" === e || "element" === e || "view:element" === e || "node" === e || "view:node" === e
+ }
+ _insertChild(e, t) {
+ if (t && (t instanceof dn || Array.from(t).length > 0))
+ throw new c.a("view-uielement-cannot-add", this)
+ }
+ render(e) {
+ return this.toDomElement(e)
+ }
+ toDomElement(e) {
+ const t = e.createElement(this.name);
+ for (const e of this.getAttributeKeys())
+ t.setAttribute(e, this.getAttribute(e));
+ return t
+ }
+ }
+ function jo(e) {
+ e.document.on("arrowKey", (t, i) => function (e, t, i) {
+ if (t.keyCode == Io.arrowright) {
+ const e = t.domTarget.ownerDocument.defaultView.getSelection(),
+ n = 1 == e.rangeCount && e.getRangeAt(0).collapsed;
+ if (n || t.shiftKey) {
+ const t = e.focusNode,
+ o = e.focusOffset,
+ r = i.domPositionToView(t, o);
+ if (null === r)
+ return;
+ let s = !1;
+ const a = r.getLastMatchingPosition(e => (e.item.is("uiElement") && (s = !0), !(!e.item.is("uiElement") && !e.item.is("attributeElement"))));
+ if (s) {
+ const t = i.viewPositionToDom(a);
+ n ? e.collapse(t.parent, t.offset) : e.extend(t.parent, t.offset)
+ }
+ }
+ }
+ }
+ (0, i, e.domConverter), {
+ priority: "low"
+ })
+ }
+ function Bo() {
+ return null
+ }
+ class Fo extends Xn {
+ constructor(e, t, i, n) {
+ super(e, t, i, n),
+ this._isAllowedInsideAttributeElement = !0,
+ this.getFillerOffset = Ho
+ }
+ is(e, t = null) {
+ return t ? t === this.name && ("rawElement" === e || "view:rawElement" === e || "element" === e || "view:element" === e) : "rawElement" === e || "view:rawElement" === e || e === this.name || e === "view:" + this.name || "element" === e || "view:element" === e || "node" === e || "view:node" === e
+ }
+ _insertChild(e, t) {
+ if (t && (t instanceof dn || Array.from(t).length > 0))
+ throw new c.a("view-rawelement-cannot-add", [this, t])
+ }
+ }
+ function Ho() {
+ return null
+ }
+ class Uo {
+ constructor(e, t) {
+ this.document = e,
+ this._children = [],
+ t && this._insertChild(0, t)
+ }
+ [Symbol.iterator]() {
+ return this._children[Symbol.iterator]()
+ }
+ get childCount() {
+ return this._children.length
+ }
+ get isEmpty() {
+ return 0 === this.childCount
+ }
+ get root() {
+ return this
+ }
+ get parent() {
+ return null
+ }
+ is(e) {
+ return "documentFragment" === e || "view:documentFragment" === e
+ }
+ _appendChild(e) {
+ return this._insertChild(this.childCount, e)
+ }
+ getChild(e) {
+ return this._children[e]
+ }
+ getChildIndex(e) {
+ return this._children.indexOf(e)
+ }
+ getChildren() {
+ return this._children[Symbol.iterator]()
+ }
+ _insertChild(e, t) {
+ this._fireChange("children", this);
+ let i = 0;
+ const n = function (e, t) {
+ if ("string" == typeof t)
+ return [new un(e, t)];
+ Ji(t) || (t = [t]);
+ return Array.from(t).map(t => "string" == typeof t ? new un(e, t) : t instanceof hn ? new un(e, t.data) : t)
+ }
+ (this.document, t);
+ for (const t of n)
+ null !== t.parent && t._remove(), t.parent = this, this._children.splice(e, 0, t), e++, i++;
+ return i
+ }
+ _removeChildren(e, t = 1) {
+ this._fireChange("children", this);
+ for (let i = e; i < e + t; i++)
+ this._children[i].parent = null;
+ return this._children.splice(e, t)
+ }
+ _fireChange(e, t) {
+ this.fire("change:" + e, t)
+ }
+ }
+ Ke(Uo, u);
+ class Wo {
+ constructor(e) {
+ this.document = e,
+ this._cloneGroups = new Map
+ }
+ setSelection(e, t, i) {
+ this.document.selection._setTo(e, t, i)
+ }
+ setSelectionFocus(e, t) {
+ this.document.selection._setFocus(e, t)
+ }
+ createDocumentFragment(e) {
+ return new Uo(this.document, e)
+ }
+ createText(e) {
+ return new un(this.document, e)
+ }
+ createAttributeElement(e, t, i = {}) {
+ const n = new yo(this.document, e, t);
+ return i.priority && (n._priority = i.priority),
+ i.id && (n._id = i.id),
+ n
+ }
+ createContainerElement(e, t, i = {}) {
+ const n = new to(this.document, e, t);
+ return void 0 !== i.isAllowedInsideAttributeElement && (n._isAllowedInsideAttributeElement = i.isAllowedInsideAttributeElement),
+ n
+ }
+ createEditableElement(e, t) {
+ const i = new no(this.document, e, t);
+ return i._document = this.document,
+ i
+ }
+ createEmptyElement(e, t, i = {}) {
+ const n = new Co(this.document, e, t);
+ return void 0 !== i.isAllowedInsideAttributeElement && (n._isAllowedInsideAttributeElement = i.isAllowedInsideAttributeElement),
+ n
+ }
+ createUIElement(e, t, i, n = {}) {
+ const o = new Vo(this.document, e, t);
+ return i && (o.render = i),
+ void 0 !== n.isAllowedInsideAttributeElement && (o._isAllowedInsideAttributeElement = n.isAllowedInsideAttributeElement),
+ o
+ }
+ createRawElement(e, t, i, n = {}) {
+ const o = new Fo(this.document, e, t);
+ return o.render = i || (() => {}),
+ void 0 !== n.isAllowedInsideAttributeElement && (o._isAllowedInsideAttributeElement = n.isAllowedInsideAttributeElement),
+ o
+ }
+ setAttribute(e, t, i) {
+ i._setAttribute(e, t)
+ }
+ removeAttribute(e, t) {
+ t._removeAttribute(e)
+ }
+ addClass(e, t) {
+ t._addClass(e)
+ }
+ removeClass(e, t) {
+ t._removeClass(e)
+ }
+ setStyle(e, t, i) {
+ ct(e) && void 0 === i && (i = t),
+ i._setStyle(e, t)
+ }
+ removeStyle(e, t) {
+ t._removeStyle(e)
+ }
+ setCustomProperty(e, t, i) {
+ i._setCustomProperty(e, t)
+ }
+ removeCustomProperty(e, t) {
+ return t._removeCustomProperty(e)
+ }
+ breakAttributes(e) {
+ return e instanceof ao ? this._breakAttributes(e) : this._breakAttributesRange(e)
+ }
+ breakContainer(e) {
+ const t = e.parent;
+ if (!t.is("containerElement"))
+ throw new c.a("view-writer-break-non-container-element", this.document);
+ if (!t.parent)
+ throw new c.a("view-writer-break-root", this.document);
+ if (e.isAtStart)
+ return ao._createBefore(t);
+ if (!e.isAtEnd) {
+ const i = t._clone(!1);
+ this.insert(ao._createAfter(t), i);
+ const n = new co(e, ao._createAt(t, "end")),
+ o = new ao(i, 0);
+ this.move(n, o)
+ }
+ return ao._createAfter(t)
+ }
+ mergeAttributes(e) {
+ const t = e.offset,
+ i = e.parent;
+ if (i.is("$text"))
+ return e;
+ if (i.is("attributeElement") && 0 === i.childCount) {
+ const e = i.parent,
+ t = i.index;
+ return i._remove(),
+ this._removeFromClonedElementsGroup(i),
+ this.mergeAttributes(new ao(e, t))
+ }
+ const n = i.getChild(t - 1),
+ o = i.getChild(t);
+ if (!n || !o)
+ return e;
+ if (n.is("$text") && o.is("$text"))
+ return Ko(n, o);
+ if (n.is("attributeElement") && o.is("attributeElement") && n.isSimilar(o)) {
+ const e = n.childCount;
+ return n._appendChild(o.getChildren()),
+ o._remove(),
+ this._removeFromClonedElementsGroup(o),
+ this.mergeAttributes(new ao(n, e))
+ }
+ return e
+ }
+ mergeContainers(e) {
+ const t = e.nodeBefore,
+ i = e.nodeAfter;
+ if (!(t && i && t.is("containerElement") && i.is("containerElement")))
+ throw new c.a("view-writer-merge-containers-invalid-position", this.document);
+ const n = t.getChild(t.childCount - 1),
+ o = n instanceof un ? ao._createAt(n, "end") : ao._createAt(t, "end");
+ return this.move(co._createIn(i), ao._createAt(t, "end")),
+ this.remove(co._createOn(i)),
+ o
+ }
+ insert(e, t) {
+ (function e(t, i) {
+ for (const n of t) {
+ if (!Qo.some(e => n instanceof e))
+ throw new c.a("view-writer-insert-invalid-node-type", i);
+ n.is("$text") || e(n.getChildren(), i)
+ }
+ })(t = Ji(t) ? [...t] : [t], this.document);
+ const i = t.reduce((e, t) => {
+ const i = e[e.length - 1],
+ n = !(t.is("uiElement") && t.isAllowedInsideAttributeElement);
+ return i && i.breakAttributes == n ? i.nodes.push(t) : e.push({
+ breakAttributes: n,
+ nodes: [t]
+ }),
+ e
+ }, []);
+ let n = null,
+ o = e;
+ for (const {
+ nodes: e,
+ breakAttributes: t
+ }
+ of i) {
+ const i = this._insertNodes(o, e, t);
+ n || (n = i.start),
+ o = i.end
+ }
+ return n ? new co(n, o) : new co(e)
+ }
+ remove(e) {
+ const t = e instanceof co ? e : co._createOn(e);
+ if (Zo(t, this.document), t.isCollapsed)
+ return new Uo(this.document);
+ const {
+ start: i,
+ end: n
+ } = this._breakAttributesRange(t, !0),
+ o = i.parent,
+ r = n.offset - i.offset,
+ s = o._removeChildren(i.offset, r);
+ for (const e of s)
+ this._removeFromClonedElementsGroup(e);
+ const a = this.mergeAttributes(i);
+ return t.start = a,
+ t.end = a.clone(),
+ new Uo(this.document, s)
+ }
+ clear(e, t) {
+ Zo(e, this.document);
+ const i = e.getWalker({
+ direction: "backward",
+ ignoreElementEnd: !0
+ });
+ for (const n of i) {
+ const i = n.item;
+ let o;
+ if (i.is("element") && t.isSimilar(i))
+ o = co._createOn(i);
+ else if (!n.nextPosition.isAfter(e.start) && i.is("$textProxy")) {
+ const e = i.getAncestors().find(e => e.is("element") && t.isSimilar(e));
+ e && (o = co._createIn(e))
+ }
+ o && (o.end.isAfter(e.end) && (o.end = e.end), o.start.isBefore(e.start) && (o.start = e.start), this.remove(o))
+ }
+ }
+ move(e, t) {
+ let i;
+ if (t.isAfter(e.end)) {
+ const n = (t = this._breakAttributes(t, !0)).parent,
+ o = n.childCount;
+ e = this._breakAttributesRange(e, !0),
+ i = this.remove(e),
+ t.offset += n.childCount - o
+ } else
+ i = this.remove(e);
+ return this.insert(t, i)
+ }
+ wrap(e, t) {
+ if (!(t instanceof yo))
+ throw new c.a("view-writer-wrap-invalid-attribute", this.document);
+ if (Zo(e, this.document), e.isCollapsed) {
+ let n = e.start;
+ n.parent.is("element") && (i = n.parent, !Array.from(i.getChildren()).some(e => !e.is("uiElement"))) && (n = n.getLastMatchingPosition(e => e.item.is("uiElement"))),
+ n = this._wrapPosition(n, t);
+ const o = this.document.selection;
+ return o.isCollapsed && o.getFirstPosition().isEqual(e.start) && this.setSelection(n),
+ new co(n)
+ }
+ return this._wrapRange(e, t);
+ var i
+ }
+ unwrap(e, t) {
+ if (!(t instanceof yo))
+ throw new c.a("view-writer-unwrap-invalid-attribute", this.document);
+ if (Zo(e, this.document), e.isCollapsed)
+ return e;
+ const {
+ start: i,
+ end: n
+ } = this._breakAttributesRange(e, !0),
+ o = i.parent,
+ r = this._unwrapChildren(o, i.offset, n.offset, t),
+ s = this.mergeAttributes(r.start);
+ s.isEqual(r.start) || r.end.offset--;
+ const a = this.mergeAttributes(r.end);
+ return new co(s, a)
+ }
+ rename(e, t) {
+ const i = new to(this.document, e, t.getAttributes());
+ return this.insert(ao._createAfter(t), i),
+ this.move(co._createIn(t), ao._createAt(i, 0)),
+ this.remove(co._createOn(t)),
+ i
+ }
+ clearClonedElementsGroup(e) {
+ this._cloneGroups.delete(e)
+ }
+ createPositionAt(e, t) {
+ return ao._createAt(e, t)
+ }
+ createPositionAfter(e) {
+ return ao._createAfter(e)
+ }
+ createPositionBefore(e) {
+ return ao._createBefore(e)
+ }
+ createRange(e, t) {
+ return new co(e, t)
+ }
+ createRangeOn(e) {
+ return co._createOn(e)
+ }
+ createRangeIn(e) {
+ return co._createIn(e)
+ }
+ createSelection(e, t, i) {
+ return new ho(e, t, i)
+ }
+ _insertNodes(e, t, i) {
+ let n,
+ o;
+ if (n = i ? qo(e) : e.parent.is("$text") ? e.parent.parent : e.parent, !n)
+ throw new c.a("view-writer-invalid-position-container", this.document);
+ o = i ? this._breakAttributes(e, !0) : e.parent.is("$text") ? Go(e) : e;
+ const r = n._insertChild(o.offset, t);
+ for (const e of t)
+ this._addToClonedElementsGroup(e);
+ const s = o.getShiftedBy(r),
+ a = this.mergeAttributes(o);
+ a.isEqual(o) || s.offset--;
+ const l = this.mergeAttributes(s);
+ return new co(a, l)
+ }
+ _wrapChildren(e, t, i, n) {
+ let o = t;
+ const r = [];
+ for (; o < i; ) {
+ const t = e.getChild(o),
+ i = t.is("$text"),
+ s = t.is("attributeElement"),
+ a = t.isAllowedInsideAttributeElement;
+ if (s && this._wrapAttributeElement(n, t))
+ r.push(new ao(e, o));
+ else if (i || a || s && $o(n, t)) {
+ const i = n._clone();
+ t._remove(),
+ i._appendChild(t),
+ e._insertChild(o, i),
+ this._addToClonedElementsGroup(i),
+ r.push(new ao(e, o))
+ } else
+ s && this._wrapChildren(t, 0, t.childCount, n);
+ o++
+ }
+ let s = 0;
+ for (const e of r) {
+ if (e.offset -= s, e.offset == t)
+ continue;
+ this.mergeAttributes(e).isEqual(e) || (s++, i--)
+ }
+ return co._createFromParentsAndOffsets(e, t, e, i)
+ }
+ _unwrapChildren(e, t, i, n) {
+ let o = t;
+ const r = [];
+ for (; o < i; ) {
+ const t = e.getChild(o);
+ if (t.is("attributeElement"))
+ if (t.isSimilar(n)) {
+ const n = t.getChildren(),
+ s = t.childCount;
+ t._remove(),
+ e._insertChild(o, n),
+ this._removeFromClonedElementsGroup(t),
+ r.push(new ao(e, o), new ao(e, o + s)),
+ o += s,
+ i += s - 1
+ } else
+ this._unwrapAttributeElement(n, t) ? (r.push(new ao(e, o), new ao(e, o + 1)), o++) : (this._unwrapChildren(t, 0, t.childCount, n), o++);
+ else
+ o++
+ }
+ let s = 0;
+ for (const e of r) {
+ if (e.offset -= s, e.offset == t || e.offset == i)
+ continue;
+ this.mergeAttributes(e).isEqual(e) || (s++, i--)
+ }
+ return co._createFromParentsAndOffsets(e, t, e, i)
+ }
+ _wrapRange(e, t) {
+ const {
+ start: i,
+ end: n
+ } = this._breakAttributesRange(e, !0),
+ o = i.parent,
+ r = this._wrapChildren(o, i.offset, n.offset, t),
+ s = this.mergeAttributes(r.start);
+ s.isEqual(r.start) || r.end.offset--;
+ const a = this.mergeAttributes(r.end);
+ return new co(s, a)
+ }
+ _wrapPosition(e, t) {
+ if (t.isSimilar(e.parent))
+ return Yo(e.clone());
+ e.parent.is("$text") && (e = Go(e));
+ const i = this.createAttributeElement();
+ i._priority = Number.POSITIVE_INFINITY,
+ i.isSimilar = () => !1,
+ e.parent._insertChild(e.offset, i);
+ const n = new co(e, e.getShiftedBy(1));
+ this.wrap(n, t);
+ const o = new ao(i.parent, i.index);
+ i._remove();
+ const r = o.nodeBefore,
+ s = o.nodeAfter;
+ return r instanceof un && s instanceof un ? Ko(r, s) : Yo(o)
+ }
+ _wrapAttributeElement(e, t) {
+ if (!Xo(e, t))
+ return !1;
+ if (e.name !== t.name || e.priority !== t.priority)
+ return !1;
+ for (const i of e.getAttributeKeys())
+ if ("class" !== i && "style" !== i && t.hasAttribute(i) && t.getAttribute(i) !== e.getAttribute(i))
+ return !1;
+ for (const i of e.getStyleNames())
+ if (t.hasStyle(i) && t.getStyle(i) !== e.getStyle(i))
+ return !1;
+ for (const i of e.getAttributeKeys())
+ "class" !== i && "style" !== i && (t.hasAttribute(i) || this.setAttribute(i, e.getAttribute(i), t));
+ for (const i of e.getStyleNames())
+ t.hasStyle(i) || this.setStyle(i, e.getStyle(i), t);
+ for (const i of e.getClassNames())
+ t.hasClass(i) || this.addClass(i, t);
+ return !0
+ }
+ _unwrapAttributeElement(e, t) {
+ if (!Xo(e, t))
+ return !1;
+ if (e.name !== t.name || e.priority !== t.priority)
+ return !1;
+ for (const i of e.getAttributeKeys())
+ if ("class" !== i && "style" !== i && (!t.hasAttribute(i) || t.getAttribute(i) !== e.getAttribute(i)))
+ return !1;
+ if (!t.hasClass(...e.getClassNames()))
+ return !1;
+ for (const i of e.getStyleNames())
+ if (!t.hasStyle(i) || t.getStyle(i) !== e.getStyle(i))
+ return !1;
+ for (const i of e.getAttributeKeys())
+ "class" !== i && "style" !== i && this.removeAttribute(i, t);
+ return this.removeClass(Array.from(e.getClassNames()), t),
+ this.removeStyle(Array.from(e.getStyleNames()), t),
+ !0
+ }
+ _breakAttributesRange(e, t = !1) {
+ const i = e.start,
+ n = e.end;
+ if (Zo(e, this.document), e.isCollapsed) {
+ const i = this._breakAttributes(e.start, t);
+ return new co(i, i)
+ }
+ const o = this._breakAttributes(n, t),
+ r = o.parent.childCount,
+ s = this._breakAttributes(i, t);
+ return o.offset += o.parent.childCount - r,
+ new co(s, o)
+ }
+ _breakAttributes(e, t = !1) {
+ const i = e.offset,
+ n = e.parent;
+ if (e.parent.is("emptyElement"))
+ throw new c.a("view-writer-cannot-break-empty-element", this.document);
+ if (e.parent.is("uiElement"))
+ throw new c.a("view-writer-cannot-break-ui-element", this.document);
+ if (e.parent.is("rawElement"))
+ throw new c.a("view-writer-cannot-break-raw-element", this.document);
+ if (!t && n.is("$text") && Jo(n.parent))
+ return e.clone();
+ if (Jo(n))
+ return e.clone();
+ if (n.is("$text"))
+ return this._breakAttributes(Go(e), t);
+ if (i == n.childCount) {
+ const e = new ao(n.parent, n.index + 1);
+ return this._breakAttributes(e, t)
+ }
+ if (0 === i) {
+ const e = new ao(n.parent, n.index);
+ return this._breakAttributes(e, t)
+ } {
+ const e = n.index + 1,
+ o = n._clone();
+ n.parent._insertChild(e, o),
+ this._addToClonedElementsGroup(o);
+ const r = n.childCount - i,
+ s = n._removeChildren(i, r);
+ o._appendChild(s);
+ const a = new ao(n.parent, e);
+ return this._breakAttributes(a, t)
+ }
+ }
+ _addToClonedElementsGroup(e) {
+ if (!e.root.is("rootElement"))
+ return;
+ if (e.is("element"))
+ for (const t of e.getChildren())
+ this._addToClonedElementsGroup(t);
+ const t = e.id;
+ if (!t)
+ return;
+ let i = this._cloneGroups.get(t);
+ i || (i = new Set, this._cloneGroups.set(t, i)),
+ i.add(e),
+ e._clonesGroup = i
+ }
+ _removeFromClonedElementsGroup(e) {
+ if (e.is("element"))
+ for (const t of e.getChildren())
+ this._removeFromClonedElementsGroup(t);
+ const t = e.id;
+ if (!t)
+ return;
+ const i = this._cloneGroups.get(t);
+ i && i.delete(e)
+ }
+ }
+ function qo(e) {
+ let t = e.parent;
+ for (; !Jo(t); ) {
+ if (!t)
+ return;
+ t = t.parent
+ }
+ return t
+ }
+ function $o(e, t) {
+ return e.priority < t.priority || !(e.priority > t.priority) && e.getIdentity() < t.getIdentity()
+ }
+ function Yo(e) {
+ const t = e.nodeBefore;
+ if (t && t.is("$text"))
+ return new ao(t, t.data.length);
+ const i = e.nodeAfter;
+ return i && i.is("$text") ? new ao(i, 0) : e
+ }
+ function Go(e) {
+ if (e.offset == e.parent.data.length)
+ return new ao(e.parent.parent, e.parent.index + 1);
+ if (0 === e.offset)
+ return new ao(e.parent.parent, e.parent.index);
+ const t = e.parent.data.slice(e.offset);
+ return e.parent._data = e.parent.data.slice(0, e.offset),
+ e.parent.parent._insertChild(e.parent.index + 1, new un(e.root.document, t)),
+ new ao(e.parent.parent, e.parent.index + 1)
+ }
+ function Ko(e, t) {
+ const i = e.data.length;
+ return e._data += t.data,
+ t._remove(),
+ new ao(e, i)
+ }
+ const Qo = [un, yo, to, Co, Fo, Vo];
+ function Jo(e) {
+ return e && (e.is("containerElement") || e.is("documentFragment"))
+ }
+ function Zo(e, t) {
+ const i = qo(e.start),
+ n = qo(e.end);
+ if (!i || !n || i !== n)
+ throw new c.a("view-writer-invalid-range-container", t)
+ }
+ function Xo(e, t) {
+ return null === e.id && null === t.id
+ }
+ function er(e) {
+ return "[object Text]" == Object.prototype.toString.call(e)
+ }
+ const tr = e => e.createTextNode(" "),
+ ir = e => {
+ const t = e.createElement("span");
+ return t.dataset.ckeFiller = !0,
+ t.innerHTML = " ",
+ t
+ },
+ nr = e => {
+ const t = e.createElement("br");
+ return t.dataset.ckeFiller = !0,
+ t
+ },
+ or = "".repeat(7);
+ function rr(e) {
+ return er(e) && e.data.substr(0, 7) === or
+ }
+ function sr(e) {
+ return 7 == e.data.length && rr(e)
+ }
+ function ar(e) {
+ return rr(e) ? e.data.slice(7) : e.data
+ }
+ function cr(e, t) {
+ if (t.keyCode == Io.arrowleft) {
+ const e = t.domTarget.ownerDocument.defaultView.getSelection();
+ if (1 == e.rangeCount && e.getRangeAt(0).collapsed) {
+ const t = e.getRangeAt(0).startContainer,
+ i = e.getRangeAt(0).startOffset;
+ rr(t) && i <= 7 && e.collapse(t, 0)
+ }
+ }
+ }
+ function lr(e, t, i, n = !1) {
+ i = i || function (e, t) {
+ return e === t
+ },
+ Array.isArray(e) || (e = Array.prototype.slice.call(e)),
+ Array.isArray(t) || (t = Array.prototype.slice.call(t));
+ const o = function (e, t, i) {
+ const n = dr(e, t, i);
+ if (-1 === n)
+ return {
+ firstIndex: -1,
+ lastIndexOld: -1,
+ lastIndexNew: -1
+ };
+ const o = ur(e, n),
+ r = ur(t, n),
+ s = dr(o, r, i),
+ a = e.length - s,
+ c = t.length - s;
+ return {
+ firstIndex: n,
+ lastIndexOld: a,
+ lastIndexNew: c
+ }
+ }
+ (e, t, i);
+ return n ? function (e, t) {
+ const {
+ firstIndex: i,
+ lastIndexOld: n,
+ lastIndexNew: o
+ } = e;
+ if (-1 === i)
+ return Array(t).fill("equal");
+ let r = [];
+ i > 0 && (r = r.concat(Array(i).fill("equal")));
+ o - i > 0 && (r = r.concat(Array(o - i).fill("insert")));
+ n - i > 0 && (r = r.concat(Array(n - i).fill("delete")));
+ o < t && (r = r.concat(Array(t - o).fill("equal")));
+ return r
+ }
+ (o, t.length) : function (e, t) {
+ const i = [], {
+ firstIndex: n,
+ lastIndexOld: o,
+ lastIndexNew: r
+ } = t;
+ r - n > 0 && i.push({
+ index: n,
+ type: "insert",
+ values: e.slice(n, r)
+ });
+ o - n > 0 && i.push({
+ index: n + (r - n),
+ type: "delete",
+ howMany: o - n
+ });
+ return i
+ }
+ (t, o)
+ }
+ function dr(e, t, i) {
+ for (let n = 0; n < Math.max(e.length, t.length); n++)
+ if (void 0 === e[n] || void 0 === t[n] || !i(e[n], t[n]))
+ return n;
+ return -1
+ }
+ function ur(e, t) {
+ return e.slice(t).reverse()
+ }
+ function hr(e, t, i) {
+ i = i || function (e, t) {
+ return e === t
+ };
+ const n = e.length,
+ o = t.length;
+ if (n > 200 || o > 200 || n + o > 300)
+ return hr.fastDiff(e, t, i, !0);
+ let r,
+ s;
+ if (o < n) {
+ const i = e;
+ e = t,
+ t = i,
+ r = "delete",
+ s = "insert"
+ } else
+ r = "insert", s = "delete";
+ const a = e.length,
+ c = t.length,
+ l = c - a,
+ d = {},
+ u = {};
+ function h(n) {
+ const o = (void 0 !== u[n - 1] ? u[n - 1] : -1) + 1,
+ l = void 0 !== u[n + 1] ? u[n + 1] : -1,
+ h = o > l ? -1 : 1;
+ d[n + h] && (d[n] = d[n + h].slice(0)),
+ d[n] || (d[n] = []),
+ d[n].push(o > l ? r : s);
+ let f = Math.max(o, l),
+ g = f - n;
+ for (; g < a && f < c && i(e[g], t[f]); )
+ g++, f++, d[n].push("equal");
+ return f
+ }
+ let f,
+ g = 0;
+ do {
+ for (f = -g; f < l; f++)
+ u[f] = h(f);
+ for (f = l + g; f > l; f--)
+ u[f] = h(f);
+ u[l] = h(l),
+ g++
+ } while (u[l] !== c);
+ return d[l].slice(1)
+ }
+ function fr(e, t, i) {
+ e.insertBefore(i, e.childNodes[t] || null)
+ }
+ function gr(e) {
+ const t = e.parentNode;
+ t && t.removeChild(e)
+ }
+ function mr(e) {
+ if (e) {
+ if (e.defaultView)
+ return e instanceof e.defaultView.Document;
+ if (e.ownerDocument && e.ownerDocument.defaultView)
+ return e instanceof e.ownerDocument.defaultView.Node
+ }
+ return !1
+ }
+ hr.fastDiff = lr;
+ class pr {
+ constructor(e, t) {
+ this.domDocuments = new Set,
+ this.domConverter = e,
+ this.markedAttributes = new Set,
+ this.markedChildren = new Set,
+ this.markedTexts = new Set,
+ this.selection = t,
+ this.isFocused = !1,
+ this._inlineFiller = null,
+ this._fakeSelectionContainer = null
+ }
+ markToSync(e, t) {
+ if ("text" === e)
+ this.domConverter.mapViewToDom(t.parent) && this.markedTexts.add(t);
+ else {
+ if (!this.domConverter.mapViewToDom(t))
+ return;
+ if ("attributes" === e)
+ this.markedAttributes.add(t);
+ else {
+ if ("children" !== e)
+ throw new c.a("view-renderer-unknown-type", this);
+ this.markedChildren.add(t)
+ }
+ }
+ }
+ render() {
+ let e;
+ for (const e of this.markedChildren)
+ this._updateChildrenMappings(e);
+ this._inlineFiller && !this._isSelectionInInlineFiller() && this._removeInlineFiller(),
+ this._inlineFiller ? e = this._getInlineFillerPosition() : this._needsInlineFillerAtSelection() && (e = this.selection.getFirstPosition(), this.markedChildren.add(e.parent));
+ for (const e of this.markedAttributes)
+ this._updateAttrs(e);
+ for (const t of this.markedChildren)
+ this._updateChildren(t, {
+ inlineFillerPosition: e
+ });
+ for (const t of this.markedTexts)
+ !this.markedChildren.has(t.parent) && this.domConverter.mapViewToDom(t.parent) && this._updateText(t, {
+ inlineFillerPosition: e
+ });
+ if (e) {
+ const t = this.domConverter.viewPositionToDom(e),
+ i = t.parent.ownerDocument;
+ rr(t.parent) ? this._inlineFiller = t.parent : this._inlineFiller = br(i, t.parent, t.offset)
+ } else
+ this._inlineFiller = null;
+ this._updateFocus(),
+ this._updateSelection(),
+ this.markedTexts.clear(),
+ this.markedAttributes.clear(),
+ this.markedChildren.clear()
+ }
+ _updateChildrenMappings(e) {
+ const t = this.domConverter.mapViewToDom(e);
+ if (!t)
+ return;
+ const i = this.domConverter.mapViewToDom(e).childNodes,
+ n = Array.from(this.domConverter.viewChildrenToDom(e, t.ownerDocument, {
+ withChildren: !1
+ })),
+ o = this._diffNodeLists(i, n),
+ r = this._findReplaceActions(o, i, n);
+ if (-1 !== r.indexOf("replace")) {
+ const t = {
+ equal: 0,
+ insert: 0,
+ delete : 0
+ };
+ for (const o of r)
+ if ("replace" === o) {
+ const o = t.equal + t.insert,
+ r = t.equal + t.delete,
+ s = e.getChild(o);
+ !s || s.is("uiElement") || s.is("rawElement") || this._updateElementMappings(s, i[r]),
+ gr(n[o]),
+ t.equal++
+ } else
+ t[o]++
+ }
+ }
+ _updateElementMappings(e, t) {
+ this.domConverter.unbindDomElement(t),
+ this.domConverter.bindElements(t, e),
+ this.markedChildren.add(e),
+ this.markedAttributes.add(e)
+ }
+ _getInlineFillerPosition() {
+ const e = this.selection.getFirstPosition();
+ return e.parent.is("$text") ? ao._createBefore(this.selection.getFirstPosition().parent) : e
+ }
+ _isSelectionInInlineFiller() {
+ if (1 != this.selection.rangeCount || !this.selection.isCollapsed)
+ return !1;
+ const e = this.selection.getFirstPosition(),
+ t = this.domConverter.viewPositionToDom(e);
+ return !!(t && er(t.parent) && rr(t.parent))
+ }
+ _removeInlineFiller() {
+ const e = this._inlineFiller;
+ if (!rr(e))
+ throw new c.a("view-renderer-filler-was-lost", this);
+ sr(e) ? e.parentNode.removeChild(e) : e.data = e.data.substr(7),
+ this._inlineFiller = null
+ }
+ _needsInlineFillerAtSelection() {
+ if (1 != this.selection.rangeCount || !this.selection.isCollapsed)
+ return !1;
+ const e = this.selection.getFirstPosition(),
+ t = e.parent,
+ i = e.offset;
+ if (!this.domConverter.mapViewToDom(t.root))
+ return !1;
+ if (!t.is("element"))
+ return !1;
+ if (!function (e) {
+ if ("false" == e.getAttribute("contenteditable"))
+ return !1;
+ const t = e.findAncestor(e => e.hasAttribute("contenteditable"));
+ return !t || "true" == t.getAttribute("contenteditable")
+ }
+ (t))
+ return !1;
+ if (i === t.getFillerOffset())
+ return !1;
+ const n = e.nodeBefore,
+ o = e.nodeAfter;
+ return !(n instanceof un || o instanceof un)
+ }
+ _updateText(e, t) {
+ const i = this.domConverter.findCorrespondingDomText(e),
+ n = this.domConverter.viewToDom(e, i.ownerDocument),
+ o = i.data;
+ let r = n.data;
+ const s = t.inlineFillerPosition;
+ if (s && s.parent == e.parent && s.offset == e.index && (r = or + r), o != r) {
+ const e = lr(o, r);
+ for (const t of e)
+ "insert" === t.type ? i.insertData(t.index, t.values.join("")) : i.deleteData(t.index, t.howMany)
+ }
+ }
+ _updateAttrs(e) {
+ const t = this.domConverter.mapViewToDom(e);
+ if (!t)
+ return;
+ const i = Array.from(t.attributes).map(e => e.name),
+ n = e.getAttributeKeys();
+ for (const i of n)
+ t.setAttribute(i, e.getAttribute(i));
+ for (const n of i)
+ e.hasAttribute(n) || t.removeAttribute(n)
+ }
+ _updateChildren(e, t) {
+ const i = this.domConverter.mapViewToDom(e);
+ if (!i)
+ return;
+ const n = t.inlineFillerPosition,
+ o = this.domConverter.mapViewToDom(e).childNodes,
+ r = Array.from(this.domConverter.viewChildrenToDom(e, i.ownerDocument, {
+ bind: !0,
+ inlineFillerPosition: n
+ }));
+ n && n.parent === e && br(i.ownerDocument, r, n.offset);
+ const s = this._diffNodeLists(o, r);
+ let a = 0;
+ const c = new Set;
+ for (const e of s)
+ "delete" === e ? (c.add(o[a]), gr(o[a])) : "equal" === e && a++;
+ a = 0;
+ for (const e of s)
+ "insert" === e ? (fr(i, a, r[a]), a++) : "equal" === e && (this._markDescendantTextToSync(this.domConverter.domToView(r[a])), a++);
+ for (const e of c)
+ e.parentNode || this.domConverter.unbindDomElement(e)
+ }
+ _diffNodeLists(e, t) {
+ return hr(e = function (e, t) {
+ const i = Array.from(e);
+ if (0 == i.length || !t)
+ return i;
+ i[i.length - 1] == t && i.pop();
+ return i
+ }
+ (e, this._fakeSelectionContainer), t, kr.bind(null, this.domConverter))
+ }
+ _findReplaceActions(e, t, i) {
+ if (-1 === e.indexOf("insert") || -1 === e.indexOf("delete"))
+ return e;
+ let n = [],
+ o = [],
+ r = [];
+ const s = {
+ equal: 0,
+ insert: 0,
+ delete : 0
+ };
+ for (const a of e)
+ "insert" === a ? r.push(i[s.equal + s.insert]) : "delete" === a ? o.push(t[s.equal + s.delete]) : (n = n.concat(hr(o, r, wr).map(e => "equal" === e ? "replace" : e)), n.push("equal"), o = [], r = []), s[a]++;
+ return n.concat(hr(o, r, wr).map(e => "equal" === e ? "replace" : e))
+ }
+ _markDescendantTextToSync(e) {
+ if (e)
+ if (e.is("$text"))
+ this.markedTexts.add(e);
+ else if (e.is("element"))
+ for (const t of e.getChildren())
+ this._markDescendantTextToSync(t)
+ }
+ _updateSelection() {
+ if (0 === this.selection.rangeCount)
+ return this._removeDomSelection(), void this._removeFakeSelection();
+ const e = this.domConverter.mapViewToDom(this.selection.editableElement);
+ this.isFocused && e && (this.selection.isFake ? this._updateFakeSelection(e) : (this._removeFakeSelection(), this._updateDomSelection(e)))
+ }
+ _updateFakeSelection(e) {
+ const t = e.ownerDocument;
+ this._fakeSelectionContainer || (this._fakeSelectionContainer = function (e) {
+ const t = e.createElement("div");
+ return t.className = "ck-fake-selection-container",
+ Object.assign(t.style, {
+ position: "fixed",
+ top: 0,
+ left: "-9999px",
+ width: "42px"
+ }),
+ t.textContent = " ",
+ t
+ }
+ (t));
+ const i = this._fakeSelectionContainer;
+ if (this.domConverter.bindFakeSelection(i, this.selection), !this._fakeSelectionNeedsUpdate(e))
+ return;
+ i.parentElement && i.parentElement == e || e.appendChild(i),
+ i.textContent = this.selection.fakeSelectionLabel || " ";
+ const n = t.getSelection(),
+ o = t.createRange();
+ n.removeAllRanges(),
+ o.selectNodeContents(i),
+ n.addRange(o)
+ }
+ _updateDomSelection(e) {
+ const t = e.ownerDocument.defaultView.getSelection();
+ if (!this._domSelectionNeedsUpdate(t))
+ return;
+ const i = this.domConverter.viewPositionToDom(this.selection.anchor),
+ n = this.domConverter.viewPositionToDom(this.selection.focus);
+ t.collapse(i.parent, i.offset),
+ t.extend(n.parent, n.offset),
+ Po.isGecko && function (e, t) {
+ const i = e.parent;
+ if (i.nodeType != Node.ELEMENT_NODE || e.offset != i.childNodes.length - 1)
+ return;
+ const n = i.childNodes[e.offset];
+ n && "BR" == n.tagName && t.addRange(t.getRangeAt(0))
+ }
+ (n, t)
+ }
+ _domSelectionNeedsUpdate(e) {
+ if (!this.domConverter.isDomSelectionCorrect(e))
+ return !0;
+ const t = e && this.domConverter.domSelectionToView(e);
+ return (!t || !this.selection.isEqual(t)) && !(!this.selection.isCollapsed && this.selection.isSimilar(t))
+ }
+ _fakeSelectionNeedsUpdate(e) {
+ const t = this._fakeSelectionContainer,
+ i = e.ownerDocument.getSelection();
+ return !t || t.parentElement !== e || (i.anchorNode !== t && !t.contains(i.anchorNode) || t.textContent !== this.selection.fakeSelectionLabel)
+ }
+ _removeDomSelection() {
+ for (const e of this.domDocuments) {
+ if (e.getSelection().rangeCount) {
+ const t = e.activeElement,
+ i = this.domConverter.mapDomToView(t);
+ t && i && e.getSelection().removeAllRanges()
+ }
+ }
+ }
+ _removeFakeSelection() {
+ const e = this._fakeSelectionContainer;
+ e && e.remove()
+ }
+ _updateFocus() {
+ if (this.isFocused) {
+ const e = this.selection.editableElement;
+ e && this.domConverter.focus(e)
+ }
+ }
+ }
+ function br(e, t, i) {
+ const n = t instanceof Array ? t : t.childNodes,
+ o = n[i];
+ if (er(o))
+ return o.data = or + o.data, o; {
+ const o = e.createTextNode(or);
+ return Array.isArray(t) ? n.splice(i, 0, o) : fr(t, i, o),
+ o
+ }
+ }
+ function wr(e, t) {
+ return mr(e) && mr(t) && !er(e) && !er(t) && e.nodeType !== Node.COMMENT_NODE && t.nodeType !== Node.COMMENT_NODE && e.tagName.toLowerCase() === t.tagName.toLowerCase()
+ }
+ function kr(e, t, i) {
+ return t === i || (er(t) && er(i) ? t.data === i.data : !(!e.isBlockFiller(t) || !e.isBlockFiller(i)))
+ }
+ Ke(pr, Ue);
+ var _r = {
+ window: window,
+ document: document
+ };
+ function vr(e) {
+ let t = 0;
+ for (; e.previousSibling; )
+ e = e.previousSibling, t++;
+ return t
+ }
+ function yr(e) {
+ const t = [];
+ for (; e && e.nodeType != Node.DOCUMENT_NODE; )
+ t.unshift(e), e = e.parentNode;
+ return t
+ }
+ const xr = nr(document),
+ Ar = tr(document),
+ Cr = ir(document);
+ class Tr {
+ constructor(e, t = {}) {
+ this.document = e,
+ this.blockFillerMode = t.blockFillerMode || "br",
+ this.preElements = ["pre"],
+ this.blockElements = ["p", "div", "h1", "h2", "h3", "h4", "h5", "h6", "li", "dd", "dt", "figcaption", "td", "th"],
+ this._domToViewMapping = new WeakMap,
+ this._viewToDomMapping = new WeakMap,
+ this._fakeSelectionMapping = new WeakMap,
+ this._rawContentElementMatcher = new gn,
+ this._encounteredRawContentDomNodes = new WeakSet
+ }
+ bindFakeSelection(e, t) {
+ this._fakeSelectionMapping.set(e, new ho(t))
+ }
+ fakeSelectionToView(e) {
+ return this._fakeSelectionMapping.get(e)
+ }
+ bindElements(e, t) {
+ this._domToViewMapping.set(e, t),
+ this._viewToDomMapping.set(t, e)
+ }
+ unbindDomElement(e) {
+ const t = this._domToViewMapping.get(e);
+ if (t) {
+ this._domToViewMapping.delete(e),
+ this._viewToDomMapping.delete(t);
+ for (const t of e.childNodes)
+ this.unbindDomElement(t)
+ }
+ }
+ bindDocumentFragments(e, t) {
+ this._domToViewMapping.set(e, t),
+ this._viewToDomMapping.set(t, e)
+ }
+ viewToDom(e, t, i = {}) {
+ if (e.is("$text")) {
+ const i = this._processDataFromViewText(e);
+ return t.createTextNode(i)
+ } {
+ if (this.mapViewToDom(e))
+ return this.mapViewToDom(e);
+ let n;
+ if (e.is("documentFragment"))
+ n = t.createDocumentFragment(), i.bind && this.bindDocumentFragments(n, e);
+ else {
+ if (e.is("uiElement"))
+ return n = e.render(t), i.bind && this.bindElements(n, e), n;
+ n = e.hasAttribute("xmlns") ? t.createElementNS(e.getAttribute("xmlns"), e.name) : t.createElement(e.name),
+ e.is("rawElement") && e.render(n),
+ i.bind && this.bindElements(n, e);
+ for (const t of e.getAttributeKeys())
+ n.setAttribute(t, e.getAttribute(t))
+ }
+ if (!1 !== i.withChildren)
+ for (const o of this.viewChildrenToDom(e, t, i))
+ n.appendChild(o);
+ return n
+ }
+ }
+ * viewChildrenToDom(e, t, i = {}) {
+ const n = e.getFillerOffset && e.getFillerOffset();
+ let o = 0;
+ for (const r of e.getChildren())
+ n === o && (yield this._getBlockFiller(t)), yield this.viewToDom(r, t, i), o++;
+ n === o && (yield this._getBlockFiller(t))
+ }
+ viewRangeToDom(e) {
+ const t = this.viewPositionToDom(e.start),
+ i = this.viewPositionToDom(e.end),
+ n = document.createRange();
+ return n.setStart(t.parent, t.offset),
+ n.setEnd(i.parent, i.offset),
+ n
+ }
+ viewPositionToDom(e) {
+ const t = e.parent;
+ if (t.is("$text")) {
+ const i = this.findCorrespondingDomText(t);
+ if (!i)
+ return null;
+ let n = e.offset;
+ return rr(i) && (n += 7), {
+ parent: i,
+ offset: n
+ }
+ } {
+ let i,
+ n,
+ o;
+ if (0 === e.offset) {
+ if (i = this.mapViewToDom(t), !i)
+ return null;
+ o = i.childNodes[0]
+ } else {
+ const t = e.nodeBefore;
+ if (n = t.is("$text") ? this.findCorrespondingDomText(t) : this.mapViewToDom(e.nodeBefore), !n)
+ return null;
+ i = n.parentNode,
+ o = n.nextSibling
+ }
+ if (er(o) && rr(o))
+ return {
+ parent: o,
+ offset: 7
+ };
+ return {
+ parent: i,
+ offset: n ? vr(n) + 1 : 0
+ }
+ }
+ }
+ domToView(e, t = {}) {
+ if (this.isBlockFiller(e))
+ return null;
+ const i = this.getHostViewElement(e);
+ if (i)
+ return i;
+ if (er(e)) {
+ if (sr(e))
+ return null; {
+ const t = this._processDataFromDomText(e);
+ return "" === t ? null : new un(this.document, t)
+ }
+ }
+ if (this.isComment(e))
+ return null; {
+ if (this.mapDomToView(e))
+ return this.mapDomToView(e);
+ let i;
+ if (this.isDocumentFragment(e))
+ i = new Uo(this.document), t.bind && this.bindDocumentFragments(e, i);
+ else {
+ const n = t.keepOriginalCase ? e.tagName : e.tagName.toLowerCase();
+ i = new Xn(this.document, n),
+ t.bind && this.bindElements(e, i);
+ const o = e.attributes;
+ for (let e = o.length - 1; e >= 0; e--)
+ i._setAttribute(o[e].name, o[e].value);
+ if (!1 !== t.withChildren && this._rawContentElementMatcher.match(i))
+ return i._setCustomProperty("$rawContent", e.innerHTML), this._encounteredRawContentDomNodes.add(e), i
+ }
+ if (!1 !== t.withChildren)
+ for (const n of this.domChildrenToView(e, t))
+ i._appendChild(n);
+ return i
+ }
+ }
+ * domChildrenToView(e, t = {}) {
+ for (let i = 0; i < e.childNodes.length; i++) {
+ const n = e.childNodes[i],
+ o = this.domToView(n, t);
+ null !== o && (yield o)
+ }
+ }
+ domSelectionToView(e) {
+ if (1 === e.rangeCount) {
+ let t = e.getRangeAt(0).startContainer;
+ er(t) && (t = t.parentNode);
+ const i = this.fakeSelectionToView(t);
+ if (i)
+ return i
+ }
+ const t = this.isDomSelectionBackward(e),
+ i = [];
+ for (let t = 0; t < e.rangeCount; t++) {
+ const n = e.getRangeAt(t),
+ o = this.domRangeToView(n);
+ o && i.push(o)
+ }
+ return new ho(i, {
+ backward: t
+ })
+ }
+ domRangeToView(e) {
+ const t = this.domPositionToView(e.startContainer, e.startOffset),
+ i = this.domPositionToView(e.endContainer, e.endOffset);
+ return t && i ? new co(t, i) : null
+ }
+ domPositionToView(e, t) {
+ if (this.isBlockFiller(e))
+ return this.domPositionToView(e.parentNode, vr(e));
+ const i = this.mapDomToView(e);
+ if (i && (i.is("uiElement") || i.is("rawElement")))
+ return ao._createBefore(i);
+ if (er(e)) {
+ if (sr(e))
+ return this.domPositionToView(e.parentNode, vr(e));
+ const i = this.findCorrespondingViewText(e);
+ let n = t;
+ return i ? (rr(e) && (n -= 7, n = n < 0 ? 0 : n), new ao(i, n)) : null
+ }
+ if (0 === t) {
+ const t = this.mapDomToView(e);
+ if (t)
+ return new ao(t, 0)
+ } else {
+ const i = e.childNodes[t - 1],
+ n = er(i) ? this.findCorrespondingViewText(i) : this.mapDomToView(i);
+ if (n && n.parent)
+ return new ao(n.parent, n.index + 1)
+ }
+ return null
+ }
+ mapDomToView(e) {
+ return this.getHostViewElement(e) || this._domToViewMapping.get(e)
+ }
+ findCorrespondingViewText(e) {
+ if (sr(e))
+ return null;
+ const t = this.getHostViewElement(e);
+ if (t)
+ return t;
+ const i = e.previousSibling;
+ if (i) {
+ if (!this.isElement(i))
+ return null;
+ const e = this.mapDomToView(i);
+ if (e) {
+ return e.nextSibling instanceof un ? e.nextSibling : null
+ }
+ } else {
+ const t = this.mapDomToView(e.parentNode);
+ if (t) {
+ const e = t.getChild(0);
+ return e instanceof un ? e : null
+ }
+ }
+ return null
+ }
+ mapViewToDom(e) {
+ return this._viewToDomMapping.get(e)
+ }
+ findCorrespondingDomText(e) {
+ const t = e.previousSibling;
+ return t && this.mapViewToDom(t) ? this.mapViewToDom(t).nextSibling : !t && e.parent && this.mapViewToDom(e.parent) ? this.mapViewToDom(e.parent).childNodes[0] : null
+ }
+ focus(e) {
+ const t = this.mapViewToDom(e);
+ if (t && t.ownerDocument.activeElement !== t) {
+ const {
+ scrollX: e,
+ scrollY: i
+ } = _r.window,
+ n = [];
+ Pr(t, e => {
+ const {
+ scrollLeft: t,
+ scrollTop: i
+ } = e;
+ n.push([t, i])
+ }),
+ t.focus(),
+ Pr(t, e => {
+ const[t, i] = n.shift();
+ e.scrollLeft = t,
+ e.scrollTop = i
+ }),
+ _r.window.scrollTo(e, i)
+ }
+ }
+ isElement(e) {
+ return e && e.nodeType == Node.ELEMENT_NODE
+ }
+ isDocumentFragment(e) {
+ return e && e.nodeType == Node.DOCUMENT_FRAGMENT_NODE
+ }
+ isComment(e) {
+ return e && e.nodeType == Node.COMMENT_NODE
+ }
+ isBlockFiller(e) {
+ return "br" == this.blockFillerMode ? e.isEqualNode(xr) : !("BR" !== e.tagName || !Sr(e, this.blockElements) || 1 !== e.parentNode.childNodes.length) || (e.isEqualNode(Cr) || function (e, t) {
+ return e.isEqualNode(Ar) && Sr(e, t) && 1 === e.parentNode.childNodes.length
+ }
+ (e, this.blockElements))
+ }
+ isDomSelectionBackward(e) {
+ if (e.isCollapsed)
+ return !1;
+ const t = document.createRange();
+ t.setStart(e.anchorNode, e.anchorOffset),
+ t.setEnd(e.focusNode, e.focusOffset);
+ const i = t.collapsed;
+ return t.detach(),
+ i
+ }
+ getHostViewElement(e) {
+ const t = yr(e);
+ for (t.pop(); t.length; ) {
+ const e = t.pop(),
+ i = this._domToViewMapping.get(e);
+ if (i && (i.is("uiElement") || i.is("rawElement")))
+ return i
+ }
+ return null
+ }
+ isDomSelectionCorrect(e) {
+ return this._isDomSelectionPositionCorrect(e.anchorNode, e.anchorOffset) && this._isDomSelectionPositionCorrect(e.focusNode, e.focusOffset)
+ }
+ registerRawContentMatcher(e) {
+ this._rawContentElementMatcher.add(e)
+ }
+ _getBlockFiller(e) {
+ switch (this.blockFillerMode) {
+ case "nbsp":
+ return tr(e);
+ case "markedNbsp":
+ return ir(e);
+ case "br":
+ return nr(e)
+ }
+ }
+ _isDomSelectionPositionCorrect(e, t) {
+ if (er(e) && rr(e) && t < 7)
+ return !1;
+ if (this.isElement(e) && rr(e.childNodes[t]))
+ return !1;
+ const i = this.mapDomToView(e);
+ return !i || !i.is("uiElement") && !i.is("rawElement")
+ }
+ _processDataFromViewText(e) {
+ let t = e.data;
+ if (e.getAncestors().some(e => this.preElements.includes(e.name)))
+ return t;
+ if (" " == t.charAt(0)) {
+ const i = this._getTouchingViewTextNode(e, !1);
+ !(i && this._nodeEndsWithSpace(i)) && i || (t = " " + t.substr(1))
+ }
+ if (" " == t.charAt(t.length - 1)) {
+ const i = this._getTouchingViewTextNode(e, !0);
+ " " != t.charAt(t.length - 2) && i && " " != i.data.charAt(0) || (t = t.substr(0, t.length - 1) + " ")
+ }
+ return t.replace(/ {2}/g, " ")
+ }
+ _nodeEndsWithSpace(e) {
+ if (e.getAncestors().some(e => this.preElements.includes(e.name)))
+ return !1;
+ const t = this._processDataFromViewText(e);
+ return " " == t.charAt(t.length - 1)
+ }
+ _processDataFromDomText(e) {
+ let t = e.data;
+ if (Er(e, this.preElements))
+ return ar(e);
+ t = t.replace(/[ \n\t\r]{1,}/g, " ");
+ const i = this._getTouchingInlineDomNode(e, !1),
+ n = this._getTouchingInlineDomNode(e, !0),
+ o = this._checkShouldLeftTrimDomText(e, i),
+ r = this._checkShouldRightTrimDomText(e, n);
+ return o && (t = t.replace(/^ /, "")),
+ r && (t = t.replace(/ $/, "")),
+ t = ar(new Text(t)),
+ t = t.replace(/ \u00A0/g, " "),
+ (/( |\u00A0)\u00A0$/.test(t) || !n || n.data && " " == n.data.charAt(0)) && (t = t.replace(/\u00A0$/, " ")),
+ o && (t = t.replace(/^\u00A0/, " ")),
+ t
+ }
+ _checkShouldLeftTrimDomText(e, t) {
+ return !t || (!!Yi(t) || !this._encounteredRawContentDomNodes.has(e.previousSibling) && /[^\S\u00A0]/.test(t.data.charAt(t.data.length - 1)))
+ }
+ _checkShouldRightTrimDomText(e, t) {
+ return !t && !rr(e)
+ }
+ _getTouchingViewTextNode(e, t) {
+ const i = new so({
+ startPosition: t ? ao._createAfter(e) : ao._createBefore(e),
+ direction: t ? "forward" : "backward"
+ });
+ for (const e of i) {
+ if (e.item.is("containerElement"))
+ return null;
+ if (e.item.is("element", "br"))
+ return null;
+ if (e.item.is("$textProxy"))
+ return e.item
+ }
+ return null
+ }
+ _getTouchingInlineDomNode(e, t) {
+ if (!e.parentNode)
+ return null;
+ const i = t ? "nextNode" : "previousNode",
+ n = e.ownerDocument,
+ o = yr(e)[0],
+ r = n.createTreeWalker(o, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT, {
+ acceptNode: e => er(e) || "BR" == e.tagName ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP
+ });
+ r.currentNode = e;
+ const s = r[i]();
+ if (null !== s) {
+ const t = function (e, t) {
+ const i = yr(e),
+ n = yr(t);
+ let o = 0;
+ for (; i[o] == n[o] && i[o]; )
+ o++;
+ return 0 === o ? null : i[o - 1]
+ }
+ (e, s);
+ if (t && !Er(e, this.blockElements, t) && !Er(s, this.blockElements, t))
+ return s
+ }
+ return null
+ }
+ }
+ function Er(e, t, i) {
+ let n = yr(e);
+ return i && (n = n.slice(n.indexOf(i) + 1)),
+ n.some(e => e.tagName && t.includes(e.tagName.toLowerCase()))
+ }
+ function Pr(e, t) {
+ for (; e && e != _r.document; )
+ t(e), e = e.parentNode
+ }
+ function Sr(e, t) {
+ const i = e.parentNode;
+ return i && i.tagName && t.includes(i.tagName.toLowerCase())
+ }
+ function Mr(e) {
+ const t = Object.prototype.toString.apply(e);
+ return "[object Window]" == t || "[object global]" == t
+ }
+ var Ir = Le({}, u, {
+ listenTo(e, ...t) {
+ if (mr(e) || Mr(e)) {
+ const i = this._getProxyEmitter(e) || new Nr(e);
+ i.attach(...t),
+ e = i
+ }
+ u.listenTo.call(this, e, ...t)
+ },
+ stopListening(e, t, i) {
+ if (mr(e) || Mr(e)) {
+ const t = this._getProxyEmitter(e);
+ if (!t)
+ return;
+ e = t
+ }
+ u.stopListening.call(this, e, t, i),
+ e instanceof Nr && e.detach(t)
+ },
+ _getProxyEmitter(e) {
+ return t = this,
+ i = Rr(e),
+ t[l] && t[l][i] ? t[l][i].emitter : null;
+ var t,
+ i
+ }
+ });
+ class Nr {
+ constructor(e) {
+ h(this, Rr(e)),
+ this._domNode = e
+ }
+ }
+ function Rr(e) {
+ return e["data-ck-expando"] || (e["data-ck-expando"] = s())
+ }
+ Le(Nr.prototype, u, {
+ attach(e, t, i = {}) {
+ if (this._domListeners && this._domListeners[e])
+ return;
+ const n = {
+ capture: !!i.useCapture,
+ passive: !!i.usePassive
+ },
+ o = this._createDomListener(e, n);
+ this._domNode.addEventListener(e, o, n),
+ this._domListeners || (this._domListeners = {}),
+ this._domListeners[e] = o
+ },
+ detach(e) {
+ let t;
+ !this._domListeners[e] || (t = this._events[e]) && t.callbacks.length || this._domListeners[e].removeListener()
+ },
+ _createDomListener(e, t) {
+ const i = t => {
+ this.fire(e, t)
+ };
+ return i.removeListener = () => {
+ this._domNode.removeEventListener(e, i, t),
+ delete this._domListeners[e]
+ },
+ i
+ }
+ });
+ class Or {
+ constructor(e) {
+ this.view = e,
+ this.document = e.document,
+ this.isEnabled = !1
+ }
+ enable() {
+ this.isEnabled = !0
+ }
+ disable() {
+ this.isEnabled = !1
+ }
+ destroy() {
+ this.disable(),
+ this.stopListening()
+ }
+ checkShouldIgnoreEventFromTarget(e) {
+ return e && 3 === e.nodeType && (e = e.parentNode),
+ !(!e || 1 !== e.nodeType) && e.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")
+ }
+ }
+ Ke(Or, Ir);
+ var Dr = function (e) {
+ return this.__data__.set(e, "__lodash_hash_undefined__"),
+ this
+ };
+ var Lr = function (e) {
+ return this.__data__.has(e)
+ };
+ function zr(e) {
+ var t = -1,
+ i = null == e ? 0 : e.length;
+ for (this.__data__ = new Ft; ++t < i; )
+ this.add(e[t])
+ }
+ zr.prototype.add = zr.prototype.push = Dr,
+ zr.prototype.has = Lr;
+ var Vr = zr;
+ var jr = function (e, t) {
+ for (var i = -1, n = null == e ? 0 : e.length; ++i < n; )
+ if (t(e[i], i, e))
+ return !0;
+ return !1
+ };
+ var Br = function (e, t) {
+ return e.has(t)
+ };
+ var Fr = function (e, t, i, n, o, r) {
+ var s = 1 & i,
+ a = e.length,
+ c = t.length;
+ if (a != c && !(s && c > a))
+ return !1;
+ var l = r.get(e),
+ d = r.get(t);
+ if (l && d)
+ return l == t && d == e;
+ var u = -1,
+ h = !0,
+ f = 2 & i ? new Vr : void 0;
+ for (r.set(e, t), r.set(t, e); ++u < a; ) {
+ var g = e[u],
+ m = t[u];
+ if (n)
+ var p = s ? n(m, g, u, t, e, r) : n(g, m, u, e, t, r);
+ if (void 0 !== p) {
+ if (p)
+ continue;
+ h = !1;
+ break
+ }
+ if (f) {
+ if (!jr(t, (function (e, t) {
+ if (!Br(f, t) && (g === e || o(g, e, i, n, r)))
+ return f.push(t)
+ }))) {
+ h = !1;
+ break
+ }
+ } else if (g !== m && !o(g, m, i, n, r)) {
+ h = !1;
+ break
+ }
+ }
+ return r.delete(e),
+ r.delete(t),
+ h
+ };
+ var Hr = function (e) {
+ var t = -1,
+ i = Array(e.size);
+ return e.forEach((function (e, n) {
+ i[++t] = [n, e]
+ })),
+ i
+ };
+ var Ur = function (e) {
+ var t = -1,
+ i = Array(e.size);
+ return e.forEach((function (e) {
+ i[++t] = e
+ })),
+ i
+ },
+ Wr = _ ? _.prototype : void 0,
+ qr = Wr ? Wr.valueOf : void 0;
+ var $r = function (e, t, i, n, o, r, s) {
+ switch (i) {
+ case "[object DataView]":
+ if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset)
+ return !1;
+ e = e.buffer,
+ t = t.buffer;
+ case "[object ArrayBuffer]":
+ return !(e.byteLength != t.byteLength || !r(new Ci(e), new Ci(t)));
+ case "[object Boolean]":
+ case "[object Date]":
+ case "[object Number]":
+ return G(+e, +t);
+ case "[object Error]":
+ return e.name == t.name && e.message == t.message;
+ case "[object RegExp]":
+ case "[object String]":
+ return e == t + "";
+ case "[object Map]":
+ var a = Hr;
+ case "[object Set]":
+ var c = 1 & n;
+ if (a || (a = Ur), e.size != t.size && !c)
+ return !1;
+ var l = s.get(e);
+ if (l)
+ return l == t;
+ n |= 2,
+ s.set(e, t);
+ var d = Fr(a(e), a(t), n, o, r, s);
+ return s.delete(e),
+ d;
+ case "[object Symbol]":
+ if (qr)
+ return qr.call(e) == qr.call(t)
+ }
+ return !1
+ },
+ Yr = Object.prototype.hasOwnProperty;
+ var Gr = function (e, t, i, n, o, r) {
+ var s = 1 & i,
+ a = di(e),
+ c = a.length;
+ if (c != di(t).length && !s)
+ return !1;
+ for (var l = c; l--; ) {
+ var d = a[l];
+ if (!(s ? d in t : Yr.call(t, d)))
+ return !1
+ }
+ var u = r.get(e),
+ h = r.get(t);
+ if (u && h)
+ return u == t && h == e;
+ var f = !0;
+ r.set(e, t),
+ r.set(t, e);
+ for (var g = s; ++l < c; ) {
+ var m = e[d = a[l]],
+ p = t[d];
+ if (n)
+ var b = s ? n(p, m, d, t, e, r) : n(m, p, d, e, t, r);
+ if (!(void 0 === b ? m === p || o(m, p, i, n, r) : b)) {
+ f = !1;
+ break
+ }
+ g || (g = "constructor" == d)
+ }
+ if (f && !g) {
+ var w = e.constructor,
+ k = t.constructor;
+ w == k || !("constructor" in e) || !("constructor" in t) || "function" == typeof w && w instanceof w && "function" == typeof k && k instanceof k || (f = !1)
+ }
+ return r.delete(e),
+ r.delete(t),
+ f
+ },
+ Kr = Object.prototype.hasOwnProperty;
+ var Qr = function (e, t, i, n, o, r) {
+ var s = _e(e),
+ a = _e(t),
+ c = s ? "[object Array]" : yi(e),
+ l = a ? "[object Array]" : yi(t),
+ d = "[object Object]" == (c = "[object Arguments]" == c ? "[object Object]" : c),
+ u = "[object Object]" == (l = "[object Arguments]" == l ? "[object Object]" : l),
+ h = c == l;
+ if (h && Object(ve.a)(e)) {
+ if (!Object(ve.a)(t))
+ return !1;
+ s = !0,
+ d = !1
+ }
+ if (h && !d)
+ return r || (r = new Wt), s || Ee(e) ? Fr(e, t, i, n, o, r) : $r(e, t, c, i, n, o, r);
+ if (!(1 & i)) {
+ var f = d && Kr.call(e, "__wrapped__"),
+ g = u && Kr.call(t, "__wrapped__");
+ if (f || g) {
+ var m = f ? e.value() : e,
+ p = g ? t.value() : t;
+ return r || (r = new Wt),
+ o(m, p, i, n, r)
+ }
+ }
+ return !!h && (r || (r = new Wt), Gr(e, t, i, n, o, r))
+ };
+ var Jr = function e(t, i, n, o, r) {
+ return t === i || (null == t || null == i || !ge(t) && !ge(i) ? t != t && i != i : Qr(t, i, n, o, e, r))
+ };
+ var Zr = function (e, t, i) {
+ var n = (i = "function" == typeof i ? i : void 0) ? i(e, t) : void 0;
+ return void 0 === n ? Jr(e, t, void 0, i) : !!n
+ };
+ class Xr extends Or {
+ constructor(e) {
+ super(e),
+ this._config = {
+ childList: !0,
+ characterData: !0,
+ characterDataOldValue: !0,
+ subtree: !0
+ },
+ this.domConverter = e.domConverter,
+ this.renderer = e._renderer,
+ this._domElements = [],
+ this._mutationObserver = new window.MutationObserver(this._onMutations.bind(this))
+ }
+ flush() {
+ this._onMutations(this._mutationObserver.takeRecords())
+ }
+ observe(e) {
+ this._domElements.push(e),
+ this.isEnabled && this._mutationObserver.observe(e, this._config)
+ }
+ enable() {
+ super.enable();
+ for (const e of this._domElements)
+ this._mutationObserver.observe(e, this._config)
+ }
+ disable() {
+ super.disable(),
+ this._mutationObserver.disconnect()
+ }
+ destroy() {
+ super.destroy(),
+ this._mutationObserver.disconnect()
+ }
+ _onMutations(e) {
+ if (0 === e.length)
+ return;
+ const t = this.domConverter,
+ i = new Map,
+ n = new Set;
+ for (const i of e)
+ if ("childList" === i.type) {
+ const e = t.mapDomToView(i.target);
+ if (e && (e.is("uiElement") || e.is("rawElement")))
+ continue;
+ e && !this._isBogusBrMutation(i) && n.add(e)
+ }
+ for (const o of e) {
+ const e = t.mapDomToView(o.target);
+ if ((!e || !e.is("uiElement") && !e.is("rawElement")) && "characterData" === o.type) {
+ const e = t.findCorrespondingViewText(o.target);
+ e && !n.has(e.parent) ? i.set(e, {
+ type: "text",
+ oldText: e.data,
+ newText: ar(o.target),
+ node: e
+ }) : !e && rr(o.target) && n.add(t.mapDomToView(o.target.parentNode))
+ }
+ }
+ const o = [];
+ for (const e of i.values())
+ this.renderer.markToSync("text", e.node), o.push(e);
+ for (const e of n) {
+ const i = t.mapViewToDom(e),
+ n = Array.from(e.getChildren()),
+ r = Array.from(t.domChildrenToView(i, {
+ withChildren: !1
+ }));
+ Zr(n, r, a) || (this.renderer.markToSync("children", e), o.push({
+ type: "children",
+ oldChildren: n,
+ newChildren: r,
+ node: e
+ }))
+ }
+ const r = e[0].target.ownerDocument.getSelection();
+ let s = null;
+ if (r && r.anchorNode) {
+ const e = t.domPositionToView(r.anchorNode, r.anchorOffset),
+ i = t.domPositionToView(r.focusNode, r.focusOffset);
+ e && i && (s = new ho(e), s.setFocus(i))
+ }
+ function a(e, t) {
+ if (!Array.isArray(e))
+ return e === t || !(!e.is("$text") || !t.is("$text")) && e.data === t.data
+ }
+ o.length && (this.document.fire("mutations", o, s), this.view.forceRender())
+ }
+ _isBogusBrMutation(e) {
+ let t = null;
+ return null === e.nextSibling && 0 === e.removedNodes.length && 1 == e.addedNodes.length && (t = this.domConverter.domToView(e.addedNodes[0], {
+ withChildren: !1
+ })),
+ t && t.is("element", "br")
+ }
+ }
+ class es {
+ constructor(e, t, i) {
+ this.view = e,
+ this.document = e.document,
+ this.domEvent = t,
+ this.domTarget = t.target,
+ Le(this, i)
+ }
+ get target() {
+ return this.view.domConverter.mapDomToView(this.domTarget)
+ }
+ preventDefault() {
+ this.domEvent.preventDefault()
+ }
+ stopPropagation() {
+ this.domEvent.stopPropagation()
+ }
+ }
+ class ts extends Or {
+ constructor(e) {
+ super(e),
+ this.useCapture = !1
+ }
+ observe(e) {
+ ("string" == typeof this.domEventType ? [this.domEventType] : this.domEventType).forEach(t => {
+ this.listenTo(e, t, (e, t) => {
+ this.isEnabled && !this.checkShouldIgnoreEventFromTarget(t.target) && this.onDomEvent(t)
+ }, {
+ useCapture: this.useCapture
+ })
+ })
+ }
+ fire(e, t, i) {
+ this.isEnabled && this.document.fire(e, new es(this.view, t, i))
+ }
+ }
+ class is extends ts {
+ constructor(e) {
+ super(e),
+ this.domEventType = ["keydown", "keyup"]
+ }
+ onDomEvent(e) {
+ this.fire(e.type, e, {
+ keyCode: e.keyCode,
+ altKey: e.altKey,
+ ctrlKey: e.ctrlKey,
+ shiftKey: e.shiftKey,
+ metaKey: e.metaKey,
+ get keystroke() {
+ return Ro(this)
+ }
+ })
+ }
+ }
+ var ns = function () {
+ return k.a.Date.now()
+ },
+ os = /\s/;
+ var rs = function (e) {
+ for (var t = e.length; t-- && os.test(e.charAt(t)); );
+ return t
+ },
+ ss = /^\s+/;
+ var as = function (e) {
+ return e ? e.slice(0, rs(e) + 1).replace(ss, "") : e
+ },
+ cs = /^[-+]0x[0-9a-f]+$/i,
+ ls = /^0b[01]+$/i,
+ ds = /^0o[0-7]+$/i,
+ us = parseInt;
+ var hs = function (e) {
+ if ("number" == typeof e)
+ return e;
+ if (pn(e))
+ return NaN;
+ if (w(e)) {
+ var t = "function" == typeof e.valueOf ? e.valueOf() : e;
+ e = w(t) ? t + "" : t
+ }
+ if ("string" != typeof e)
+ return 0 === e ? e : +e;
+ e = as(e);
+ var i = ls.test(e);
+ return i || ds.test(e) ? us(e.slice(2), i ? 2 : 8) : cs.test(e) ? NaN : +e
+ },
+ fs = Math.max,
+ gs = Math.min;
+ var ms = function (e, t, i) {
+ var n,
+ o,
+ r,
+ s,
+ a,
+ c,
+ l = 0,
+ d = !1,
+ u = !1,
+ h = !0;
+ if ("function" != typeof e)
+ throw new TypeError("Expected a function");
+ function f(t) {
+ var i = n,
+ r = o;
+ return n = o = void 0,
+ l = t,
+ s = e.apply(r, i)
+ }
+ function g(e) {
+ return l = e,
+ a = setTimeout(p, t),
+ d ? f(e) : s
+ }
+ function m(e) {
+ var i = e - c;
+ return void 0 === c || i >= t || i < 0 || u && e - l >= r
+ }
+ function p() {
+ var e = ns();
+ if (m(e))
+ return b(e);
+ a = setTimeout(p, function (e) {
+ var i = t - (e - c);
+ return u ? gs(i, r - (e - l)) : i
+ }
+ (e))
+ }
+ function b(e) {
+ return a = void 0,
+ h && n ? f(e) : (n = o = void 0, s)
+ }
+ function k() {
+ var e = ns(),
+ i = m(e);
+ if (n = arguments, o = this, c = e, i) {
+ if (void 0 === a)
+ return g(c);
+ if (u)
+ return clearTimeout(a), a = setTimeout(p, t), f(c)
+ }
+ return void 0 === a && (a = setTimeout(p, t)),
+ s
+ }
+ return t = hs(t) || 0,
+ w(i) && (d = !!i.leading, r = (u = "maxWait" in i) ? fs(hs(i.maxWait) || 0, t) : r, h = "trailing" in i ? !!i.trailing : h),
+ k.cancel = function () {
+ void 0 !== a && clearTimeout(a),
+ l = 0,
+ n = c = o = a = void 0
+ },
+ k.flush = function () {
+ return void 0 === a ? s : b(ns())
+ },
+ k
+ };
+ class ps extends Or {
+ constructor(e) {
+ super(e),
+ this._fireSelectionChangeDoneDebounced = ms(e => this.document.fire("selectionChangeDone", e), 200)
+ }
+ observe() {
+ const e = this.document;
+ e.on("arrowKey", (t, i) => {
+ e.selection.isFake && this.isEnabled && i.preventDefault()
+ }, {
+ context: "$capture"
+ }),
+ e.on("arrowKey", (t, i) => {
+ e.selection.isFake && this.isEnabled && this._handleSelectionMove(i.keyCode)
+ }, {
+ priority: "lowest"
+ })
+ }
+ destroy() {
+ super.destroy(),
+ this._fireSelectionChangeDoneDebounced.cancel()
+ }
+ _handleSelectionMove(e) {
+ const t = this.document.selection,
+ i = new ho(t.getRanges(), {
+ backward: t.isBackward,
+ fake: !1
+ });
+ e != Io.arrowleft && e != Io.arrowup || i.setTo(i.getFirstPosition()),
+ e != Io.arrowright && e != Io.arrowdown || i.setTo(i.getLastPosition());
+ const n = {
+ oldSelection: t,
+ newSelection: i,
+ domSelection: null
+ };
+ this.document.fire("selectionChange", n),
+ this._fireSelectionChangeDoneDebounced(n)
+ }
+ }
+ class bs extends Or {
+ constructor(e) {
+ super(e),
+ this.mutationObserver = e.getObserver(Xr),
+ this.selection = this.document.selection,
+ this.domConverter = e.domConverter,
+ this._documents = new WeakSet,
+ this._fireSelectionChangeDoneDebounced = ms(e => this.document.fire("selectionChangeDone", e), 200),
+ this._clearInfiniteLoopInterval = setInterval(() => this._clearInfiniteLoop(), 1e3),
+ this._loopbackCounter = 0
+ }
+ observe(e) {
+ const t = e.ownerDocument;
+ this._documents.has(t) || (this.listenTo(t, "selectionchange", (e, i) => {
+ this._handleSelectionChange(i, t)
+ }), this._documents.add(t))
+ }
+ destroy() {
+ super.destroy(),
+ clearInterval(this._clearInfiniteLoopInterval),
+ this._fireSelectionChangeDoneDebounced.cancel()
+ }
+ _handleSelectionChange(e, t) {
+ if (!this.isEnabled)
+ return;
+ const i = t.defaultView.getSelection();
+ if (this.checkShouldIgnoreEventFromTarget(i.anchorNode))
+ return;
+ this.mutationObserver.flush();
+ const n = this.domConverter.domSelectionToView(i);
+ if (0 != n.rangeCount) {
+ if (this.view.hasDomSelection = !0, !(this.selection.isEqual(n) && this.domConverter.isDomSelectionCorrect(i) || ++this._loopbackCounter > 60))
+ if (this.selection.isSimilar(n))
+ this.view.forceRender();
+ else {
+ const e = {
+ oldSelection: this.selection,
+ newSelection: n,
+ domSelection: i
+ };
+ this.document.fire("selectionChange", e),
+ this._fireSelectionChangeDoneDebounced(e)
+ }
+ } else
+ this.view.hasDomSelection = !1
+ }
+ _clearInfiniteLoop() {
+ this._loopbackCounter = 0
+ }
+ }
+ class ws extends ts {
+ constructor(e) {
+ super(e),
+ this.domEventType = ["focus", "blur"],
+ this.useCapture = !0;
+ const t = this.document;
+ t.on("focus", () => {
+ t.isFocused = !0,
+ this._renderTimeoutId = setTimeout(() => e.forceRender(), 50)
+ }),
+ t.on("blur", (i, n) => {
+ const o = t.selection.editableElement;
+ null !== o && o !== n.target || (t.isFocused = !1, e.forceRender())
+ })
+ }
+ onDomEvent(e) {
+ this.fire(e.type, e)
+ }
+ destroy() {
+ this._renderTimeoutId && clearTimeout(this._renderTimeoutId),
+ super.destroy()
+ }
+ }
+ class ks extends ts {
+ constructor(e) {
+ super(e),
+ this.domEventType = ["compositionstart", "compositionupdate", "compositionend"];
+ const t = this.document;
+ t.on("compositionstart", () => {
+ t.isComposing = !0
+ }),
+ t.on("compositionend", () => {
+ t.isComposing = !1
+ })
+ }
+ onDomEvent(e) {
+ this.fire(e.type, e)
+ }
+ }
+ class _s extends ts {
+ constructor(e) {
+ super(e),
+ this.domEventType = ["beforeinput"]
+ }
+ onDomEvent(e) {
+ this.fire(e.type, e)
+ }
+ }
+ class vs {
+ constructor() {
+ this._replacedElements = []
+ }
+ replace(e, t) {
+ this._replacedElements.push({
+ element: e,
+ newElement: t
+ }),
+ e.style.display = "none",
+ t && e.parentNode.insertBefore(t, e.nextSibling)
+ }
+ restore() {
+ this._replacedElements.forEach(({
+ element: e,
+ newElement: t
+ }) => {
+ e.style.display = "",
+ t && t.remove()
+ }),
+ this._replacedElements = []
+ }
+ }
+ var ys = function (e) {
+ return "string" == typeof e || !_e(e) && ge(e) && "[object String]" == S(e)
+ };
+ function xs(e) {
+ return "[object Range]" == Object.prototype.toString.apply(e)
+ }
+ function As(e) {
+ const t = e.ownerDocument.defaultView.getComputedStyle(e);
+ return {
+ top: parseInt(t.borderTopWidth, 10),
+ right: parseInt(t.borderRightWidth, 10),
+ bottom: parseInt(t.borderBottomWidth, 10),
+ left: parseInt(t.borderLeftWidth, 10)
+ }
+ }
+ const Cs = ["top", "right", "bottom", "left", "width", "height"];
+ class Ts {
+ constructor(e) {
+ const t = xs(e);
+ if (Object.defineProperty(this, "_source", {
+ value: e._source || e,
+ writable: !0,
+ enumerable: !1
+ }), Yi(e) || t)
+ if (t) {
+ const t = Ts.getDomRangeRects(e);
+ Es(this, Ts.getBoundingRect(t))
+ } else
+ Es(this, e.getBoundingClientRect());
+ else if (Mr(e)) {
+ const {
+ innerWidth: t,
+ innerHeight: i
+ } = e;
+ Es(this, {
+ top: 0,
+ right: t,
+ bottom: i,
+ left: 0,
+ width: t,
+ height: i
+ })
+ } else
+ Es(this, e)
+ }
+ clone() {
+ return new Ts(this)
+ }
+ moveTo(e, t) {
+ return this.top = t,
+ this.right = e + this.width,
+ this.bottom = t + this.height,
+ this.left = e,
+ this
+ }
+ moveBy(e, t) {
+ return this.top += t,
+ this.right += e,
+ this.left += e,
+ this.bottom += t,
+ this
+ }
+ getIntersection(e) {
+ const t = {
+ top: Math.max(this.top, e.top),
+ right: Math.min(this.right, e.right),
+ bottom: Math.min(this.bottom, e.bottom),
+ left: Math.max(this.left, e.left)
+ };
+ return t.width = t.right - t.left,
+ t.height = t.bottom - t.top,
+ t.width < 0 || t.height < 0 ? null : new Ts(t)
+ }
+ getIntersectionArea(e) {
+ const t = this.getIntersection(e);
+ return t ? t.getArea() : 0
+ }
+ getArea() {
+ return this.width * this.height
+ }
+ getVisible() {
+ const e = this._source;
+ let t = this.clone();
+ if (!Ps(e)) {
+ let i = e.parentNode || e.commonAncestorContainer;
+ for (; i && !Ps(i); ) {
+ const e = new Ts(i),
+ n = t.getIntersection(e);
+ if (!n)
+ return null;
+ n.getArea() < t.getArea() && (t = n),
+ i = i.parentNode
+ }
+ }
+ return t
+ }
+ isEqual(e) {
+ for (const t of Cs)
+ if (this[t] !== e[t])
+ return !1;
+ return !0
+ }
+ contains(e) {
+ const t = this.getIntersection(e);
+ return !(!t || !t.isEqual(e))
+ }
+ excludeScrollbarsAndBorders() {
+ const e = this._source;
+ let t,
+ i,
+ n;
+ if (Mr(e))
+ t = e.innerWidth - e.document.documentElement.clientWidth, i = e.innerHeight - e.document.documentElement.clientHeight, n = e.getComputedStyle(e.document.documentElement).direction;
+ else {
+ const o = As(this._source);
+ t = e.offsetWidth - e.clientWidth - o.left - o.right,
+ i = e.offsetHeight - e.clientHeight - o.top - o.bottom,
+ n = e.ownerDocument.defaultView.getComputedStyle(e).direction,
+ this.left += o.left,
+ this.top += o.top,
+ this.right -= o.right,
+ this.bottom -= o.bottom,
+ this.width = this.right - this.left,
+ this.height = this.bottom - this.top
+ }
+ return this.width -= t,
+ "ltr" === n ? this.right -= t : this.left += t,
+ this.height -= i,
+ this.bottom -= i,
+ this
+ }
+ static getDomRangeRects(e) {
+ const t = [],
+ i = Array.from(e.getClientRects());
+ if (i.length)
+ for (const e of i)
+ t.push(new Ts(e));
+ else {
+ let i = e.startContainer;
+ er(i) && (i = i.parentNode);
+ const n = new Ts(i.getBoundingClientRect());
+ n.right = n.left,
+ n.width = 0,
+ t.push(n)
+ }
+ return t
+ }
+ static getBoundingRect(e) {
+ const t = {
+ left: Number.POSITIVE_INFINITY,
+ top: Number.POSITIVE_INFINITY,
+ right: Number.NEGATIVE_INFINITY,
+ bottom: Number.NEGATIVE_INFINITY
+ };
+ let i = 0;
+ for (const n of e)
+ i++, t.left = Math.min(t.left, n.left), t.top = Math.min(t.top, n.top), t.right = Math.max(t.right, n.right), t.bottom = Math.max(t.bottom, n.bottom);
+ return 0 == i ? null : (t.width = t.right - t.left, t.height = t.bottom - t.top, new Ts(t))
+ }
+ }
+ function Es(e, t) {
+ for (const i of Cs)
+ e[i] = t[i]
+ }
+ function Ps(e) {
+ return !!Yi(e) && e === e.ownerDocument.body
+ }
+ class Ss {
+ constructor(e, t) {
+ Ss._observerInstance || Ss._createObserver(),
+ this._element = e,
+ this._callback = t,
+ Ss._addElementCallback(e, t),
+ Ss._observerInstance.observe(e)
+ }
+ destroy() {
+ Ss._deleteElementCallback(this._element, this._callback)
+ }
+ static _addElementCallback(e, t) {
+ Ss._elementCallbacks || (Ss._elementCallbacks = new Map);
+ let i = Ss._elementCallbacks.get(e);
+ i || (i = new Set, Ss._elementCallbacks.set(e, i)),
+ i.add(t)
+ }
+ static _deleteElementCallback(e, t) {
+ const i = Ss._getElementCallbacks(e);
+ i && (i.delete(t), i.size || (Ss._elementCallbacks.delete(e), Ss._observerInstance.unobserve(e))),
+ Ss._elementCallbacks && !Ss._elementCallbacks.size && (Ss._observerInstance = null, Ss._elementCallbacks = null)
+ }
+ static _getElementCallbacks(e) {
+ return Ss._elementCallbacks ? Ss._elementCallbacks.get(e) : null
+ }
+ static _createObserver() {
+ let e;
+ e = "function" == typeof _r.window.ResizeObserver ? _r.window.ResizeObserver : Ms,
+ Ss._observerInstance = new e(e => {
+ for (const t of e) {
+ const e = Ss._getElementCallbacks(t.target);
+ if (e)
+ for (const i of e)
+ i(t)
+ }
+ })
+ }
+ }
+ Ss._observerInstance = null,
+ Ss._elementCallbacks = null;
+ class Ms {
+ constructor(e) {
+ this._callback = e,
+ this._elements = new Set,
+ this._previousRects = new Map,
+ this._periodicCheckTimeout = null
+ }
+ observe(e) {
+ this._elements.add(e),
+ this._checkElementRectsAndExecuteCallback(),
+ 1 === this._elements.size && this._startPeriodicCheck()
+ }
+ unobserve(e) {
+ this._elements.delete(e),
+ this._previousRects.delete(e),
+ this._elements.size || this._stopPeriodicCheck()
+ }
+ _startPeriodicCheck() {
+ const e = () => {
+ this._checkElementRectsAndExecuteCallback(),
+ this._periodicCheckTimeout = setTimeout(e, 100)
+ };
+ this.listenTo(_r.window, "resize", () => {
+ this._checkElementRectsAndExecuteCallback()
+ }),
+ this._periodicCheckTimeout = setTimeout(e, 100)
+ }
+ _stopPeriodicCheck() {
+ clearTimeout(this._periodicCheckTimeout),
+ this.stopListening(),
+ this._previousRects.clear()
+ }
+ _checkElementRectsAndExecuteCallback() {
+ const e = [];
+ for (const t of this._elements)
+ this._hasRectChanged(t) && e.push({
+ target: t,
+ contentRect: this._previousRects.get(t)
+ });
+ e.length && this._callback(e)
+ }
+ _hasRectChanged(e) {
+ if (!e.ownerDocument.body.contains(e))
+ return !1;
+ const t = new Ts(e),
+ i = this._previousRects.get(e),
+ n = !i || !i.isEqual(t);
+ return this._previousRects.set(e, t),
+ n
+ }
+ }
+ function Is(e) {
+ return t => t + e
+ }
+ function Ns(e) {
+ const t = e.next();
+ return t.done ? null : t.value
+ }
+ Ke(Ms, Ir);
+ class Rs {
+ constructor() {
+ this.set("isFocused", !1),
+ this.set("focusedElement", null),
+ this._elements = new Set,
+ this._nextEventLoopTimeout = null
+ }
+ add(e) {
+ if (this._elements.has(e))
+ throw new c.a("focustracker-add-element-already-exist", this);
+ this.listenTo(e, "focus", () => this._focus(e), {
+ useCapture: !0
+ }),
+ this.listenTo(e, "blur", () => this._blur(), {
+ useCapture: !0
+ }),
+ this._elements.add(e)
+ }
+ remove(e) {
+ e === this.focusedElement && this._blur(e),
+ this._elements.has(e) && (this.stopListening(e), this._elements.delete(e))
+ }
+ destroy() {
+ this.stopListening()
+ }
+ _focus(e) {
+ clearTimeout(this._nextEventLoopTimeout),
+ this.focusedElement = e,
+ this.isFocused = !0
+ }
+ _blur() {
+ clearTimeout(this._nextEventLoopTimeout),
+ this._nextEventLoopTimeout = setTimeout(() => {
+ this.focusedElement = null,
+ this.isFocused = !1
+ }, 0)
+ }
+ }
+ Ke(Rs, Ir),
+ Ke(Rs, Ue);
+ class Os {
+ constructor() {
+ this._listener = Object.create(Ir)
+ }
+ listenTo(e) {
+ this._listener.listenTo(e, "keydown", (e, t) => {
+ this._listener.fire("_keydown:" + Ro(t), t)
+ })
+ }
+ set(e, t, i = {}) {
+ const n = Oo(e),
+ o = i.priority;
+ this._listener.listenTo(this._listener, "_keydown:" + n, (e, i) => {
+ t(i, () => {
+ i.preventDefault(),
+ i.stopPropagation(),
+ e.stop()
+ }),
+ e.return = !0
+ }, {
+ priority: o
+ })
+ }
+ press(e) {
+ return !!this._listener.fire("_keydown:" + Ro(e), e)
+ }
+ destroy() {
+ this._listener.stopListening()
+ }
+ }
+ class Ds extends Or {
+ constructor(e) {
+ super(e),
+ this.document.on("keydown", (e, t) => {
+ if (this.isEnabled && ((i = t.keyCode) == Io.arrowright || i == Io.arrowleft || i == Io.arrowup || i == Io.arrowdown)) {
+ const i = new go(this.document, "arrowKey", this.document.selection.getFirstRange());
+ this.document.fire(i, t),
+ i.stop.called && e.stop()
+ }
+ var i
+ })
+ }
+ observe() {}
+ }
+ function Ls({
+ target: e,
+ viewportOffset: t = 0
+ }) {
+ const i = Us(e);
+ let n = i,
+ o = null;
+ for (; n; ) {
+ let r;
+ r = Ws(n == i ? e : o),
+ Vs(r, () => qs(e, n));
+ const s = qs(e, n);
+ if (zs(n, s, t), n.parent != n) {
+ if (o = n.frameElement, n = n.parent, !o)
+ return
+ } else
+ n = null
+ }
+ }
+ function zs(e, t, i) {
+ const n = t.clone().moveBy(0, i),
+ o = t.clone().moveBy(0, -i),
+ r = new Ts(e).excludeScrollbarsAndBorders();
+ if (![o, n].every(e => r.contains(e))) {
+ let {
+ scrollX: s,
+ scrollY: a
+ } = e;
+ Bs(o, r) ? a -= r.top - t.top + i : js(n, r) && (a += t.bottom - r.bottom + i),
+ Fs(t, r) ? s -= r.left - t.left + i : Hs(t, r) && (s += t.right - r.right + i),
+ e.scrollTo(s, a)
+ }
+ }
+ function Vs(e, t) {
+ const i = Us(e);
+ let n,
+ o;
+ for (; e != i.document.body; )
+ o = t(), n = new Ts(e).excludeScrollbarsAndBorders(), n.contains(o) || (Bs(o, n) ? e.scrollTop -= n.top - o.top : js(o, n) && (e.scrollTop += o.bottom - n.bottom), Fs(o, n) ? e.scrollLeft -= n.left - o.left : Hs(o, n) && (e.scrollLeft += o.right - n.right)), e = e.parentNode
+ }
+ function js(e, t) {
+ return e.bottom > t.bottom
+ }
+ function Bs(e, t) {
+ return e.top < t.top
+ }
+ function Fs(e, t) {
+ return e.left < t.left
+ }
+ function Hs(e, t) {
+ return e.right > t.right
+ }
+ function Us(e) {
+ return xs(e) ? e.startContainer.ownerDocument.defaultView : e.ownerDocument.defaultView
+ }
+ function Ws(e) {
+ if (xs(e)) {
+ let t = e.commonAncestorContainer;
+ return er(t) && (t = t.parentNode),
+ t
+ }
+ return e.parentNode
+ }
+ function qs(e, t) {
+ const i = Us(e),
+ n = new Ts(e);
+ if (i === t)
+ return n; {
+ let e = i;
+ for (; e != t; ) {
+ const t = e.frameElement,
+ i = new Ts(t).excludeScrollbarsAndBorders();
+ n.moveBy(i.left, i.top),
+ e = e.parent
+ }
+ }
+ return n
+ }
+ Object.assign({}, {
+ scrollViewportToShowTarget: Ls,
+ scrollAncestorsToShowTarget: function (e) {
+ Vs(Ws(e), () => new Ts(e))
+ }
+ });
+ class $s {
+ constructor(e) {
+ this.document = new vo(e),
+ this.domConverter = new Tr(this.document),
+ this.domRoots = new Map,
+ this.set("isRenderingInProgress", !1),
+ this.set("hasDomSelection", !1),
+ this._renderer = new pr(this.domConverter, this.document.selection),
+ this._renderer.bind("isFocused").to(this.document),
+ this._initialDomRootAttributes = new WeakMap,
+ this._observers = new Map,
+ this._ongoingChange = !1,
+ this._postFixersInProgress = !1,
+ this._renderingDisabled = !1,
+ this._hasChangedSinceTheLastRendering = !1,
+ this._writer = new Wo(this.document),
+ this.addObserver(Xr),
+ this.addObserver(bs),
+ this.addObserver(ws),
+ this.addObserver(is),
+ this.addObserver(ps),
+ this.addObserver(ks),
+ this.addObserver(Ds),
+ Po.isAndroid && this.addObserver(_s),
+ this.document.on("arrowKey", cr, {
+ priority: "low"
+ }),
+ jo(this),
+ this.on("render", () => {
+ this._render(),
+ this.document.fire("layoutChanged"),
+ this._hasChangedSinceTheLastRendering = !1
+ }),
+ this.listenTo(this.document.selection, "change", () => {
+ this._hasChangedSinceTheLastRendering = !0
+ })
+ }
+ attachDomRoot(e, t = "main") {
+ const i = this.document.getRoot(t);
+ i._name = e.tagName.toLowerCase();
+ const n = {};
+ for (const {
+ name: t,
+ value: o
+ }
+ of Array.from(e.attributes))
+ n[t] = o, "class" === t ? this._writer.addClass(o.split(" "), i) : this._writer.setAttribute(t, o, i);
+ this._initialDomRootAttributes.set(e, n);
+ const o = () => {
+ this._writer.setAttribute("contenteditable", !i.isReadOnly, i),
+ i.isReadOnly ? this._writer.addClass("ck-read-only", i) : this._writer.removeClass("ck-read-only", i)
+ };
+ o(),
+ this.domRoots.set(t, e),
+ this.domConverter.bindElements(e, i),
+ this._renderer.markToSync("children", i),
+ this._renderer.markToSync("attributes", i),
+ this._renderer.domDocuments.add(e.ownerDocument),
+ i.on("change:children", (e, t) => this._renderer.markToSync("children", t)),
+ i.on("change:attributes", (e, t) => this._renderer.markToSync("attributes", t)),
+ i.on("change:text", (e, t) => this._renderer.markToSync("text", t)),
+ i.on("change:isReadOnly", () => this.change(o)),
+ i.on("change", () => {
+ this._hasChangedSinceTheLastRendering = !0
+ });
+ for (const i of this._observers.values())
+ i.observe(e, t)
+ }
+ detachDomRoot(e) {
+ const t = this.domRoots.get(e);
+ Array.from(t.attributes).forEach(({
+ name: e
+ }) => t.removeAttribute(e));
+ const i = this._initialDomRootAttributes.get(t);
+ for (const e in i)
+ t.setAttribute(e, i[e]);
+ this.domRoots.delete(e),
+ this.domConverter.unbindDomElement(t)
+ }
+ getDomRoot(e = "main") {
+ return this.domRoots.get(e)
+ }
+ addObserver(e) {
+ let t = this._observers.get(e);
+ if (t)
+ return t;
+ t = new e(this),
+ this._observers.set(e, t);
+ for (const[e, i]of this.domRoots)
+ t.observe(i, e);
+ return t.enable(),
+ t
+ }
+ getObserver(e) {
+ return this._observers.get(e)
+ }
+ disableObservers() {
+ for (const e of this._observers.values())
+ e.disable()
+ }
+ enableObservers() {
+ for (const e of this._observers.values())
+ e.enable()
+ }
+ scrollToTheSelection() {
+ const e = this.document.selection.getFirstRange();
+ e && Ls({
+ target: this.domConverter.viewRangeToDom(e),
+ viewportOffset: 20
+ })
+ }
+ focus() {
+ if (!this.document.isFocused) {
+ const e = this.document.selection.editableElement;
+ e && (this.domConverter.focus(e), this.forceRender())
+ }
+ }
+ change(e) {
+ if (this.isRenderingInProgress || this._postFixersInProgress)
+ throw new c.a("cannot-change-view-tree", this);
+ try {
+ if (this._ongoingChange)
+ return e(this._writer);
+ this._ongoingChange = !0;
+ const t = e(this._writer);
+ return this._ongoingChange = !1,
+ !this._renderingDisabled && this._hasChangedSinceTheLastRendering && (this._postFixersInProgress = !0, this.document._callPostFixers(this._writer), this._postFixersInProgress = !1, this.fire("render")),
+ t
+ } catch (e) {
+ c.a.rethrowUnexpectedError(e, this)
+ }
+ }
+ forceRender() {
+ this._hasChangedSinceTheLastRendering = !0,
+ this.change(() => {})
+ }
+ destroy() {
+ for (const e of this._observers.values())
+ e.destroy();
+ this.document.destroy(),
+ this.stopListening()
+ }
+ createPositionAt(e, t) {
+ return ao._createAt(e, t)
+ }
+ createPositionAfter(e) {
+ return ao._createAfter(e)
+ }
+ createPositionBefore(e) {
+ return ao._createBefore(e)
+ }
+ createRange(e, t) {
+ return new co(e, t)
+ }
+ createRangeOn(e) {
+ return co._createOn(e)
+ }
+ createRangeIn(e) {
+ return co._createIn(e)
+ }
+ createSelection(e, t, i) {
+ return new ho(e, t, i)
+ }
+ _disableRendering(e) {
+ this._renderingDisabled = e,
+ 0 == e && this.change(() => {})
+ }
+ _render() {
+ this.isRenderingInProgress = !0,
+ this.disableObservers(),
+ this._renderer.render(),
+ this.enableObservers(),
+ this.isRenderingInProgress = !1
+ }
+ }
+ Ke($s, Ue);
+ class Ys {
+ constructor(e) {
+ this.parent = null,
+ this._attrs = fn(e)
+ }
+ get index() {
+ let e;
+ if (!this.parent)
+ return null;
+ if (null === (e = this.parent.getChildIndex(this)))
+ throw new c.a("model-node-not-found-in-parent", this);
+ return e
+ }
+ get startOffset() {
+ let e;
+ if (!this.parent)
+ return null;
+ if (null === (e = this.parent.getChildStartOffset(this)))
+ throw new c.a("model-node-not-found-in-parent", this);
+ return e
+ }
+ get offsetSize() {
+ return 1
+ }
+ get endOffset() {
+ return this.parent ? this.startOffset + this.offsetSize : null
+ }
+ get nextSibling() {
+ const e = this.index;
+ return null !== e && this.parent.getChild(e + 1) || null
+ }
+ get previousSibling() {
+ const e = this.index;
+ return null !== e && this.parent.getChild(e - 1) || null
+ }
+ get root() {
+ let e = this;
+ for (; e.parent; )
+ e = e.parent;
+ return e
+ }
+ isAttached() {
+ return this.root.is("rootElement")
+ }
+ getPath() {
+ const e = [];
+ let t = this;
+ for (; t.parent; )
+ e.unshift(t.startOffset), t = t.parent;
+ return e
+ }
+ getAncestors(e = {
+ includeSelf: !1,
+ parentFirst: !1
+ }) {
+ const t = [];
+ let i = e.includeSelf ? this : this.parent;
+ for (; i; )
+ t[e.parentFirst ? "push" : "unshift"](i), i = i.parent;
+ return t
+ }
+ getCommonAncestor(e, t = {}) {
+ const i = this.getAncestors(t),
+ n = e.getAncestors(t);
+ let o = 0;
+ for (; i[o] == n[o] && i[o]; )
+ o++;
+ return 0 === o ? null : i[o - 1]
+ }
+ isBefore(e) {
+ if (this == e)
+ return !1;
+ if (this.root !== e.root)
+ return !1;
+ const t = this.getPath(),
+ i = e.getPath(),
+ n = cn(t, i);
+ switch (n) {
+ case "prefix":
+ return !0;
+ case "extension":
+ return !1;
+ default:
+ return t[n] < i[n]
+ }
+ }
+ isAfter(e) {
+ return this != e && (this.root === e.root && !this.isBefore(e))
+ }
+ hasAttribute(e) {
+ return this._attrs.has(e)
+ }
+ getAttribute(e) {
+ return this._attrs.get(e)
+ }
+ getAttributes() {
+ return this._attrs.entries()
+ }
+ getAttributeKeys() {
+ return this._attrs.keys()
+ }
+ toJSON() {
+ const e = {};
+ return this._attrs.size && (e.attributes = Array.from(this._attrs).reduce((e, t) => (e[t[0]] = t[1], e), {})),
+ e
+ }
+ is(e) {
+ return "node" === e || "model:node" === e
+ }
+ _clone() {
+ return new Ys(this._attrs)
+ }
+ _remove() {
+ this.parent._removeChildren(this.index)
+ }
+ _setAttribute(e, t) {
+ this._attrs.set(e, t)
+ }
+ _setAttributesTo(e) {
+ this._attrs = fn(e)
+ }
+ _removeAttribute(e) {
+ return this._attrs.delete(e)
+ }
+ _clearAttributes() {
+ this._attrs.clear()
+ }
+ }
+ class Gs extends Ys {
+ constructor(e, t) {
+ super(t),
+ this._data = e || ""
+ }
+ get offsetSize() {
+ return this.data.length
+ }
+ get data() {
+ return this._data
+ }
+ is(e) {
+ return "$text" === e || "model:$text" === e || "text" === e || "model:text" === e || "node" === e || "model:node" === e
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return e.data = this.data,
+ e
+ }
+ _clone() {
+ return new Gs(this.data, this.getAttributes())
+ }
+ static fromJSON(e) {
+ return new Gs(e.data, e.attributes)
+ }
+ }
+ class Ks {
+ constructor(e, t, i) {
+ if (this.textNode = e, t < 0 || t > e.offsetSize)
+ throw new c.a("model-textproxy-wrong-offsetintext", this);
+ if (i < 0 || t + i > e.offsetSize)
+ throw new c.a("model-textproxy-wrong-length", this);
+ this.data = e.data.substring(t, t + i),
+ this.offsetInText = t
+ }
+ get startOffset() {
+ return null !== this.textNode.startOffset ? this.textNode.startOffset + this.offsetInText : null
+ }
+ get offsetSize() {
+ return this.data.length
+ }
+ get endOffset() {
+ return null !== this.startOffset ? this.startOffset + this.offsetSize : null
+ }
+ get isPartial() {
+ return this.offsetSize !== this.textNode.offsetSize
+ }
+ get parent() {
+ return this.textNode.parent
+ }
+ get root() {
+ return this.textNode.root
+ }
+ is(e) {
+ return "$textProxy" === e || "model:$textProxy" === e || "textProxy" === e || "model:textProxy" === e
+ }
+ getPath() {
+ const e = this.textNode.getPath();
+ return e.length > 0 && (e[e.length - 1] += this.offsetInText),
+ e
+ }
+ getAncestors(e = {
+ includeSelf: !1,
+ parentFirst: !1
+ }) {
+ const t = [];
+ let i = e.includeSelf ? this : this.parent;
+ for (; i; )
+ t[e.parentFirst ? "push" : "unshift"](i), i = i.parent;
+ return t
+ }
+ hasAttribute(e) {
+ return this.textNode.hasAttribute(e)
+ }
+ getAttribute(e) {
+ return this.textNode.getAttribute(e)
+ }
+ getAttributes() {
+ return this.textNode.getAttributes()
+ }
+ getAttributeKeys() {
+ return this.textNode.getAttributeKeys()
+ }
+ }
+ class Qs {
+ constructor(e) {
+ this._nodes = [],
+ e && this._insertNodes(0, e)
+ }
+ [Symbol.iterator]() {
+ return this._nodes[Symbol.iterator]()
+ }
+ get length() {
+ return this._nodes.length
+ }
+ get maxOffset() {
+ return this._nodes.reduce((e, t) => e + t.offsetSize, 0)
+ }
+ getNode(e) {
+ return this._nodes[e] || null
+ }
+ getNodeIndex(e) {
+ const t = this._nodes.indexOf(e);
+ return -1 == t ? null : t
+ }
+ getNodeStartOffset(e) {
+ const t = this.getNodeIndex(e);
+ return null === t ? null : this._nodes.slice(0, t).reduce((e, t) => e + t.offsetSize, 0)
+ }
+ indexToOffset(e) {
+ if (e == this._nodes.length)
+ return this.maxOffset;
+ const t = this._nodes[e];
+ if (!t)
+ throw new c.a("model-nodelist-index-out-of-bounds", this);
+ return this.getNodeStartOffset(t)
+ }
+ offsetToIndex(e) {
+ let t = 0;
+ for (const i of this._nodes) {
+ if (e >= t && e < t + i.offsetSize)
+ return this.getNodeIndex(i);
+ t += i.offsetSize
+ }
+ if (t != e)
+ throw new c.a("model-nodelist-offset-out-of-bounds", this, {
+ offset: e,
+ nodeList: this
+ });
+ return this.length
+ }
+ _insertNodes(e, t) {
+ for (const e of t)
+ if (!(e instanceof Ys))
+ throw new c.a("model-nodelist-insertnodes-not-node", this);
+ this._nodes.splice(e, 0, ...t)
+ }
+ _removeNodes(e, t = 1) {
+ return this._nodes.splice(e, t)
+ }
+ toJSON() {
+ return this._nodes.map(e => e.toJSON())
+ }
+ }
+ class Js extends Ys {
+ constructor(e, t, i) {
+ super(t),
+ this.name = e,
+ this._children = new Qs,
+ i && this._insertChild(0, i)
+ }
+ get childCount() {
+ return this._children.length
+ }
+ get maxOffset() {
+ return this._children.maxOffset
+ }
+ get isEmpty() {
+ return 0 === this.childCount
+ }
+ is(e, t = null) {
+ return t ? t === this.name && ("element" === e || "model:element" === e) : "element" === e || "model:element" === e || "node" === e || "model:node" === e
+ }
+ getChild(e) {
+ return this._children.getNode(e)
+ }
+ getChildren() {
+ return this._children[Symbol.iterator]()
+ }
+ getChildIndex(e) {
+ return this._children.getNodeIndex(e)
+ }
+ getChildStartOffset(e) {
+ return this._children.getNodeStartOffset(e)
+ }
+ offsetToIndex(e) {
+ return this._children.offsetToIndex(e)
+ }
+ getNodeByPath(e) {
+ let t = this;
+ for (const i of e)
+ t = t.getChild(t.offsetToIndex(i));
+ return t
+ }
+ findAncestor(e, t = {
+ includeSelf: !1
+ }) {
+ let i = t.includeSelf ? this : this.parent;
+ for (; i; ) {
+ if (i.name === e)
+ return i;
+ i = i.parent
+ }
+ return null
+ }
+ toJSON() {
+ const e = super.toJSON();
+ if (e.name = this.name, this._children.length > 0) {
+ e.children = [];
+ for (const t of this._children)
+ e.children.push(t.toJSON())
+ }
+ return e
+ }
+ _clone(e = !1) {
+ const t = e ? Array.from(this._children).map(e => e._clone(!0)) : null;
+ return new Js(this.name, this.getAttributes(), t)
+ }
+ _appendChild(e) {
+ this._insertChild(this.childCount, e)
+ }
+ _insertChild(e, t) {
+ const i = function (e) {
+ if ("string" == typeof e)
+ return [new Gs(e)];
+ Ji(e) || (e = [e]);
+ return Array.from(e).map(e => "string" == typeof e ? new Gs(e) : e instanceof Ks ? new Gs(e.data, e.getAttributes()) : e)
+ }
+ (t);
+ for (const e of i)
+ null !== e.parent && e._remove(), e.parent = this;
+ this._children._insertNodes(e, i)
+ }
+ _removeChildren(e, t = 1) {
+ const i = this._children._removeNodes(e, t);
+ for (const e of i)
+ e.parent = null;
+ return i
+ }
+ static fromJSON(e) {
+ let t = null;
+ if (e.children) {
+ t = [];
+ for (const i of e.children)
+ i.name ? t.push(Js.fromJSON(i)) : t.push(Gs.fromJSON(i))
+ }
+ return new Js(e.name, e.attributes, t)
+ }
+ }
+ class Zs {
+ constructor(e = {}) {
+ if (!e.boundaries && !e.startPosition)
+ throw new c.a("model-tree-walker-no-start-position", null);
+ const t = e.direction || "forward";
+ if ("forward" != t && "backward" != t)
+ throw new c.a("model-tree-walker-unknown-direction", e, {
+ direction: t
+ });
+ this.direction = t,
+ this.boundaries = e.boundaries || null,
+ e.startPosition ? this.position = e.startPosition.clone() : this.position = ea._createAt(this.boundaries["backward" == this.direction ? "end" : "start"]),
+ this.position.stickiness = "toNone",
+ this.singleCharacters = !!e.singleCharacters,
+ this.shallow = !!e.shallow,
+ this.ignoreElementEnd = !!e.ignoreElementEnd,
+ this._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null,
+ this._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null,
+ this._visitedParent = this.position.parent
+ }
+ [Symbol.iterator]() {
+ return this
+ }
+ skip(e) {
+ let t,
+ i,
+ n,
+ o;
+ do {
+ n = this.position,
+ o = this._visitedParent,
+ ({
+ done: t,
+ value: i
+ } = this.next())
+ } while (!t && e(i));
+ t || (this.position = n, this._visitedParent = o)
+ }
+ next() {
+ return "forward" == this.direction ? this._next() : this._previous()
+ }
+ _next() {
+ const e = this.position,
+ t = this.position.clone(),
+ i = this._visitedParent;
+ if (null === i.parent && t.offset === i.maxOffset)
+ return {
+ done: !0
+ };
+ if (i === this._boundaryEndParent && t.offset == this.boundaries.end.offset)
+ return {
+ done: !0
+ };
+ const n = t.parent,
+ o = ta(t, n),
+ r = o || ia(t, n, o);
+ if (r instanceof Js)
+ return this.shallow ? t.offset++ : (t.path.push(0), this._visitedParent = r), this.position = t, Xs("elementStart", r, e, t, 1);
+ if (r instanceof Gs) {
+ let n;
+ if (this.singleCharacters)
+ n = 1;
+ else {
+ let e = r.endOffset;
+ this._boundaryEndParent == i && this.boundaries.end.offset < e && (e = this.boundaries.end.offset),
+ n = e - t.offset
+ }
+ const o = t.offset - r.startOffset,
+ s = new Ks(r, o, n);
+ return t.offset += n,
+ this.position = t,
+ Xs("text", s, e, t, n)
+ }
+ return t.path.pop(),
+ t.offset++,
+ this.position = t,
+ this._visitedParent = i.parent,
+ this.ignoreElementEnd ? this._next() : Xs("elementEnd", i, e, t)
+ }
+ _previous() {
+ const e = this.position,
+ t = this.position.clone(),
+ i = this._visitedParent;
+ if (null === i.parent && 0 === t.offset)
+ return {
+ done: !0
+ };
+ if (i == this._boundaryStartParent && t.offset == this.boundaries.start.offset)
+ return {
+ done: !0
+ };
+ const n = t.parent,
+ o = ta(t, n),
+ r = o || na(t, n, o);
+ if (r instanceof Js)
+ return t.offset--, this.shallow ? (this.position = t, Xs("elementStart", r, e, t, 1)) : (t.path.push(r.maxOffset), this.position = t, this._visitedParent = r, this.ignoreElementEnd ? this._previous() : Xs("elementEnd", r, e, t));
+ if (r instanceof Gs) {
+ let n;
+ if (this.singleCharacters)
+ n = 1;
+ else {
+ let e = r.startOffset;
+ this._boundaryStartParent == i && this.boundaries.start.offset > e && (e = this.boundaries.start.offset),
+ n = t.offset - e
+ }
+ const o = t.offset - r.startOffset,
+ s = new Ks(r, o - n, n);
+ return t.offset -= n,
+ this.position = t,
+ Xs("text", s, e, t, n)
+ }
+ return t.path.pop(),
+ this.position = t,
+ this._visitedParent = i.parent,
+ Xs("elementStart", i, e, t, 1)
+ }
+ }
+ function Xs(e, t, i, n, o) {
+ return {
+ done: !1,
+ value: {
+ type: e,
+ item: t,
+ previousPosition: i,
+ nextPosition: n,
+ length: o
+ }
+ }
+ }
+ class ea {
+ constructor(e, t, i = "toNone") {
+ if (!e.is("element") && !e.is("documentFragment"))
+ throw new c.a("model-position-root-invalid", e);
+ if (!(t instanceof Array) || 0 === t.length)
+ throw new c.a("model-position-path-incorrect-format", e, {
+ path: t
+ });
+ e.is("rootElement") ? t = t.slice() : (t = [...e.getPath(), ...t], e = e.root),
+ this.root = e,
+ this.path = t,
+ this.stickiness = i
+ }
+ get offset() {
+ return this.path[this.path.length - 1]
+ }
+ set offset(e) {
+ this.path[this.path.length - 1] = e
+ }
+ get parent() {
+ let e = this.root;
+ for (let t = 0; t < this.path.length - 1; t++)
+ if (e = e.getChild(e.offsetToIndex(this.path[t])), !e)
+ throw new c.a("model-position-path-incorrect", this, {
+ position: this
+ });
+ if (e.is("$text"))
+ throw new c.a("model-position-path-incorrect", this, {
+ position: this
+ });
+ return e
+ }
+ get index() {
+ return this.parent.offsetToIndex(this.offset)
+ }
+ get textNode() {
+ return ta(this, this.parent)
+ }
+ get nodeAfter() {
+ const e = this.parent;
+ return ia(this, e, ta(this, e))
+ }
+ get nodeBefore() {
+ const e = this.parent;
+ return na(this, e, ta(this, e))
+ }
+ get isAtStart() {
+ return 0 === this.offset
+ }
+ get isAtEnd() {
+ return this.offset == this.parent.maxOffset
+ }
+ compareWith(e) {
+ if (this.root != e.root)
+ return "different";
+ const t = cn(this.path, e.path);
+ switch (t) {
+ case "same":
+ return "same";
+ case "prefix":
+ return "before";
+ case "extension":
+ return "after";
+ default:
+ return this.path[t] < e.path[t] ? "before" : "after"
+ }
+ }
+ getLastMatchingPosition(e, t = {}) {
+ t.startPosition = this;
+ const i = new Zs(t);
+ return i.skip(e),
+ i.position
+ }
+ getParentPath() {
+ return this.path.slice(0, -1)
+ }
+ getAncestors() {
+ const e = this.parent;
+ return e.is("documentFragment") ? [e] : e.getAncestors({
+ includeSelf: !0
+ })
+ }
+ findAncestor(e) {
+ const t = this.parent;
+ return t.is("element") ? t.findAncestor(e, {
+ includeSelf: !0
+ }) : null
+ }
+ getCommonPath(e) {
+ if (this.root != e.root)
+ return [];
+ const t = cn(this.path, e.path),
+ i = "string" == typeof t ? Math.min(this.path.length, e.path.length) : t;
+ return this.path.slice(0, i)
+ }
+ getCommonAncestor(e) {
+ const t = this.getAncestors(),
+ i = e.getAncestors();
+ let n = 0;
+ for (; t[n] == i[n] && t[n]; )
+ n++;
+ return 0 === n ? null : t[n - 1]
+ }
+ getShiftedBy(e) {
+ const t = this.clone(),
+ i = t.offset + e;
+ return t.offset = i < 0 ? 0 : i,
+ t
+ }
+ isAfter(e) {
+ return "after" == this.compareWith(e)
+ }
+ isBefore(e) {
+ return "before" == this.compareWith(e)
+ }
+ isEqual(e) {
+ return "same" == this.compareWith(e)
+ }
+ isTouching(e) {
+ let t = null,
+ i = null;
+ switch (this.compareWith(e)) {
+ case "same":
+ return !0;
+ case "before":
+ t = ea._createAt(this),
+ i = ea._createAt(e);
+ break;
+ case "after":
+ t = ea._createAt(e),
+ i = ea._createAt(this);
+ break;
+ default:
+ return !1
+ }
+ let n = t.parent;
+ for (; t.path.length + i.path.length; ) {
+ if (t.isEqual(i))
+ return !0;
+ if (t.path.length > i.path.length) {
+ if (t.offset !== n.maxOffset)
+ return !1;
+ t.path = t.path.slice(0, -1),
+ n = n.parent,
+ t.offset++
+ } else {
+ if (0 !== i.offset)
+ return !1;
+ i.path = i.path.slice(0, -1)
+ }
+ }
+ }
+ is(e) {
+ return "position" === e || "model:position" === e
+ }
+ hasSameParentAs(e) {
+ if (this.root !== e.root)
+ return !1;
+ return "same" == cn(this.getParentPath(), e.getParentPath())
+ }
+ getTransformedByOperation(e) {
+ let t;
+ switch (e.type) {
+ case "insert":
+ t = this._getTransformedByInsertOperation(e);
+ break;
+ case "move":
+ case "remove":
+ case "reinsert":
+ t = this._getTransformedByMoveOperation(e);
+ break;
+ case "split":
+ t = this._getTransformedBySplitOperation(e);
+ break;
+ case "merge":
+ t = this._getTransformedByMergeOperation(e);
+ break;
+ default:
+ t = ea._createAt(this)
+ }
+ return t
+ }
+ _getTransformedByInsertOperation(e) {
+ return this._getTransformedByInsertion(e.position, e.howMany)
+ }
+ _getTransformedByMoveOperation(e) {
+ return this._getTransformedByMove(e.sourcePosition, e.targetPosition, e.howMany)
+ }
+ _getTransformedBySplitOperation(e) {
+ const t = e.movedRange;
+ return t.containsPosition(this) || t.start.isEqual(this) && "toNext" == this.stickiness ? this._getCombined(e.splitPosition, e.moveTargetPosition) : e.graveyardPosition ? this._getTransformedByMove(e.graveyardPosition, e.insertionPosition, 1) : this._getTransformedByInsertion(e.insertionPosition, 1)
+ }
+ _getTransformedByMergeOperation(e) {
+ const t = e.movedRange;
+ let i;
+ return t.containsPosition(this) || t.start.isEqual(this) ? (i = this._getCombined(e.sourcePosition, e.targetPosition), e.sourcePosition.isBefore(e.targetPosition) && (i = i._getTransformedByDeletion(e.deletionPosition, 1))) : i = this.isEqual(e.deletionPosition) ? ea._createAt(e.deletionPosition) : this._getTransformedByMove(e.deletionPosition, e.graveyardPosition, 1),
+ i
+ }
+ _getTransformedByDeletion(e, t) {
+ const i = ea._createAt(this);
+ if (this.root != e.root)
+ return i;
+ if ("same" == cn(e.getParentPath(), this.getParentPath())) {
+ if (e.offset < this.offset) {
+ if (e.offset + t > this.offset)
+ return null;
+ i.offset -= t
+ }
+ } else if ("prefix" == cn(e.getParentPath(), this.getParentPath())) {
+ const n = e.path.length - 1;
+ if (e.offset <= this.path[n]) {
+ if (e.offset + t > this.path[n])
+ return null;
+ i.path[n] -= t
+ }
+ }
+ return i
+ }
+ _getTransformedByInsertion(e, t) {
+ const i = ea._createAt(this);
+ if (this.root != e.root)
+ return i;
+ if ("same" == cn(e.getParentPath(), this.getParentPath()))
+ (e.offset < this.offset || e.offset == this.offset && "toPrevious" != this.stickiness) && (i.offset += t);
+ else if ("prefix" == cn(e.getParentPath(), this.getParentPath())) {
+ const n = e.path.length - 1;
+ e.offset <= this.path[n] && (i.path[n] += t)
+ }
+ return i
+ }
+ _getTransformedByMove(e, t, i) {
+ if (t = t._getTransformedByDeletion(e, i), e.isEqual(t))
+ return ea._createAt(this);
+ const n = this._getTransformedByDeletion(e, i);
+ return null === n || e.isEqual(this) && "toNext" == this.stickiness || e.getShiftedBy(i).isEqual(this) && "toPrevious" == this.stickiness ? this._getCombined(e, t) : n._getTransformedByInsertion(t, i)
+ }
+ _getCombined(e, t) {
+ const i = e.path.length - 1,
+ n = ea._createAt(t);
+ return n.stickiness = this.stickiness,
+ n.offset = n.offset + this.path[i] - e.offset,
+ n.path = [...n.path, ...this.path.slice(i + 1)],
+ n
+ }
+ toJSON() {
+ return {
+ root: this.root.toJSON(),
+ path: Array.from(this.path),
+ stickiness: this.stickiness
+ }
+ }
+ clone() {
+ return new this.constructor(this.root, this.path, this.stickiness)
+ }
+ static _createAt(e, t, i = "toNone") {
+ if (e instanceof ea)
+ return new ea(e.root, e.path, e.stickiness); {
+ const n = e;
+ if ("end" == t)
+ t = n.maxOffset;
+ else {
+ if ("before" == t)
+ return this._createBefore(n, i);
+ if ("after" == t)
+ return this._createAfter(n, i);
+ if (0 !== t && !t)
+ throw new c.a("model-createpositionat-offset-required", [this, e])
+ }
+ if (!n.is("element") && !n.is("documentFragment"))
+ throw new c.a("model-position-parent-incorrect", [this, e]);
+ const o = n.getPath();
+ return o.push(t),
+ new this(n.root, o, i)
+ }
+ }
+ static _createAfter(e, t) {
+ if (!e.parent)
+ throw new c.a("model-position-after-root", [this, e], {
+ root: e
+ });
+ return this._createAt(e.parent, e.endOffset, t)
+ }
+ static _createBefore(e, t) {
+ if (!e.parent)
+ throw new c.a("model-position-before-root", e, {
+ root: e
+ });
+ return this._createAt(e.parent, e.startOffset, t)
+ }
+ static fromJSON(e, t) {
+ if ("$graveyard" === e.root) {
+ const i = new ea(t.graveyard, e.path);
+ return i.stickiness = e.stickiness,
+ i
+ }
+ if (!t.getRoot(e.root))
+ throw new c.a("model-position-fromjson-no-root", t, {
+ rootName: e.root
+ });
+ return new ea(t.getRoot(e.root), e.path, e.stickiness)
+ }
+ }
+ function ta(e, t) {
+ const i = t.getChild(t.offsetToIndex(e.offset));
+ return i && i.is("$text") && i.startOffset < e.offset ? i : null
+ }
+ function ia(e, t, i) {
+ return null !== i ? null : t.getChild(t.offsetToIndex(e.offset))
+ }
+ function na(e, t, i) {
+ return null !== i ? null : t.getChild(t.offsetToIndex(e.offset) - 1)
+ }
+ class oa {
+ constructor(e, t = null) {
+ this.start = ea._createAt(e),
+ this.end = t ? ea._createAt(t) : ea._createAt(e),
+ this.start.stickiness = this.isCollapsed ? "toNone" : "toNext",
+ this.end.stickiness = this.isCollapsed ? "toNone" : "toPrevious"
+ }
+ * [Symbol.iterator]() {
+ yield * new Zs({
+ boundaries: this,
+ ignoreElementEnd: !0
+ })
+ }
+ get isCollapsed() {
+ return this.start.isEqual(this.end)
+ }
+ get isFlat() {
+ return "same" == cn(this.start.getParentPath(), this.end.getParentPath())
+ }
+ get root() {
+ return this.start.root
+ }
+ containsPosition(e) {
+ return e.isAfter(this.start) && e.isBefore(this.end)
+ }
+ containsRange(e, t = !1) {
+ e.isCollapsed && (t = !1);
+ const i = this.containsPosition(e.start) || t && this.start.isEqual(e.start),
+ n = this.containsPosition(e.end) || t && this.end.isEqual(e.end);
+ return i && n
+ }
+ containsItem(e) {
+ const t = ea._createBefore(e);
+ return this.containsPosition(t) || this.start.isEqual(t)
+ }
+ is(e) {
+ return "range" === e || "model:range" === e
+ }
+ isEqual(e) {
+ return this.start.isEqual(e.start) && this.end.isEqual(e.end)
+ }
+ isIntersecting(e) {
+ return this.start.isBefore(e.end) && this.end.isAfter(e.start)
+ }
+ getDifference(e) {
+ const t = [];
+ return this.isIntersecting(e) ? (this.containsPosition(e.start) && t.push(new oa(this.start, e.start)), this.containsPosition(e.end) && t.push(new oa(e.end, this.end))) : t.push(new oa(this.start, this.end)),
+ t
+ }
+ getIntersection(e) {
+ if (this.isIntersecting(e)) {
+ let t = this.start,
+ i = this.end;
+ return this.containsPosition(e.start) && (t = e.start),
+ this.containsPosition(e.end) && (i = e.end),
+ new oa(t, i)
+ }
+ return null
+ }
+ getJoined(e, t = !1) {
+ let i = this.isIntersecting(e);
+ if (i || (i = this.start.isBefore(e.start) ? t ? this.end.isTouching(e.start) : this.end.isEqual(e.start) : t ? e.end.isTouching(this.start) : e.end.isEqual(this.start)), !i)
+ return null;
+ let n = this.start,
+ o = this.end;
+ return e.start.isBefore(n) && (n = e.start),
+ e.end.isAfter(o) && (o = e.end),
+ new oa(n, o)
+ }
+ getMinimalFlatRanges() {
+ const e = [],
+ t = this.start.getCommonPath(this.end).length,
+ i = ea._createAt(this.start);
+ let n = i.parent;
+ for (; i.path.length > t + 1; ) {
+ const t = n.maxOffset - i.offset;
+ 0 !== t && e.push(new oa(i, i.getShiftedBy(t))),
+ i.path = i.path.slice(0, -1),
+ i.offset++,
+ n = n.parent
+ }
+ for (; i.path.length <= this.end.path.length; ) {
+ const t = this.end.path[i.path.length - 1],
+ n = t - i.offset;
+ 0 !== n && e.push(new oa(i, i.getShiftedBy(n))),
+ i.offset = t,
+ i.path.push(0)
+ }
+ return e
+ }
+ getWalker(e = {}) {
+ return e.boundaries = this,
+ new Zs(e)
+ }
+ * getItems(e = {}) {
+ e.boundaries = this,
+ e.ignoreElementEnd = !0;
+ const t = new Zs(e);
+ for (const e of t)
+ yield e.item
+ }
+ * getPositions(e = {}) {
+ e.boundaries = this;
+ const t = new Zs(e);
+ yield t.position;
+ for (const e of t)
+ yield e.nextPosition
+ }
+ getTransformedByOperation(e) {
+ switch (e.type) {
+ case "insert":
+ return this._getTransformedByInsertOperation(e);
+ case "move":
+ case "remove":
+ case "reinsert":
+ return this._getTransformedByMoveOperation(e);
+ case "split":
+ return [this._getTransformedBySplitOperation(e)];
+ case "merge":
+ return [this._getTransformedByMergeOperation(e)]
+ }
+ return [new oa(this.start, this.end)]
+ }
+ getTransformedByOperations(e) {
+ const t = [new oa(this.start, this.end)];
+ for (const i of e)
+ for (let e = 0; e < t.length; e++) {
+ const n = t[e].getTransformedByOperation(i);
+ t.splice(e, 1, ...n),
+ e += n.length - 1
+ }
+ for (let e = 0; e < t.length; e++) {
+ const i = t[e];
+ for (let n = e + 1; n < t.length; n++) {
+ const e = t[n];
+ (i.containsRange(e) || e.containsRange(i) || i.isEqual(e)) && t.splice(n, 1)
+ }
+ }
+ return t
+ }
+ getCommonAncestor() {
+ return this.start.getCommonAncestor(this.end)
+ }
+ getContainedElement() {
+ if (this.isCollapsed)
+ return null;
+ const e = this.start.nodeAfter,
+ t = this.end.nodeBefore;
+ return e && e.is("element") && e === t ? e : null
+ }
+ toJSON() {
+ return {
+ start: this.start.toJSON(),
+ end: this.end.toJSON()
+ }
+ }
+ clone() {
+ return new this.constructor(this.start, this.end)
+ }
+ _getTransformedByInsertOperation(e, t = !1) {
+ return this._getTransformedByInsertion(e.position, e.howMany, t)
+ }
+ _getTransformedByMoveOperation(e, t = !1) {
+ const i = e.sourcePosition,
+ n = e.howMany,
+ o = e.targetPosition;
+ return this._getTransformedByMove(i, o, n, t)
+ }
+ _getTransformedBySplitOperation(e) {
+ const t = this.start._getTransformedBySplitOperation(e);
+ let i = this.end._getTransformedBySplitOperation(e);
+ return this.end.isEqual(e.insertionPosition) && (i = this.end.getShiftedBy(1)),
+ t.root != i.root && (i = this.end.getShiftedBy(-1)),
+ new oa(t, i)
+ }
+ _getTransformedByMergeOperation(e) {
+ if (this.start.isEqual(e.targetPosition) && this.end.isEqual(e.deletionPosition))
+ return new oa(this.start);
+ let t = this.start._getTransformedByMergeOperation(e),
+ i = this.end._getTransformedByMergeOperation(e);
+ return t.root != i.root && (i = this.end.getShiftedBy(-1)),
+ t.isAfter(i) ? (e.sourcePosition.isBefore(e.targetPosition) ? (t = ea._createAt(i), t.offset = 0) : (e.deletionPosition.isEqual(t) || (i = e.deletionPosition), t = e.targetPosition), new oa(t, i)) : new oa(t, i)
+ }
+ _getTransformedByInsertion(e, t, i = !1) {
+ if (i && this.containsPosition(e))
+ return [new oa(this.start, e), new oa(e.getShiftedBy(t), this.end._getTransformedByInsertion(e, t))]; {
+ const i = new oa(this.start, this.end);
+ return i.start = i.start._getTransformedByInsertion(e, t),
+ i.end = i.end._getTransformedByInsertion(e, t),
+ [i]
+ }
+ }
+ _getTransformedByMove(e, t, i, n = !1) {
+ if (this.isCollapsed) {
+ const n = this.start._getTransformedByMove(e, t, i);
+ return [new oa(n)]
+ }
+ const o = oa._createFromPositionAndShift(e, i),
+ r = t._getTransformedByDeletion(e, i);
+ if (this.containsPosition(t) && !n && (o.containsPosition(this.start) || o.containsPosition(this.end))) {
+ const n = this.start._getTransformedByMove(e, t, i),
+ o = this.end._getTransformedByMove(e, t, i);
+ return [new oa(n, o)]
+ }
+ let s;
+ const a = this.getDifference(o);
+ let c = null;
+ const l = this.getIntersection(o);
+ if (1 == a.length ? c = new oa(a[0].start._getTransformedByDeletion(e, i), a[0].end._getTransformedByDeletion(e, i)) : 2 == a.length && (c = new oa(this.start, this.end._getTransformedByDeletion(e, i))), s = c ? c._getTransformedByInsertion(r, i, null !== l || n) : [], l) {
+ const e = new oa(l.start._getCombined(o.start, r), l.end._getCombined(o.start, r));
+ 2 == s.length ? s.splice(1, 0, e) : s.push(e)
+ }
+ return s
+ }
+ _getTransformedByDeletion(e, t) {
+ let i = this.start._getTransformedByDeletion(e, t),
+ n = this.end._getTransformedByDeletion(e, t);
+ return null == i && null == n ? null : (null == i && (i = e), null == n && (n = e), new oa(i, n))
+ }
+ static _createFromPositionAndShift(e, t) {
+ const i = e,
+ n = e.getShiftedBy(t);
+ return t > 0 ? new this(i, n) : new this(n, i)
+ }
+ static _createIn(e) {
+ return new this(ea._createAt(e, 0), ea._createAt(e, e.maxOffset))
+ }
+ static _createOn(e) {
+ return this._createFromPositionAndShift(ea._createBefore(e), e.offsetSize)
+ }
+ static _createFromRanges(e) {
+ if (0 === e.length)
+ throw new c.a("range-create-from-ranges-empty-array", null);
+ if (1 == e.length)
+ return e[0].clone();
+ const t = e[0];
+ e.sort((e, t) => e.start.isAfter(t.start) ? 1 : -1);
+ const i = e.indexOf(t),
+ n = new this(t.start, t.end);
+ if (i > 0)
+ for (let t = i - 1; e[t].end.isEqual(n.start); t++)
+ n.start = ea._createAt(e[t].start);
+ for (let t = i + 1; t < e.length && e[t].start.isEqual(n.end); t++)
+ n.end = ea._createAt(e[t].end);
+ return n
+ }
+ static fromJSON(e, t) {
+ return new this(ea.fromJSON(e.start, t), ea.fromJSON(e.end, t))
+ }
+ }
+ class ra {
+ constructor() {
+ this._modelToViewMapping = new WeakMap,
+ this._viewToModelMapping = new WeakMap,
+ this._viewToModelLengthCallbacks = new Map,
+ this._markerNameToElements = new Map,
+ this._elementToMarkerNames = new Map,
+ this._unboundMarkerNames = new Set,
+ this.on("modelToViewPosition", (e, t) => {
+ if (t.viewPosition)
+ return;
+ const i = this._modelToViewMapping.get(t.modelPosition.parent);
+ t.viewPosition = this.findPositionIn(i, t.modelPosition.offset)
+ }, {
+ priority: "low"
+ }),
+ this.on("viewToModelPosition", (e, t) => {
+ if (t.modelPosition)
+ return;
+ const i = this.findMappedViewAncestor(t.viewPosition),
+ n = this._viewToModelMapping.get(i),
+ o = this._toModelOffset(t.viewPosition.parent, t.viewPosition.offset, i);
+ t.modelPosition = ea._createAt(n, o)
+ }, {
+ priority: "low"
+ })
+ }
+ bindElements(e, t) {
+ this._modelToViewMapping.set(e, t),
+ this._viewToModelMapping.set(t, e)
+ }
+ unbindViewElement(e) {
+ const t = this.toModelElement(e);
+ if (this._viewToModelMapping.delete(e), this._elementToMarkerNames.has(e))
+ for (const t of this._elementToMarkerNames.get(e))
+ this._unboundMarkerNames.add(t);
+ this._modelToViewMapping.get(t) == e && this._modelToViewMapping.delete(t)
+ }
+ unbindModelElement(e) {
+ const t = this.toViewElement(e);
+ this._modelToViewMapping.delete(e),
+ this._viewToModelMapping.get(t) == e && this._viewToModelMapping.delete(t)
+ }
+ bindElementToMarker(e, t) {
+ const i = this._markerNameToElements.get(t) || new Set;
+ i.add(e);
+ const n = this._elementToMarkerNames.get(e) || new Set;
+ n.add(t),
+ this._markerNameToElements.set(t, i),
+ this._elementToMarkerNames.set(e, n)
+ }
+ unbindElementFromMarkerName(e, t) {
+ const i = this._markerNameToElements.get(t);
+ i && (i.delete(e), 0 == i.size && this._markerNameToElements.delete(t));
+ const n = this._elementToMarkerNames.get(e);
+ n && (n.delete(t), 0 == n.size && this._elementToMarkerNames.delete(e))
+ }
+ flushUnboundMarkerNames() {
+ const e = Array.from(this._unboundMarkerNames);
+ return this._unboundMarkerNames.clear(),
+ e
+ }
+ clearBindings() {
+ this._modelToViewMapping = new WeakMap,
+ this._viewToModelMapping = new WeakMap,
+ this._markerNameToElements = new Map,
+ this._elementToMarkerNames = new Map,
+ this._unboundMarkerNames = new Set
+ }
+ toModelElement(e) {
+ return this._viewToModelMapping.get(e)
+ }
+ toViewElement(e) {
+ return this._modelToViewMapping.get(e)
+ }
+ toModelRange(e) {
+ return new oa(this.toModelPosition(e.start), this.toModelPosition(e.end))
+ }
+ toViewRange(e) {
+ return new co(this.toViewPosition(e.start), this.toViewPosition(e.end))
+ }
+ toModelPosition(e) {
+ const t = {
+ viewPosition: e,
+ mapper: this
+ };
+ return this.fire("viewToModelPosition", t),
+ t.modelPosition
+ }
+ toViewPosition(e, t = {
+ isPhantom: !1
+ }) {
+ const i = {
+ modelPosition: e,
+ mapper: this,
+ isPhantom: t.isPhantom
+ };
+ return this.fire("modelToViewPosition", i),
+ i.viewPosition
+ }
+ markerNameToElements(e) {
+ const t = this._markerNameToElements.get(e);
+ if (!t)
+ return null;
+ const i = new Set;
+ for (const e of t)
+ if (e.is("attributeElement"))
+ for (const t of e.getElementsWithSameId())
+ i.add(t);
+ else
+ i.add(e);
+ return i
+ }
+ registerViewToModelLength(e, t) {
+ this._viewToModelLengthCallbacks.set(e, t)
+ }
+ findMappedViewAncestor(e) {
+ let t = e.parent;
+ for (; !this._viewToModelMapping.has(t); )
+ t = t.parent;
+ return t
+ }
+ _toModelOffset(e, t, i) {
+ if (i != e) {
+ return this._toModelOffset(e.parent, e.index, i) + this._toModelOffset(e, t, e)
+ }
+ if (e.is("$text"))
+ return t;
+ let n = 0;
+ for (let i = 0; i < t; i++)
+ n += this.getModelLength(e.getChild(i));
+ return n
+ }
+ getModelLength(e) {
+ if (this._viewToModelLengthCallbacks.get(e.name)) {
+ return this._viewToModelLengthCallbacks.get(e.name)(e)
+ }
+ if (this._viewToModelMapping.has(e))
+ return 1;
+ if (e.is("$text"))
+ return e.data.length;
+ if (e.is("uiElement"))
+ return 0; {
+ let t = 0;
+ for (const i of e.getChildren())
+ t += this.getModelLength(i);
+ return t
+ }
+ }
+ findPositionIn(e, t) {
+ let i,
+ n = 0,
+ o = 0,
+ r = 0;
+ if (e.is("$text"))
+ return new ao(e, t);
+ for (; o < t; )
+ i = e.getChild(r), n = this.getModelLength(i), o += n, r++;
+ return o == t ? this._moveViewPositionToTextNode(new ao(e, r)) : this.findPositionIn(i, t - (o - n))
+ }
+ _moveViewPositionToTextNode(e) {
+ const t = e.nodeBefore,
+ i = e.nodeAfter;
+ return t instanceof un ? new ao(t, t.data.length) : i instanceof un ? new ao(i, 0) : e
+ }
+ }
+ Ke(ra, u);
+ class sa {
+ constructor() {
+ this._consumable = new Map,
+ this._textProxyRegistry = new Map
+ }
+ add(e, t) {
+ t = aa(t),
+ e instanceof Ks && (e = this._getSymbolForTextProxy(e)),
+ this._consumable.has(e) || this._consumable.set(e, new Map),
+ this._consumable.get(e).set(t, !0)
+ }
+ consume(e, t) {
+ return t = aa(t),
+ e instanceof Ks && (e = this._getSymbolForTextProxy(e)),
+ !!this.test(e, t) && (this._consumable.get(e).set(t, !1), !0)
+ }
+ test(e, t) {
+ t = aa(t),
+ e instanceof Ks && (e = this._getSymbolForTextProxy(e));
+ const i = this._consumable.get(e);
+ if (void 0 === i)
+ return null;
+ const n = i.get(t);
+ return void 0 === n ? null : n
+ }
+ revert(e, t) {
+ t = aa(t),
+ e instanceof Ks && (e = this._getSymbolForTextProxy(e));
+ const i = this.test(e, t);
+ return !1 === i ? (this._consumable.get(e).set(t, !0), !0) : !0 !== i && null
+ }
+ _getSymbolForTextProxy(e) {
+ let t = null;
+ const i = this._textProxyRegistry.get(e.startOffset);
+ if (i) {
+ const n = i.get(e.endOffset);
+ n && (t = n.get(e.parent))
+ }
+ return t || (t = this._addSymbolForTextProxy(e.startOffset, e.endOffset, e.parent)),
+ t
+ }
+ _addSymbolForTextProxy(e, t, i) {
+ const n = Symbol("textProxySymbol");
+ let o,
+ r;
+ return o = this._textProxyRegistry.get(e),
+ o || (o = new Map, this._textProxyRegistry.set(e, o)),
+ r = o.get(t),
+ r || (r = new Map, o.set(t, r)),
+ r.set(i, n),
+ n
+ }
+ }
+ function aa(e) {
+ const t = e.split(":");
+ return t.length > 1 ? t[0] + ":" + t[1] : t[0]
+ }
+ class ca {
+ constructor(e) {
+ this.conversionApi = Object.assign({
+ dispatcher: this
+ }, e),
+ this._reconversionEventsMapping = new Map
+ }
+ convertChanges(e, t, i) {
+ for (const t of e.getMarkersToRemove())
+ this.convertMarkerRemove(t.name, t.range, i);
+ const n = this._mapChangesWithAutomaticReconversion(e);
+ for (const e of n)
+ "insert" === e.type ? this.convertInsert(oa._createFromPositionAndShift(e.position, e.length), i) : "remove" === e.type ? this.convertRemove(e.position, e.length, e.name, i) : "reconvert" === e.type ? this.reconvertElement(e.element, i) : this.convertAttribute(e.range, e.attributeKey, e.attributeOldValue, e.attributeNewValue, i);
+ for (const e of this.conversionApi.mapper.flushUnboundMarkerNames()) {
+ const n = t.get(e).getRange();
+ this.convertMarkerRemove(e, n, i),
+ this.convertMarkerAdd(e, n, i)
+ }
+ for (const t of e.getMarkersToAdd())
+ this.convertMarkerAdd(t.name, t.range, i)
+ }
+ convertInsert(e, t) {
+ this.conversionApi.writer = t,
+ this.conversionApi.consumable = this._createInsertConsumable(e);
+ for (const t of Array.from(e).map(da))
+ this._convertInsertWithAttributes(t);
+ this._clearConversionApi()
+ }
+ convertRemove(e, t, i, n) {
+ this.conversionApi.writer = n,
+ this.fire("remove:" + i, {
+ position: e,
+ length: t
+ }, this.conversionApi),
+ this._clearConversionApi()
+ }
+ convertAttribute(e, t, i, n, o) {
+ this.conversionApi.writer = o,
+ this.conversionApi.consumable = this._createConsumableForRange(e, "attribute:" + t);
+ for (const o of e) {
+ const e = {
+ item: o.item,
+ range: oa._createFromPositionAndShift(o.previousPosition, o.length),
+ attributeKey: t,
+ attributeOldValue: i,
+ attributeNewValue: n
+ };
+ this._testAndFire("attribute:" + t, e)
+ }
+ this._clearConversionApi()
+ }
+ reconvertElement(e, t) {
+ const i = oa._createOn(e);
+ this.conversionApi.writer = t,
+ this.conversionApi.consumable = this._createInsertConsumable(i);
+ const n = this.conversionApi.mapper,
+ o = n.toViewElement(e);
+ t.remove(o),
+ this._convertInsertWithAttributes({
+ item: e,
+ range: i
+ });
+ const r = n.toViewElement(e);
+ for (const i of oa._createIn(e)) {
+ const {
+ item: e
+ } = i,
+ o = ua(e, n);
+ o ? o.root !== r.root && t.move(t.createRangeOn(o), n.toViewPosition(ea._createBefore(e))) : this._convertInsertWithAttributes(da(i))
+ }
+ n.unbindViewElement(o),
+ this._clearConversionApi()
+ }
+ convertSelection(e, t, i) {
+ const n = Array.from(t.getMarkersAtPosition(e.getFirstPosition()));
+ if (this.conversionApi.writer = i, this.conversionApi.consumable = this._createSelectionConsumable(e, n), this.fire("selection", {
+ selection: e
+ }, this.conversionApi), e.isCollapsed) {
+ for (const t of n) {
+ const i = t.getRange();
+ if (!la(e.getFirstPosition(), t, this.conversionApi.mapper))
+ continue;
+ const n = {
+ item: e,
+ markerName: t.name,
+ markerRange: i
+ };
+ this.conversionApi.consumable.test(e, "addMarker:" + t.name) && this.fire("addMarker:" + t.name, n, this.conversionApi)
+ }
+ for (const t of e.getAttributeKeys()) {
+ const i = {
+ item: e,
+ range: e.getFirstRange(),
+ attributeKey: t,
+ attributeOldValue: null,
+ attributeNewValue: e.getAttribute(t)
+ };
+ this.conversionApi.consumable.test(e, "attribute:" + i.attributeKey) && this.fire("attribute:" + i.attributeKey + ":$text", i, this.conversionApi)
+ }
+ this._clearConversionApi()
+ }
+ }
+ convertMarkerAdd(e, t, i) {
+ if ("$graveyard" == t.root.rootName)
+ return;
+ this.conversionApi.writer = i;
+ const n = "addMarker:" + e,
+ o = new sa;
+ if (o.add(t, n), this.conversionApi.consumable = o, this.fire(n, {
+ markerName: e,
+ markerRange: t
+ }, this.conversionApi), o.test(t, n)) {
+ this.conversionApi.consumable = this._createConsumableForRange(t, n);
+ for (const i of t.getItems()) {
+ if (!this.conversionApi.consumable.test(i, n))
+ continue;
+ const o = {
+ item: i,
+ range: oa._createOn(i),
+ markerName: e,
+ markerRange: t
+ };
+ this.fire(n, o, this.conversionApi)
+ }
+ this._clearConversionApi()
+ }
+ }
+ convertMarkerRemove(e, t, i) {
+ "$graveyard" != t.root.rootName && (this.conversionApi.writer = i, this.fire("removeMarker:" + e, {
+ markerName: e,
+ markerRange: t
+ }, this.conversionApi), this._clearConversionApi())
+ }
+ _mapReconversionTriggerEvent(e, t) {
+ this._reconversionEventsMapping.set(t, e)
+ }
+ _createInsertConsumable(e) {
+ const t = new sa;
+ for (const i of e) {
+ const e = i.item;
+ t.add(e, "insert");
+ for (const i of e.getAttributeKeys())
+ t.add(e, "attribute:" + i)
+ }
+ return t
+ }
+ _createConsumableForRange(e, t) {
+ const i = new sa;
+ for (const n of e.getItems())
+ i.add(n, t);
+ return i
+ }
+ _createSelectionConsumable(e, t) {
+ const i = new sa;
+ i.add(e, "selection");
+ for (const n of t)
+ i.add(e, "addMarker:" + n.name);
+ for (const t of e.getAttributeKeys())
+ i.add(e, "attribute:" + t);
+ return i
+ }
+ _testAndFire(e, t) {
+ this.conversionApi.consumable.test(t.item, e) && this.fire(function (e, t) {
+ const i = t.item.name || "$text";
+ return `${e}:${i}`
+ }
+ (e, t), t, this.conversionApi)
+ }
+ _clearConversionApi() {
+ delete this.conversionApi.writer,
+ delete this.conversionApi.consumable
+ }
+ _convertInsertWithAttributes(e) {
+ this._testAndFire("insert", e);
+ for (const t of e.item.getAttributeKeys())
+ e.attributeKey = t, e.attributeOldValue = null, e.attributeNewValue = e.item.getAttribute(t), this._testAndFire("attribute:" + t, e)
+ }
+ _mapChangesWithAutomaticReconversion(e) {
+ const t = new Set,
+ i = [];
+ for (const n of e.getChanges()) {
+ const e = n.position || n.range.start,
+ o = e.parent;
+ if (ta(e, o)) {
+ i.push(n);
+ continue
+ }
+ const r = "attribute" === n.type ? ia(e, o, null) : o;
+ if (r.is("$text")) {
+ i.push(n);
+ continue
+ }
+ let s;
+ if (s = "attribute" === n.type ? `attribute:${n.attributeKey}:${r.name}` : `${n.type}:${n.name}`, this._isReconvertTriggerEvent(s, r.name)) {
+ if (t.has(r))
+ continue;
+ t.add(r),
+ i.push({
+ type: "reconvert",
+ element: r
+ })
+ } else
+ i.push(n)
+ }
+ return i
+ }
+ _isReconvertTriggerEvent(e, t) {
+ return this._reconversionEventsMapping.get(e) === t
+ }
+ }
+ function la(e, t, i) {
+ const n = t.getRange(),
+ o = Array.from(e.getAncestors());
+ o.shift(),
+ o.reverse();
+ return !o.some(e => {
+ if (n.containsItem(e)) {
+ return !!i.toViewElement(e).getCustomProperty("addHighlight")
+ }
+ })
+ }
+ function da(e) {
+ return {
+ item: e.item,
+ range: oa._createFromPositionAndShift(e.previousPosition, e.length)
+ }
+ }
+ function ua(e, t) {
+ if (e.is("textProxy")) {
+ const i = t.toViewPosition(ea._createBefore(e)).parent;
+ return i.is("$text") ? i : null
+ }
+ return t.toViewElement(e)
+ }
+ Ke(ca, u);
+ class ha {
+ constructor(e, t, i) {
+ this._lastRangeBackward = !1,
+ this._ranges = [],
+ this._attrs = new Map,
+ e && this.setTo(e, t, i)
+ }
+ get anchor() {
+ if (this._ranges.length > 0) {
+ const e = this._ranges[this._ranges.length - 1];
+ return this._lastRangeBackward ? e.end : e.start
+ }
+ return null
+ }
+ get focus() {
+ if (this._ranges.length > 0) {
+ const e = this._ranges[this._ranges.length - 1];
+ return this._lastRangeBackward ? e.start : e.end
+ }
+ return null
+ }
+ get isCollapsed() {
+ return 1 === this._ranges.length && this._ranges[0].isCollapsed
+ }
+ get rangeCount() {
+ return this._ranges.length
+ }
+ get isBackward() {
+ return !this.isCollapsed && this._lastRangeBackward
+ }
+ isEqual(e) {
+ if (this.rangeCount != e.rangeCount)
+ return !1;
+ if (0 === this.rangeCount)
+ return !0;
+ if (!this.anchor.isEqual(e.anchor) || !this.focus.isEqual(e.focus))
+ return !1;
+ for (const t of this._ranges) {
+ let i = !1;
+ for (const n of e._ranges)
+ if (t.isEqual(n)) {
+ i = !0;
+ break
+ }
+ if (!i)
+ return !1
+ }
+ return !0
+ }
+ * getRanges() {
+ for (const e of this._ranges)
+ yield new oa(e.start, e.end)
+ }
+ getFirstRange() {
+ let e = null;
+ for (const t of this._ranges)
+ e && !t.start.isBefore(e.start) || (e = t);
+ return e ? new oa(e.start, e.end) : null
+ }
+ getLastRange() {
+ let e = null;
+ for (const t of this._ranges)
+ e && !t.end.isAfter(e.end) || (e = t);
+ return e ? new oa(e.start, e.end) : null
+ }
+ getFirstPosition() {
+ const e = this.getFirstRange();
+ return e ? e.start.clone() : null
+ }
+ getLastPosition() {
+ const e = this.getLastRange();
+ return e ? e.end.clone() : null
+ }
+ setTo(e, t, i) {
+ if (null === e)
+ this._setRanges([]);
+ else if (e instanceof ha)
+ this._setRanges(e.getRanges(), e.isBackward);
+ else if (e && "function" == typeof e.getRanges)
+ this._setRanges(e.getRanges(), e.isBackward);
+ else if (e instanceof oa)
+ this._setRanges([e], !!t && !!t.backward);
+ else if (e instanceof ea)
+ this._setRanges([new oa(e)]);
+ else if (e instanceof Ys) {
+ const n = !!i && !!i.backward;
+ let o;
+ if ("in" == t)
+ o = oa._createIn(e);
+ else if ("on" == t)
+ o = oa._createOn(e);
+ else {
+ if (void 0 === t)
+ throw new c.a("model-selection-setto-required-second-parameter", [this, e]);
+ o = new oa(ea._createAt(e, t))
+ }
+ this._setRanges([o], n)
+ } else {
+ if (!Ji(e))
+ throw new c.a("model-selection-setto-not-selectable", [this, e]);
+ this._setRanges(e, t && !!t.backward)
+ }
+ }
+ _setRanges(e, t = !1) {
+ const i = (e = Array.from(e)).some(t => {
+ if (!(t instanceof oa))
+ throw new c.a("model-selection-set-ranges-not-range", [this, e]);
+ return this._ranges.every(e => !e.isEqual(t))
+ });
+ if (e.length !== this._ranges.length || i) {
+ this._removeAllRanges();
+ for (const t of e)
+ this._pushRange(t);
+ this._lastRangeBackward = !!t,
+ this.fire("change:range", {
+ directChange: !0
+ })
+ }
+ }
+ setFocus(e, t) {
+ if (null === this.anchor)
+ throw new c.a("model-selection-setfocus-no-ranges", [this, e]);
+ const i = ea._createAt(e, t);
+ if ("same" == i.compareWith(this.focus))
+ return;
+ const n = this.anchor;
+ this._ranges.length && this._popRange(),
+ "before" == i.compareWith(n) ? (this._pushRange(new oa(i, n)), this._lastRangeBackward = !0) : (this._pushRange(new oa(n, i)), this._lastRangeBackward = !1),
+ this.fire("change:range", {
+ directChange: !0
+ })
+ }
+ getAttribute(e) {
+ return this._attrs.get(e)
+ }
+ getAttributes() {
+ return this._attrs.entries()
+ }
+ getAttributeKeys() {
+ return this._attrs.keys()
+ }
+ hasAttribute(e) {
+ return this._attrs.has(e)
+ }
+ removeAttribute(e) {
+ this.hasAttribute(e) && (this._attrs.delete(e), this.fire("change:attribute", {
+ attributeKeys: [e],
+ directChange: !0
+ }))
+ }
+ setAttribute(e, t) {
+ this.getAttribute(e) !== t && (this._attrs.set(e, t), this.fire("change:attribute", {
+ attributeKeys: [e],
+ directChange: !0
+ }))
+ }
+ getSelectedElement() {
+ return 1 !== this.rangeCount ? null : this.getFirstRange().getContainedElement()
+ }
+ is(e) {
+ return "selection" === e || "model:selection" === e
+ }
+ * getSelectedBlocks() {
+ const e = new WeakSet;
+ for (const t of this.getRanges()) {
+ const i = ma(t.start, e);
+ i && pa(i, t) && (yield i);
+ for (const i of t.getWalker()) {
+ const n = i.item;
+ "elementEnd" == i.type && ga(n, e, t) && (yield n)
+ }
+ const n = ma(t.end, e);
+ n && !t.end.isTouching(ea._createAt(n, 0)) && pa(n, t) && (yield n)
+ }
+ }
+ containsEntireContent(e = this.anchor.root) {
+ const t = ea._createAt(e, 0),
+ i = ea._createAt(e, "end");
+ return t.isTouching(this.getFirstPosition()) && i.isTouching(this.getLastPosition())
+ }
+ _pushRange(e) {
+ this._checkRange(e),
+ this._ranges.push(new oa(e.start, e.end))
+ }
+ _checkRange(e) {
+ for (let t = 0; t < this._ranges.length; t++)
+ if (e.isIntersecting(this._ranges[t]))
+ throw new c.a("model-selection-range-intersects", [this, e], {
+ addedRange: e,
+ intersectingRange: this._ranges[t]
+ })
+ }
+ _removeAllRanges() {
+ for (; this._ranges.length > 0; )
+ this._popRange()
+ }
+ _popRange() {
+ this._ranges.pop()
+ }
+ }
+ function fa(e, t) {
+ return !t.has(e) && (t.add(e), e.root.document.model.schema.isBlock(e) && e.parent)
+ }
+ function ga(e, t, i) {
+ return fa(e, t) && pa(e, i)
+ }
+ function ma(e, t) {
+ const i = e.parent.root.document.model.schema,
+ n = e.parent.getAncestors({
+ parentFirst: !0,
+ includeSelf: !0
+ });
+ let o = !1;
+ const r = n.find(e => !o && (o = i.isLimit(e), !o && fa(e, t)));
+ return n.forEach(e => t.add(e)),
+ r
+ }
+ function pa(e, t) {
+ const i = function (e) {
+ const t = e.root.document.model.schema;
+ let i = e.parent;
+ for (; i; ) {
+ if (t.isBlock(i))
+ return i;
+ i = i.parent
+ }
+ }
+ (e);
+ if (!i)
+ return !0;
+ return !t.containsRange(oa._createOn(i), !0)
+ }
+ Ke(ha, u);
+ class ba extends oa {
+ constructor(e, t) {
+ super(e, t),
+ wa.call(this)
+ }
+ detach() {
+ this.stopListening()
+ }
+ is(e) {
+ return "liveRange" === e || "model:liveRange" === e || "range" == e || "model:range" === e
+ }
+ toRange() {
+ return new oa(this.start, this.end)
+ }
+ static fromRange(e) {
+ return new ba(e.start, e.end)
+ }
+ }
+ function wa() {
+ this.listenTo(this.root.document.model, "applyOperation", (e, t) => {
+ const i = t[0];
+ i.isDocumentOperation && ka.call(this, i)
+ }, {
+ priority: "low"
+ })
+ }
+ function ka(e) {
+ const t = this.getTransformedByOperation(e),
+ i = oa._createFromRanges(t),
+ n = !i.isEqual(this),
+ o = function (e, t) {
+ switch (t.type) {
+ case "insert":
+ return e.containsPosition(t.position);
+ case "move":
+ case "remove":
+ case "reinsert":
+ case "merge":
+ return e.containsPosition(t.sourcePosition) || e.start.isEqual(t.sourcePosition) || e.containsPosition(t.targetPosition);
+ case "split":
+ return e.containsPosition(t.splitPosition) || e.containsPosition(t.insertionPosition)
+ }
+ return !1
+ }
+ (this, e);
+ let r = null;
+ if (n) {
+ "$graveyard" == i.root.rootName && (r = "remove" == e.type ? e.sourcePosition : e.deletionPosition);
+ const t = this.toRange();
+ this.start = i.start,
+ this.end = i.end,
+ this.fire("change:range", t, {
+ deletionPosition: r
+ })
+ } else
+ o && this.fire("change:content", this.toRange(), {
+ deletionPosition: r
+ })
+ }
+ Ke(ba, u);
+ class _a {
+ constructor(e) {
+ this._selection = new va(e),
+ this._selection.delegate("change:range").to(this),
+ this._selection.delegate("change:attribute").to(this),
+ this._selection.delegate("change:marker").to(this)
+ }
+ get isCollapsed() {
+ return this._selection.isCollapsed
+ }
+ get anchor() {
+ return this._selection.anchor
+ }
+ get focus() {
+ return this._selection.focus
+ }
+ get rangeCount() {
+ return this._selection.rangeCount
+ }
+ get hasOwnRange() {
+ return this._selection.hasOwnRange
+ }
+ get isBackward() {
+ return this._selection.isBackward
+ }
+ get isGravityOverridden() {
+ return this._selection.isGravityOverridden
+ }
+ get markers() {
+ return this._selection.markers
+ }
+ get _ranges() {
+ return this._selection._ranges
+ }
+ getRanges() {
+ return this._selection.getRanges()
+ }
+ getFirstPosition() {
+ return this._selection.getFirstPosition()
+ }
+ getLastPosition() {
+ return this._selection.getLastPosition()
+ }
+ getFirstRange() {
+ return this._selection.getFirstRange()
+ }
+ getLastRange() {
+ return this._selection.getLastRange()
+ }
+ getSelectedBlocks() {
+ return this._selection.getSelectedBlocks()
+ }
+ getSelectedElement() {
+ return this._selection.getSelectedElement()
+ }
+ containsEntireContent(e) {
+ return this._selection.containsEntireContent(e)
+ }
+ destroy() {
+ this._selection.destroy()
+ }
+ getAttributeKeys() {
+ return this._selection.getAttributeKeys()
+ }
+ getAttributes() {
+ return this._selection.getAttributes()
+ }
+ getAttribute(e) {
+ return this._selection.getAttribute(e)
+ }
+ hasAttribute(e) {
+ return this._selection.hasAttribute(e)
+ }
+ refresh() {
+ this._selection._updateMarkers(),
+ this._selection._updateAttributes(!1)
+ }
+ observeMarkers(e) {
+ this._selection.observeMarkers(e)
+ }
+ is(e) {
+ return "selection" === e || "model:selection" == e || "documentSelection" == e || "model:documentSelection" == e
+ }
+ _setFocus(e, t) {
+ this._selection.setFocus(e, t)
+ }
+ _setTo(e, t, i) {
+ this._selection.setTo(e, t, i)
+ }
+ _setAttribute(e, t) {
+ this._selection.setAttribute(e, t)
+ }
+ _removeAttribute(e) {
+ this._selection.removeAttribute(e)
+ }
+ _getStoredAttributes() {
+ return this._selection._getStoredAttributes()
+ }
+ _overrideGravity() {
+ return this._selection.overrideGravity()
+ }
+ _restoreGravity(e) {
+ this._selection.restoreGravity(e)
+ }
+ static _getStoreAttributeKey(e) {
+ return "selection:" + e
+ }
+ static _isStoreAttributeKey(e) {
+ return e.startsWith("selection:")
+ }
+ }
+ Ke(_a, u);
+ class va extends ha {
+ constructor(e) {
+ super(),
+ this.markers = new Zi({
+ idProperty: "name"
+ }),
+ this._model = e.model,
+ this._document = e,
+ this._attributePriority = new Map,
+ this._selectionRestorePosition = null,
+ this._hasChangedRange = !1,
+ this._overriddenGravityRegister = new Set,
+ this._observedMarkers = new Set,
+ this.listenTo(this._model, "applyOperation", (e, t) => {
+ const i = t[0];
+ i.isDocumentOperation && "marker" != i.type && "rename" != i.type && "noop" != i.type && (0 == this._ranges.length && this._selectionRestorePosition && this._fixGraveyardSelection(this._selectionRestorePosition), this._selectionRestorePosition = null, this._hasChangedRange && (this._hasChangedRange = !1, this.fire("change:range", {
+ directChange: !1
+ })))
+ }, {
+ priority: "lowest"
+ }),
+ this.on("change:range", () => {
+ for (const e of this.getRanges())
+ if (!this._document._validateSelectionRange(e))
+ throw new c.a("document-selection-wrong-position", this, {
+ range: e
+ })
+ }),
+ this.listenTo(this._model.markers, "update", (e, t, i, n) => {
+ this._updateMarker(t, n)
+ }),
+ this.listenTo(this._document, "change", (e, t) => {
+ !function (e, t) {
+ const i = e.document.differ;
+ for (const n of i.getChanges()) {
+ if ("insert" != n.type)
+ continue;
+ const i = n.position.parent;
+ n.length === i.maxOffset && e.enqueueChange(t, e => {
+ const t = Array.from(i.getAttributeKeys()).filter(e => e.startsWith("selection:"));
+ for (const n of t)
+ e.removeAttribute(n, i)
+ })
+ }
+ }
+ (this._model, t)
+ })
+ }
+ get isCollapsed() {
+ return 0 === this._ranges.length ? this._document._getDefaultRange().isCollapsed : super.isCollapsed
+ }
+ get anchor() {
+ return super.anchor || this._document._getDefaultRange().start
+ }
+ get focus() {
+ return super.focus || this._document._getDefaultRange().end
+ }
+ get rangeCount() {
+ return this._ranges.length ? this._ranges.length : 1
+ }
+ get hasOwnRange() {
+ return this._ranges.length > 0
+ }
+ get isGravityOverridden() {
+ return !!this._overriddenGravityRegister.size
+ }
+ destroy() {
+ for (let e = 0; e < this._ranges.length; e++)
+ this._ranges[e].detach();
+ this.stopListening()
+ }
+ * getRanges() {
+ this._ranges.length ? yield * super.getRanges() : yield this._document._getDefaultRange()
+ }
+ getFirstRange() {
+ return super.getFirstRange() || this._document._getDefaultRange()
+ }
+ getLastRange() {
+ return super.getLastRange() || this._document._getDefaultRange()
+ }
+ setTo(e, t, i) {
+ super.setTo(e, t, i),
+ this._updateAttributes(!0),
+ this._updateMarkers()
+ }
+ setFocus(e, t) {
+ super.setFocus(e, t),
+ this._updateAttributes(!0),
+ this._updateMarkers()
+ }
+ setAttribute(e, t) {
+ if (this._setAttribute(e, t)) {
+ const t = [e];
+ this.fire("change:attribute", {
+ attributeKeys: t,
+ directChange: !0
+ })
+ }
+ }
+ removeAttribute(e) {
+ if (this._removeAttribute(e)) {
+ const t = [e];
+ this.fire("change:attribute", {
+ attributeKeys: t,
+ directChange: !0
+ })
+ }
+ }
+ overrideGravity() {
+ const e = s();
+ return this._overriddenGravityRegister.add(e),
+ 1 === this._overriddenGravityRegister.size && this._updateAttributes(!0),
+ e
+ }
+ restoreGravity(e) {
+ if (!this._overriddenGravityRegister.has(e))
+ throw new c.a("document-selection-gravity-wrong-restore", this, {
+ uid: e
+ });
+ this._overriddenGravityRegister.delete(e),
+ this.isGravityOverridden || this._updateAttributes(!0)
+ }
+ observeMarkers(e) {
+ this._observedMarkers.add(e),
+ this._updateMarkers()
+ }
+ _popRange() {
+ this._ranges.pop().detach()
+ }
+ _pushRange(e) {
+ const t = this._prepareRange(e);
+ t && this._ranges.push(t)
+ }
+ _prepareRange(e) {
+ if (this._checkRange(e), e.root == this._document.graveyard)
+ return;
+ const t = ba.fromRange(e);
+ return t.on("change:range", (e, i, n) => {
+ if (this._hasChangedRange = !0, t.root == this._document.graveyard) {
+ this._selectionRestorePosition = n.deletionPosition;
+ const e = this._ranges.indexOf(t);
+ this._ranges.splice(e, 1),
+ t.detach()
+ }
+ }),
+ t
+ }
+ _updateMarkers() {
+ if (!this._observedMarkers.size)
+ return;
+ const e = [];
+ let t = !1;
+ for (const t of this._model.markers) {
+ const i = t.name.split(":", 1)[0];
+ if (!this._observedMarkers.has(i))
+ continue;
+ const n = t.getRange();
+ for (const i of this.getRanges())
+ n.containsRange(i, !i.isCollapsed) && e.push(t)
+ }
+ const i = Array.from(this.markers);
+ for (const i of e)
+ this.markers.has(i) || (this.markers.add(i), t = !0);
+ for (const i of Array.from(this.markers))
+ e.includes(i) || (this.markers.remove(i), t = !0);
+ t && this.fire("change:marker", {
+ oldMarkers: i,
+ directChange: !1
+ })
+ }
+ _updateMarker(e, t) {
+ const i = e.name.split(":", 1)[0];
+ if (!this._observedMarkers.has(i))
+ return;
+ let n = !1;
+ const o = Array.from(this.markers),
+ r = this.markers.has(e);
+ if (t) {
+ let i = !1;
+ for (const e of this.getRanges())
+ if (t.containsRange(e, !e.isCollapsed)) {
+ i = !0;
+ break
+ }
+ i && !r ? (this.markers.add(e), n = !0) : !i && r && (this.markers.remove(e), n = !0)
+ } else
+ r && (this.markers.remove(e), n = !0);
+ n && this.fire("change:marker", {
+ oldMarkers: o,
+ directChange: !1
+ })
+ }
+ _updateAttributes(e) {
+ const t = fn(this._getSurroundingAttributes()),
+ i = fn(this.getAttributes());
+ if (e)
+ this._attributePriority = new Map, this._attrs = new Map;
+ else
+ for (const[e, t]of this._attributePriority)
+ "low" == t && (this._attrs.delete(e), this._attributePriority.delete(e));
+ this._setAttributesTo(t);
+ const n = [];
+ for (const[e, t]of this.getAttributes())
+ i.has(e) && i.get(e) === t || n.push(e);
+ for (const[e]of i)
+ this.hasAttribute(e) || n.push(e);
+ n.length > 0 && this.fire("change:attribute", {
+ attributeKeys: n,
+ directChange: !1
+ })
+ }
+ _setAttribute(e, t, i = !0) {
+ const n = i ? "normal" : "low";
+ if ("low" == n && "normal" == this._attributePriority.get(e))
+ return !1;
+ return super.getAttribute(e) !== t && (this._attrs.set(e, t), this._attributePriority.set(e, n), !0)
+ }
+ _removeAttribute(e, t = !0) {
+ const i = t ? "normal" : "low";
+ return ("low" != i || "normal" != this._attributePriority.get(e)) && (this._attributePriority.set(e, i), !!super.hasAttribute(e) && (this._attrs.delete(e), !0))
+ }
+ _setAttributesTo(e) {
+ const t = new Set;
+ for (const[t, i]of this.getAttributes())
+ e.get(t) !== i && this._removeAttribute(t, !1);
+ for (const[i, n]of e) {
+ this._setAttribute(i, n, !1) && t.add(i)
+ }
+ return t
+ }
+ * _getStoredAttributes() {
+ const e = this.getFirstPosition().parent;
+ if (this.isCollapsed && e.isEmpty)
+ for (const t of e.getAttributeKeys())
+ if (t.startsWith("selection:")) {
+ const i = t.substr("selection:".length);
+ yield[i, e.getAttribute(t)]
+ }
+ }
+ _getSurroundingAttributes() {
+ const e = this.getFirstPosition(),
+ t = this._model.schema;
+ let i = null;
+ if (this.isCollapsed) {
+ const n = e.textNode ? e.textNode : e.nodeBefore,
+ o = e.textNode ? e.textNode : e.nodeAfter;
+ if (this.isGravityOverridden || (i = ya(n)), i || (i = ya(o)), !this.isGravityOverridden && !i) {
+ let e = n;
+ for (; e && !t.isInline(e) && !i; )
+ e = e.previousSibling, i = ya(e)
+ }
+ if (!i) {
+ let e = o;
+ for (; e && !t.isInline(e) && !i; )
+ e = e.nextSibling, i = ya(e)
+ }
+ i || (i = this._getStoredAttributes())
+ } else {
+ const e = this.getFirstRange();
+ for (const n of e) {
+ if (n.item.is("element") && t.isObject(n.item))
+ break;
+ if ("text" == n.type) {
+ i = n.item.getAttributes();
+ break
+ }
+ }
+ }
+ return i
+ }
+ _fixGraveyardSelection(e) {
+ const t = this._model.schema.getNearestSelectionRange(e);
+ t && this._pushRange(t)
+ }
+ }
+ function ya(e) {
+ return e instanceof Ks || e instanceof Gs ? e.getAttributes() : null
+ }
+ class xa {
+ constructor(e) {
+ this._dispatchers = e
+ }
+ add(e) {
+ for (const t of this._dispatchers)
+ e(t);
+ return this
+ }
+ }
+ var Aa = function (e) {
+ return qi(e, 5)
+ };
+ class Ca extends xa {
+ elementToElement(e) {
+ return this.add(function (e) {
+ return (e = Aa(e)).view = Pa(e.view, "container"),
+ t => {
+ var i;
+ if (t.on("insert:" + e.model, (i = e.view, (e, t, n) => {
+ const o = i(t.item, n);
+ if (!o)
+ return;
+ if (!n.consumable.consume(t.item, "insert"))
+ return;
+ const r = n.mapper.toViewPosition(t.range.start);
+ n.mapper.bindElements(t.item, o),
+ n.writer.insert(r, o)
+ }), {
+ priority: e.converterPriority || "normal"
+ }), e.triggerBy) {
+ if (e.triggerBy.attributes)
+ for (const i of e.triggerBy.attributes)
+ t._mapReconversionTriggerEvent(e.model, `attribute:${i}:${e.model}`);
+ if (e.triggerBy.children)
+ for (const i of e.triggerBy.children)
+ t._mapReconversionTriggerEvent(e.model, "insert:" + i), t._mapReconversionTriggerEvent(e.model, "remove:" + i)
+ }
+ }
+ }
+ (e))
+ }
+ attributeToElement(e) {
+ return this.add(function (e) {
+ e = Aa(e);
+ let t = "attribute:" + (e.model.key ? e.model.key : e.model);
+ e.model.name && (t += ":" + e.model.name);
+ if (e.model.values)
+ for (const t of e.model.values)
+ e.view[t] = Pa(e.view[t], "attribute");
+ else
+ e.view = Pa(e.view, "attribute");
+ const i = Sa(e);
+ return n => {
+ n.on(t, function (e) {
+ return (t, i, n) => {
+ const o = e(i.attributeOldValue, n),
+ r = e(i.attributeNewValue, n);
+ if (!o && !r)
+ return;
+ if (!n.consumable.consume(i.item, t.name))
+ return;
+ const s = n.writer,
+ a = s.document.selection;
+ if (i.item instanceof ha || i.item instanceof _a)
+ s.wrap(a.getFirstRange(), r);
+ else {
+ let e = n.mapper.toViewRange(i.range);
+ null !== i.attributeOldValue && o && (e = s.unwrap(e, o)),
+ null !== i.attributeNewValue && r && s.wrap(e, r)
+ }
+ }
+ }
+ (i), {
+ priority: e.converterPriority || "normal"
+ })
+ }
+ }
+ (e))
+ }
+ attributeToAttribute(e) {
+ return this.add(function (e) {
+ e = Aa(e);
+ let t = "attribute:" + (e.model.key ? e.model.key : e.model);
+ e.model.name && (t += ":" + e.model.name);
+ if (e.model.values)
+ for (const t of e.model.values)
+ e.view[t] = Ma(e.view[t]);
+ else
+ e.view = Ma(e.view);
+ const i = Sa(e);
+ return n => {
+ var o;
+ n.on(t, (o = i, (e, t, i) => {
+ const n = o(t.attributeOldValue, i),
+ r = o(t.attributeNewValue, i);
+ if (!n && !r)
+ return;
+ if (!i.consumable.consume(t.item, e.name))
+ return;
+ const s = i.mapper.toViewElement(t.item),
+ a = i.writer;
+ if (!s)
+ throw new c.a("conversion-attribute-to-attribute-on-text", [t, i]);
+ if (null !== t.attributeOldValue && n)
+ if ("class" == n.key) {
+ const e = en(n.value);
+ for (const t of e)
+ a.removeClass(t, s)
+ } else if ("style" == n.key) {
+ const e = Object.keys(n.value);
+ for (const t of e)
+ a.removeStyle(t, s)
+ } else
+ a.removeAttribute(n.key, s);
+ if (null !== t.attributeNewValue && r)
+ if ("class" == r.key) {
+ const e = en(r.value);
+ for (const t of e)
+ a.addClass(t, s)
+ } else if ("style" == r.key) {
+ const e = Object.keys(r.value);
+ for (const t of e)
+ a.setStyle(t, r.value[t], s)
+ } else
+ a.setAttribute(r.key, r.value, s)
+ }), {
+ priority: e.converterPriority || "normal"
+ })
+ }
+ }
+ (e))
+ }
+ markerToElement(e) {
+ return this.add(function (e) {
+ return (e = Aa(e)).view = Pa(e.view, "ui"),
+ t => {
+ var i;
+ t.on("addMarker:" + e.model, (i = e.view, (e, t, n) => {
+ t.isOpening = !0;
+ const o = i(t, n);
+ t.isOpening = !1;
+ const r = i(t, n);
+ if (!o || !r)
+ return;
+ const s = t.markerRange;
+ if (s.isCollapsed && !n.consumable.consume(s, e.name))
+ return;
+ for (const t of s)
+ if (!n.consumable.consume(t.item, e.name))
+ return;
+ const a = n.mapper,
+ c = n.writer;
+ c.insert(a.toViewPosition(s.start), o),
+ n.mapper.bindElementToMarker(o, t.markerName),
+ s.isCollapsed || (c.insert(a.toViewPosition(s.end), r), n.mapper.bindElementToMarker(r, t.markerName)),
+ e.stop()
+ }), {
+ priority: e.converterPriority || "normal"
+ }),
+ t.on("removeMarker:" + e.model, (e.view, (e, t, i) => {
+ const n = i.mapper.markerNameToElements(t.markerName);
+ if (n) {
+ for (const e of n)
+ i.mapper.unbindElementFromMarkerName(e, t.markerName), i.writer.clear(i.writer.createRangeOn(e), e);
+ i.writer.clearClonedElementsGroup(t.markerName),
+ e.stop()
+ }
+ }), {
+ priority: e.converterPriority || "normal"
+ })
+ }
+ }
+ (e))
+ }
+ markerToHighlight(e) {
+ return this.add(function (e) {
+ return t => {
+ var i;
+ t.on("addMarker:" + e.model, (i = e.view, (e, t, n) => {
+ if (!t.item)
+ return;
+ if (!(t.item instanceof ha || t.item instanceof _a || t.item.is("$textProxy")))
+ return;
+ const o = Ia(i, t, n);
+ if (!o)
+ return;
+ if (!n.consumable.consume(t.item, e.name))
+ return;
+ const r = n.writer,
+ s = Ta(r, o),
+ a = r.document.selection;
+ if (t.item instanceof ha || t.item instanceof _a)
+ r.wrap(a.getFirstRange(), s, a);
+ else {
+ const e = n.mapper.toViewRange(t.range),
+ i = r.wrap(e, s);
+ for (const e of i.getItems())
+ if (e.is("attributeElement") && e.isSimilar(s)) {
+ n.mapper.bindElementToMarker(e, t.markerName);
+ break
+ }
+ }
+ }), {
+ priority: e.converterPriority || "normal"
+ }),
+ t.on("addMarker:" + e.model, function (e) {
+ return (t, i, n) => {
+ if (!i.item)
+ return;
+ if (!(i.item instanceof Js))
+ return;
+ const o = Ia(e, i, n);
+ if (!o)
+ return;
+ if (!n.consumable.test(i.item, t.name))
+ return;
+ const r = n.mapper.toViewElement(i.item);
+ if (r && r.getCustomProperty("addHighlight")) {
+ n.consumable.consume(i.item, t.name);
+ for (const e of oa._createIn(i.item))
+ n.consumable.consume(e.item, t.name);
+ r.getCustomProperty("addHighlight")(r, o, n.writer),
+ n.mapper.bindElementToMarker(r, i.markerName)
+ }
+ }
+ }
+ (e.view), {
+ priority: e.converterPriority || "normal"
+ }),
+ t.on("removeMarker:" + e.model, function (e) {
+ return (t, i, n) => {
+ if (i.markerRange.isCollapsed)
+ return;
+ const o = Ia(e, i, n);
+ if (!o)
+ return;
+ const r = Ta(n.writer, o),
+ s = n.mapper.markerNameToElements(i.markerName);
+ if (s) {
+ for (const e of s)
+ n.mapper.unbindElementFromMarkerName(e, i.markerName), e.is("attributeElement") ? n.writer.unwrap(n.writer.createRangeOn(e), r) : e.getCustomProperty("removeHighlight")(e, o.id, n.writer);
+ n.writer.clearClonedElementsGroup(i.markerName),
+ t.stop()
+ }
+ }
+ }
+ (e.view), {
+ priority: e.converterPriority || "normal"
+ })
+ }
+ }
+ (e))
+ }
+ markerToData(e) {
+ return this.add(function (e) {
+ const t = (e = Aa(e)).model;
+ e.view || (e.view = i => ({
+ group: t,
+ name: i.substr(e.model.length + 1)
+ }));
+ return i => {
+ var n;
+ i.on("addMarker:" + t, (n = e.view, (e, t, i) => {
+ const o = n(t.markerName, i);
+ if (!o)
+ return;
+ const r = t.markerRange;
+ i.consumable.consume(r, e.name) && (Ea(r, !1, i, t, o), Ea(r, !0, i, t, o), e.stop())
+ }), {
+ priority: e.converterPriority || "normal"
+ }),
+ i.on("removeMarker:" + t, function (e) {
+ return (t, i, n) => {
+ const o = e(i.markerName, n);
+ if (!o)
+ return;
+ const r = n.mapper.markerNameToElements(i.markerName);
+ if (r) {
+ for (const e of r)
+ n.mapper.unbindElementFromMarkerName(e, i.markerName), e.is("containerElement") ? (s(`data-${o.group}-start-before`, e), s(`data-${o.group}-start-after`, e), s(`data-${o.group}-end-before`, e), s(`data-${o.group}-end-after`, e)) : n.writer.clear(n.writer.createRangeOn(e), e);
+ n.writer.clearClonedElementsGroup(i.markerName),
+ t.stop()
+ }
+ function s(e, t) {
+ if (t.hasAttribute(e)) {
+ const i = new Set(t.getAttribute(e).split(","));
+ i.delete(o.name),
+ 0 == i.size ? n.writer.removeAttribute(e, t) : n.writer.setAttribute(e, Array.from(i).join(","), t)
+ }
+ }
+ }
+ }
+ (e.view), {
+ priority: e.converterPriority || "normal"
+ })
+ }
+ }
+ (e))
+ }
+ }
+ function Ta(e, t) {
+ const i = e.createAttributeElement("span", t.attributes);
+ return t.classes && i._addClass(t.classes),
+ t.priority && (i._priority = t.priority),
+ i._id = t.id,
+ i
+ }
+ function Ea(e, t, i, n, o) {
+ const r = t ? e.start : e.end;
+ if (i.schema.checkChild(r, "$text")) {
+ !function (e, t, i, n, o) {
+ const r = `${o.group}-${t?"start":"end"}`,
+ s = o.name ? {
+ name: o.name
+ }
+ : null,
+ a = i.writer.createUIElement(r, s);
+ i.writer.insert(e, a),
+ i.mapper.bindElementToMarker(a, n.markerName)
+ }
+ (i.mapper.toViewPosition(r), t, i, n, o)
+ } else {
+ let e,
+ s;
+ t && r.nodeAfter || !t && !r.nodeBefore ? (e = r.nodeAfter, s = !0) : (e = r.nodeBefore, s = !1);
+ !function (e, t, i, n, o, r) {
+ const s = `data-${r.group}-${t?"start":"end"}-${i?"before":"after"}`,
+ a = e.hasAttribute(s) ? e.getAttribute(s).split(",") : [];
+ a.unshift(r.name),
+ n.writer.setAttribute(s, a.join(","), e),
+ n.mapper.bindElementToMarker(e, o.markerName)
+ }
+ (i.mapper.toViewElement(e), t, s, i, n, o)
+ }
+ }
+ function Pa(e, t) {
+ return "function" == typeof e ? e : (i, n) => function (e, t, i) {
+ "string" == typeof e && (e = {
+ name: e
+ });
+ let n;
+ const o = t.writer,
+ r = Object.assign({}, e.attributes);
+ if ("container" == i)
+ n = o.createContainerElement(e.name, r);
+ else if ("attribute" == i) {
+ const t = {
+ priority: e.priority || yo.DEFAULT_PRIORITY
+ };
+ n = o.createAttributeElement(e.name, r, t)
+ } else
+ n = o.createUIElement(e.name, r);
+ if (e.styles) {
+ const t = Object.keys(e.styles);
+ for (const i of t)
+ o.setStyle(i, e.styles[i], n)
+ }
+ if (e.classes) {
+ const t = e.classes;
+ if ("string" == typeof t)
+ o.addClass(t, n);
+ else
+ for (const e of t)
+ o.addClass(e, n)
+ }
+ return n
+ }
+ (e, n, t)
+ }
+ function Sa(e) {
+ return e.model.values ? (t, i) => {
+ const n = e.view[t];
+ return n ? n(t, i) : null
+ }
+ : e.view
+ }
+ function Ma(e) {
+ return "string" == typeof e ? t => ({
+ key: e,
+ value: t
+ }) : "object" == typeof e ? e.value ? () => e : t => ({
+ key: e.key,
+ value: t
+ }) : e
+ }
+ function Ia(e, t, i) {
+ const n = "function" == typeof e ? e(t, i) : e;
+ return n ? (n.priority || (n.priority = 10), n.id || (n.id = t.markerName), n) : null
+ }
+ function Na(e) {
+ const {
+ schema: t,
+ document: i
+ } = e.model;
+ for (const n of i.getRootNames()) {
+ const o = i.getRoot(n);
+ if (o.isEmpty && !t.checkChild(o, "$text") && t.checkChild(o, "paragraph"))
+ return e.insertElement("paragraph", o), !0
+ }
+ return !1
+ }
+ function Ra(e, t, i) {
+ const n = i.createContext(e);
+ return !!i.checkChild(n, "paragraph") && !!i.checkChild(n.push("paragraph"), t)
+ }
+ function Oa(e, t) {
+ const i = t.createElement("paragraph");
+ return t.insert(i, e),
+ t.createPositionAt(i, 0)
+ }
+ class Da extends xa {
+ elementToElement(e) {
+ return this.add(La(e))
+ }
+ elementToAttribute(e) {
+ return this.add(function (e) {
+ ja(e = Aa(e));
+ const t = Ba(e, !1),
+ i = za(e.view),
+ n = i ? "element:" + i : "element";
+ return i => {
+ i.on(n, t, {
+ priority: e.converterPriority || "low"
+ })
+ }
+ }
+ (e))
+ }
+ attributeToAttribute(e) {
+ return this.add(function (e) {
+ e = Aa(e);
+ let t = null;
+ ("string" == typeof e.view || e.view.key) && (t = function (e) {
+ "string" == typeof e.view && (e.view = {
+ key: e.view
+ });
+ const t = e.view.key;
+ let i;
+ if ("class" == t || "style" == t) {
+ i = {
+ ["class" == t ? "classes" : "styles"]: e.view.value
+ }
+ } else {
+ const n = void 0 === e.view.value ? /[\s\S]*/ : e.view.value;
+ i = {
+ attributes: {
+ [t]: n
+ }
+ }
+ }
+ e.view.name && (i.name = e.view.name);
+ return e.view = i,
+ t
+ }
+ (e));
+ ja(e, t);
+ const i = Ba(e, !0);
+ return t => {
+ t.on("element", i, {
+ priority: e.converterPriority || "low"
+ })
+ }
+ }
+ (e))
+ }
+ elementToMarker(e) {
+ return Object(c.b)("upcast-helpers-element-to-marker-deprecated"),
+ this.add(function (e) {
+ return function (e) {
+ const t = e.model;
+ e.model = (e, i) => {
+ const n = "string" == typeof t ? t : t(e, i);
+ return i.writer.createElement("$marker", {
+ "data-name": n
+ })
+ }
+ }
+ (e = Aa(e)),
+ La(e)
+ }
+ (e))
+ }
+ dataToMarker(e) {
+ return this.add(function (e) {
+ (e = Aa(e)).model || (e.model = t => t ? e.view + ":" + t : e.view);
+ const t = Va(Fa(e, "start")),
+ i = Va(Fa(e, "end"));
+ return n => {
+ n.on("element:" + e.view + "-start", t, {
+ priority: e.converterPriority || "normal"
+ }),
+ n.on("element:" + e.view + "-end", i, {
+ priority: e.converterPriority || "normal"
+ });
+ const o = a.get("low"),
+ r = a.get("highest"),
+ s = a.get(e.converterPriority) / r;
+ n.on("element", function (e) {
+ return (t, i, n) => {
+ const o = "data-" + e.view;
+ function r(t, o) {
+ for (const r of o) {
+ const o = e.model(r, n),
+ s = n.writer.createElement("$marker", {
+ "data-name": o
+ });
+ n.writer.insert(s, t),
+ i.modelCursor.isEqual(t) ? i.modelCursor = i.modelCursor.getShiftedBy(1) : i.modelCursor = i.modelCursor._getTransformedByInsertion(t, 1),
+ i.modelRange = i.modelRange._getTransformedByInsertion(t, 1)[0]
+ }
+ }
+ i.modelRange || (i = Object.assign(i, n.convertChildren(i.viewItem, i.modelCursor))),
+ n.consumable.consume(i.viewItem, {
+ attributes: o + "-end-after"
+ }) && r(i.modelRange.end, i.viewItem.getAttribute(o + "-end-after").split(",")),
+ n.consumable.consume(i.viewItem, {
+ attributes: o + "-start-after"
+ }) && r(i.modelRange.end, i.viewItem.getAttribute(o + "-start-after").split(",")),
+ n.consumable.consume(i.viewItem, {
+ attributes: o + "-end-before"
+ }) && r(i.modelRange.start, i.viewItem.getAttribute(o + "-end-before").split(",")),
+ n.consumable.consume(i.viewItem, {
+ attributes: o + "-start-before"
+ }) && r(i.modelRange.start, i.viewItem.getAttribute(o + "-start-before").split(","))
+ }
+ }
+ (e), {
+ priority: o + s
+ })
+ }
+ }
+ (e))
+ }
+ }
+ function La(e) {
+ const t = Va(e = Aa(e)),
+ i = za(e.view),
+ n = i ? "element:" + i : "element";
+ return i => {
+ i.on(n, t, {
+ priority: e.converterPriority || "normal"
+ })
+ }
+ }
+ function za(e) {
+ return "string" == typeof e ? e : "object" == typeof e && "string" == typeof e.name ? e.name : null
+ }
+ function Va(e) {
+ const t = new gn(e.view);
+ return (i, n, o) => {
+ const r = t.match(n.viewItem);
+ if (!r)
+ return;
+ const s = r.match;
+ if (s.name = !0, !o.consumable.test(n.viewItem, s))
+ return;
+ const a = function (e, t, i) {
+ return e instanceof Function ? e(t, i) : i.writer.createElement(e)
+ }
+ (e.model, n.viewItem, o);
+ a && o.safeInsert(a, n.modelCursor) && (o.consumable.consume(n.viewItem, s), o.convertChildren(n.viewItem, a), o.updateConversionResult(a, n))
+ }
+ }
+ function ja(e, t = null) {
+ const i = null === t || (e => e.getAttribute(t)),
+ n = "object" != typeof e.model ? e.model : e.model.key,
+ o = "object" != typeof e.model || void 0 === e.model.value ? i : e.model.value;
+ e.model = {
+ key: n,
+ value: o
+ }
+ }
+ function Ba(e, t) {
+ const i = new gn(e.view);
+ return (n, o, r) => {
+ const s = i.match(o.viewItem);
+ if (!s)
+ return;
+ const a = e.model.key,
+ c = "function" == typeof e.model.value ? e.model.value(o.viewItem, r) : e.model.value;
+ if (null === c)
+ return;
+ if (!function (e, t) {
+ const i = "function" == typeof e ? e(t) : e;
+ if ("object" == typeof i && !za(i))
+ return !1;
+ return !i.classes && !i.attributes && !i.styles
+ }
+ (e.view, o.viewItem) ? delete s.match.name : s.match.name = !0, !r.consumable.test(o.viewItem, s.match))
+ return;
+ o.modelRange || (o = Object.assign(o, r.convertChildren(o.viewItem, o.modelCursor)));
+ (function (e, t, i, n) {
+ let o = !1;
+ for (const r of Array.from(e.getItems({
+ shallow: i
+ })))
+ n.schema.checkAttribute(r, t.key) && (o = !0, r.hasAttribute(t.key) || n.writer.setAttribute(t.key, t.value, r));
+ return o
+ })(o.modelRange, {
+ key: a,
+ value: c
+ }, t, r) && r.consumable.consume(o.viewItem, s.match)
+ }
+ }
+ function Fa(e, t) {
+ const i = {};
+ return i.view = e.view + "-" + t,
+ i.model = (t, i) => {
+ const n = t.getAttribute("name"),
+ o = e.model(n, i);
+ return i.writer.createElement("$marker", {
+ "data-name": o
+ })
+ },
+ i
+ }
+ class Ha {
+ constructor(e, t) {
+ this.model = e,
+ this.view = new $s(t),
+ this.mapper = new ra,
+ this.downcastDispatcher = new ca({
+ mapper: this.mapper,
+ schema: e.schema
+ });
+ const i = this.model.document,
+ n = i.selection,
+ o = this.model.markers;
+ this.listenTo(this.model, "_beforeChanges", () => {
+ this.view._disableRendering(!0)
+ }, {
+ priority: "highest"
+ }),
+ this.listenTo(this.model, "_afterChanges", () => {
+ this.view._disableRendering(!1)
+ }, {
+ priority: "lowest"
+ }),
+ this.listenTo(i, "change", () => {
+ this.view.change(e => {
+ this.downcastDispatcher.convertChanges(i.differ, o, e),
+ this.downcastDispatcher.convertSelection(n, o, e)
+ })
+ }, {
+ priority: "low"
+ }),
+ this.listenTo(this.view.document, "selectionChange", function (e, t) {
+ return (i, n) => {
+ const o = n.newSelection,
+ r = [];
+ for (const e of o.getRanges())
+ r.push(t.toModelRange(e));
+ const s = e.createSelection(r, {
+ backward: o.isBackward
+ });
+ s.isEqual(e.document.selection) || e.change(e => {
+ e.setSelection(s)
+ })
+ }
+ }
+ (this.model, this.mapper)),
+ this.downcastDispatcher.on("insert:$text", (e, t, i) => {
+ if (!i.consumable.consume(t.item, "insert"))
+ return;
+ const n = i.writer,
+ o = i.mapper.toViewPosition(t.range.start),
+ r = n.createText(t.item.data);
+ n.insert(o, r)
+ }, {
+ priority: "lowest"
+ }),
+ this.downcastDispatcher.on("remove", (e, t, i) => {
+ const n = i.mapper.toViewPosition(t.position),
+ o = t.position.getShiftedBy(t.length),
+ r = i.mapper.toViewPosition(o, {
+ isPhantom: !0
+ }),
+ s = i.writer.createRange(n, r),
+ a = i.writer.remove(s.getTrimmed());
+ for (const e of i.writer.createRangeIn(a).getItems())
+ i.mapper.unbindViewElement(e)
+ }, {
+ priority: "low"
+ }),
+ this.downcastDispatcher.on("selection", (e, t, i) => {
+ const n = i.writer,
+ o = n.document.selection;
+ for (const e of o.getRanges())
+ e.isCollapsed && e.end.parent.isAttached() && i.writer.mergeAttributes(e.start);
+ n.setSelection(null)
+ }, {
+ priority: "low"
+ }),
+ this.downcastDispatcher.on("selection", (e, t, i) => {
+ const n = t.selection;
+ if (n.isCollapsed)
+ return;
+ if (!i.consumable.consume(n, "selection"))
+ return;
+ const o = [];
+ for (const e of n.getRanges()) {
+ const t = i.mapper.toViewRange(e);
+ o.push(t)
+ }
+ i.writer.setSelection(o, {
+ backward: n.isBackward
+ })
+ }, {
+ priority: "low"
+ }),
+ this.downcastDispatcher.on("selection", (e, t, i) => {
+ const n = t.selection;
+ if (!n.isCollapsed)
+ return;
+ if (!i.consumable.consume(n, "selection"))
+ return;
+ const o = i.writer,
+ r = n.getFirstPosition(),
+ s = i.mapper.toViewPosition(r),
+ a = o.breakAttributes(s);
+ o.setSelection(a)
+ }, {
+ priority: "low"
+ }),
+ this.view.document.roots.bindTo(this.model.document.roots).using(e => {
+ if ("$graveyard" == e.rootName)
+ return null;
+ const t = new ro(this.view.document, e.name);
+ return t.rootName = e.rootName,
+ this.mapper.bindElements(e, t),
+ t
+ })
+ }
+ destroy() {
+ this.view.destroy(),
+ this.stopListening()
+ }
+ }
+ Ke(Ha, Ue);
+ class Ua {
+ constructor() {
+ this._commands = new Map
+ }
+ add(e, t) {
+ this._commands.set(e, t)
+ }
+ get(e) {
+ return this._commands.get(e)
+ }
+ execute(e, ...t) {
+ const i = this.get(e);
+ if (!i)
+ throw new c.a("commandcollection-command-not-found", this, {
+ commandName: e
+ });
+ return i.execute(...t)
+ }
+ * names() {
+ yield * this._commands.keys()
+ }
+ * commands() {
+ yield * this._commands.values()
+ }
+ [Symbol.iterator]() {
+ return this._commands[Symbol.iterator]()
+ }
+ destroy() {
+ for (const e of this.commands())
+ e.destroy()
+ }
+ }
+ class Wa {
+ constructor() {
+ this._consumables = new Map
+ }
+ add(e, t) {
+ let i;
+ e.is("$text") || e.is("documentFragment") ? this._consumables.set(e, !0) : (this._consumables.has(e) ? i = this._consumables.get(e) : (i = new qa(e), this._consumables.set(e, i)), i.add(t))
+ }
+ test(e, t) {
+ const i = this._consumables.get(e);
+ return void 0 === i ? null : e.is("$text") || e.is("documentFragment") ? i : i.test(t)
+ }
+ consume(e, t) {
+ return !!this.test(e, t) && (e.is("$text") || e.is("documentFragment") ? this._consumables.set(e, !1) : this._consumables.get(e).consume(t), !0)
+ }
+ revert(e, t) {
+ const i = this._consumables.get(e);
+ void 0 !== i && (e.is("$text") || e.is("documentFragment") ? this._consumables.set(e, !0) : i.revert(t))
+ }
+ static consumablesFromElement(e) {
+ const t = {
+ element: e,
+ name: !0,
+ attributes: [],
+ classes: [],
+ styles: []
+ },
+ i = e.getAttributeKeys();
+ for (const e of i)
+ "style" != e && "class" != e && t.attributes.push(e);
+ const n = e.getClassNames();
+ for (const e of n)
+ t.classes.push(e);
+ const o = e.getStyleNames();
+ for (const e of o)
+ t.styles.push(e);
+ return t
+ }
+ static createFrom(e, t) {
+ if (t || (t = new Wa(e)), e.is("$text"))
+ return t.add(e), t;
+ e.is("element") && t.add(e, Wa.consumablesFromElement(e)),
+ e.is("documentFragment") && t.add(e);
+ for (const i of e.getChildren())
+ t = Wa.createFrom(i, t);
+ return t
+ }
+ }
+ class qa {
+ constructor(e) {
+ this.element = e,
+ this._canConsumeName = null,
+ this._consumables = {
+ attributes: new Map,
+ styles: new Map,
+ classes: new Map
+ }
+ }
+ add(e) {
+ e.name && (this._canConsumeName = !0);
+ for (const t in this._consumables)
+ t in e && this._add(t, e[t])
+ }
+ test(e) {
+ if (e.name && !this._canConsumeName)
+ return this._canConsumeName;
+ for (const t in this._consumables)
+ if (t in e) {
+ const i = this._test(t, e[t]);
+ if (!0 !== i)
+ return i
+ }
+ return !0
+ }
+ consume(e) {
+ e.name && (this._canConsumeName = !1);
+ for (const t in this._consumables)
+ t in e && this._consume(t, e[t])
+ }
+ revert(e) {
+ e.name && (this._canConsumeName = !0);
+ for (const t in this._consumables)
+ t in e && this._revert(t, e[t])
+ }
+ _add(e, t) {
+ const i = _e(t) ? t : [t],
+ n = this._consumables[e];
+ for (const t of i) {
+ if ("attributes" === e && ("class" === t || "style" === t))
+ throw new c.a("viewconsumable-invalid-attribute", this);
+ if (n.set(t, !0), "styles" === e)
+ for (const e of this.element.document.stylesProcessor.getRelatedStyles(t))
+ n.set(e, !0)
+ }
+ }
+ _test(e, t) {
+ const i = _e(t) ? t : [t],
+ n = this._consumables[e];
+ for (const t of i)
+ if ("attributes" !== e || "class" !== t && "style" !== t) {
+ const e = n.get(t);
+ if (void 0 === e)
+ return null;
+ if (!e)
+ return !1
+ } else {
+ const e = "class" == t ? "classes" : "styles",
+ i = this._test(e, [...this._consumables[e].keys()]);
+ if (!0 !== i)
+ return i
+ }
+ return !0
+ }
+ _consume(e, t) {
+ const i = _e(t) ? t : [t],
+ n = this._consumables[e];
+ for (const t of i)
+ if ("attributes" !== e || "class" !== t && "style" !== t) {
+ if (n.set(t, !1), "styles" == e)
+ for (const e of this.element.document.stylesProcessor.getRelatedStyles(t))
+ n.set(e, !1)
+ } else {
+ const e = "class" == t ? "classes" : "styles";
+ this._consume(e, [...this._consumables[e].keys()])
+ }
+ }
+ _revert(e, t) {
+ const i = _e(t) ? t : [t],
+ n = this._consumables[e];
+ for (const t of i)
+ if ("attributes" !== e || "class" !== t && "style" !== t) {
+ !1 === n.get(t) && n.set(t, !0)
+ } else {
+ const e = "class" == t ? "classes" : "styles";
+ this._revert(e, [...this._consumables[e].keys()])
+ }
+ }
+ }
+ class $a {
+ constructor() {
+ this._sourceDefinitions = {},
+ this._attributeProperties = {},
+ this.decorate("checkChild"),
+ this.decorate("checkAttribute"),
+ this.on("checkAttribute", (e, t) => {
+ t[0] = new Ya(t[0])
+ }, {
+ priority: "highest"
+ }),
+ this.on("checkChild", (e, t) => {
+ t[0] = new Ya(t[0]),
+ t[1] = this.getDefinition(t[1])
+ }, {
+ priority: "highest"
+ })
+ }
+ register(e, t) {
+ if (this._sourceDefinitions[e])
+ throw new c.a("schema-cannot-register-item-twice", this, {
+ itemName: e
+ });
+ this._sourceDefinitions[e] = [Object.assign({}, t)],
+ this._clearCache()
+ }
+ extend(e, t) {
+ if (!this._sourceDefinitions[e])
+ throw new c.a("schema-cannot-extend-missing-item", this, {
+ itemName: e
+ });
+ this._sourceDefinitions[e].push(Object.assign({}, t)),
+ this._clearCache()
+ }
+ getDefinitions() {
+ return this._compiledDefinitions || this._compile(),
+ this._compiledDefinitions
+ }
+ getDefinition(e) {
+ let t;
+ return t = "string" == typeof e ? e : e.is && (e.is("$text") || e.is("$textProxy")) ? "$text" : e.name,
+ this.getDefinitions()[t]
+ }
+ isRegistered(e) {
+ return !!this.getDefinition(e)
+ }
+ isBlock(e) {
+ const t = this.getDefinition(e);
+ return !(!t || !t.isBlock)
+ }
+ isLimit(e) {
+ const t = this.getDefinition(e);
+ return !!t && !(!t.isLimit && !t.isObject)
+ }
+ isObject(e) {
+ const t = this.getDefinition(e);
+ return !!t && !!(t.isObject || t.isLimit && t.isSelectable && t.isContent)
+ }
+ isInline(e) {
+ const t = this.getDefinition(e);
+ return !(!t || !t.isInline)
+ }
+ isSelectable(e) {
+ const t = this.getDefinition(e);
+ return !!t && !(!t.isSelectable && !t.isObject)
+ }
+ isContent(e) {
+ const t = this.getDefinition(e);
+ return !!t && !(!t.isContent && !t.isObject)
+ }
+ checkChild(e, t) {
+ return !!t && this._checkContextMatch(t, e)
+ }
+ checkAttribute(e, t) {
+ const i = this.getDefinition(e.last);
+ return !!i && i.allowAttributes.includes(t)
+ }
+ checkMerge(e, t = null) {
+ if (e instanceof ea) {
+ const t = e.nodeBefore,
+ i = e.nodeAfter;
+ if (!(t instanceof Js))
+ throw new c.a("schema-check-merge-no-element-before", this);
+ if (!(i instanceof Js))
+ throw new c.a("schema-check-merge-no-element-after", this);
+ return this.checkMerge(t, i)
+ }
+ for (const i of t.getChildren())
+ if (!this.checkChild(e, i))
+ return !1;
+ return !0
+ }
+ addChildCheck(e) {
+ this.on("checkChild", (t, [i, n]) => {
+ if (!n)
+ return;
+ const o = e(i, n);
+ "boolean" == typeof o && (t.stop(), t.return = o)
+ }, {
+ priority: "high"
+ })
+ }
+ addAttributeCheck(e) {
+ this.on("checkAttribute", (t, [i, n]) => {
+ const o = e(i, n);
+ "boolean" == typeof o && (t.stop(), t.return = o)
+ }, {
+ priority: "high"
+ })
+ }
+ setAttributeProperties(e, t) {
+ this._attributeProperties[e] = Object.assign(this.getAttributeProperties(e), t)
+ }
+ getAttributeProperties(e) {
+ return this._attributeProperties[e] || {}
+ }
+ getLimitElement(e) {
+ let t;
+ if (e instanceof ea)
+ t = e.parent;
+ else {
+ t = (e instanceof oa ? [e] : Array.from(e.getRanges())).reduce((e, t) => {
+ const i = t.getCommonAncestor();
+ return e ? e.getCommonAncestor(i, {
+ includeSelf: !0
+ }) : i
+ }, null)
+ }
+ for (; !this.isLimit(t) && t.parent; )
+ t = t.parent;
+ return t
+ }
+ checkAttributeInSelection(e, t) {
+ if (e.isCollapsed) {
+ const i = [...e.getFirstPosition().getAncestors(), new Gs("", e.getAttributes())];
+ return this.checkAttribute(i, t)
+ } {
+ const i = e.getRanges();
+ for (const e of i)
+ for (const i of e)
+ if (this.checkAttribute(i.item, t))
+ return !0
+ }
+ return !1
+ }
+ * getValidRanges(e, t) {
+ e = function * (e) {
+ for (const t of e)
+ yield * t.getMinimalFlatRanges()
+ }
+ (e);
+ for (const i of e)
+ yield * this._getValidRangesForRange(i, t)
+ }
+ getNearestSelectionRange(e, t = "both") {
+ if (this.checkChild(e, "$text"))
+ return new oa(e);
+ let i,
+ n;
+ const o = e.getAncestors().reverse().find(e => this.isLimit(e)) || e.root;
+ "both" != t && "backward" != t || (i = new Zs({
+ boundaries: oa._createIn(o),
+ startPosition: e,
+ direction: "backward"
+ })),
+ "both" != t && "forward" != t || (n = new Zs({
+ boundaries: oa._createIn(o),
+ startPosition: e
+ }));
+ for (const e of function * (e, t) {
+ let i = !1;
+ for (; !i; ) {
+ if (i = !0, e) {
+ const t = e.next();
+ t.done || (i = !1, yield {
+ walker: e,
+ value: t.value
+ })
+ }
+ if (t) {
+ const e = t.next();
+ e.done || (i = !1, yield {
+ walker: t,
+ value: e.value
+ })
+ }
+ }
+ }
+ (i, n)) {
+ const t = e.walker == i ? "elementEnd" : "elementStart",
+ n = e.value;
+ if (n.type == t && this.isObject(n.item))
+ return oa._createOn(n.item);
+ if (this.checkChild(n.nextPosition, "$text"))
+ return new oa(n.nextPosition)
+ }
+ return null
+ }
+ findAllowedParent(e, t) {
+ let i = e.parent;
+ for (; i; ) {
+ if (this.checkChild(i, t))
+ return i;
+ if (this.isLimit(i))
+ return null;
+ i = i.parent
+ }
+ return null
+ }
+ removeDisallowedAttributes(e, t) {
+ for (const i of e)
+ if (i.is("$text"))
+ oc(this, i, t);
+ else {
+ const e = oa._createIn(i).getPositions();
+ for (const i of e) {
+ oc(this, i.nodeBefore || i.parent, t)
+ }
+ }
+ }
+ createContext(e) {
+ return new Ya(e)
+ }
+ _clearCache() {
+ this._compiledDefinitions = null
+ }
+ _compile() {
+ const e = {},
+ t = this._sourceDefinitions,
+ i = Object.keys(t);
+ for (const n of i)
+ e[n] = Ga(t[n], n);
+ for (const t of i)
+ Ka(e, t);
+ for (const t of i)
+ Qa(e, t);
+ for (const t of i)
+ Ja(e, t), Za(e, t);
+ for (const t of i)
+ Xa(e, t), ec(e, t);
+ this._compiledDefinitions = e
+ }
+ _checkContextMatch(e, t, i = t.length - 1) {
+ const n = t.getItem(i);
+ if (e.allowIn.includes(n.name)) {
+ if (0 == i)
+ return !0; {
+ const e = this.getDefinition(n);
+ return this._checkContextMatch(e, t, i - 1)
+ }
+ }
+ return !1
+ }
+ * _getValidRangesForRange(e, t) {
+ let i = e.start,
+ n = e.start;
+ for (const o of e.getItems({
+ shallow: !0
+ }))
+ o.is("element") && (yield * this._getValidRangesForRange(oa._createIn(o), t)), this.checkAttribute(o, t) || (i.isEqual(n) || (yield new oa(i, n)), i = ea._createAfter(o)), n = ea._createAfter(o);
+ i.isEqual(n) || (yield new oa(i, n))
+ }
+ }
+ Ke($a, Ue);
+ class Ya {
+ constructor(e) {
+ if (e instanceof Ya)
+ return e;
+ "string" == typeof e ? e = [e] : Array.isArray(e) || (e = e.getAncestors({
+ includeSelf: !0
+ })),
+ this._items = e.map(nc)
+ }
+ get length() {
+ return this._items.length
+ }
+ get last() {
+ return this._items[this._items.length - 1]
+ }
+ [Symbol.iterator]() {
+ return this._items[Symbol.iterator]()
+ }
+ push(e) {
+ const t = new Ya([e]);
+ return t._items = [...this._items, ...t._items],
+ t
+ }
+ getItem(e) {
+ return this._items[e]
+ }
+ * getNames() {
+ yield * this._items.map(e => e.name)
+ }
+ endsWith(e) {
+ return Array.from(this.getNames()).join(" ").endsWith(e)
+ }
+ startsWith(e) {
+ return Array.from(this.getNames()).join(" ").startsWith(e)
+ }
+ }
+ function Ga(e, t) {
+ const i = {
+ name: t,
+ allowIn: [],
+ allowContentOf: [],
+ allowWhere: [],
+ allowAttributes: [],
+ allowAttributesOf: [],
+ inheritTypesFrom: []
+ };
+ return function (e, t) {
+ for (const i of e) {
+ const e = Object.keys(i).filter(e => e.startsWith("is"));
+ for (const n of e)
+ t[n] = i[n]
+ }
+ }
+ (e, i),
+ tc(e, i, "allowIn"),
+ tc(e, i, "allowContentOf"),
+ tc(e, i, "allowWhere"),
+ tc(e, i, "allowAttributes"),
+ tc(e, i, "allowAttributesOf"),
+ tc(e, i, "inheritTypesFrom"),
+ function (e, t) {
+ for (const i of e) {
+ const e = i.inheritAllFrom;
+ e && (t.allowContentOf.push(e), t.allowWhere.push(e), t.allowAttributesOf.push(e), t.inheritTypesFrom.push(e))
+ }
+ }
+ (e, i),
+ i
+ }
+ function Ka(e, t) {
+ for (const i of e[t].allowContentOf)
+ if (e[i]) {
+ ic(e, i).forEach(e => {
+ e.allowIn.push(t)
+ })
+ }
+ delete e[t].allowContentOf
+ }
+ function Qa(e, t) {
+ for (const i of e[t].allowWhere) {
+ const n = e[i];
+ if (n) {
+ const i = n.allowIn;
+ e[t].allowIn.push(...i)
+ }
+ }
+ delete e[t].allowWhere
+ }
+ function Ja(e, t) {
+ for (const i of e[t].allowAttributesOf) {
+ const n = e[i];
+ if (n) {
+ const i = n.allowAttributes;
+ e[t].allowAttributes.push(...i)
+ }
+ }
+ delete e[t].allowAttributesOf
+ }
+ function Za(e, t) {
+ const i = e[t];
+ for (const t of i.inheritTypesFrom) {
+ const n = e[t];
+ if (n) {
+ const e = Object.keys(n).filter(e => e.startsWith("is"));
+ for (const t of e)
+ t in i || (i[t] = n[t])
+ }
+ }
+ delete i.inheritTypesFrom
+ }
+ function Xa(e, t) {
+ const i = e[t],
+ n = i.allowIn.filter(t => e[t]);
+ i.allowIn = Array.from(new Set(n))
+ }
+ function ec(e, t) {
+ const i = e[t];
+ i.allowAttributes = Array.from(new Set(i.allowAttributes))
+ }
+ function tc(e, t, i) {
+ for (const n of e)
+ "string" == typeof n[i] ? t[i].push(n[i]) : Array.isArray(n[i]) && t[i].push(...n[i])
+ }
+ function ic(e, t) {
+ const i = e[t];
+ return (n = e, Object.keys(n).map(e => n[e])).filter(e => e.allowIn.includes(i.name));
+ var n
+ }
+ function nc(e) {
+ return "string" == typeof e || e.is("documentFragment") ? {
+ name: "string" == typeof e ? e : "$documentFragment",
+ * getAttributeKeys() {},
+ getAttribute() {}
+ }
+ : {
+ name: e.is("element") ? e.name : "$text",
+ * getAttributeKeys() {
+ yield * e.getAttributeKeys()
+ },
+ getAttribute: t => e.getAttribute(t)
+ }
+ }
+ function oc(e, t, i) {
+ for (const n of t.getAttributeKeys())
+ e.checkAttribute(t, n) || i.removeAttribute(n, t)
+ }
+ class rc {
+ constructor(e = {}) {
+ this._splitParts = new Map,
+ this._cursorParents = new Map,
+ this._modelCursor = null,
+ this.conversionApi = Object.assign({}, e),
+ this.conversionApi.convertItem = this._convertItem.bind(this),
+ this.conversionApi.convertChildren = this._convertChildren.bind(this),
+ this.conversionApi.safeInsert = this._safeInsert.bind(this),
+ this.conversionApi.updateConversionResult = this._updateConversionResult.bind(this),
+ this.conversionApi.splitToAllowedParent = this._splitToAllowedParent.bind(this),
+ this.conversionApi.getSplitParts = this._getSplitParts.bind(this)
+ }
+ convert(e, t, i = ["$root"]) {
+ this.fire("viewCleanup", e),
+ this._modelCursor = function (e, t) {
+ let i;
+ for (const n of new Ya(e)) {
+ const e = {};
+ for (const t of n.getAttributeKeys())
+ e[t] = n.getAttribute(t);
+ const o = t.createElement(n.name, e);
+ i && t.append(o, i),
+ i = ea._createAt(o, 0)
+ }
+ return i
+ }
+ (i, t),
+ this.conversionApi.writer = t,
+ this.conversionApi.consumable = Wa.createFrom(e),
+ this.conversionApi.store = {};
+ const {
+ modelRange: n
+ } = this._convertItem(e, this._modelCursor),
+ o = t.createDocumentFragment();
+ if (n) {
+ this._removeEmptyElements();
+ for (const e of Array.from(this._modelCursor.parent.getChildren()))
+ t.append(e, o);
+ o.markers = function (e, t) {
+ const i = new Set,
+ n = new Map,
+ o = oa._createIn(e).getItems();
+ for (const e of o)
+ "$marker" == e.name && i.add(e);
+ for (const e of i) {
+ const i = e.getAttribute("data-name"),
+ o = t.createPositionBefore(e);
+ n.has(i) ? n.get(i).end = o.clone() : n.set(i, new oa(o.clone())),
+ t.remove(e)
+ }
+ return n
+ }
+ (o, t)
+ }
+ return this._modelCursor = null,
+ this._splitParts.clear(),
+ this._cursorParents.clear(),
+ this.conversionApi.writer = null,
+ this.conversionApi.store = null,
+ o
+ }
+ _convertItem(e, t) {
+ const i = Object.assign({
+ viewItem: e,
+ modelCursor: t,
+ modelRange: null
+ });
+ if (e.is("element") ? this.fire("element:" + e.name, i, this.conversionApi) : e.is("$text") ? this.fire("text", i, this.conversionApi) : this.fire("documentFragment", i, this.conversionApi), i.modelRange && !(i.modelRange instanceof oa))
+ throw new c.a("view-conversion-dispatcher-incorrect-result", this);
+ return {
+ modelRange: i.modelRange,
+ modelCursor: i.modelCursor
+ }
+ }
+ _convertChildren(e, t) {
+ let i = t.is("position") ? t : ea._createAt(t, 0);
+ const n = new oa(i);
+ for (const t of Array.from(e.getChildren())) {
+ const e = this._convertItem(t, i);
+ e.modelRange instanceof oa && (n.end = e.modelRange.end, i = e.modelCursor)
+ }
+ return {
+ modelRange: n,
+ modelCursor: i
+ }
+ }
+ _safeInsert(e, t) {
+ const i = this._splitToAllowedParent(e, t);
+ return !!i && (this.conversionApi.writer.insert(e, i.position), !0)
+ }
+ _updateConversionResult(e, t) {
+ const i = this._getSplitParts(e),
+ n = this.conversionApi.writer;
+ t.modelRange || (t.modelRange = n.createRange(n.createPositionBefore(e), n.createPositionAfter(i[i.length - 1])));
+ const o = this._cursorParents.get(e);
+ t.modelCursor = o ? n.createPositionAt(o, 0) : t.modelRange.end
+ }
+ _splitToAllowedParent(e, t) {
+ const {
+ schema: i,
+ writer: n
+ } = this.conversionApi;
+ let o = i.findAllowedParent(t, e);
+ if (o) {
+ if (o === t.parent)
+ return {
+ position: t
+ };
+ this._modelCursor.parent.getAncestors().includes(o) && (o = null)
+ }
+ if (!o)
+ return Ra(t, e, i) ? {
+ position: Oa(t, n)
+ }
+ : null;
+ const r = this.conversionApi.writer.split(t, o),
+ s = [];
+ for (const e of r.range.getWalker())
+ if ("elementEnd" == e.type)
+ s.push(e.item);
+ else {
+ const t = s.pop(),
+ i = e.item;
+ this._registerSplitPair(t, i)
+ }
+ const a = r.range.end.parent;
+ return this._cursorParents.set(e, a), {
+ position: r.position,
+ cursorParent: a
+ }
+ }
+ _registerSplitPair(e, t) {
+ this._splitParts.has(e) || this._splitParts.set(e, [e]);
+ const i = this._splitParts.get(e);
+ this._splitParts.set(t, i),
+ i.push(t)
+ }
+ _getSplitParts(e) {
+ let t;
+ return t = this._splitParts.has(e) ? this._splitParts.get(e) : [e],
+ t
+ }
+ _removeEmptyElements() {
+ let e = !1;
+ for (const t of this._splitParts.keys())
+ t.isEmpty && (this.conversionApi.writer.remove(t), this._splitParts.delete(t), e = !0);
+ e && this._removeEmptyElements()
+ }
+ }
+ Ke(rc, u);
+ class sc {
+ getHtml(e) {
+ const t = document.implementation.createHTMLDocument("").createElement("div");
+ return t.appendChild(e),
+ t.innerHTML
+ }
+ }
+ class ac {
+ constructor(e) {
+ this._domParser = new DOMParser,
+ this._domConverter = new Tr(e, {
+ blockFillerMode: "nbsp"
+ }),
+ this._htmlWriter = new sc
+ }
+ toData(e) {
+ const t = this._domConverter.viewToDom(e, document);
+ return this._htmlWriter.getHtml(t)
+ }
+ toView(e) {
+ const t = this._toDom(e);
+ return this._domConverter.domToView(t)
+ }
+ registerRawContentMatcher(e) {
+ this._domConverter.registerRawContentMatcher(e)
+ }
+ useFillerType(e) {
+ this._domConverter.blockFillerMode = "marked" == e ? "markedNbsp" : "nbsp"
+ }
+ _toDom(e) {
+ const t = this._domParser.parseFromString(e, "text/html"),
+ i = t.createDocumentFragment(),
+ n = t.body.childNodes;
+ for (; n.length > 0; )
+ i.appendChild(n[0]);
+ return i
+ }
+ }
+ class cc {
+ constructor(e, t) {
+ this.model = e,
+ this.mapper = new ra,
+ this.downcastDispatcher = new ca({
+ mapper: this.mapper,
+ schema: e.schema
+ }),
+ this.downcastDispatcher.on("insert:$text", (e, t, i) => {
+ if (!i.consumable.consume(t.item, "insert"))
+ return;
+ const n = i.writer,
+ o = i.mapper.toViewPosition(t.range.start),
+ r = n.createText(t.item.data);
+ n.insert(o, r)
+ }, {
+ priority: "lowest"
+ }),
+ this.upcastDispatcher = new rc({
+ schema: e.schema
+ }),
+ this.viewDocument = new vo(t),
+ this.stylesProcessor = t,
+ this.htmlProcessor = new ac(this.viewDocument),
+ this.processor = this.htmlProcessor,
+ this._viewWriter = new Wo(this.viewDocument),
+ this.upcastDispatcher.on("text", (e, t, {
+ schema: i,
+ consumable: n,
+ writer: o
+ }) => {
+ let r = t.modelCursor;
+ if (!n.test(t.viewItem))
+ return;
+ if (!i.checkChild(r, "$text")) {
+ if (!Ra(r, "$text", i))
+ return;
+ r = Oa(r, o)
+ }
+ n.consume(t.viewItem);
+ const s = o.createText(t.viewItem.data);
+ o.insert(s, r),
+ t.modelRange = o.createRange(r, r.getShiftedBy(s.offsetSize)),
+ t.modelCursor = t.modelRange.end
+ }, {
+ priority: "lowest"
+ }),
+ this.upcastDispatcher.on("element", (e, t, i) => {
+ if (!t.modelRange && i.consumable.consume(t.viewItem, {
+ name: !0
+ })) {
+ const {
+ modelRange: e,
+ modelCursor: n
+ } = i.convertChildren(t.viewItem, t.modelCursor);
+ t.modelRange = e,
+ t.modelCursor = n
+ }
+ }, {
+ priority: "lowest"
+ }),
+ this.upcastDispatcher.on("documentFragment", (e, t, i) => {
+ if (!t.modelRange && i.consumable.consume(t.viewItem, {
+ name: !0
+ })) {
+ const {
+ modelRange: e,
+ modelCursor: n
+ } = i.convertChildren(t.viewItem, t.modelCursor);
+ t.modelRange = e,
+ t.modelCursor = n
+ }
+ }, {
+ priority: "lowest"
+ }),
+ this.decorate("init"),
+ this.decorate("set"),
+ this.on("init", () => {
+ this.fire("ready")
+ }, {
+ priority: "lowest"
+ }),
+ this.on("ready", () => {
+ this.model.enqueueChange("transparent", Na)
+ }, {
+ priority: "lowest"
+ })
+ }
+ get(e = {}) {
+ const {
+ rootName: t = "main",
+ trim: i = "empty"
+ } = e;
+ if (!this._checkIfRootsExists([t]))
+ throw new c.a("datacontroller-get-non-existent-root", this);
+ const n = this.model.document.getRoot(t);
+ return "empty" !== i || this.model.hasContent(n, {
+ ignoreWhitespaces: !0
+ }) ? this.stringify(n, e) : ""
+ }
+ stringify(e, t = {}) {
+ const i = this.toView(e, t);
+ return this.processor.toData(i)
+ }
+ toView(e, t = {}) {
+ const i = this.viewDocument,
+ n = this._viewWriter;
+ this.mapper.clearBindings();
+ const o = oa._createIn(e),
+ r = new Uo(i);
+ this.mapper.bindElements(e, r),
+ this.downcastDispatcher.conversionApi.options = t,
+ this.downcastDispatcher.convertInsert(o, n);
+ const s = e.is("documentFragment") ? Array.from(e.markers) : function (e) {
+ const t = [],
+ i = e.root.document;
+ if (!i)
+ return [];
+ const n = oa._createIn(e);
+ for (const e of i.model.markers) {
+ const i = n.getIntersection(e.getRange());
+ i && t.push([e.name, i])
+ }
+ return t
+ }
+ (e);
+ for (const[e, t]of s)
+ this.downcastDispatcher.convertMarkerAdd(e, t, n);
+ return delete this.downcastDispatcher.conversionApi.options,
+ r
+ }
+ init(e) {
+ if (this.model.document.version)
+ throw new c.a("datacontroller-init-document-not-empty", this);
+ let t = {};
+ if ("string" == typeof e ? t.main = e : t = e, !this._checkIfRootsExists(Object.keys(t)))
+ throw new c.a("datacontroller-init-non-existent-root", this);
+ return this.model.enqueueChange("transparent", e => {
+ for (const i of Object.keys(t)) {
+ const n = this.model.document.getRoot(i);
+ e.insert(this.parse(t[i], n), n, 0)
+ }
+ }),
+ Promise.resolve()
+ }
+ set(e) {
+ let t = {};
+ if ("string" == typeof e ? t.main = e : t = e, !this._checkIfRootsExists(Object.keys(t)))
+ throw new c.a("datacontroller-set-non-existent-root", this);
+ this.model.enqueueChange("transparent", e => {
+ e.setSelection(null),
+ e.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());
+ for (const i of Object.keys(t)) {
+ const n = this.model.document.getRoot(i);
+ e.remove(e.createRangeIn(n)),
+ e.insert(this.parse(t[i], n), n, 0)
+ }
+ })
+ }
+ parse(e, t = "$root") {
+ const i = this.processor.toView(e);
+ return this.toModel(i, t)
+ }
+ toModel(e, t = "$root") {
+ return this.model.change(i => this.upcastDispatcher.convert(e, i, t))
+ }
+ addStyleProcessorRules(e) {
+ e(this.stylesProcessor)
+ }
+ registerRawContentMatcher(e) {
+ this.processor && this.processor !== this.htmlProcessor && this.processor.registerRawContentMatcher(e),
+ this.htmlProcessor.registerRawContentMatcher(e)
+ }
+ destroy() {
+ this.stopListening()
+ }
+ _checkIfRootsExists(e) {
+ for (const t of e)
+ if (!this.model.document.getRootNames().includes(t))
+ return !1;
+ return !0
+ }
+ }
+ Ke(cc, Ue);
+ class lc {
+ constructor(e, t) {
+ this._helpers = new Map,
+ this._downcast = en(e),
+ this._createConversionHelpers({
+ name: "downcast",
+ dispatchers: this._downcast,
+ isDowncast: !0
+ }),
+ this._upcast = en(t),
+ this._createConversionHelpers({
+ name: "upcast",
+ dispatchers: this._upcast,
+ isDowncast: !1
+ })
+ }
+ addAlias(e, t) {
+ const i = this._downcast.includes(t);
+ if (!this._upcast.includes(t) && !i)
+ throw new c.a("conversion-add-alias-dispatcher-not-registered", this);
+ this._createConversionHelpers({
+ name: e,
+ dispatchers: [t],
+ isDowncast: i
+ })
+ }
+ for (e) {
+ if (!this._helpers.has(e))
+ throw new c.a("conversion-for-unknown-group", this);
+ return this._helpers.get(e)
+ }
+ elementToElement(e) {
+ this.for("downcast").elementToElement(e);
+ for (const {
+ model: t,
+ view: i
+ }
+ of dc(e))
+ this.for("upcast").elementToElement({
+ model: t,
+ view: i,
+ converterPriority: e.converterPriority
+ })
+ }
+ attributeToElement(e) {
+ this.for("downcast").attributeToElement(e);
+ for (const {
+ model: t,
+ view: i
+ }
+ of dc(e))
+ this.for("upcast").elementToAttribute({
+ view: i,
+ model: t,
+ converterPriority: e.converterPriority
+ })
+ }
+ attributeToAttribute(e) {
+ this.for("downcast").attributeToAttribute(e);
+ for (const {
+ model: t,
+ view: i
+ }
+ of dc(e))
+ this.for("upcast").attributeToAttribute({
+ view: i,
+ model: t
+ })
+ }
+ _createConversionHelpers({
+ name: e,
+ dispatchers: t,
+ isDowncast: i
+ }) {
+ if (this._helpers.has(e))
+ throw new c.a("conversion-group-exists", this);
+ const n = i ? new Ca(t) : new Da(t);
+ this._helpers.set(e, n)
+ }
+ }
+ function * dc(e) {
+ if (e.model.values)
+ for (const t of e.model.values) {
+ const i = {
+ key: e.model.key,
+ value: t
+ },
+ n = e.view[t],
+ o = e.upcastAlso ? e.upcastAlso[t] : void 0;
+ yield * uc(i, n, o)
+ }
+ else
+ yield * uc(e.model, e.view, e.upcastAlso)
+ }
+ function * uc(e, t, i) {
+ if (yield {
+ model: e,
+ view: t
+ }, i)
+ for (const t of en(i))
+ yield {
+ model: e,
+ view: t
+ }
+ }
+ class hc {
+ constructor(e = "default") {
+ this.operations = [],
+ this.type = e
+ }
+ get baseVersion() {
+ for (const e of this.operations)
+ if (null !== e.baseVersion)
+ return e.baseVersion;
+ return null
+ }
+ addOperation(e) {
+ return e.batch = this,
+ this.operations.push(e),
+ e
+ }
+ }
+ class fc {
+ constructor(e) {
+ this.baseVersion = e,
+ this.isDocumentOperation = null !== this.baseVersion,
+ this.batch = null
+ }
+ _validate() {}
+ toJSON() {
+ const e = Object.assign({}, this);
+ return e.__className = this.constructor.className,
+ delete e.batch,
+ delete e.isDocumentOperation,
+ e
+ }
+ static get className() {
+ return "Operation"
+ }
+ static fromJSON(e) {
+ return new this(e.baseVersion)
+ }
+ }
+ class gc {
+ constructor(e) {
+ this.markers = new Map,
+ this._children = new Qs,
+ e && this._insertChild(0, e)
+ }
+ [Symbol.iterator]() {
+ return this.getChildren()
+ }
+ get childCount() {
+ return this._children.length
+ }
+ get maxOffset() {
+ return this._children.maxOffset
+ }
+ get isEmpty() {
+ return 0 === this.childCount
+ }
+ get root() {
+ return this
+ }
+ get parent() {
+ return null
+ }
+ is(e) {
+ return "documentFragment" === e || "model:documentFragment" === e
+ }
+ getChild(e) {
+ return this._children.getNode(e)
+ }
+ getChildren() {
+ return this._children[Symbol.iterator]()
+ }
+ getChildIndex(e) {
+ return this._children.getNodeIndex(e)
+ }
+ getChildStartOffset(e) {
+ return this._children.getNodeStartOffset(e)
+ }
+ getPath() {
+ return []
+ }
+ getNodeByPath(e) {
+ let t = this;
+ for (const i of e)
+ t = t.getChild(t.offsetToIndex(i));
+ return t
+ }
+ offsetToIndex(e) {
+ return this._children.offsetToIndex(e)
+ }
+ toJSON() {
+ const e = [];
+ for (const t of this._children)
+ e.push(t.toJSON());
+ return e
+ }
+ static fromJSON(e) {
+ const t = [];
+ for (const i of e)
+ i.name ? t.push(Js.fromJSON(i)) : t.push(Gs.fromJSON(i));
+ return new gc(t)
+ }
+ _appendChild(e) {
+ this._insertChild(this.childCount, e)
+ }
+ _insertChild(e, t) {
+ const i = function (e) {
+ if ("string" == typeof e)
+ return [new Gs(e)];
+ Ji(e) || (e = [e]);
+ return Array.from(e).map(e => "string" == typeof e ? new Gs(e) : e instanceof Ks ? new Gs(e.data, e.getAttributes()) : e)
+ }
+ (t);
+ for (const e of i)
+ null !== e.parent && e._remove(), e.parent = this;
+ this._children._insertNodes(e, i)
+ }
+ _removeChildren(e, t = 1) {
+ const i = this._children._removeNodes(e, t);
+ for (const e of i)
+ e.parent = null;
+ return i
+ }
+ }
+ function mc(e, t) {
+ const i = (t = wc(t)).reduce((e, t) => e + t.offsetSize, 0),
+ n = e.parent;
+ _c(e);
+ const o = e.index;
+ return n._insertChild(o, t),
+ kc(n, o + t.length),
+ kc(n, o),
+ new oa(e, e.getShiftedBy(i))
+ }
+ function pc(e) {
+ if (!e.isFlat)
+ throw new c.a("operation-utils-remove-range-not-flat", this);
+ const t = e.start.parent;
+ _c(e.start),
+ _c(e.end);
+ const i = t._removeChildren(e.start.index, e.end.index - e.start.index);
+ return kc(t, e.start.index),
+ i
+ }
+ function bc(e, t) {
+ if (!e.isFlat)
+ throw new c.a("operation-utils-move-range-not-flat", this);
+ const i = pc(e);
+ return mc(t = t._getTransformedByDeletion(e.start, e.end.offset - e.start.offset), i)
+ }
+ function wc(e) {
+ const t = [];
+ e instanceof Array || (e = [e]);
+ for (let i = 0; i < e.length; i++)
+ if ("string" == typeof e[i])
+ t.push(new Gs(e[i]));
+ else if (e[i]instanceof Ks)
+ t.push(new Gs(e[i].data, e[i].getAttributes()));
+ else if (e[i]instanceof gc || e[i]instanceof Qs)
+ for (const n of e[i])
+ t.push(n);
+ else
+ e[i]instanceof Ys && t.push(e[i]);
+ for (let e = 1; e < t.length; e++) {
+ const i = t[e],
+ n = t[e - 1];
+ i instanceof Gs && n instanceof Gs && vc(i, n) && (t.splice(e - 1, 2, new Gs(n.data + i.data, n.getAttributes())), e--)
+ }
+ return t
+ }
+ function kc(e, t) {
+ const i = e.getChild(t - 1),
+ n = e.getChild(t);
+ if (i && n && i.is("$text") && n.is("$text") && vc(i, n)) {
+ const o = new Gs(i.data + n.data, i.getAttributes());
+ e._removeChildren(t - 1, 2),
+ e._insertChild(t - 1, o)
+ }
+ }
+ function _c(e) {
+ const t = e.textNode,
+ i = e.parent;
+ if (t) {
+ const n = e.offset - t.startOffset,
+ o = t.index;
+ i._removeChildren(o, 1);
+ const r = new Gs(t.data.substr(0, n), t.getAttributes()),
+ s = new Gs(t.data.substr(n), t.getAttributes());
+ i._insertChild(o, [r, s])
+ }
+ }
+ function vc(e, t) {
+ const i = e.getAttributes(),
+ n = t.getAttributes();
+ for (const e of i) {
+ if (e[1] !== t.getAttribute(e[0]))
+ return !1;
+ n.next()
+ }
+ return n.next().done
+ }
+ var yc = function (e, t) {
+ return Jr(e, t)
+ };
+ class xc extends fc {
+ constructor(e, t, i, n, o) {
+ super(o),
+ this.range = e.clone(),
+ this.key = t,
+ this.oldValue = void 0 === i ? null : i,
+ this.newValue = void 0 === n ? null : n
+ }
+ get type() {
+ return null === this.oldValue ? "addAttribute" : null === this.newValue ? "removeAttribute" : "changeAttribute"
+ }
+ clone() {
+ return new xc(this.range, this.key, this.oldValue, this.newValue, this.baseVersion)
+ }
+ getReversed() {
+ return new xc(this.range, this.key, this.newValue, this.oldValue, this.baseVersion + 1)
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return e.range = this.range.toJSON(),
+ e
+ }
+ _validate() {
+ if (!this.range.isFlat)
+ throw new c.a("attribute-operation-range-not-flat", this);
+ for (const e of this.range.getItems({
+ shallow: !0
+ })) {
+ if (null !== this.oldValue && !yc(e.getAttribute(this.key), this.oldValue))
+ throw new c.a("attribute-operation-wrong-old-value", this, {
+ item: e,
+ key: this.key,
+ value: this.oldValue
+ });
+ if (null === this.oldValue && null !== this.newValue && e.hasAttribute(this.key))
+ throw new c.a("attribute-operation-attribute-exists", this, {
+ node: e,
+ key: this.key
+ })
+ }
+ }
+ _execute() {
+ yc(this.oldValue, this.newValue) || function (e, t, i) {
+ _c(e.start),
+ _c(e.end);
+ for (const n of e.getItems({
+ shallow: !0
+ })) {
+ const e = n.is("$textProxy") ? n.textNode : n;
+ null !== i ? e._setAttribute(t, i) : e._removeAttribute(t),
+ kc(e.parent, e.index)
+ }
+ kc(e.end.parent, e.end.index)
+ }
+ (this.range, this.key, this.newValue)
+ }
+ static get className() {
+ return "AttributeOperation"
+ }
+ static fromJSON(e, t) {
+ return new xc(oa.fromJSON(e.range, t), e.key, e.oldValue, e.newValue, e.baseVersion)
+ }
+ }
+ class Ac extends fc {
+ constructor(e, t) {
+ super(null),
+ this.sourcePosition = e.clone(),
+ this.howMany = t
+ }
+ get type() {
+ return "detach"
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return e.sourcePosition = this.sourcePosition.toJSON(),
+ e
+ }
+ _validate() {
+ if (this.sourcePosition.root.document)
+ throw new c.a("detach-operation-on-document-node", this)
+ }
+ _execute() {
+ pc(oa._createFromPositionAndShift(this.sourcePosition, this.howMany))
+ }
+ static get className() {
+ return "DetachOperation"
+ }
+ }
+ class Cc extends fc {
+ constructor(e, t, i, n) {
+ super(n),
+ this.sourcePosition = e.clone(),
+ this.sourcePosition.stickiness = "toNext",
+ this.howMany = t,
+ this.targetPosition = i.clone(),
+ this.targetPosition.stickiness = "toNone"
+ }
+ get type() {
+ return "$graveyard" == this.targetPosition.root.rootName ? "remove" : "$graveyard" == this.sourcePosition.root.rootName ? "reinsert" : "move"
+ }
+ clone() {
+ return new this.constructor(this.sourcePosition, this.howMany, this.targetPosition, this.baseVersion)
+ }
+ getMovedRangeStart() {
+ return this.targetPosition._getTransformedByDeletion(this.sourcePosition, this.howMany)
+ }
+ getReversed() {
+ const e = this.sourcePosition._getTransformedByInsertion(this.targetPosition, this.howMany);
+ return new this.constructor(this.getMovedRangeStart(), this.howMany, e, this.baseVersion + 1)
+ }
+ _validate() {
+ const e = this.sourcePosition.parent,
+ t = this.targetPosition.parent,
+ i = this.sourcePosition.offset,
+ n = this.targetPosition.offset;
+ if (i + this.howMany > e.maxOffset)
+ throw new c.a("move-operation-nodes-do-not-exist", this);
+ if (e === t && i < n && n < i + this.howMany)
+ throw new c.a("move-operation-range-into-itself", this);
+ if (this.sourcePosition.root == this.targetPosition.root && "prefix" == cn(this.sourcePosition.getParentPath(), this.targetPosition.getParentPath())) {
+ const e = this.sourcePosition.path.length - 1;
+ if (this.targetPosition.path[e] >= i && this.targetPosition.path[e] < i + this.howMany)
+ throw new c.a("move-operation-node-into-itself", this)
+ }
+ }
+ _execute() {
+ bc(oa._createFromPositionAndShift(this.sourcePosition, this.howMany), this.targetPosition)
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return e.sourcePosition = this.sourcePosition.toJSON(),
+ e.targetPosition = this.targetPosition.toJSON(),
+ e
+ }
+ static get className() {
+ return "MoveOperation"
+ }
+ static fromJSON(e, t) {
+ const i = ea.fromJSON(e.sourcePosition, t),
+ n = ea.fromJSON(e.targetPosition, t);
+ return new this(i, e.howMany, n, e.baseVersion)
+ }
+ }
+ class Tc extends fc {
+ constructor(e, t, i) {
+ super(i),
+ this.position = e.clone(),
+ this.position.stickiness = "toNone",
+ this.nodes = new Qs(wc(t)),
+ this.shouldReceiveAttributes = !1
+ }
+ get type() {
+ return "insert"
+ }
+ get howMany() {
+ return this.nodes.maxOffset
+ }
+ clone() {
+ const e = new Qs([...this.nodes].map(e => e._clone(!0))),
+ t = new Tc(this.position, e, this.baseVersion);
+ return t.shouldReceiveAttributes = this.shouldReceiveAttributes,
+ t
+ }
+ getReversed() {
+ const e = this.position.root.document.graveyard,
+ t = new ea(e, [0]);
+ return new Cc(this.position, this.nodes.maxOffset, t, this.baseVersion + 1)
+ }
+ _validate() {
+ const e = this.position.parent;
+ if (!e || e.maxOffset < this.position.offset)
+ throw new c.a("insert-operation-position-invalid", this)
+ }
+ _execute() {
+ const e = this.nodes;
+ this.nodes = new Qs([...e].map(e => e._clone(!0))),
+ mc(this.position, e)
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return e.position = this.position.toJSON(),
+ e.nodes = this.nodes.toJSON(),
+ e
+ }
+ static get className() {
+ return "InsertOperation"
+ }
+ static fromJSON(e, t) {
+ const i = [];
+ for (const t of e.nodes)
+ t.name ? i.push(Js.fromJSON(t)) : i.push(Gs.fromJSON(t));
+ const n = new Tc(ea.fromJSON(e.position, t), i, e.baseVersion);
+ return n.shouldReceiveAttributes = e.shouldReceiveAttributes,
+ n
+ }
+ }
+ class Ec extends fc {
+ constructor(e, t, i, n, o, r) {
+ super(r),
+ this.name = e,
+ this.oldRange = t ? t.clone() : null,
+ this.newRange = i ? i.clone() : null,
+ this.affectsData = o,
+ this._markers = n
+ }
+ get type() {
+ return "marker"
+ }
+ clone() {
+ return new Ec(this.name, this.oldRange, this.newRange, this._markers, this.affectsData, this.baseVersion)
+ }
+ getReversed() {
+ return new Ec(this.name, this.newRange, this.oldRange, this._markers, this.affectsData, this.baseVersion + 1)
+ }
+ _execute() {
+ const e = this.newRange ? "_set" : "_remove";
+ this._markers[e](this.name, this.newRange, !0, this.affectsData)
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return this.oldRange && (e.oldRange = this.oldRange.toJSON()),
+ this.newRange && (e.newRange = this.newRange.toJSON()),
+ delete e._markers,
+ e
+ }
+ static get className() {
+ return "MarkerOperation"
+ }
+ static fromJSON(e, t) {
+ return new Ec(e.name, e.oldRange ? oa.fromJSON(e.oldRange, t) : null, e.newRange ? oa.fromJSON(e.newRange, t) : null, t.model.markers, e.affectsData, e.baseVersion)
+ }
+ }
+ class Pc extends fc {
+ constructor(e, t, i, n) {
+ super(n),
+ this.position = e,
+ this.position.stickiness = "toNext",
+ this.oldName = t,
+ this.newName = i
+ }
+ get type() {
+ return "rename"
+ }
+ clone() {
+ return new Pc(this.position.clone(), this.oldName, this.newName, this.baseVersion)
+ }
+ getReversed() {
+ return new Pc(this.position.clone(), this.newName, this.oldName, this.baseVersion + 1)
+ }
+ _validate() {
+ const e = this.position.nodeAfter;
+ if (!(e instanceof Js))
+ throw new c.a("rename-operation-wrong-position", this);
+ if (e.name !== this.oldName)
+ throw new c.a("rename-operation-wrong-name", this)
+ }
+ _execute() {
+ this.position.nodeAfter.name = this.newName
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return e.position = this.position.toJSON(),
+ e
+ }
+ static get className() {
+ return "RenameOperation"
+ }
+ static fromJSON(e, t) {
+ return new Pc(ea.fromJSON(e.position, t), e.oldName, e.newName, e.baseVersion)
+ }
+ }
+ class Sc extends fc {
+ constructor(e, t, i, n, o) {
+ super(o),
+ this.root = e,
+ this.key = t,
+ this.oldValue = i,
+ this.newValue = n
+ }
+ get type() {
+ return null === this.oldValue ? "addRootAttribute" : null === this.newValue ? "removeRootAttribute" : "changeRootAttribute"
+ }
+ clone() {
+ return new Sc(this.root, this.key, this.oldValue, this.newValue, this.baseVersion)
+ }
+ getReversed() {
+ return new Sc(this.root, this.key, this.newValue, this.oldValue, this.baseVersion + 1)
+ }
+ _validate() {
+ if (this.root != this.root.root || this.root.is("documentFragment"))
+ throw new c.a("rootattribute-operation-not-a-root", this, {
+ root: this.root,
+ key: this.key
+ });
+ if (null !== this.oldValue && this.root.getAttribute(this.key) !== this.oldValue)
+ throw new c.a("rootattribute-operation-wrong-old-value", this, {
+ root: this.root,
+ key: this.key
+ });
+ if (null === this.oldValue && null !== this.newValue && this.root.hasAttribute(this.key))
+ throw new c.a("rootattribute-operation-attribute-exists", this, {
+ root: this.root,
+ key: this.key
+ })
+ }
+ _execute() {
+ null !== this.newValue ? this.root._setAttribute(this.key, this.newValue) : this.root._removeAttribute(this.key)
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return e.root = this.root.toJSON(),
+ e
+ }
+ static get className() {
+ return "RootAttributeOperation"
+ }
+ static fromJSON(e, t) {
+ if (!t.getRoot(e.root))
+ throw new c.a("rootattribute-operation-fromjson-no-root", this, {
+ rootName: e.root
+ });
+ return new Sc(t.getRoot(e.root), e.key, e.oldValue, e.newValue, e.baseVersion)
+ }
+ }
+ class Mc extends fc {
+ constructor(e, t, i, n, o) {
+ super(o),
+ this.sourcePosition = e.clone(),
+ this.sourcePosition.stickiness = "toPrevious",
+ this.howMany = t,
+ this.targetPosition = i.clone(),
+ this.targetPosition.stickiness = "toNext",
+ this.graveyardPosition = n.clone()
+ }
+ get type() {
+ return "merge"
+ }
+ get deletionPosition() {
+ return new ea(this.sourcePosition.root, this.sourcePosition.path.slice(0, -1))
+ }
+ get movedRange() {
+ const e = this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);
+ return new oa(this.sourcePosition, e)
+ }
+ clone() {
+ return new this.constructor(this.sourcePosition, this.howMany, this.targetPosition, this.graveyardPosition, this.baseVersion)
+ }
+ getReversed() {
+ const e = this.targetPosition._getTransformedByMergeOperation(this),
+ t = this.sourcePosition.path.slice(0, -1),
+ i = new ea(this.sourcePosition.root, t)._getTransformedByMergeOperation(this);
+ return new Ic(e, this.howMany, i, this.graveyardPosition, this.baseVersion + 1)
+ }
+ _validate() {
+ const e = this.sourcePosition.parent,
+ t = this.targetPosition.parent;
+ if (!e.parent)
+ throw new c.a("merge-operation-source-position-invalid", this);
+ if (!t.parent)
+ throw new c.a("merge-operation-target-position-invalid", this);
+ if (this.howMany != e.maxOffset)
+ throw new c.a("merge-operation-how-many-invalid", this)
+ }
+ _execute() {
+ const e = this.sourcePosition.parent;
+ bc(oa._createIn(e), this.targetPosition),
+ bc(oa._createOn(e), this.graveyardPosition)
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return e.sourcePosition = e.sourcePosition.toJSON(),
+ e.targetPosition = e.targetPosition.toJSON(),
+ e.graveyardPosition = e.graveyardPosition.toJSON(),
+ e
+ }
+ static get className() {
+ return "MergeOperation"
+ }
+ static fromJSON(e, t) {
+ const i = ea.fromJSON(e.sourcePosition, t),
+ n = ea.fromJSON(e.targetPosition, t),
+ o = ea.fromJSON(e.graveyardPosition, t);
+ return new this(i, e.howMany, n, o, e.baseVersion)
+ }
+ }
+ class Ic extends fc {
+ constructor(e, t, i, n, o) {
+ super(o),
+ this.splitPosition = e.clone(),
+ this.splitPosition.stickiness = "toNext",
+ this.howMany = t,
+ this.insertionPosition = i,
+ this.graveyardPosition = n ? n.clone() : null,
+ this.graveyardPosition && (this.graveyardPosition.stickiness = "toNext")
+ }
+ get type() {
+ return "split"
+ }
+ get moveTargetPosition() {
+ const e = this.insertionPosition.path.slice();
+ return e.push(0),
+ new ea(this.insertionPosition.root, e)
+ }
+ get movedRange() {
+ const e = this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);
+ return new oa(this.splitPosition, e)
+ }
+ clone() {
+ return new this.constructor(this.splitPosition, this.howMany, this.insertionPosition, this.graveyardPosition, this.baseVersion)
+ }
+ getReversed() {
+ const e = this.splitPosition.root.document.graveyard,
+ t = new ea(e, [0]);
+ return new Mc(this.moveTargetPosition, this.howMany, this.splitPosition, t, this.baseVersion + 1)
+ }
+ _validate() {
+ const e = this.splitPosition.parent,
+ t = this.splitPosition.offset;
+ if (!e || e.maxOffset < t)
+ throw new c.a("split-operation-position-invalid", this);
+ if (!e.parent)
+ throw new c.a("split-operation-split-in-root", this);
+ if (this.howMany != e.maxOffset - this.splitPosition.offset)
+ throw new c.a("split-operation-how-many-invalid", this);
+ if (this.graveyardPosition && !this.graveyardPosition.nodeAfter)
+ throw new c.a("split-operation-graveyard-position-invalid", this)
+ }
+ _execute() {
+ const e = this.splitPosition.parent;
+ if (this.graveyardPosition)
+ bc(oa._createFromPositionAndShift(this.graveyardPosition, 1), this.insertionPosition);
+ else {
+ const t = e._clone();
+ mc(this.insertionPosition, t)
+ }
+ bc(new oa(ea._createAt(e, this.splitPosition.offset), ea._createAt(e, e.maxOffset)), this.moveTargetPosition)
+ }
+ toJSON() {
+ const e = super.toJSON();
+ return e.splitPosition = this.splitPosition.toJSON(),
+ e.insertionPosition = this.insertionPosition.toJSON(),
+ this.graveyardPosition && (e.graveyardPosition = this.graveyardPosition.toJSON()),
+ e
+ }
+ static get className() {
+ return "SplitOperation"
+ }
+ static getInsertionPosition(e) {
+ const t = e.path.slice(0, -1);
+ return t[t.length - 1]++,
+ new ea(e.root, t, "toPrevious")
+ }
+ static fromJSON(e, t) {
+ const i = ea.fromJSON(e.splitPosition, t),
+ n = ea.fromJSON(e.insertionPosition, t),
+ o = e.graveyardPosition ? ea.fromJSON(e.graveyardPosition, t) : null;
+ return new this(i, e.howMany, n, o, e.baseVersion)
+ }
+ }
+ class Nc extends Js {
+ constructor(e, t, i = "main") {
+ super(t),
+ this._document = e,
+ this.rootName = i
+ }
+ get document() {
+ return this._document
+ }
+ is(e, t) {
+ return t ? t === this.name && ("rootElement" === e || "model:rootElement" === e || "element" === e || "model:element" === e) : "rootElement" === e || "model:rootElement" === e || "element" === e || "model:element" === e || "node" === e || "model:node" === e
+ }
+ toJSON() {
+ return this.rootName
+ }
+ }
+ class Rc {
+ constructor(e, t) {
+ this.model = e,
+ this.batch = t
+ }
+ createText(e, t) {
+ return new Gs(e, t)
+ }
+ createElement(e, t) {
+ return new Js(e, t)
+ }
+ createDocumentFragment() {
+ return new gc
+ }
+ cloneElement(e, t = !0) {
+ return e._clone(t)
+ }
+ insert(e, t, i = 0) {
+ if (this._assertWriterUsedCorrectly(), e instanceof Gs && "" == e.data)
+ return;
+ const n = ea._createAt(t, i);
+ if (e.parent) {
+ if (Vc(e.root, n.root))
+ return void this.move(oa._createOn(e), n);
+ if (e.root.document)
+ throw new c.a("model-writer-insert-forbidden-move", this);
+ this.remove(e)
+ }
+ const o = n.root.document ? n.root.document.version : null,
+ r = new Tc(n, e, o);
+ if (e instanceof Gs && (r.shouldReceiveAttributes = !0), this.batch.addOperation(r), this.model.applyOperation(r), e instanceof gc)
+ for (const[t, i]of e.markers) {
+ const e = ea._createAt(i.root, 0),
+ o = {
+ range: new oa(i.start._getCombined(e, n), i.end._getCombined(e, n)),
+ usingOperation: !0,
+ affectsData: !0
+ };
+ this.model.markers.has(t) ? this.updateMarker(t, o) : this.addMarker(t, o)
+ }
+ }
+ insertText(e, t, i, n) {
+ t instanceof gc || t instanceof Js || t instanceof ea ? this.insert(this.createText(e), t, i) : this.insert(this.createText(e, t), i, n)
+ }
+ insertElement(e, t, i, n) {
+ t instanceof gc || t instanceof Js || t instanceof ea ? this.insert(this.createElement(e), t, i) : this.insert(this.createElement(e, t), i, n)
+ }
+ append(e, t) {
+ this.insert(e, t, "end")
+ }
+ appendText(e, t, i) {
+ t instanceof gc || t instanceof Js ? this.insert(this.createText(e), t, "end") : this.insert(this.createText(e, t), i, "end")
+ }
+ appendElement(e, t, i) {
+ t instanceof gc || t instanceof Js ? this.insert(this.createElement(e), t, "end") : this.insert(this.createElement(e, t), i, "end")
+ }
+ setAttribute(e, t, i) {
+ if (this._assertWriterUsedCorrectly(), i instanceof oa) {
+ const n = i.getMinimalFlatRanges();
+ for (const i of n)
+ Oc(this, e, t, i)
+ } else
+ Dc(this, e, t, i)
+ }
+ setAttributes(e, t) {
+ for (const[i, n]of fn(e))
+ this.setAttribute(i, n, t)
+ }
+ removeAttribute(e, t) {
+ if (this._assertWriterUsedCorrectly(), t instanceof oa) {
+ const i = t.getMinimalFlatRanges();
+ for (const t of i)
+ Oc(this, e, null, t)
+ } else
+ Dc(this, e, null, t)
+ }
+ clearAttributes(e) {
+ this._assertWriterUsedCorrectly();
+ const t = e => {
+ for (const t of e.getAttributeKeys())
+ this.removeAttribute(t, e)
+ };
+ if (e instanceof oa)
+ for (const i of e.getItems())
+ t(i);
+ else
+ t(e)
+ }
+ move(e, t, i) {
+ if (this._assertWriterUsedCorrectly(), !(e instanceof oa))
+ throw new c.a("writer-move-invalid-range", this);
+ if (!e.isFlat)
+ throw new c.a("writer-move-range-not-flat", this);
+ const n = ea._createAt(t, i);
+ if (n.isEqual(e.start))
+ return;
+ if (this._addOperationForAffectedMarkers("move", e), !Vc(e.root, n.root))
+ throw new c.a("writer-move-different-document", this);
+ const o = e.root.document ? e.root.document.version : null,
+ r = new Cc(e.start, e.end.offset - e.start.offset, n, o);
+ this.batch.addOperation(r),
+ this.model.applyOperation(r)
+ }
+ remove(e) {
+ this._assertWriterUsedCorrectly();
+ const t = (e instanceof oa ? e : oa._createOn(e)).getMinimalFlatRanges().reverse();
+ for (const e of t)
+ this._addOperationForAffectedMarkers("move", e), zc(e.start, e.end.offset - e.start.offset, this.batch, this.model)
+ }
+ merge(e) {
+ this._assertWriterUsedCorrectly();
+ const t = e.nodeBefore,
+ i = e.nodeAfter;
+ if (this._addOperationForAffectedMarkers("merge", e), !(t instanceof Js))
+ throw new c.a("writer-merge-no-element-before", this);
+ if (!(i instanceof Js))
+ throw new c.a("writer-merge-no-element-after", this);
+ e.root.document ? this._merge(e) : this._mergeDetached(e)
+ }
+ createPositionFromPath(e, t, i) {
+ return this.model.createPositionFromPath(e, t, i)
+ }
+ createPositionAt(e, t) {
+ return this.model.createPositionAt(e, t)
+ }
+ createPositionAfter(e) {
+ return this.model.createPositionAfter(e)
+ }
+ createPositionBefore(e) {
+ return this.model.createPositionBefore(e)
+ }
+ createRange(e, t) {
+ return this.model.createRange(e, t)
+ }
+ createRangeIn(e) {
+ return this.model.createRangeIn(e)
+ }
+ createRangeOn(e) {
+ return this.model.createRangeOn(e)
+ }
+ createSelection(e, t, i) {
+ return this.model.createSelection(e, t, i)
+ }
+ _mergeDetached(e) {
+ const t = e.nodeBefore,
+ i = e.nodeAfter;
+ this.move(oa._createIn(i), ea._createAt(t, "end")),
+ this.remove(i)
+ }
+ _merge(e) {
+ const t = ea._createAt(e.nodeBefore, "end"),
+ i = ea._createAt(e.nodeAfter, 0),
+ n = e.root.document.graveyard,
+ o = new ea(n, [0]),
+ r = e.root.document.version,
+ s = new Mc(i, e.nodeAfter.maxOffset, t, o, r);
+ this.batch.addOperation(s),
+ this.model.applyOperation(s)
+ }
+ rename(e, t) {
+ if (this._assertWriterUsedCorrectly(), !(e instanceof Js))
+ throw new c.a("writer-rename-not-element-instance", this);
+ const i = e.root.document ? e.root.document.version : null,
+ n = new Pc(ea._createBefore(e), e.name, t, i);
+ this.batch.addOperation(n),
+ this.model.applyOperation(n)
+ }
+ split(e, t) {
+ this._assertWriterUsedCorrectly();
+ let i,
+ n,
+ o = e.parent;
+ if (!o.parent)
+ throw new c.a("writer-split-element-no-parent", this);
+ if (t || (t = o.parent), !e.parent.getAncestors({
+ includeSelf: !0
+ }).includes(t))
+ throw new c.a("writer-split-invalid-limit-element", this);
+ do {
+ const t = o.root.document ? o.root.document.version : null,
+ r = o.maxOffset - e.offset,
+ s = Ic.getInsertionPosition(e),
+ a = new Ic(e, r, s, null, t);
+ this.batch.addOperation(a),
+ this.model.applyOperation(a),
+ i || n || (i = o, n = e.parent.nextSibling),
+ o = (e = this.createPositionAfter(e.parent)).parent
+ } while (o !== t);
+ return {
+ position: e,
+ range: new oa(ea._createAt(i, "end"), ea._createAt(n, 0))
+ }
+ }
+ wrap(e, t) {
+ if (this._assertWriterUsedCorrectly(), !e.isFlat)
+ throw new c.a("writer-wrap-range-not-flat", this);
+ const i = t instanceof Js ? t : new Js(t);
+ if (i.childCount > 0)
+ throw new c.a("writer-wrap-element-not-empty", this);
+ if (null !== i.parent)
+ throw new c.a("writer-wrap-element-attached", this);
+ this.insert(i, e.start);
+ const n = new oa(e.start.getShiftedBy(1), e.end.getShiftedBy(1));
+ this.move(n, ea._createAt(i, 0))
+ }
+ unwrap(e) {
+ if (this._assertWriterUsedCorrectly(), null === e.parent)
+ throw new c.a("writer-unwrap-element-no-parent", this);
+ this.move(oa._createIn(e), this.createPositionAfter(e)),
+ this.remove(e)
+ }
+ addMarker(e, t) {
+ if (this._assertWriterUsedCorrectly(), !t || "boolean" != typeof t.usingOperation)
+ throw new c.a("writer-addmarker-no-usingoperation", this);
+ const i = t.usingOperation,
+ n = t.range,
+ o = void 0 !== t.affectsData && t.affectsData;
+ if (this.model.markers.has(e))
+ throw new c.a("writer-addmarker-marker-exists", this);
+ if (!n)
+ throw new c.a("writer-addmarker-no-range", this);
+ return i ? (Lc(this, e, null, n, o), this.model.markers.get(e)) : this.model.markers._set(e, n, i, o)
+ }
+ updateMarker(e, t) {
+ this._assertWriterUsedCorrectly();
+ const i = "string" == typeof e ? e : e.name,
+ n = this.model.markers.get(i);
+ if (!n)
+ throw new c.a("writer-updatemarker-marker-not-exists", this);
+ if (!t)
+ return void this.model.markers._refresh(n);
+ const o = "boolean" == typeof t.usingOperation,
+ r = "boolean" == typeof t.affectsData,
+ s = r ? t.affectsData : n.affectsData;
+ if (!o && !t.range && !r)
+ throw new c.a("writer-updatemarker-wrong-options", this);
+ const a = n.getRange(),
+ l = t.range ? t.range : a;
+ o && t.usingOperation !== n.managedUsingOperations ? t.usingOperation ? Lc(this, i, null, l, s) : (Lc(this, i, a, null, s), this.model.markers._set(i, l, void 0, s)) : n.managedUsingOperations ? Lc(this, i, a, l, s) : this.model.markers._set(i, l, void 0, s)
+ }
+ removeMarker(e) {
+ this._assertWriterUsedCorrectly();
+ const t = "string" == typeof e ? e : e.name;
+ if (!this.model.markers.has(t))
+ throw new c.a("writer-removemarker-no-marker", this);
+ const i = this.model.markers.get(t);
+ if (!i.managedUsingOperations)
+ return void this.model.markers._remove(t);
+ Lc(this, t, i.getRange(), null, i.affectsData)
+ }
+ setSelection(e, t, i) {
+ this._assertWriterUsedCorrectly(),
+ this.model.document.selection._setTo(e, t, i)
+ }
+ setSelectionFocus(e, t) {
+ this._assertWriterUsedCorrectly(),
+ this.model.document.selection._setFocus(e, t)
+ }
+ setSelectionAttribute(e, t) {
+ if (this._assertWriterUsedCorrectly(), "string" == typeof e)
+ this._setSelectionAttribute(e, t);
+ else
+ for (const[t, i]of fn(e))
+ this._setSelectionAttribute(t, i)
+ }
+ removeSelectionAttribute(e) {
+ if (this._assertWriterUsedCorrectly(), "string" == typeof e)
+ this._removeSelectionAttribute(e);
+ else
+ for (const t of e)
+ this._removeSelectionAttribute(t)
+ }
+ overrideSelectionGravity() {
+ return this.model.document.selection._overrideGravity()
+ }
+ restoreSelectionGravity(e) {
+ this.model.document.selection._restoreGravity(e)
+ }
+ _setSelectionAttribute(e, t) {
+ const i = this.model.document.selection;
+ if (i.isCollapsed && i.anchor.parent.isEmpty) {
+ const n = _a._getStoreAttributeKey(e);
+ this.setAttribute(n, t, i.anchor.parent)
+ }
+ i._setAttribute(e, t)
+ }
+ _removeSelectionAttribute(e) {
+ const t = this.model.document.selection;
+ if (t.isCollapsed && t.anchor.parent.isEmpty) {
+ const i = _a._getStoreAttributeKey(e);
+ this.removeAttribute(i, t.anchor.parent)
+ }
+ t._removeAttribute(e)
+ }
+ _assertWriterUsedCorrectly() {
+ if (this.model._currentWriter !== this)
+ throw new c.a("writer-incorrect-use", this)
+ }
+ _addOperationForAffectedMarkers(e, t) {
+ for (const i of this.model.markers) {
+ if (!i.managedUsingOperations)
+ continue;
+ const n = i.getRange();
+ let o = !1;
+ if ("move" === e)
+ o = t.containsPosition(n.start) || t.start.isEqual(n.start) || t.containsPosition(n.end) || t.end.isEqual(n.end);
+ else {
+ const e = t.nodeBefore,
+ i = t.nodeAfter,
+ r = n.start.parent == e && n.start.isAtEnd,
+ s = n.end.parent == i && 0 == n.end.offset,
+ a = n.end.nodeAfter == i,
+ c = n.start.nodeAfter == i;
+ o = r || s || a || c
+ }
+ o && this.updateMarker(i.name, {
+ range: n
+ })
+ }
+ }
+ }
+ function Oc(e, t, i, n) {
+ const o = e.model,
+ r = o.document;
+ let s,
+ a,
+ c,
+ l = n.start;
+ for (const e of n.getWalker({
+ shallow: !0
+ }))
+ c = e.item.getAttribute(t), s && a != c && (a != i && d(), l = s), s = e.nextPosition, a = c;
+ function d() {
+ const n = new oa(l, s),
+ c = n.root.document ? r.version : null,
+ d = new xc(n, t, a, i, c);
+ e.batch.addOperation(d),
+ o.applyOperation(d)
+ }
+ s instanceof ea && s != l && a != i && d()
+ }
+ function Dc(e, t, i, n) {
+ const o = e.model,
+ r = o.document,
+ s = n.getAttribute(t);
+ let a,
+ c;
+ if (s != i) {
+ if (n.root === n) {
+ const e = n.document ? r.version : null;
+ c = new Sc(n, t, s, i, e)
+ } else {
+ a = new oa(ea._createBefore(n), e.createPositionAfter(n));
+ const o = a.root.document ? r.version : null;
+ c = new xc(a, t, s, i, o)
+ }
+ e.batch.addOperation(c),
+ o.applyOperation(c)
+ }
+ }
+ function Lc(e, t, i, n, o) {
+ const r = e.model,
+ s = r.document,
+ a = new Ec(t, i, n, r.markers, o, s.version);
+ e.batch.addOperation(a),
+ r.applyOperation(a)
+ }
+ function zc(e, t, i, n) {
+ let o;
+ if (e.root.document) {
+ const i = n.document,
+ r = new ea(i.graveyard, [0]);
+ o = new Cc(e, t, r, i.version)
+ } else
+ o = new Ac(e, t);
+ i.addOperation(o),
+ n.applyOperation(o)
+ }
+ function Vc(e, t) {
+ return e === t || e instanceof Nc && t instanceof Nc
+ }
+ class jc {
+ constructor(e) {
+ this._markerCollection = e,
+ this._changesInElement = new Map,
+ this._elementSnapshots = new Map,
+ this._changedMarkers = new Map,
+ this._changeCount = 0,
+ this._cachedChanges = null,
+ this._cachedChangesWithGraveyard = null
+ }
+ get isEmpty() {
+ return 0 == this._changesInElement.size && 0 == this._changedMarkers.size
+ }
+ refreshItem(e) {
+ if (this._isInInsertedElement(e.parent))
+ return;
+ this._markRemove(e.parent, e.startOffset, e.offsetSize),
+ this._markInsert(e.parent, e.startOffset, e.offsetSize);
+ const t = oa._createOn(e);
+ for (const e of this._markerCollection.getMarkersIntersectingRange(t)) {
+ const t = e.getRange();
+ this.bufferMarkerChange(e.name, t, t, e.affectsData)
+ }
+ this._cachedChanges = null
+ }
+ bufferOperation(e) {
+ switch (e.type) {
+ case "insert":
+ if (this._isInInsertedElement(e.position.parent))
+ return;
+ this._markInsert(e.position.parent, e.position.offset, e.nodes.maxOffset);
+ break;
+ case "addAttribute":
+ case "removeAttribute":
+ case "changeAttribute":
+ for (const t of e.range.getItems({
+ shallow: !0
+ }))
+ this._isInInsertedElement(t.parent) || this._markAttribute(t);
+ break;
+ case "remove":
+ case "move":
+ case "reinsert": {
+ if (e.sourcePosition.isEqual(e.targetPosition) || e.sourcePosition.getShiftedBy(e.howMany).isEqual(e.targetPosition))
+ return;
+ const t = this._isInInsertedElement(e.sourcePosition.parent),
+ i = this._isInInsertedElement(e.targetPosition.parent);
+ t || this._markRemove(e.sourcePosition.parent, e.sourcePosition.offset, e.howMany),
+ i || this._markInsert(e.targetPosition.parent, e.getMovedRangeStart().offset, e.howMany);
+ break
+ }
+ case "rename": {
+ if (this._isInInsertedElement(e.position.parent))
+ return;
+ this._markRemove(e.position.parent, e.position.offset, 1),
+ this._markInsert(e.position.parent, e.position.offset, 1);
+ const t = oa._createFromPositionAndShift(e.position, 1);
+ for (const e of this._markerCollection.getMarkersIntersectingRange(t)) {
+ const t = e.getRange();
+ this.bufferMarkerChange(e.name, t, t, e.affectsData)
+ }
+ break
+ }
+ case "split": {
+ const t = e.splitPosition.parent;
+ this._isInInsertedElement(t) || this._markRemove(t, e.splitPosition.offset, e.howMany),
+ this._isInInsertedElement(e.insertionPosition.parent) || this._markInsert(e.insertionPosition.parent, e.insertionPosition.offset, 1),
+ e.graveyardPosition && this._markRemove(e.graveyardPosition.parent, e.graveyardPosition.offset, 1);
+ break
+ }
+ case "merge": {
+ const t = e.sourcePosition.parent;
+ this._isInInsertedElement(t.parent) || this._markRemove(t.parent, t.startOffset, 1);
+ const i = e.graveyardPosition.parent;
+ this._markInsert(i, e.graveyardPosition.offset, 1);
+ const n = e.targetPosition.parent;
+ this._isInInsertedElement(n) || this._markInsert(n, e.targetPosition.offset, t.maxOffset);
+ break
+ }
+ }
+ this._cachedChanges = null
+ }
+ bufferMarkerChange(e, t, i, n) {
+ const o = this._changedMarkers.get(e);
+ o ? (o.newRange = i, o.affectsData = n, null == o.oldRange && null == o.newRange && this._changedMarkers.delete(e)) : this._changedMarkers.set(e, {
+ oldRange: t,
+ newRange: i,
+ affectsData: n
+ })
+ }
+ getMarkersToRemove() {
+ const e = [];
+ for (const[t, i]of this._changedMarkers)
+ null != i.oldRange && e.push({
+ name: t,
+ range: i.oldRange
+ });
+ return e
+ }
+ getMarkersToAdd() {
+ const e = [];
+ for (const[t, i]of this._changedMarkers)
+ null != i.newRange && e.push({
+ name: t,
+ range: i.newRange
+ });
+ return e
+ }
+ getChangedMarkers() {
+ return Array.from(this._changedMarkers).map(e => ({
+ name: e[0],
+ data: {
+ oldRange: e[1].oldRange,
+ newRange: e[1].newRange
+ }
+ }))
+ }
+ hasDataChanges() {
+ for (const[, e]of this._changedMarkers)
+ if (e.affectsData)
+ return !0;
+ return this._changesInElement.size > 0
+ }
+ getChanges(e = {
+ includeChangesInGraveyard: !1
+ }) {
+ if (this._cachedChanges)
+ return e.includeChangesInGraveyard ? this._cachedChangesWithGraveyard.slice() : this._cachedChanges.slice();
+ let t = [];
+ for (const e of this._changesInElement.keys()) {
+ const i = this._changesInElement.get(e).sort((e, t) => e.offset === t.offset ? e.type != t.type ? "remove" == e.type ? -1 : 1 : 0 : e.offset < t.offset ? -1 : 1),
+ n = this._elementSnapshots.get(e),
+ o = Bc(e.getChildren()),
+ r = Fc(n.length, i);
+ let s = 0,
+ a = 0;
+ for (const i of r)
+ if ("i" === i)
+ t.push(this._getInsertDiff(e, s, o[s].name)), s++;
+ else if ("r" === i)
+ t.push(this._getRemoveDiff(e, s, n[a].name)), a++;
+ else if ("a" === i) {
+ const i = o[s].attributes,
+ r = n[a].attributes;
+ let c;
+ if ("$text" == o[s].name)
+ c = new oa(ea._createAt(e, s), ea._createAt(e, s + 1));
+ else {
+ const t = e.offsetToIndex(s);
+ c = new oa(ea._createAt(e, s), ea._createAt(e.getChild(t), 0))
+ }
+ t.push(...this._getAttributesDiff(c, r, i)),
+ s++,
+ a++
+ } else
+ s++, a++
+ }
+ t.sort((e, t) => e.position.root != t.position.root ? e.position.root.rootName < t.position.root.rootName ? -1 : 1 : e.position.isEqual(t.position) ? e.changeCount - t.changeCount : e.position.isBefore(t.position) ? -1 : 1);
+ for (let e = 1, i = 0; e < t.length; e++) {
+ const n = t[i],
+ o = t[e],
+ r = "remove" == n.type && "remove" == o.type && "$text" == n.name && "$text" == o.name && n.position.isEqual(o.position),
+ s = "insert" == n.type && "insert" == o.type && "$text" == n.name && "$text" == o.name && n.position.parent == o.position.parent && n.position.offset + n.length == o.position.offset,
+ a = "attribute" == n.type && "attribute" == o.type && n.position.parent == o.position.parent && n.range.isFlat && o.range.isFlat && n.position.offset + n.length == o.position.offset && n.attributeKey == o.attributeKey && n.attributeOldValue == o.attributeOldValue && n.attributeNewValue == o.attributeNewValue;
+ r || s || a ? (n.length++, a && (n.range.end = n.range.end.getShiftedBy(1)), t[e] = null) : i = e
+ }
+ t = t.filter(e => e);
+ for (const e of t)
+ delete e.changeCount, "attribute" == e.type && (delete e.position, delete e.length);
+ return this._changeCount = 0,
+ this._cachedChangesWithGraveyard = t.slice(),
+ this._cachedChanges = t.filter(Hc),
+ e.includeChangesInGraveyard ? this._cachedChangesWithGraveyard : this._cachedChanges
+ }
+ reset() {
+ this._changesInElement.clear(),
+ this._elementSnapshots.clear(),
+ this._changedMarkers.clear(),
+ this._cachedChanges = null
+ }
+ _markInsert(e, t, i) {
+ const n = {
+ type: "insert",
+ offset: t,
+ howMany: i,
+ count: this._changeCount++
+ };
+ this._markChange(e, n)
+ }
+ _markRemove(e, t, i) {
+ const n = {
+ type: "remove",
+ offset: t,
+ howMany: i,
+ count: this._changeCount++
+ };
+ this._markChange(e, n),
+ this._removeAllNestedChanges(e, t, i)
+ }
+ _markAttribute(e) {
+ const t = {
+ type: "attribute",
+ offset: e.startOffset,
+ howMany: e.offsetSize,
+ count: this._changeCount++
+ };
+ this._markChange(e.parent, t)
+ }
+ _markChange(e, t) {
+ this._makeSnapshot(e);
+ const i = this._getChangesForElement(e);
+ this._handleChange(t, i),
+ i.push(t);
+ for (let e = 0; e < i.length; e++)
+ i[e].howMany < 1 && (i.splice(e, 1), e--)
+ }
+ _getChangesForElement(e) {
+ let t;
+ return this._changesInElement.has(e) ? t = this._changesInElement.get(e) : (t = [], this._changesInElement.set(e, t)),
+ t
+ }
+ _makeSnapshot(e) {
+ this._elementSnapshots.has(e) || this._elementSnapshots.set(e, Bc(e.getChildren()))
+ }
+ _handleChange(e, t) {
+ e.nodesToHandle = e.howMany;
+ for (const i of t) {
+ const n = e.offset + e.howMany,
+ o = i.offset + i.howMany;
+ if ("insert" == e.type && ("insert" == i.type && (e.offset <= i.offset ? i.offset += e.howMany : e.offset < o && (i.howMany += e.nodesToHandle, e.nodesToHandle = 0)), "remove" == i.type && e.offset < i.offset && (i.offset += e.howMany), "attribute" == i.type))
+ if (e.offset <= i.offset)
+ i.offset += e.howMany;
+ else if (e.offset < o) {
+ const o = i.howMany;
+ i.howMany = e.offset - i.offset,
+ t.unshift({
+ type: "attribute",
+ offset: n,
+ howMany: o - i.howMany,
+ count: this._changeCount++
+ })
+ }
+ if ("remove" == e.type) {
+ if ("insert" == i.type)
+ if (n <= i.offset)
+ i.offset -= e.howMany;
+ else if (n <= o)
+ if (e.offset < i.offset) {
+ const t = n - i.offset;
+ i.offset = e.offset,
+ i.howMany -= t,
+ e.nodesToHandle -= t
+ } else
+ i.howMany -= e.nodesToHandle, e.nodesToHandle = 0;
+ else if (e.offset <= i.offset)
+ e.nodesToHandle -= i.howMany, i.howMany = 0;
+ else if (e.offset < o) {
+ const t = o - e.offset;
+ i.howMany -= t,
+ e.nodesToHandle -= t
+ }
+ if ("remove" == i.type && (n <= i.offset ? i.offset -= e.howMany : e.offset < i.offset && (e.nodesToHandle += i.howMany, i.howMany = 0)), "attribute" == i.type)
+ if (n <= i.offset)
+ i.offset -= e.howMany;
+ else if (e.offset < i.offset) {
+ const t = n - i.offset;
+ i.offset = e.offset,
+ i.howMany -= t
+ } else if (e.offset < o)
+ if (n <= o) {
+ const n = i.howMany;
+ i.howMany = e.offset - i.offset;
+ const o = n - i.howMany - e.nodesToHandle;
+ t.unshift({
+ type: "attribute",
+ offset: e.offset,
+ howMany: o,
+ count: this._changeCount++
+ })
+ } else
+ i.howMany -= o - e.offset
+ }
+ if ("attribute" == e.type) {
+ if ("insert" == i.type)
+ if (e.offset < i.offset && n > i.offset) {
+ if (n > o) {
+ const e = {
+ type: "attribute",
+ offset: o,
+ howMany: n - o,
+ count: this._changeCount++
+ };
+ this._handleChange(e, t),
+ t.push(e)
+ }
+ e.nodesToHandle = i.offset - e.offset,
+ e.howMany = e.nodesToHandle
+ } else
+ e.offset >= i.offset && e.offset < o && (n > o ? (e.nodesToHandle = n - o, e.offset = o) : e.nodesToHandle = 0);
+ if ("remove" == i.type && e.offset < i.offset && n > i.offset) {
+ const o = {
+ type: "attribute",
+ offset: i.offset,
+ howMany: n - i.offset,
+ count: this._changeCount++
+ };
+ this._handleChange(o, t),
+ t.push(o),
+ e.nodesToHandle = i.offset - e.offset,
+ e.howMany = e.nodesToHandle
+ }
+ "attribute" == i.type && (e.offset >= i.offset && n <= o ? (e.nodesToHandle = 0, e.howMany = 0, e.offset = 0) : e.offset <= i.offset && n >= o && (i.howMany = 0))
+ }
+ }
+ e.howMany = e.nodesToHandle,
+ delete e.nodesToHandle
+ }
+ _getInsertDiff(e, t, i) {
+ return {
+ type: "insert",
+ position: ea._createAt(e, t),
+ name: i,
+ length: 1,
+ changeCount: this._changeCount++
+ }
+ }
+ _getRemoveDiff(e, t, i) {
+ return {
+ type: "remove",
+ position: ea._createAt(e, t),
+ name: i,
+ length: 1,
+ changeCount: this._changeCount++
+ }
+ }
+ _getAttributesDiff(e, t, i) {
+ const n = [];
+ i = new Map(i);
+ for (const[o, r]of t) {
+ const t = i.has(o) ? i.get(o) : null;
+ t !== r && n.push({
+ type: "attribute",
+ position: e.start,
+ range: e.clone(),
+ length: 1,
+ attributeKey: o,
+ attributeOldValue: r,
+ attributeNewValue: t,
+ changeCount: this._changeCount++
+ }),
+ i.delete(o)
+ }
+ for (const[t, o]of i)
+ n.push({
+ type: "attribute",
+ position: e.start,
+ range: e.clone(),
+ length: 1,
+ attributeKey: t,
+ attributeOldValue: null,
+ attributeNewValue: o,
+ changeCount: this._changeCount++
+ });
+ return n
+ }
+ _isInInsertedElement(e) {
+ const t = e.parent;
+ if (!t)
+ return !1;
+ const i = this._changesInElement.get(t),
+ n = e.startOffset;
+ if (i)
+ for (const e of i)
+ if ("insert" == e.type && n >= e.offset && n < e.offset + e.howMany)
+ return !0;
+ return this._isInInsertedElement(t)
+ }
+ _removeAllNestedChanges(e, t, i) {
+ const n = new oa(ea._createAt(e, t), ea._createAt(e, t + i));
+ for (const e of n.getItems({
+ shallow: !0
+ }))
+ e.is("element") && (this._elementSnapshots.delete(e), this._changesInElement.delete(e), this._removeAllNestedChanges(e, 0, e.maxOffset))
+ }
+ }
+ function Bc(e) {
+ const t = [];
+ for (const i of e)
+ if (i.is("$text"))
+ for (let e = 0; e < i.data.length; e++)
+ t.push({
+ name: "$text",
+ attributes: new Map(i.getAttributes())
+ });
+ else
+ t.push({
+ name: i.name,
+ attributes: new Map(i.getAttributes())
+ });
+ return t
+ }
+ function Fc(e, t) {
+ const i = [];
+ let n = 0,
+ o = 0;
+ for (const e of t) {
+ if (e.offset > n) {
+ for (let t = 0; t < e.offset - n; t++)
+ i.push("e");
+ o += e.offset - n
+ }
+ if ("insert" == e.type) {
+ for (let t = 0; t < e.howMany; t++)
+ i.push("i");
+ n = e.offset + e.howMany
+ } else if ("remove" == e.type) {
+ for (let t = 0; t < e.howMany; t++)
+ i.push("r");
+ n = e.offset,
+ o += e.howMany
+ } else
+ i.push(..."a".repeat(e.howMany).split("")), n = e.offset + e.howMany, o += e.howMany
+ }
+ if (o < e)
+ for (let t = 0; t < e - o - n; t++)
+ i.push("e");
+ return i
+ }
+ function Hc(e) {
+ const t = e.position && "$graveyard" == e.position.root.rootName,
+ i = e.range && "$graveyard" == e.range.root.rootName;
+ return !t && !i
+ }
+ class Uc {
+ constructor() {
+ this._operations = [],
+ this._undoPairs = new Map,
+ this._undoneOperations = new Set
+ }
+ addOperation(e) {
+ this._operations.includes(e) || this._operations.push(e)
+ }
+ getOperations(e = Number.NEGATIVE_INFINITY, t = Number.POSITIVE_INFINITY) {
+ const i = [];
+ for (const n of this._operations)
+ n.baseVersion >= e && n.baseVersion < t && i.push(n);
+ return i
+ }
+ getOperation(e) {
+ for (const t of this._operations)
+ if (t.baseVersion == e)
+ return t
+ }
+ setOperationAsUndone(e, t) {
+ this._undoPairs.set(t, e),
+ this._undoneOperations.add(e)
+ }
+ isUndoingOperation(e) {
+ return this._undoPairs.has(e)
+ }
+ isUndoneOperation(e) {
+ return this._undoneOperations.has(e)
+ }
+ getUndoneOperation(e) {
+ return this._undoPairs.get(e)
+ }
+ }
+ function Wc(e, t) {
+ return !!(i = e.charAt(t - 1)) && 1 == i.length && /[\ud800-\udbff]/.test(i) && function (e) {
+ return !!e && 1 == e.length && /[\udc00-\udfff]/.test(e)
+ }
+ (e.charAt(t));
+ var i
+ }
+ function qc(e, t) {
+ return !!(i = e.charAt(t)) && 1 == i.length && /[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(i);
+ var i
+ }
+ class $c {
+ constructor(e) {
+ this.model = e,
+ this.version = 0,
+ this.history = new Uc(this),
+ this.selection = new _a(this),
+ this.roots = new Zi({
+ idProperty: "rootName"
+ }),
+ this.differ = new jc(e.markers),
+ this._postFixers = new Set,
+ this._hasSelectionChangedFromTheLastChangeBlock = !1,
+ this.createRoot("$root", "$graveyard"),
+ this.listenTo(e, "applyOperation", (e, t) => {
+ const i = t[0];
+ if (i.isDocumentOperation && i.baseVersion !== this.version)
+ throw new c.a("model-document-applyoperation-wrong-version", this, {
+ operation: i
+ })
+ }, {
+ priority: "highest"
+ }),
+ this.listenTo(e, "applyOperation", (e, t) => {
+ const i = t[0];
+ i.isDocumentOperation && this.differ.bufferOperation(i)
+ }, {
+ priority: "high"
+ }),
+ this.listenTo(e, "applyOperation", (e, t) => {
+ const i = t[0];
+ i.isDocumentOperation && (this.version++, this.history.addOperation(i))
+ }, {
+ priority: "low"
+ }),
+ this.listenTo(this.selection, "change", () => {
+ this._hasSelectionChangedFromTheLastChangeBlock = !0
+ }),
+ this.listenTo(e.markers, "update", (e, t, i, n) => {
+ this.differ.bufferMarkerChange(t.name, i, n, t.affectsData),
+ null === i && t.on("change", (e, i) => {
+ this.differ.bufferMarkerChange(t.name, i, t.getRange(), t.affectsData)
+ })
+ })
+ }
+ get graveyard() {
+ return this.getRoot("$graveyard")
+ }
+ createRoot(e = "$root", t = "main") {
+ if (this.roots.get(t))
+ throw new c.a("model-document-createroot-name-exists", this, {
+ name: t
+ });
+ const i = new Nc(this, e, t);
+ return this.roots.add(i),
+ i
+ }
+ destroy() {
+ this.selection.destroy(),
+ this.stopListening()
+ }
+ getRoot(e = "main") {
+ return this.roots.get(e)
+ }
+ getRootNames() {
+ return Array.from(this.roots, e => e.rootName).filter(e => "$graveyard" != e)
+ }
+ registerPostFixer(e) {
+ this._postFixers.add(e)
+ }
+ toJSON() {
+ const e = ln(this);
+ return e.selection = "[engine.model.DocumentSelection]",
+ e.model = "[engine.model.Model]",
+ e
+ }
+ _handleChangeBlock(e) {
+ this._hasDocumentChangedFromTheLastChangeBlock() && (this._callPostFixers(e), this.selection.refresh(), this.differ.hasDataChanges() ? this.fire("change:data", e.batch) : this.fire("change", e.batch), this.selection.refresh(), this.differ.reset()),
+ this._hasSelectionChangedFromTheLastChangeBlock = !1
+ }
+ _hasDocumentChangedFromTheLastChangeBlock() {
+ return !this.differ.isEmpty || this._hasSelectionChangedFromTheLastChangeBlock
+ }
+ _getDefaultRoot() {
+ for (const e of this.roots)
+ if (e !== this.graveyard)
+ return e;
+ return this.graveyard
+ }
+ _getDefaultRange() {
+ const e = this._getDefaultRoot(),
+ t = this.model,
+ i = t.schema,
+ n = t.createPositionFromPath(e, [0]);
+ return i.getNearestSelectionRange(n) || t.createRange(n)
+ }
+ _validateSelectionRange(e) {
+ return Yc(e.start) && Yc(e.end)
+ }
+ _callPostFixers(e) {
+ let t = !1;
+ do {
+ for (const i of this._postFixers)
+ if (this.selection.refresh(), t = i(e), t)
+ break
+ } while (t)
+ }
+ }
+ function Yc(e) {
+ const t = e.textNode;
+ if (t) {
+ const i = t.data,
+ n = e.offset - t.startOffset;
+ return !Wc(i, n) && !qc(i, n)
+ }
+ return !0
+ }
+ Ke($c, u);
+ class Gc {
+ constructor() {
+ this._markers = new Map
+ }
+ [Symbol.iterator]() {
+ return this._markers.values()
+ }
+ has(e) {
+ return this._markers.has(e)
+ }
+ get(e) {
+ return this._markers.get(e) || null
+ }
+ _set(e, t, i = !1, n = !1) {
+ const o = e instanceof Kc ? e.name : e;
+ if (o.includes(","))
+ throw new c.a("markercollection-incorrect-marker-name", this);
+ const r = this._markers.get(o);
+ if (r) {
+ const e = r.getRange();
+ let s = !1;
+ return e.isEqual(t) || (r._attachLiveRange(ba.fromRange(t)), s = !0),
+ i != r.managedUsingOperations && (r._managedUsingOperations = i, s = !0),
+ "boolean" == typeof n && n != r.affectsData && (r._affectsData = n, s = !0),
+ s && this.fire("update:" + o, r, e, t),
+ r
+ }
+ const s = ba.fromRange(t),
+ a = new Kc(o, s, i, n);
+ return this._markers.set(o, a),
+ this.fire("update:" + o, a, null, t),
+ a
+ }
+ _remove(e) {
+ const t = e instanceof Kc ? e.name : e,
+ i = this._markers.get(t);
+ return !!i && (this._markers.delete(t), this.fire("update:" + t, i, i.getRange(), null), this._destroyMarker(i), !0)
+ }
+ _refresh(e) {
+ const t = e instanceof Kc ? e.name : e,
+ i = this._markers.get(t);
+ if (!i)
+ throw new c.a("markercollection-refresh-marker-not-exists", this);
+ const n = i.getRange();
+ this.fire("update:" + t, i, n, n, i.managedUsingOperations, i.affectsData)
+ }
+ * getMarkersAtPosition(e) {
+ for (const t of this)
+ t.getRange().containsPosition(e) && (yield t)
+ }
+ * getMarkersIntersectingRange(e) {
+ for (const t of this)
+ null !== t.getRange().getIntersection(e) && (yield t)
+ }
+ destroy() {
+ for (const e of this._markers.values())
+ this._destroyMarker(e);
+ this._markers = null,
+ this.stopListening()
+ }
+ * getMarkersGroup(e) {
+ for (const t of this._markers.values())
+ t.name.startsWith(e + ":") && (yield t)
+ }
+ _destroyMarker(e) {
+ e.stopListening(),
+ e._detachLiveRange()
+ }
+ }
+ Ke(Gc, u);
+ class Kc {
+ constructor(e, t, i, n) {
+ this.name = e,
+ this._liveRange = this._attachLiveRange(t),
+ this._managedUsingOperations = i,
+ this._affectsData = n
+ }
+ get managedUsingOperations() {
+ if (!this._liveRange)
+ throw new c.a("marker-destroyed", this);
+ return this._managedUsingOperations
+ }
+ get affectsData() {
+ if (!this._liveRange)
+ throw new c.a("marker-destroyed", this);
+ return this._affectsData
+ }
+ getStart() {
+ if (!this._liveRange)
+ throw new c.a("marker-destroyed", this);
+ return this._liveRange.start.clone()
+ }
+ getEnd() {
+ if (!this._liveRange)
+ throw new c.a("marker-destroyed", this);
+ return this._liveRange.end.clone()
+ }
+ getRange() {
+ if (!this._liveRange)
+ throw new c.a("marker-destroyed", this);
+ return this._liveRange.toRange()
+ }
+ is(e) {
+ return "marker" === e || "model:marker" === e
+ }
+ _attachLiveRange(e) {
+ return this._liveRange && this._detachLiveRange(),
+ e.delegate("change:range").to(this),
+ e.delegate("change:content").to(this),
+ this._liveRange = e,
+ e
+ }
+ _detachLiveRange() {
+ this._liveRange.stopDelegating("change:range", this),
+ this._liveRange.stopDelegating("change:content", this),
+ this._liveRange.detach(),
+ this._liveRange = null
+ }
+ }
+ Ke(Kc, u);
+ class Qc extends fc {
+ get type() {
+ return "noop"
+ }
+ clone() {
+ return new Qc(this.baseVersion)
+ }
+ getReversed() {
+ return new Qc(this.baseVersion + 1)
+ }
+ _execute() {}
+ static get className() {
+ return "NoOperation"
+ }
+ }
+ const Jc = {};
+ Jc[xc.className] = xc,
+ Jc[Tc.className] = Tc,
+ Jc[Ec.className] = Ec,
+ Jc[Cc.className] = Cc,
+ Jc[Qc.className] = Qc,
+ Jc[fc.className] = fc,
+ Jc[Pc.className] = Pc,
+ Jc[Sc.className] = Sc,
+ Jc[Ic.className] = Ic,
+ Jc[Mc.className] = Mc;
+ class Zc extends ea {
+ constructor(e, t, i = "toNone") {
+ if (super(e, t, i), !this.root.is("rootElement"))
+ throw new c.a("model-liveposition-root-not-rootelement", e);
+ Xc.call(this)
+ }
+ detach() {
+ this.stopListening()
+ }
+ is(e) {
+ return "livePosition" === e || "model:livePosition" === e || "position" == e || "model:position" === e
+ }
+ toPosition() {
+ return new ea(this.root, this.path.slice(), this.stickiness)
+ }
+ static fromPosition(e, t) {
+ return new this(e.root, e.path.slice(), t || e.stickiness)
+ }
+ }
+ function Xc() {
+ this.listenTo(this.root.document.model, "applyOperation", (e, t) => {
+ const i = t[0];
+ i.isDocumentOperation && el.call(this, i)
+ }, {
+ priority: "low"
+ })
+ }
+ function el(e) {
+ const t = this.getTransformedByOperation(e);
+ if (!this.isEqual(t)) {
+ const e = this.toPosition();
+ this.path = t.path,
+ this.root = t.root,
+ this.fire("change", e)
+ }
+ }
+ Ke(Zc, u);
+ class tl {
+ constructor(e, t, i) {
+ this.model = e,
+ this.writer = t,
+ this.position = i,
+ this.canMergeWith = new Set([this.position.parent]),
+ this.schema = e.schema,
+ this._documentFragment = t.createDocumentFragment(),
+ this._documentFragmentPosition = t.createPositionAt(this._documentFragment, 0),
+ this._firstNode = null,
+ this._lastNode = null,
+ this._lastAutoParagraph = null,
+ this._filterAttributesOf = [],
+ this._affectedStart = null,
+ this._affectedEnd = null
+ }
+ handleNodes(e) {
+ for (const t of Array.from(e))
+ this._handleNode(t);
+ this._insertPartialFragment(),
+ this._lastAutoParagraph && this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),
+ this._mergeOnRight(),
+ this.schema.removeDisallowedAttributes(this._filterAttributesOf, this.writer),
+ this._filterAttributesOf = []
+ }
+ _updateLastNodeFromAutoParagraph(e) {
+ const t = this.writer.createPositionAfter(this._lastNode),
+ i = this.writer.createPositionAfter(e);
+ if (i.isAfter(t)) {
+ if (this._lastNode = e, this.position.parent != e || !this.position.isAtEnd)
+ throw new c.a("insertcontent-invalid-insertion-position", this);
+ this.position = i,
+ this._setAffectedBoundaries(this.position)
+ }
+ }
+ getSelectionRange() {
+ return this.nodeToSelect ? oa._createOn(this.nodeToSelect) : this.model.schema.getNearestSelectionRange(this.position)
+ }
+ getAffectedRange() {
+ return this._affectedStart ? new oa(this._affectedStart, this._affectedEnd) : null
+ }
+ destroy() {
+ this._affectedStart && this._affectedStart.detach(),
+ this._affectedEnd && this._affectedEnd.detach()
+ }
+ _handleNode(e) {
+ if (this.schema.isObject(e))
+ return void this._handleObject(e);
+ let t = this._checkAndAutoParagraphToAllowedPosition(e);
+ t || (t = this._checkAndSplitToAllowedPosition(e), t) ? (this._appendToFragment(e), this._firstNode || (this._firstNode = e), this._lastNode = e) : this._handleDisallowedNode(e)
+ }
+ _insertPartialFragment() {
+ if (this._documentFragment.isEmpty)
+ return;
+ const e = Zc.fromPosition(this.position, "toNext");
+ this._setAffectedBoundaries(this.position),
+ this._documentFragment.getChild(0) == this._firstNode && (this.writer.insert(this._firstNode, this.position), this._mergeOnLeft(), this.position = e.toPosition()),
+ this._documentFragment.isEmpty || this.writer.insert(this._documentFragment, this.position),
+ this._documentFragmentPosition = this.writer.createPositionAt(this._documentFragment, 0),
+ this.position = e.toPosition(),
+ e.detach()
+ }
+ _handleObject(e) {
+ this._checkAndSplitToAllowedPosition(e) ? this._appendToFragment(e) : this._tryAutoparagraphing(e)
+ }
+ _handleDisallowedNode(e) {
+ e.is("element") ? this.handleNodes(e.getChildren()) : this._tryAutoparagraphing(e)
+ }
+ _appendToFragment(e) {
+ if (!this.schema.checkChild(this.position, e))
+ throw new c.a("insertcontent-wrong-position", this, {
+ node: e,
+ position: this.position
+ });
+ this.writer.insert(e, this._documentFragmentPosition),
+ this._documentFragmentPosition = this._documentFragmentPosition.getShiftedBy(e.offsetSize),
+ this.schema.isObject(e) && !this.schema.checkChild(this.position, "$text") ? this.nodeToSelect = e : this.nodeToSelect = null,
+ this._filterAttributesOf.push(e)
+ }
+ _setAffectedBoundaries(e) {
+ this._affectedStart || (this._affectedStart = Zc.fromPosition(e, "toPrevious")),
+ this._affectedEnd && !this._affectedEnd.isBefore(e) || (this._affectedEnd && this._affectedEnd.detach(), this._affectedEnd = Zc.fromPosition(e, "toNext"))
+ }
+ _mergeOnLeft() {
+ const e = this._firstNode;
+ if (!(e instanceof Js))
+ return;
+ if (!this._canMergeLeft(e))
+ return;
+ const t = Zc._createBefore(e);
+ t.stickiness = "toNext";
+ const i = Zc.fromPosition(this.position, "toNext");
+ this._affectedStart.isEqual(t) && (this._affectedStart.detach(), this._affectedStart = Zc._createAt(t.nodeBefore, "end", "toPrevious")),
+ this._firstNode === this._lastNode && (this._firstNode = t.nodeBefore, this._lastNode = t.nodeBefore),
+ this.writer.merge(t),
+ t.isEqual(this._affectedEnd) && this._firstNode === this._lastNode && (this._affectedEnd.detach(), this._affectedEnd = Zc._createAt(t.nodeBefore, "end", "toNext")),
+ this.position = i.toPosition(),
+ i.detach(),
+ this._filterAttributesOf.push(this.position.parent),
+ t.detach()
+ }
+ _mergeOnRight() {
+ const e = this._lastNode;
+ if (!(e instanceof Js))
+ return;
+ if (!this._canMergeRight(e))
+ return;
+ const t = Zc._createAfter(e);
+ if (t.stickiness = "toNext", !this.position.isEqual(t))
+ throw new c.a("insertcontent-invalid-insertion-position", this);
+ this.position = ea._createAt(t.nodeBefore, "end");
+ const i = Zc.fromPosition(this.position, "toPrevious");
+ this._affectedEnd.isEqual(t) && (this._affectedEnd.detach(), this._affectedEnd = Zc._createAt(t.nodeBefore, "end", "toNext")),
+ this._firstNode === this._lastNode && (this._firstNode = t.nodeBefore, this._lastNode = t.nodeBefore),
+ this.writer.merge(t),
+ t.getShiftedBy(-1).isEqual(this._affectedStart) && this._firstNode === this._lastNode && (this._affectedStart.detach(), this._affectedStart = Zc._createAt(t.nodeBefore, 0, "toPrevious")),
+ this.position = i.toPosition(),
+ i.detach(),
+ this._filterAttributesOf.push(this.position.parent),
+ t.detach()
+ }
+ _canMergeLeft(e) {
+ const t = e.previousSibling;
+ return t instanceof Js && this.canMergeWith.has(t) && this.model.schema.checkMerge(t, e)
+ }
+ _canMergeRight(e) {
+ const t = e.nextSibling;
+ return t instanceof Js && this.canMergeWith.has(t) && this.model.schema.checkMerge(e, t)
+ }
+ _tryAutoparagraphing(e) {
+ const t = this.writer.createElement("paragraph");
+ this._getAllowedIn(t, this.position.parent) && this.schema.checkChild(t, e) && (t._appendChild(e), this._handleNode(t))
+ }
+ _checkAndAutoParagraphToAllowedPosition(e) {
+ if (this.schema.checkChild(this.position.parent, e))
+ return !0;
+ if (!this.schema.checkChild(this.position.parent, "paragraph") || !this.schema.checkChild("paragraph", e))
+ return !1;
+ this._insertPartialFragment();
+ const t = this.writer.createElement("paragraph");
+ return this.writer.insert(t, this.position),
+ this._setAffectedBoundaries(this.position),
+ this._lastAutoParagraph = t,
+ this.position = this.writer.createPositionAt(t, 0),
+ !0
+ }
+ _checkAndSplitToAllowedPosition(e) {
+ const t = this._getAllowedIn(e, this.position.parent);
+ if (!t)
+ return !1;
+ for (t != this.position.parent && this._insertPartialFragment(); t != this.position.parent; ) {
+ if (this.schema.isLimit(this.position.parent))
+ return !1;
+ if (this.position.isAtStart) {
+ const e = this.position.parent;
+ this.position = this.writer.createPositionBefore(e),
+ e.isEmpty && e.parent === t && this.writer.remove(e)
+ } else if (this.position.isAtEnd)
+ this.position = this.writer.createPositionAfter(this.position.parent);
+ else {
+ const e = this.writer.createPositionAfter(this.position.parent);
+ this._setAffectedBoundaries(this.position),
+ this.writer.split(this.position),
+ this.position = e,
+ this.canMergeWith.add(this.position.nodeAfter)
+ }
+ }
+ return !0
+ }
+ _getAllowedIn(e, t) {
+ return this.schema.checkChild(t, e) ? t : t.parent ? this._getAllowedIn(e, t.parent) : null
+ }
+ }
+ function il(e, t, i = {}) {
+ if (t.isCollapsed)
+ return;
+ const n = t.getFirstRange();
+ if ("$graveyard" == n.root.rootName)
+ return;
+ const o = e.schema;
+ e.change(e => {
+ if (!i.doNotResetEntireContent && function (e, t) {
+ const i = e.getLimitElement(t);
+ if (!t.containsEntireContent(i))
+ return !1;
+ const n = t.getFirstRange();
+ if (n.start.parent == n.end.parent)
+ return !1;
+ return e.checkChild(i, "paragraph")
+ }
+ (o, t))
+ return void function (e, t) {
+ const i = e.model.schema.getLimitElement(t);
+ e.remove(e.createRangeIn(i)),
+ ol(e, e.createPositionAt(i, 0), t)
+ }
+ (e, t);
+ const[r, s] = function (e) {
+ const t = e.root.document.model,
+ i = e.start;
+ let n = e.end;
+ if (t.hasContent(e, {
+ ignoreMarkers: !0
+ })) {
+ const i = function (e) {
+ const t = e.parent,
+ i = t.root.document.model.schema,
+ n = t.getAncestors({
+ parentFirst: !0,
+ includeSelf: !0
+ });
+ for (const e of n) {
+ if (i.isLimit(e))
+ return null;
+ if (i.isBlock(e))
+ return e
+ }
+ }
+ (n);
+ if (i && n.isTouching(t.createPositionAt(i, 0))) {
+ const i = t.createSelection(e);
+ t.modifySelection(i, {
+ direction: "backward"
+ }),
+ n = i.getLastPosition()
+ }
+ }
+ return [Zc.fromPosition(i, "toPrevious"), Zc.fromPosition(n, "toNext")]
+ }
+ (n);
+ r.isTouching(s) || e.remove(e.createRange(r, s)),
+ i.leaveUnmerged || (!function (e, t, i) {
+ const n = e.model;
+ if (!nl(e.model.schema, t, i))
+ return;
+ const[o, r] = function (e, t) {
+ const i = e.getAncestors(),
+ n = t.getAncestors();
+ let o = 0;
+ for (; i[o] && i[o] == n[o]; )
+ o++;
+ return [i[o], n[o]]
+ }
+ (t, i);
+ if (!o || !r)
+ return;
+ !n.hasContent(o, {
+ ignoreMarkers: !0
+ }) && n.hasContent(r, {
+ ignoreMarkers: !0
+ }) ? function e(t, i, n, o) {
+ const r = i.parent,
+ s = n.parent;
+ if (r == o || s == o)
+ return;
+ i = t.createPositionAfter(r),
+ (n = t.createPositionBefore(s)).isEqual(i) || t.insert(r, n);
+ for (; i.parent.isEmpty; ) {
+ const e = i.parent;
+ i = t.createPositionBefore(e),
+ t.remove(e)
+ }
+ if (n = t.createPositionBefore(s), function (e, t) {
+ const i = t.nodeBefore,
+ n = t.nodeAfter;
+ i.name != n.name && e.rename(i, n.name);
+ e.clearAttributes(i),
+ e.setAttributes(Object.fromEntries(n.getAttributes()), i),
+ e.merge(t)
+ }
+ (t, n), !nl(t.model.schema, i, n))
+ return;
+ e(t, i, n, o)
+ }
+ (e, t, i, o.parent) : function e(t, i, n, o) {
+ const r = i.parent,
+ s = n.parent;
+ if (r == o || s == o)
+ return;
+ i = t.createPositionAfter(r),
+ (n = t.createPositionBefore(s)).isEqual(i) || t.insert(s, i);
+ t.merge(i);
+ for (; n.parent.isEmpty; ) {
+ const e = n.parent;
+ n = t.createPositionBefore(e),
+ t.remove(e)
+ }
+ if (!nl(t.model.schema, i, n))
+ return;
+ e(t, i, n, o)
+ }
+ (e, t, i, o.parent)
+ }
+ (e, r, s), o.removeDisallowedAttributes(r.parent.getChildren(), e)),
+ rl(e, t, r),
+ !i.doNotAutoparagraph && function (e, t) {
+ const i = e.checkChild(t, "$text"),
+ n = e.checkChild(t, "paragraph");
+ return !i && n
+ }
+ (o, r) && ol(e, r, t),
+ r.detach(),
+ s.detach()
+ })
+ }
+ function nl(e, t, i) {
+ const n = t.parent,
+ o = i.parent;
+ return n != o && (!e.isLimit(n) && !e.isLimit(o) && function (e, t, i) {
+ const n = new oa(e, t);
+ for (const e of n.getWalker())
+ if (i.isLimit(e.item))
+ return !1;
+ return !0
+ }
+ (t, i, e))
+ }
+ function ol(e, t, i) {
+ const n = e.createElement("paragraph");
+ e.insert(n, t),
+ rl(e, i, e.createPositionAt(n, 0))
+ }
+ function rl(e, t, i) {
+ t instanceof _a ? e.setSelection(i) : t.setTo(i)
+ }
+ function sl(e, t) {
+ const {
+ isForward: i,
+ walker: n,
+ unit: o,
+ schema: r
+ } = e, {
+ type: s,
+ item: a,
+ nextPosition: c
+ } = t;
+ if ("text" == s)
+ return "word" === e.unit ? function (e, t) {
+ let i = e.position.textNode;
+ if (i) {
+ let n = e.position.offset - i.startOffset;
+ for (; !cl(i.data, n, t) && !ll(i, n, t); ) {
+ e.next();
+ const o = t ? e.position.nodeAfter : e.position.nodeBefore;
+ if (o && o.is("$text")) {
+ const n = o.data.charAt(t ? 0 : o.data.length - 1);
+ ' ,.?!:;"-()'.includes(n) || (e.next(), i = e.position.textNode)
+ }
+ n = e.position.offset - i.startOffset
+ }
+ }
+ return e.position
+ }
+ (n, i) : function (e, t) {
+ const i = e.position.textNode;
+ if (i) {
+ const n = i.data;
+ let o = e.position.offset - i.startOffset;
+ for (; Wc(n, o) || "character" == t && qc(n, o); )
+ e.next(), o = e.position.offset - i.startOffset
+ }
+ return e.position
+ }
+ (n, o);
+ if (s == (i ? "elementStart" : "elementEnd")) {
+ if (r.isSelectable(a))
+ return ea._createAt(a, i ? "after" : "before");
+ if (r.checkChild(c, "$text"))
+ return c
+ } else {
+ if (r.isLimit(a))
+ return void n.skip(() => !0);
+ if (r.checkChild(c, "$text"))
+ return c
+ }
+ }
+ function al(e, t) {
+ const i = e.root,
+ n = ea._createAt(i, t ? "end" : 0);
+ return t ? new oa(e, n) : new oa(n, e)
+ }
+ function cl(e, t, i) {
+ const n = t + (i ? 0 : -1);
+ return ' ,.?!:;"-()'.includes(e.charAt(n))
+ }
+ function ll(e, t, i) {
+ return t === (i ? e.endOffset : 0)
+ }
+ function dl(e, t) {
+ const i = [];
+ Array.from(e.getItems({
+ direction: "backward"
+ })).map(e => t.createRangeOn(e)).filter(t => (t.start.isAfter(e.start) || t.start.isEqual(e.start)) && (t.end.isBefore(e.end) || t.end.isEqual(e.end))).forEach(e => {
+ i.push(e.start.parent),
+ t.remove(e)
+ }),
+ i.forEach(e => {
+ let i = e;
+ for (; i.parent && i.isEmpty; ) {
+ const e = t.createRangeOn(i);
+ i = i.parent,
+ t.remove(e)
+ }
+ })
+ }
+ function ul(e) {
+ e.document.registerPostFixer(t => function (e, t) {
+ const i = t.document.selection,
+ n = t.schema,
+ o = [];
+ let r = !1;
+ for (const e of i.getRanges()) {
+ const t = hl(e, n);
+ t && !t.isEqual(e) ? (o.push(t), r = !0) : o.push(e)
+ }
+ r && e.setSelection(function (e) {
+ const t = [];
+ t.push(e.shift());
+ for (const i of e) {
+ const e = t.pop();
+ if (i.isEqual(e))
+ t.push(e);
+ else if (i.isIntersecting(e)) {
+ const n = e.start.isAfter(i.start) ? i.start : e.start,
+ o = e.end.isAfter(i.end) ? e.end : i.end,
+ r = new oa(n, o);
+ t.push(r)
+ } else
+ t.push(e), t.push(i)
+ }
+ return t
+ }
+ (o), {
+ backward: i.isBackward
+ })
+ }
+ (t, e))
+ }
+ function hl(e, t) {
+ return e.isCollapsed ? function (e, t) {
+ const i = e.start,
+ n = t.getNearestSelectionRange(i);
+ if (!n)
+ return null;
+ if (!n.isCollapsed)
+ return n;
+ const o = n.start;
+ if (i.isEqual(o))
+ return null;
+ return new oa(o)
+ }
+ (e, t) : function (e, t) {
+ const {
+ start: i,
+ end: n
+ } = e,
+ o = t.checkChild(i, "$text"),
+ r = t.checkChild(n, "$text"),
+ s = t.getLimitElement(i),
+ a = t.getLimitElement(n);
+ if (s === a) {
+ if (o && r)
+ return null;
+ if (function (e, t, i) {
+ const n = e.nodeAfter && !i.isLimit(e.nodeAfter) || i.checkChild(e, "$text"),
+ o = t.nodeBefore && !i.isLimit(t.nodeBefore) || i.checkChild(t, "$text");
+ return n || o
+ }
+ (i, n, t)) {
+ const e = i.nodeAfter && t.isSelectable(i.nodeAfter) ? null : t.getNearestSelectionRange(i, "forward"),
+ o = n.nodeBefore && t.isSelectable(n.nodeBefore) ? null : t.getNearestSelectionRange(n, "backward"),
+ r = e ? e.start : i,
+ s = o ? o.end : n;
+ return new oa(r, s)
+ }
+ }
+ const c = s && !s.is("rootElement"),
+ l = a && !a.is("rootElement");
+ if (c || l) {
+ const e = i.nodeAfter && n.nodeBefore && i.nodeAfter.parent === n.nodeBefore.parent,
+ o = c && (!e || !gl(i.nodeAfter, t)),
+ r = l && (!e || !gl(n.nodeBefore, t));
+ let d = i,
+ u = n;
+ return o && (d = ea._createBefore(fl(s, t))),
+ r && (u = ea._createAfter(fl(a, t))),
+ new oa(d, u)
+ }
+ return null
+ }
+ (e, t)
+ }
+ function fl(e, t) {
+ let i = e,
+ n = i;
+ for (; t.isLimit(n) && n.parent; )
+ i = n, n = n.parent;
+ return i
+ }
+ function gl(e, t) {
+ return e && t.isSelectable(e)
+ }
+ class ml {
+ constructor() {
+ this.markers = new Gc,
+ this.document = new $c(this),
+ this.schema = new $a,
+ this._pendingChanges = [],
+ this._currentWriter = null,
+ ["insertContent", "deleteContent", "modifySelection", "getSelectedContent", "applyOperation"].forEach(e => this.decorate(e)),
+ this.on("applyOperation", (e, t) => {
+ t[0]._validate()
+ }, {
+ priority: "highest"
+ }),
+ this.schema.register("$root", {
+ isLimit: !0
+ }),
+ this.schema.register("$block", {
+ allowIn: "$root",
+ isBlock: !0
+ }),
+ this.schema.register("$text", {
+ allowIn: "$block",
+ isInline: !0,
+ isContent: !0
+ }),
+ this.schema.register("$clipboardHolder", {
+ allowContentOf: "$root",
+ isLimit: !0
+ }),
+ this.schema.extend("$text", {
+ allowIn: "$clipboardHolder"
+ }),
+ this.schema.register("$documentFragment", {
+ allowContentOf: "$root",
+ isLimit: !0
+ }),
+ this.schema.extend("$text", {
+ allowIn: "$documentFragment"
+ }),
+ this.schema.register("$marker"),
+ this.schema.addChildCheck((e, t) => {
+ if ("$marker" === t.name)
+ return !0
+ }),
+ ul(this),
+ this.document.registerPostFixer(Na)
+ }
+ change(e) {
+ try {
+ return 0 === this._pendingChanges.length ? (this._pendingChanges.push({
+ batch: new hc,
+ callback: e
+ }), this._runPendingChanges()[0]) : e(this._currentWriter)
+ } catch (e) {
+ c.a.rethrowUnexpectedError(e, this)
+ }
+ }
+ enqueueChange(e, t) {
+ try {
+ "string" == typeof e ? e = new hc(e) : "function" == typeof e && (t = e, e = new hc),
+ this._pendingChanges.push({
+ batch: e,
+ callback: t
+ }),
+ 1 == this._pendingChanges.length && this._runPendingChanges()
+ } catch (e) {
+ c.a.rethrowUnexpectedError(e, this)
+ }
+ }
+ applyOperation(e) {
+ e._execute()
+ }
+ insertContent(e, t, i) {
+ return function (e, t, i, n) {
+ return e.change(o => {
+ let r;
+ r = i ? i instanceof ha || i instanceof _a ? i : o.createSelection(i, n) : e.document.selection,
+ r.isCollapsed || e.deleteContent(r, {
+ doNotAutoparagraph: !0
+ });
+ const s = new tl(e, o, r.anchor);
+ let a;
+ a = t.is("documentFragment") ? t.getChildren() : [t],
+ s.handleNodes(a);
+ const c = s.getSelectionRange();
+ c && (r instanceof _a ? o.setSelection(c) : r.setTo(c));
+ const l = s.getAffectedRange() || e.createRange(r.anchor);
+ return s.destroy(),
+ l
+ })
+ }
+ (this, e, t, i)
+ }
+ deleteContent(e, t) {
+ il(this, e, t)
+ }
+ modifySelection(e, t) {
+ !function (e, t, i = {}) {
+ const n = e.schema,
+ o = "backward" != i.direction,
+ r = i.unit ? i.unit : "character",
+ s = t.focus,
+ a = new Zs({
+ boundaries: al(s, o),
+ singleCharacters: !0,
+ direction: o ? "forward" : "backward"
+ }),
+ c = {
+ walker: a,
+ schema: n,
+ isForward: o,
+ unit: r
+ };
+ let l;
+ for (; l = a.next(); ) {
+ if (l.done)
+ return;
+ const i = sl(c, l.value);
+ if (i)
+ return void(t instanceof _a ? e.change(e => {
+ e.setSelectionFocus(i)
+ }) : t.setFocus(i))
+ }
+ }
+ (this, e, t)
+ }
+ getSelectedContent(e) {
+ return function (e, t) {
+ return e.change(e => {
+ const i = e.createDocumentFragment(),
+ n = t.getFirstRange();
+ if (!n || n.isCollapsed)
+ return i;
+ const o = n.start.root,
+ r = n.start.getCommonPath(n.end),
+ s = o.getNodeByPath(r);
+ let a;
+ a = n.start.parent == n.end.parent ? n : e.createRange(e.createPositionAt(s, n.start.path[r.length]), e.createPositionAt(s, n.end.path[r.length] + 1));
+ const c = a.end.offset - a.start.offset;
+ for (const t of a.getItems({
+ shallow: !0
+ }))
+ t.is("$textProxy") ? e.appendText(t.data, t.getAttributes(), i) : e.append(e.cloneElement(t, !0), i);
+ if (a != n) {
+ const t = n._getTransformedByMove(a.start, e.createPositionAt(i, 0), c)[0],
+ o = e.createRange(e.createPositionAt(i, 0), t.start);
+ dl(e.createRange(t.end, e.createPositionAt(i, "end")), e),
+ dl(o, e)
+ }
+ return i
+ })
+ }
+ (this, e)
+ }
+ hasContent(e, t = {}) {
+ const i = e instanceof Js ? oa._createIn(e) : e;
+ if (i.isCollapsed)
+ return !1;
+ const {
+ ignoreWhitespaces: n = !1,
+ ignoreMarkers: o = !1
+ } = t;
+ if (!o)
+ for (const e of this.markers.getMarkersIntersectingRange(i))
+ if (e.affectsData)
+ return !0;
+ for (const e of i.getItems())
+ if (this.schema.isContent(e)) {
+ if (!e.is("$textProxy"))
+ return !0;
+ if (!n)
+ return !0;
+ if (-1 !== e.data.search(/\S/))
+ return !0
+ }
+ return !1
+ }
+ createPositionFromPath(e, t, i) {
+ return new ea(e, t, i)
+ }
+ createPositionAt(e, t) {
+ return ea._createAt(e, t)
+ }
+ createPositionAfter(e) {
+ return ea._createAfter(e)
+ }
+ createPositionBefore(e) {
+ return ea._createBefore(e)
+ }
+ createRange(e, t) {
+ return new oa(e, t)
+ }
+ createRangeIn(e) {
+ return oa._createIn(e)
+ }
+ createRangeOn(e) {
+ return oa._createOn(e)
+ }
+ createSelection(e, t, i) {
+ return new ha(e, t, i)
+ }
+ createBatch(e) {
+ return new hc(e)
+ }
+ createOperationFromJSON(e) {
+ return class {
+ static fromJSON(e, t) {
+ return Jc[e.__className].fromJSON(e, t)
+ }
+ }
+ .fromJSON(e, this.document)
+ }
+ destroy() {
+ this.document.destroy(),
+ this.stopListening()
+ }
+ _runPendingChanges() {
+ const e = [];
+ for (this.fire("_beforeChanges"); this._pendingChanges.length; ) {
+ const t = this._pendingChanges[0].batch;
+ this._currentWriter = new Rc(this, t);
+ const i = this._pendingChanges[0].callback(this._currentWriter);
+ e.push(i),
+ this.document._handleChangeBlock(this._currentWriter),
+ this._pendingChanges.shift(),
+ this._currentWriter = null
+ }
+ return this.fire("_afterChanges"),
+ e
+ }
+ }
+ Ke(ml, Ue);
+ class pl extends Os {
+ constructor(e) {
+ super(),
+ this.editor = e
+ }
+ set(e, t, i = {}) {
+ if ("string" == typeof t) {
+ const e = t;
+ t = (t, i) => {
+ this.editor.execute(e),
+ i()
+ }
+ }
+ super.set(e, t, i)
+ }
+ }
+ class bl {
+ constructor(e = {}) {
+ this._context = e.context || new sn({
+ language: e.language
+ }),
+ this._context._addEditor(this, !e.context);
+ const t = Array.from(this.constructor.builtinPlugins || []);
+ this.config = new Gi(e, this.constructor.defaultConfig),
+ this.config.define("plugins", t),
+ this.config.define(this._context._getEditorConfig()),
+ this.plugins = new Xi(this, t, this._context.plugins),
+ this.locale = this._context.locale,
+ this.t = this.locale.t,
+ this.commands = new Ua,
+ this.set("state", "initializing"),
+ this.once("ready", () => this.state = "ready", {
+ priority: "high"
+ }),
+ this.once("destroy", () => this.state = "destroyed", {
+ priority: "high"
+ }),
+ this.set("isReadOnly", !1),
+ this.model = new ml;
+ const i = new Qn;
+ this.data = new cc(this.model, i),
+ this.editing = new Ha(this.model, i),
+ this.editing.view.document.bind("isReadOnly").to(this),
+ this.conversion = new lc([this.editing.downcastDispatcher, this.data.downcastDispatcher], this.data.upcastDispatcher),
+ this.conversion.addAlias("dataDowncast", this.data.downcastDispatcher),
+ this.conversion.addAlias("editingDowncast", this.editing.downcastDispatcher),
+ this.keystrokes = new pl(this),
+ this.keystrokes.listenTo(this.editing.view.document)
+ }
+ initPlugins() {
+ const e = this.config,
+ t = e.get("plugins"),
+ i = e.get("removePlugins") || [],
+ n = e.get("extraPlugins") || [],
+ o = e.get("substitutePlugins") || [];
+ return this.plugins.init(t.concat(n), i, o)
+ }
+ destroy() {
+ let e = Promise.resolve();
+ return "initializing" == this.state && (e = new Promise(e => this.once("ready", e))),
+ e.then(() => {
+ this.fire("destroy"),
+ this.stopListening(),
+ this.commands.destroy()
+ }).then(() => this.plugins.destroy()).then(() => {
+ this.model.destroy(),
+ this.data.destroy(),
+ this.editing.destroy(),
+ this.keystrokes.destroy()
+ }).then(() => this._context._removeEditor(this))
+ }
+ execute(...e) {
+ try {
+ return this.commands.execute(...e)
+ } catch (e) {
+ c.a.rethrowUnexpectedError(e, this)
+ }
+ }
+ focus() {
+ this.editing.view.focus()
+ }
+ }
+ Ke(bl, Ue);
+ class wl {
+ constructor(e) {
+ this.editor = e,
+ this._components = new Map
+ }
+ * names() {
+ for (const e of this._components.values())
+ yield e.originalName
+ }
+ add(e, t) {
+ this._components.set(kl(e), {
+ callback: t,
+ originalName: e
+ })
+ }
+ create(e) {
+ if (!this.has(e))
+ throw new c.a("componentfactory-item-missing", this, {
+ name: e
+ });
+ return this._components.get(kl(e)).callback(this.editor.locale)
+ }
+ has(e) {
+ return this._components.has(kl(e))
+ }
+ }
+ function kl(e) {
+ return String(e).toLowerCase()
+ }
+ class _l {
+ constructor(e) {
+ this.editor = e,
+ this.componentFactory = new wl(e),
+ this.focusTracker = new Rs,
+ this._editableElementsMap = new Map,
+ this.listenTo(e.editing.view.document, "layoutChanged", () => this.update())
+ }
+ get element() {
+ return null
+ }
+ update() {
+ this.fire("update")
+ }
+ destroy() {
+ this.stopListening(),
+ this.focusTracker.destroy();
+ for (const e of this._editableElementsMap.values())
+ e.ckeditorInstance = null;
+ this._editableElementsMap = new Map
+ }
+ setEditableElement(e, t) {
+ this._editableElementsMap.set(e, t),
+ t.ckeditorInstance || (t.ckeditorInstance = this.editor)
+ }
+ getEditableElement(e = "main") {
+ return this._editableElementsMap.get(e)
+ }
+ getEditableElementsNames() {
+ return this._editableElementsMap.keys()
+ }
+ get _editableElements() {
+ return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.", {
+ editorUI: this
+ }),
+ this._editableElementsMap
+ }
+ }
+ Ke(_l, u);
+ var vl = {
+ setData(e) {
+ this.data.set(e)
+ },
+ getData(e) {
+ return this.data.get(e)
+ }
+ };
+ var yl = {
+ updateSourceElement() {
+ if (!this.sourceElement)
+ throw new c.a("editor-missing-sourceelement", this);
+ var e,
+ t;
+ e = this.sourceElement,
+ t = this.data.get(),
+ e instanceof HTMLTextAreaElement && (e.value = t),
+ e.innerHTML = t
+ }
+ };
+ class xl extends an {
+ static get pluginName() {
+ return "PendingActions"
+ }
+ init() {
+ this.set("hasAny", !1),
+ this._actions = new Zi({
+ idProperty: "_id"
+ }),
+ this._actions.delegate("add", "remove").to(this)
+ }
+ add(e) {
+ if ("string" != typeof e)
+ throw new c.a("pendingactions-add-invalid-message", this);
+ const t = Object.create(Ue);
+ return t.set("message", e),
+ this._actions.add(t),
+ this.hasAny = !0,
+ t
+ }
+ remove(e) {
+ this._actions.remove(e),
+ this.hasAny = !!this._actions.length
+ }
+ get first() {
+ return this._actions.get(0)
+ }
+ [Symbol.iterator]() {
+ return this._actions[Symbol.iterator]()
+ }
+ }
+ const Al = '',
+ Cl = '',
+ Tl = '',
+ El = '',
+ Pl = '',
+ Sl = '',
+ Ml = '',
+ Il = '',
+ Nl = '',
+ Rl = '',
+ Ol = '';
+ function Dl({
+ emitter: e,
+ activator: t,
+ callback: i,
+ contextElements: n
+ }) {
+ e.listenTo(document, "mousedown", (e, o) => {
+ if (!t())
+ return;
+ const r = "function" == typeof o.composedPath ? o.composedPath() : [];
+ for (const e of n)
+ if (e.contains(o.target) || r.includes(e))
+ return;
+ i()
+ })
+ }
+ function Ll(e) {
+ e.set("_isCssTransitionsDisabled", !1),
+ e.disableCssTransitions = () => {
+ e._isCssTransitionsDisabled = !0
+ },
+ e.enableCssTransitions = () => {
+ e._isCssTransitionsDisabled = !1
+ },
+ e.extendTemplate({
+ attributes: {
+ class: [e.bindTemplate.if("_isCssTransitionsDisabled", "ck-transitions-disabled")]
+ }
+ })
+ }
+ function zl({
+ view: e
+ }) {
+ e.listenTo(e.element, "submit", (t, i) => {
+ i.preventDefault(),
+ e.fire("submit")
+ }, {
+ useCapture: !0
+ })
+ }
+ class Vl extends Zi {
+ constructor(e = []) {
+ super(e, {
+ idProperty: "viewUid"
+ }),
+ this.on("add", (e, t, i) => {
+ this._renderViewIntoCollectionParent(t, i)
+ }),
+ this.on("remove", (e, t) => {
+ t.element && this._parentElement && t.element.remove()
+ }),
+ this._parentElement = null
+ }
+ destroy() {
+ this.map(e => e.destroy())
+ }
+ setParent(e) {
+ this._parentElement = e;
+ for (const e of this)
+ this._renderViewIntoCollectionParent(e)
+ }
+ delegate(...e) {
+ if (!e.length || !e.every(e => "string" == typeof e))
+ throw new c.a("ui-viewcollection-delegate-wrong-events", this);
+ return {
+ to: t => {
+ for (const i of this)
+ for (const n of e)
+ i.delegate(n).to(t);
+ this.on("add", (i, n) => {
+ for (const i of e)
+ n.delegate(i).to(t)
+ }),
+ this.on("remove", (i, n) => {
+ for (const i of e)
+ n.stopDelegating(i, t)
+ })
+ }
+ }
+ }
+ _renderViewIntoCollectionParent(e, t) {
+ e.isRendered || e.render(),
+ e.element && this._parentElement && this._parentElement.insertBefore(e.element, this._parentElement.children[t])
+ }
+ }
+ i(14);
+ class jl {
+ constructor(e) {
+ this.element = null,
+ this.isRendered = !1,
+ this.locale = e,
+ this.t = e && e.t,
+ this._viewCollections = new Zi,
+ this._unboundChildren = this.createCollection(),
+ this._viewCollections.on("add", (t, i) => {
+ i.locale = e
+ }),
+ this.decorate("render")
+ }
+ get bindTemplate() {
+ return this._bindTemplate ? this._bindTemplate : this._bindTemplate = Bl.bind(this, this)
+ }
+ createCollection(e) {
+ const t = new Vl(e);
+ return this._viewCollections.add(t),
+ t
+ }
+ registerChild(e) {
+ Ji(e) || (e = [e]);
+ for (const t of e)
+ this._unboundChildren.add(t)
+ }
+ deregisterChild(e) {
+ Ji(e) || (e = [e]);
+ for (const t of e)
+ this._unboundChildren.remove(t)
+ }
+ setTemplate(e) {
+ this.template = new Bl(e)
+ }
+ extendTemplate(e) {
+ Bl.extend(this.template, e)
+ }
+ render() {
+ if (this.isRendered)
+ throw new c.a("ui-view-render-already-rendered", this);
+ this.template && (this.element = this.template.render(), this.registerChild(this.template.getViews())),
+ this.isRendered = !0
+ }
+ destroy() {
+ this.stopListening(),
+ this._viewCollections.map(e => e.destroy()),
+ this.template && this.template._revertData && this.template.revert(this.element)
+ }
+ }
+ Ke(jl, Ir),
+ Ke(jl, Ue);
+ class Bl {
+ constructor(e) {
+ Object.assign(this, Ql(Kl(e))),
+ this._isRendered = !1,
+ this._revertData = null
+ }
+ render() {
+ const e = this._renderNode({
+ intoFragment: !0
+ });
+ return this._isRendered = !0,
+ e
+ }
+ apply(e) {
+ return this._revertData = {
+ children: [],
+ bindings: [],
+ attributes: {}
+ },
+ this._renderNode({
+ node: e,
+ isApplying: !0,
+ revertData: this._revertData
+ }),
+ e
+ }
+ revert(e) {
+ if (!this._revertData)
+ throw new c.a("ui-template-revert-not-applied", [this, e]);
+ this._revertTemplateFromNode(e, this._revertData)
+ }
+ * getViews() {
+ yield * function * e(t) {
+ if (t.children)
+ for (const i of t.children)
+ td(i) ? yield i : id(i) && (yield * e(i))
+ }
+ (this)
+ }
+ static bind(e, t) {
+ return {
+ to: (i, n) => new Hl({
+ eventNameOrFunction: i,
+ attribute: i,
+ observable: e,
+ emitter: t,
+ callback: n
+ }),
+ if : (i, n, o)=> new Ul({
+ observable: e,
+ emitter: t,
+ attribute: i,
+ valueIfTrue: n,
+ callback: o
+ })
+ }
+ }
+ static extend(e, t) {
+ if (e._isRendered)
+ throw new c.a("template-extend-render", [this, e]);
+ !function e(t, i) {
+ i.attributes && (t.attributes || (t.attributes = {}), Xl(t.attributes, i.attributes));
+ i.eventListeners && (t.eventListeners || (t.eventListeners = {}), Xl(t.eventListeners, i.eventListeners));
+ i.text && t.text.push(...i.text);
+ if (i.children && i.children.length) {
+ if (t.children.length != i.children.length)
+ throw new c.a("ui-template-extend-children-mismatch", t);
+ let n = 0;
+ for (const o of i.children)
+ e(t.children[n++], o)
+ }
+ }
+ (e, Ql(Kl(t)))
+ }
+ _renderNode(e) {
+ let t;
+ if (t = e.node ? this.tag && this.text : this.tag ? this.text : !this.text, t)
+ throw new c.a("ui-template-wrong-syntax", this);
+ return this.text ? this._renderText(e) : this._renderElement(e)
+ }
+ _renderElement(e) {
+ let t = e.node;
+ return t || (t = e.node = document.createElementNS(this.ns || "http://www.w3.org/1999/xhtml", this.tag)),
+ this._renderAttributes(e),
+ this._renderElementChildren(e),
+ this._setUpListeners(e),
+ t
+ }
+ _renderText(e) {
+ let t = e.node;
+ return t ? e.revertData.text = t.textContent : t = e.node = document.createTextNode(""),
+ Wl(this.text) ? this._bindToObservable({
+ schema: this.text,
+ updater: $l(t),
+ data: e
+ }) : t.textContent = this.text.join(""),
+ t
+ }
+ _renderAttributes(e) {
+ let t,
+ i,
+ n,
+ o;
+ if (!this.attributes)
+ return;
+ const r = e.node,
+ s = e.revertData;
+ for (t in this.attributes)
+ if (n = r.getAttribute(t), i = this.attributes[t], s && (s.attributes[t] = n), o = w(i[0]) && i[0].ns ? i[0].ns : null, Wl(i)) {
+ const a = o ? i[0].value : i;
+ s && od(t) && a.unshift(n),
+ this._bindToObservable({
+ schema: a,
+ updater: Yl(r, t, o),
+ data: e
+ })
+ } else
+ "style" == t && "string" != typeof i[0] ? this._renderStyleAttribute(i[0], e) : (s && n && od(t) && i.unshift(n), i = i.map(e => e && e.value || e).reduce((e, t) => e.concat(t), []).reduce(Zl, ""), ed(i) || r.setAttributeNS(o, t, i))
+ }
+ _renderStyleAttribute(e, t) {
+ const i = t.node;
+ for (const n in e) {
+ const o = e[n];
+ Wl(o) ? this._bindToObservable({
+ schema: [o],
+ updater: Gl(i, n),
+ data: t
+ }) : i.style[n] = o
+ }
+ }
+ _renderElementChildren(e) {
+ const t = e.node,
+ i = e.intoFragment ? document.createDocumentFragment() : t,
+ n = e.isApplying;
+ let o = 0;
+ for (const r of this.children)
+ if (nd(r)) {
+ if (!n) {
+ r.setParent(t);
+ for (const e of r)
+ i.appendChild(e.element)
+ }
+ } else if (td(r))
+ n || (r.isRendered || r.render(), i.appendChild(r.element));
+ else if (mr(r))
+ i.appendChild(r);
+ else if (n) {
+ const t = {
+ children: [],
+ bindings: [],
+ attributes: {}
+ };
+ e.revertData.children.push(t),
+ r._renderNode({
+ node: i.childNodes[o++],
+ isApplying: !0,
+ revertData: t
+ })
+ } else
+ i.appendChild(r.render());
+ e.intoFragment && t.appendChild(i)
+ }
+ _setUpListeners(e) {
+ if (this.eventListeners)
+ for (const t in this.eventListeners) {
+ const i = this.eventListeners[t].map(i => {
+ const[n, o] = t.split("@");
+ return i.activateDomEventListener(n, o, e)
+ });
+ e.revertData && e.revertData.bindings.push(i)
+ }
+ }
+ _bindToObservable({
+ schema: e,
+ updater: t,
+ data: i
+ }) {
+ const n = i.revertData;
+ ql(e, t, i);
+ const o = e.filter(e => !ed(e)).filter(e => e.observable).map(n => n.activateAttributeListener(e, t, i));
+ n && n.bindings.push(o)
+ }
+ _revertTemplateFromNode(e, t) {
+ for (const e of t.bindings)
+ for (const t of e)
+ t();
+ if (t.text)
+ e.textContent = t.text;
+ else {
+ for (const i in t.attributes) {
+ const n = t.attributes[i];
+ null === n ? e.removeAttribute(i) : e.setAttribute(i, n)
+ }
+ for (let i = 0; i < t.children.length; ++i)
+ this._revertTemplateFromNode(e.childNodes[i], t.children[i])
+ }
+ }
+ }
+ Ke(Bl, u);
+ class Fl {
+ constructor(e) {
+ Object.assign(this, e)
+ }
+ getValue(e) {
+ const t = this.observable[this.attribute];
+ return this.callback ? this.callback(t, e) : t
+ }
+ activateAttributeListener(e, t, i) {
+ const n = () => ql(e, t, i);
+ return this.emitter.listenTo(this.observable, "change:" + this.attribute, n),
+ () => {
+ this.emitter.stopListening(this.observable, "change:" + this.attribute, n)
+ }
+ }
+ }
+ class Hl extends Fl {
+ activateDomEventListener(e, t, i) {
+ const n = (e, i) => {
+ t && !i.target.matches(t) || ("function" == typeof this.eventNameOrFunction ? this.eventNameOrFunction(i) : this.observable.fire(this.eventNameOrFunction, i))
+ };
+ return this.emitter.listenTo(i.node, e, n),
+ () => {
+ this.emitter.stopListening(i.node, e, n)
+ }
+ }
+ }
+ class Ul extends Fl {
+ getValue(e) {
+ return !ed(super.getValue(e)) && (this.valueIfTrue || !0)
+ }
+ }
+ function Wl(e) {
+ return !!e && (e.value && (e = e.value), Array.isArray(e) ? e.some(Wl) : e instanceof Fl)
+ }
+ function ql(e, t, {
+ node: i
+ }) {
+ let n = function (e, t) {
+ return e.map(e => e instanceof Fl ? e.getValue(t) : e)
+ }
+ (e, i);
+ n = 1 == e.length && e[0]instanceof Ul ? n[0] : n.reduce(Zl, ""),
+ ed(n) ? t.remove() : t.set(n)
+ }
+ function $l(e) {
+ return {
+ set(t) {
+ e.textContent = t
+ },
+ remove() {
+ e.textContent = ""
+ }
+ }
+ }
+ function Yl(e, t, i) {
+ return {
+ set(n) {
+ e.setAttributeNS(i, t, n)
+ },
+ remove() {
+ e.removeAttributeNS(i, t)
+ }
+ }
+ }
+ function Gl(e, t) {
+ return {
+ set(i) {
+ e.style[t] = i
+ },
+ remove() {
+ e.style[t] = null
+ }
+ }
+ }
+ function Kl(e) {
+ return $i(e, e => {
+ if (e && (e instanceof Fl || id(e) || td(e) || nd(e)))
+ return e
+ })
+ }
+ function Ql(e) {
+ if ("string" == typeof e ? e = function (e) {
+ return {
+ text: [e]
+ }
+ }
+ (e) : e.text && function (e) {
+ e.text = en(e.text)
+ }
+ (e), e.on && (e.eventListeners = function (e) {
+ for (const t in e)
+ Jl(e, t);
+ return e
+ }
+ (e.on), delete e.on), !e.text) {
+ e.attributes && function (e) {
+ for (const t in e)
+ e[t].value && (e[t].value = en(e[t].value)), Jl(e, t)
+ }
+ (e.attributes);
+ const t = [];
+ if (e.children)
+ if (nd(e.children))
+ t.push(e.children);
+ else
+ for (const i of e.children)
+ id(i) || td(i) || mr(i) ? t.push(i) : t.push(new Bl(i));
+ e.children = t
+ }
+ return e
+ }
+ function Jl(e, t) {
+ e[t] = en(e[t])
+ }
+ function Zl(e, t) {
+ return ed(t) ? e : ed(e) ? t : `${e} ${t}`
+ }
+ function Xl(e, t) {
+ for (const i in t)
+ e[i] ? e[i].push(...t[i]) : e[i] = t[i]
+ }
+ function ed(e) {
+ return !e && 0 !== e
+ }
+ function td(e) {
+ return e instanceof jl
+ }
+ function id(e) {
+ return e instanceof Bl
+ }
+ function nd(e) {
+ return e instanceof Vl
+ }
+ function od(e) {
+ return "class" == e || "style" == e
+ }
+ class rd extends Vl {
+ constructor(e, t = []) {
+ super(t),
+ this.locale = e
+ }
+ attachToDom() {
+ this._bodyCollectionContainer = new Bl({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-reset_all", "ck-body", "ck-rounded-corners"],
+ dir: this.locale.uiLanguageDirection
+ },
+ children: this
+ }).render();
+ let e = document.querySelector(".ck-body-wrapper");
+ e || (e = function (e, t, i = {}, n = []) {
+ const o = i && i.xmlns,
+ r = o ? e.createElementNS(o, t) : e.createElement(t);
+ for (const e in i)
+ r.setAttribute(e, i[e]);
+ !ys(n) && Ji(n) || (n = [n]);
+ for (let t of n)
+ ys(t) && (t = e.createTextNode(t)), r.appendChild(t);
+ return r
+ }
+ (document, "div", {
+ class: "ck-body-wrapper"
+ }), document.body.appendChild(e)),
+ e.appendChild(this._bodyCollectionContainer)
+ }
+ detachFromDom() {
+ super.destroy(),
+ this._bodyCollectionContainer && this._bodyCollectionContainer.remove();
+ const e = document.querySelector(".ck-body-wrapper");
+ e && 0 == e.childElementCount && e.remove()
+ }
+ }
+ i(16);
+ class sd extends jl {
+ constructor() {
+ super();
+ const e = this.bindTemplate;
+ this.set("content", ""),
+ this.set("viewBox", "0 0 20 20"),
+ this.set("fillColor", ""),
+ this.setTemplate({
+ tag: "svg",
+ ns: "http://www.w3.org/2000/svg",
+ attributes: {
+ class: ["ck", "ck-icon"],
+ viewBox: e.to("viewBox")
+ }
+ })
+ }
+ render() {
+ super.render(),
+ this._updateXMLContent(),
+ this._colorFillPaths(),
+ this.on("change:content", () => {
+ this._updateXMLContent(),
+ this._colorFillPaths()
+ }),
+ this.on("change:fillColor", () => {
+ this._colorFillPaths()
+ })
+ }
+ _updateXMLContent() {
+ if (this.content) {
+ const e = (new DOMParser).parseFromString(this.content.trim(), "image/svg+xml").querySelector("svg"),
+ t = e.getAttribute("viewBox");
+ for (t && (this.viewBox = t), this.element.innerHTML = ""; e.childNodes.length > 0; )
+ this.element.appendChild(e.childNodes[0])
+ }
+ }
+ _colorFillPaths() {
+ this.fillColor && this.element.querySelectorAll(".ck-icon__fill").forEach(e => {
+ e.style.fill = this.fillColor
+ })
+ }
+ }
+ i(18);
+ class ad extends jl {
+ constructor(e) {
+ super(e),
+ this.set("text", ""),
+ this.set("position", "s");
+ const t = this.bindTemplate;
+ this.setTemplate({
+ tag: "span",
+ attributes: {
+ class: ["ck", "ck-tooltip", t.to("position", e => "ck-tooltip_" + e), t.if("text", "ck-hidden", e => !e.trim())]
+ },
+ children: [{
+ tag: "span",
+ attributes: {
+ class: ["ck", "ck-tooltip__text"]
+ },
+ children: [{
+ text: t.to("text")
+ }
+ ]
+ }
+ ]
+ })
+ }
+ }
+ i(20);
+ class cd extends jl {
+ constructor(e) {
+ super(e);
+ const t = this.bindTemplate,
+ i = s();
+ this.set("class"),
+ this.set("labelStyle"),
+ this.set("icon"),
+ this.set("isEnabled", !0),
+ this.set("isOn", !1),
+ this.set("isVisible", !0),
+ this.set("isToggleable", !1),
+ this.set("keystroke"),
+ this.set("label"),
+ this.set("tabindex", -1),
+ this.set("tooltip"),
+ this.set("tooltipPosition", "s"),
+ this.set("type", "button"),
+ this.set("withText", !1),
+ this.set("withKeystroke", !1),
+ this.children = this.createCollection(),
+ this.tooltipView = this._createTooltipView(),
+ this.labelView = this._createLabelView(i),
+ this.iconView = new sd,
+ this.iconView.extendTemplate({
+ attributes: {
+ class: "ck-button__icon"
+ }
+ }),
+ this.keystrokeView = this._createKeystrokeView(),
+ this.bind("_tooltipString").to(this, "tooltip", this, "label", this, "keystroke", this._getTooltipString.bind(this)),
+ this.setTemplate({
+ tag: "button",
+ attributes: {
+ class: ["ck", "ck-button", t.to("class"), t.if("isEnabled", "ck-disabled", e => !e), t.if("isVisible", "ck-hidden", e => !e), t.to("isOn", e => e ? "ck-on" : "ck-off"), t.if("withText", "ck-button_with-text"), t.if("withKeystroke", "ck-button_with-keystroke")],
+ type: t.to("type", e => e || "button"),
+ tabindex: t.to("tabindex"),
+ "aria-labelledby": "ck-editor__aria-label_" + i,
+ "aria-disabled": t.if("isEnabled", !0, e => !e),
+ "aria-pressed": t.to("isOn", e => !!this.isToggleable && String(e))
+ },
+ children: this.children,
+ on: {
+ mousedown: t.to(e => {
+ e.preventDefault()
+ }),
+ click: t.to(e => {
+ this.isEnabled ? this.fire("execute") : e.preventDefault()
+ })
+ }
+ })
+ }
+ render() {
+ super.render(),
+ this.icon && (this.iconView.bind("content").to(this, "icon"), this.children.add(this.iconView)),
+ this.children.add(this.tooltipView),
+ this.children.add(this.labelView),
+ this.withKeystroke && this.children.add(this.keystrokeView)
+ }
+ focus() {
+ this.element.focus()
+ }
+ _createTooltipView() {
+ const e = new ad;
+ return e.bind("text").to(this, "_tooltipString"),
+ e.bind("position").to(this, "tooltipPosition"),
+ e
+ }
+ _createLabelView(e) {
+ const t = new jl,
+ i = this.bindTemplate;
+ return t.setTemplate({
+ tag: "span",
+ attributes: {
+ class: ["ck", "ck-button__label"],
+ style: i.to("labelStyle"),
+ id: "ck-editor__aria-label_" + e
+ },
+ children: [{
+ text: this.bindTemplate.to("label")
+ }
+ ]
+ }),
+ t
+ }
+ _createKeystrokeView() {
+ const e = new jl;
+ return e.setTemplate({
+ tag: "span",
+ attributes: {
+ class: ["ck", "ck-button__keystroke"]
+ },
+ children: [{
+ text: this.bindTemplate.to("keystroke", e => Do(e))
+ }
+ ]
+ }),
+ e
+ }
+ _getTooltipString(e, t, i) {
+ return e ? "string" == typeof e ? e : (i && (i = Do(i)), e instanceof Function ? e(t, i) : `${t}${i?`($ {
+ i
+ })`:""}`) : ""
+ }
+ }
+ i(22);
+ class ld extends cd {
+ constructor(e) {
+ super(e),
+ this.isToggleable = !0,
+ this.toggleSwitchView = this._createToggleView(),
+ this.extendTemplate({
+ attributes: {
+ class: "ck-switchbutton"
+ }
+ })
+ }
+ render() {
+ super.render(),
+ this.children.add(this.toggleSwitchView)
+ }
+ _createToggleView() {
+ const e = new jl;
+ return e.setTemplate({
+ tag: "span",
+ attributes: {
+ class: ["ck", "ck-button__toggle"]
+ },
+ children: [{
+ tag: "span",
+ attributes: {
+ class: ["ck", "ck-button__toggle__inner"]
+ }
+ }
+ ]
+ }),
+ e
+ }
+ }
+ class dd {
+ constructor(e) {
+ if (Object.assign(this, e), e.actions && e.keystrokeHandler)
+ for (const t in e.actions) {
+ let i = e.actions[t];
+ "string" == typeof i && (i = [i]);
+ for (const n of i)
+ e.keystrokeHandler.set(n, (e, i) => {
+ this[t](),
+ i()
+ })
+ }
+ }
+ get first() {
+ return this.focusables.find(ud) || null
+ }
+ get last() {
+ return this.focusables.filter(ud).slice(-1)[0] || null
+ }
+ get next() {
+ return this._getFocusableItem(1)
+ }
+ get previous() {
+ return this._getFocusableItem(-1)
+ }
+ get current() {
+ let e = null;
+ return null === this.focusTracker.focusedElement ? null : (this.focusables.find((t, i) => {
+ const n = t.element === this.focusTracker.focusedElement;
+ return n && (e = i),
+ n
+ }), e)
+ }
+ focusFirst() {
+ this._focus(this.first)
+ }
+ focusLast() {
+ this._focus(this.last)
+ }
+ focusNext() {
+ this._focus(this.next)
+ }
+ focusPrevious() {
+ this._focus(this.previous)
+ }
+ _focus(e) {
+ e && e.focus()
+ }
+ _getFocusableItem(e) {
+ const t = this.current,
+ i = this.focusables.length;
+ if (!i)
+ return null;
+ if (null === t)
+ return this[1 === e ? "first" : "last"];
+ let n = (t + i + e) % i;
+ do {
+ const t = this.focusables.get(n);
+ if (ud(t))
+ return t;
+ n = (n + i + e) % i
+ } while (n !== t);
+ return null
+ }
+ }
+ function ud(e) {
+ return !(!e.focus || "none" == _r.window.getComputedStyle(e.element).display)
+ }
+ i(24);
+ var hd = '';
+ class fd extends cd {
+ constructor(e) {
+ super(e),
+ this.arrowView = this._createArrowView(),
+ this.extendTemplate({
+ attributes: {
+ "aria-haspopup": !0
+ }
+ }),
+ this.delegate("execute").to(this, "open")
+ }
+ render() {
+ super.render(),
+ this.children.add(this.arrowView)
+ }
+ _createArrowView() {
+ const e = new sd;
+ return e.content = hd,
+ e.extendTemplate({
+ attributes: {
+ class: "ck-dropdown__arrow"
+ }
+ }),
+ e
+ }
+ }
+ i(26);
+ class gd extends jl {
+ constructor(e) {
+ super(e);
+ const t = this.bindTemplate;
+ this.set("icon"),
+ this.set("isEnabled", !0),
+ this.set("isOn", !1),
+ this.set("isToggleable", !1),
+ this.set("isVisible", !0),
+ this.set("keystroke"),
+ this.set("label"),
+ this.set("tabindex", -1),
+ this.set("tooltip"),
+ this.set("tooltipPosition", "s"),
+ this.set("type", "button"),
+ this.set("withText", !1),
+ this.children = this.createCollection(),
+ this.actionView = this._createActionView(),
+ this.arrowView = this._createArrowView(),
+ this.keystrokes = new Os,
+ this.focusTracker = new Rs,
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-splitbutton", t.if("isVisible", "ck-hidden", e => !e), this.arrowView.bindTemplate.if("isOn", "ck-splitbutton_open")]
+ },
+ children: this.children
+ })
+ }
+ render() {
+ super.render(),
+ this.children.add(this.actionView),
+ this.children.add(this.arrowView),
+ this.focusTracker.add(this.actionView.element),
+ this.focusTracker.add(this.arrowView.element),
+ this.keystrokes.listenTo(this.element),
+ this.keystrokes.set("arrowright", (e, t) => {
+ this.focusTracker.focusedElement === this.actionView.element && (this.arrowView.focus(), t())
+ }),
+ this.keystrokes.set("arrowleft", (e, t) => {
+ this.focusTracker.focusedElement === this.arrowView.element && (this.actionView.focus(), t())
+ })
+ }
+ focus() {
+ this.actionView.focus()
+ }
+ _createActionView() {
+ const e = new cd;
+ return e.bind("icon", "isEnabled", "isOn", "isToggleable", "keystroke", "label", "tabindex", "tooltip", "tooltipPosition", "type", "withText").to(this),
+ e.extendTemplate({
+ attributes: {
+ class: "ck-splitbutton__action"
+ }
+ }),
+ e.delegate("execute").to(this),
+ e
+ }
+ _createArrowView() {
+ const e = new cd,
+ t = e.bindTemplate;
+ return e.icon = hd,
+ e.extendTemplate({
+ attributes: {
+ class: "ck-splitbutton__arrow",
+ "aria-haspopup": !0,
+ "aria-expanded": t.to("isOn", e => String(e))
+ }
+ }),
+ e.bind("isEnabled").to(this),
+ e.delegate("execute").to(this, "open"),
+ e
+ }
+ }
+ class md extends jl {
+ constructor(e) {
+ super(e);
+ const t = this.bindTemplate;
+ this.set("isVisible", !1),
+ this.set("position", "se"),
+ this.children = this.createCollection(),
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-reset", "ck-dropdown__panel", t.to("position", e => "ck-dropdown__panel_" + e), t.if("isVisible", "ck-dropdown__panel-visible")]
+ },
+ children: this.children,
+ on: {
+ selectstart: t.to(e => e.preventDefault())
+ }
+ })
+ }
+ focus() {
+ this.children.length && this.children.first.focus()
+ }
+ focusLast() {
+ if (this.children.length) {
+ const e = this.children.last;
+ "function" == typeof e.focusLast ? e.focusLast() : e.focus()
+ }
+ }
+ }
+ i(28);
+ function pd({
+ element: e,
+ target: t,
+ positions: i,
+ limiter: n,
+ fitInViewport: o
+ }) {
+ I(t) && (t = t()),
+ I(n) && (n = n());
+ const r = function (e) {
+ return e && e.parentNode ? e.offsetParent === _r.document.body ? null : e.offsetParent : null
+ }
+ (e),
+ s = new Ts(e),
+ a = new Ts(t);
+ let c,
+ l;
+ if (n || o) {
+ const e = function (e, t) {
+ const {
+ elementRect: i,
+ viewportRect: n
+ } = t,
+ o = i.getArea(),
+ r = function (e, {
+ targetRect: t,
+ elementRect: i,
+ limiterRect: n,
+ viewportRect: o
+ }) {
+ const r = [],
+ s = i.getArea();
+ for (const a of e) {
+ const e = bd(a, t, i);
+ if (!e)
+ continue;
+ const[c, l] = e;
+ let d = 0,
+ u = 0;
+ if (n)
+ if (o) {
+ const e = n.getIntersection(o);
+ e && (d = e.getIntersectionArea(l))
+ } else
+ d = n.getIntersectionArea(l);
+ o && (u = o.getIntersectionArea(l));
+ const h = {
+ positionName: c,
+ positionRect: l,
+ limiterIntersectArea: d,
+ viewportIntersectArea: u
+ };
+ if (d === s)
+ return [h];
+ r.push(h)
+ }
+ return r
+ }
+ (e, t);
+ if (n) {
+ const e = wd(r.filter(({
+ viewportIntersectArea: e
+ }) => e === o), o);
+ if (e)
+ return e
+ }
+ return wd(r, o)
+ }
+ (i, {
+ targetRect: a,
+ elementRect: s,
+ limiterRect: n && new Ts(n).getVisible(),
+ viewportRect: o && new Ts(_r.window)
+ });
+ [l, c] = e || bd(i[0], a, s)
+ } else [l, c] = bd(i[0], a, s);
+ let d = kd(c);
+ return r && (d = function ({
+ left: e,
+ top: t
+ }, i) {
+ const n = kd(new Ts(i)),
+ o = As(i);
+ return e -= n.left,
+ t -= n.top,
+ e += i.scrollLeft,
+ t += i.scrollTop,
+ e -= o.left,
+ t -= o.top, {
+ left: e,
+ top: t
+ }
+ }
+ (d, r)), {
+ left: d.left,
+ top: d.top,
+ name: l
+ }
+ }
+ function bd(e, t, i) {
+ const n = e(t, i);
+ if (!n)
+ return null;
+ const {
+ left: o,
+ top: r,
+ name: s
+ } = n;
+ return [s, i.clone().moveTo(o, r)]
+ }
+ function wd(e, t) {
+ let i,
+ n,
+ o = 0;
+ for (const {
+ positionName: r,
+ positionRect: s,
+ limiterIntersectArea: a,
+ viewportIntersectArea: c
+ }
+ of e) {
+ if (a === t)
+ return [r, s];
+ const e = c ** 2 + a ** 2;
+ e > o && (o = e, i = s, n = r)
+ }
+ return i ? [n, i] : null
+ }
+ function kd({
+ left: e,
+ top: t
+ }) {
+ const {
+ scrollX: i,
+ scrollY: n
+ } = _r.window;
+ return {
+ left: e + i,
+ top: t + n
+ }
+ }
+ class _d extends jl {
+ constructor(e, t, i) {
+ super(e);
+ const n = this.bindTemplate;
+ this.buttonView = t,
+ this.panelView = i,
+ this.set("isOpen", !1),
+ this.set("isEnabled", !0),
+ this.set("class"),
+ this.set("id"),
+ this.set("panelPosition", "auto"),
+ this.keystrokes = new Os,
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-dropdown", n.to("class"), n.if("isEnabled", "ck-disabled", e => !e)],
+ id: n.to("id"),
+ "aria-describedby": n.to("ariaDescribedById")
+ },
+ children: [t, i]
+ }),
+ t.extendTemplate({
+ attributes: {
+ class: ["ck-dropdown__button"]
+ }
+ })
+ }
+ render() {
+ super.render(),
+ this.listenTo(this.buttonView, "open", () => {
+ this.isOpen = !this.isOpen
+ }),
+ this.panelView.bind("isVisible").to(this, "isOpen"),
+ this.on("change:isOpen", () => {
+ this.isOpen && ("auto" === this.panelPosition ? this.panelView.position = _d._getOptimalPosition({
+ element: this.panelView.element,
+ target: this.buttonView.element,
+ fitInViewport: !0,
+ positions: this._panelPositions
+ }).name : this.panelView.position = this.panelPosition)
+ }),
+ this.keystrokes.listenTo(this.element);
+ const e = (e, t) => {
+ this.isOpen && (this.buttonView.focus(), this.isOpen = !1, t())
+ };
+ this.keystrokes.set("arrowdown", (e, t) => {
+ this.buttonView.isEnabled && !this.isOpen && (this.isOpen = !0, t())
+ }),
+ this.keystrokes.set("arrowright", (e, t) => {
+ this.isOpen && t()
+ }),
+ this.keystrokes.set("arrowleft", e),
+ this.keystrokes.set("esc", e)
+ }
+ focus() {
+ this.buttonView.focus()
+ }
+ get _panelPositions() {
+ const {
+ south: e,
+ north: t,
+ southEast: i,
+ southWest: n,
+ northEast: o,
+ northWest: r,
+ southMiddleEast: s,
+ southMiddleWest: a,
+ northMiddleEast: c,
+ northMiddleWest: l
+ } = _d.defaultPanelPositions;
+ return "rtl" !== this.locale.uiLanguageDirection ? [i, n, s, a, e, o, r, c, l, t] : [n, i, a, s, e, r, o, l, c, t]
+ }
+ }
+ _d.defaultPanelPositions = {
+ south: (e, t) => ({
+ top: e.bottom,
+ left: e.left - (t.width - e.width) / 2,
+ name: "s"
+ }),
+ southEast: e => ({
+ top: e.bottom,
+ left: e.left,
+ name: "se"
+ }),
+ southWest: (e, t) => ({
+ top: e.bottom,
+ left: e.left - t.width + e.width,
+ name: "sw"
+ }),
+ southMiddleEast: (e, t) => ({
+ top: e.bottom,
+ left: e.left - (t.width - e.width) / 4,
+ name: "sme"
+ }),
+ southMiddleWest: (e, t) => ({
+ top: e.bottom,
+ left: e.left - 3 * (t.width - e.width) / 4,
+ name: "smw"
+ }),
+ north: (e, t) => ({
+ top: e.top - t.height,
+ left: e.left - (t.width - e.width) / 2,
+ name: "n"
+ }),
+ northEast: (e, t) => ({
+ top: e.top - t.height,
+ left: e.left,
+ name: "ne"
+ }),
+ northWest: (e, t) => ({
+ top: e.top - t.height,
+ left: e.left - t.width + e.width,
+ name: "nw"
+ }),
+ northMiddleEast: (e, t) => ({
+ top: e.top - t.height,
+ left: e.left - (t.width - e.width) / 4,
+ name: "nme"
+ }),
+ northMiddleWest: (e, t) => ({
+ top: e.top - t.height,
+ left: e.left - 3 * (t.width - e.width) / 4,
+ name: "nmw"
+ })
+ },
+ _d._getOptimalPosition = pd;
+ class vd extends jl {
+ constructor(e) {
+ super(e),
+ this.setTemplate({
+ tag: "span",
+ attributes: {
+ class: ["ck", "ck-toolbar__separator"]
+ }
+ })
+ }
+ }
+ class yd extends jl {
+ constructor(e) {
+ super(e),
+ this.setTemplate({
+ tag: "span",
+ attributes: {
+ class: ["ck", "ck-toolbar__line-break"]
+ }
+ })
+ }
+ }
+ function xd(e) {
+ return Array.isArray(e) ? {
+ items: e,
+ removeItems: []
+ }
+ : e ? Object.assign({
+ items: [],
+ removeItems: []
+ }, e) : {
+ items: [],
+ removeItems: []
+ }
+ }
+ i(30);
+ class Ad extends jl {
+ constructor(e, t) {
+ super(e);
+ const i = this.bindTemplate,
+ n = this.t;
+ this.options = t || {},
+ this.set("ariaLabel", n("Editor toolbar")),
+ this.set("maxWidth", "auto"),
+ this.items = this.createCollection(),
+ this.focusTracker = new Rs,
+ this.keystrokes = new Os,
+ this.set("class"),
+ this.set("isCompact", !1),
+ this.itemsView = new Cd(e),
+ this.children = this.createCollection(),
+ this.children.add(this.itemsView),
+ this.focusables = this.createCollection(),
+ this._focusCycler = new dd({
+ focusables: this.focusables,
+ focusTracker: this.focusTracker,
+ keystrokeHandler: this.keystrokes,
+ actions: {
+ focusPrevious: ["arrowleft", "arrowup"],
+ focusNext: ["arrowright", "arrowdown"]
+ }
+ });
+ const o = ["ck", "ck-toolbar", i.to("class"), i.if("isCompact", "ck-toolbar_compact")];
+ var r;
+ this.options.shouldGroupWhenFull && this.options.isFloating && o.push("ck-toolbar_floating"),
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: o,
+ role: "toolbar",
+ "aria-label": i.to("ariaLabel"),
+ style: {
+ maxWidth: i.to("maxWidth")
+ }
+ },
+ children: this.children,
+ on: {
+ mousedown: (r = this, r.bindTemplate.to(e => {
+ e.target === r.element && e.preventDefault()
+ }))
+ }
+ }),
+ this._behavior = this.options.shouldGroupWhenFull ? new Ed(this) : new Td(this)
+ }
+ render() {
+ super.render();
+ for (const e of this.items)
+ this.focusTracker.add(e.element);
+ this.items.on("add", (e, t) => {
+ this.focusTracker.add(t.element)
+ }),
+ this.items.on("remove", (e, t) => {
+ this.focusTracker.remove(t.element)
+ }),
+ this.keystrokes.listenTo(this.element),
+ this._behavior.render(this)
+ }
+ destroy() {
+ return this._behavior.destroy(),
+ super.destroy()
+ }
+ focus() {
+ this._focusCycler.focusFirst()
+ }
+ focusLast() {
+ this._focusCycler.focusLast()
+ }
+ fillFromConfig(e, t) {
+ const i = xd(e),
+ n = i.items.filter((e, n, o) => "|" === e || -1 === i.removeItems.indexOf(e) && ("-" === e ? !this.options.shouldGroupWhenFull || (Object(c.b)("toolbarview-line-break-ignored-when-grouping-items", o), !1) : !!t.has(e) || (Object(c.b)("toolbarview-item-unavailable", {
+ name: e
+ }), !1))),
+ o = this._cleanSeparators(n).map(e => "|" === e ? new vd : "-" === e ? new yd : t.create(e));
+ this.items.addMany(o)
+ }
+ _cleanSeparators(e) {
+ const t = e => "-" !== e && "|" !== e,
+ i = e.length,
+ n = e.findIndex(t),
+ o = i - e.slice().reverse().findIndex(t);
+ return e.slice(n, o).filter((e, i, n) => {
+ if (t(e))
+ return !0;
+ return !(i > 0 && n[i - 1] === e)
+ })
+ }
+ }
+ class Cd extends jl {
+ constructor(e) {
+ super(e),
+ this.children = this.createCollection(),
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-toolbar__items"]
+ },
+ children: this.children
+ })
+ }
+ }
+ class Td {
+ constructor(e) {
+ const t = e.bindTemplate;
+ e.set("isVertical", !1),
+ e.itemsView.children.bindTo(e.items).using(e => e),
+ e.focusables.bindTo(e.items).using(e => e),
+ e.extendTemplate({
+ attributes: {
+ class: [t.if("isVertical", "ck-toolbar_vertical")]
+ }
+ })
+ }
+ render() {}
+ destroy() {}
+ }
+ class Ed {
+ constructor(e) {
+ this.view = e,
+ this.viewChildren = e.children,
+ this.viewFocusables = e.focusables,
+ this.viewItemsView = e.itemsView,
+ this.viewFocusTracker = e.focusTracker,
+ this.viewLocale = e.locale,
+ this.ungroupedItems = e.createCollection(),
+ this.groupedItems = e.createCollection(),
+ this.groupedItemsDropdown = this._createGroupedItemsDropdown(),
+ this.resizeObserver = null,
+ this.cachedPadding = null,
+ this.shouldUpdateGroupingOnNextResize = !1,
+ e.itemsView.children.bindTo(this.ungroupedItems).using(e => e),
+ this.ungroupedItems.on("add", this._updateFocusCycleableItems.bind(this)),
+ this.ungroupedItems.on("remove", this._updateFocusCycleableItems.bind(this)),
+ e.children.on("add", this._updateFocusCycleableItems.bind(this)),
+ e.children.on("remove", this._updateFocusCycleableItems.bind(this)),
+ e.items.on("change", (e, t) => {
+ const i = t.index;
+ for (const e of t.removed)
+ i >= this.ungroupedItems.length ? this.groupedItems.remove(e) : this.ungroupedItems.remove(e);
+ for (let e = i; e < i + t.added.length; e++) {
+ const n = t.added[e - i];
+ e > this.ungroupedItems.length ? this.groupedItems.add(n, e - this.ungroupedItems.length) : this.ungroupedItems.add(n, e)
+ }
+ this._updateGrouping()
+ }),
+ e.extendTemplate({
+ attributes: {
+ class: ["ck-toolbar_grouping"]
+ }
+ })
+ }
+ render(e) {
+ this.viewElement = e.element,
+ this._enableGroupingOnResize(),
+ this._enableGroupingOnMaxWidthChange(e)
+ }
+ destroy() {
+ this.groupedItemsDropdown.destroy(),
+ this.resizeObserver.destroy()
+ }
+ _updateGrouping() {
+ if (!this.viewElement.ownerDocument.body.contains(this.viewElement))
+ return;
+ if (!this.viewElement.offsetParent)
+ return void(this.shouldUpdateGroupingOnNextResize = !0);
+ const e = this.groupedItems.length;
+ let t;
+ for (; this._areItemsOverflowing; )
+ this._groupLastItem(), t = !0;
+ if (!t && this.groupedItems.length) {
+ for (; this.groupedItems.length && !this._areItemsOverflowing; )
+ this._ungroupFirstItem();
+ this._areItemsOverflowing && this._groupLastItem()
+ }
+ this.groupedItems.length !== e && this.view.fire("groupedItemsUpdate")
+ }
+ get _areItemsOverflowing() {
+ if (!this.ungroupedItems.length)
+ return !1;
+ const e = this.viewElement,
+ t = this.viewLocale.uiLanguageDirection,
+ i = new Ts(e.lastChild),
+ n = new Ts(e);
+ if (!this.cachedPadding) {
+ const i = _r.window.getComputedStyle(e),
+ n = "ltr" === t ? "paddingRight" : "paddingLeft";
+ this.cachedPadding = Number.parseInt(i[n])
+ }
+ return "ltr" === t ? i.right > n.right - this.cachedPadding : i.left < n.left + this.cachedPadding
+ }
+ _enableGroupingOnResize() {
+ let e;
+ this.resizeObserver = new Ss(this.viewElement, t => {
+ e && e === t.contentRect.width && !this.shouldUpdateGroupingOnNextResize || (this.shouldUpdateGroupingOnNextResize = !1, this._updateGrouping(), e = t.contentRect.width)
+ }),
+ this._updateGrouping()
+ }
+ _enableGroupingOnMaxWidthChange(e) {
+ e.on("change:maxWidth", () => {
+ this._updateGrouping()
+ })
+ }
+ _groupLastItem() {
+ this.groupedItems.length || (this.viewChildren.add(new vd), this.viewChildren.add(this.groupedItemsDropdown), this.viewFocusTracker.add(this.groupedItemsDropdown.element)),
+ this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last), 0)
+ }
+ _ungroupFirstItem() {
+ this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),
+ this.groupedItems.length || (this.viewChildren.remove(this.groupedItemsDropdown), this.viewChildren.remove(this.viewChildren.last), this.viewFocusTracker.remove(this.groupedItemsDropdown.element))
+ }
+ _createGroupedItemsDropdown() {
+ const e = this.viewLocale,
+ t = e.t,
+ i = Id(e);
+ return i.class = "ck-toolbar__grouped-dropdown",
+ i.panelPosition = "ltr" === e.uiLanguageDirection ? "sw" : "se",
+ function (e, t) {
+ const i = e.locale,
+ n = i.t,
+ o = e.toolbarView = new Ad(i);
+ o.set("ariaLabel", n("Dropdown toolbar")),
+ e.extendTemplate({
+ attributes: {
+ class: ["ck-toolbar-dropdown"]
+ }
+ }),
+ t.map(e => o.items.add(e)),
+ e.panelView.children.add(o),
+ o.items.delegate("execute").to(e)
+ }
+ (i, []),
+ i.buttonView.set({
+ label: t("Show more items"),
+ tooltip: !0,
+ tooltipPosition: "rtl" === e.uiLanguageDirection ? "se" : "sw",
+ icon: Ol
+ }),
+ i.toolbarView.items.bindTo(this.groupedItems).using(e => e),
+ i
+ }
+ _updateFocusCycleableItems() {
+ this.viewFocusables.clear(),
+ this.ungroupedItems.map(e => {
+ this.viewFocusables.add(e)
+ }),
+ this.groupedItems.length && this.viewFocusables.add(this.groupedItemsDropdown)
+ }
+ }
+ i(32);
+ class Pd extends jl {
+ constructor() {
+ super(),
+ this.items = this.createCollection(),
+ this.focusTracker = new Rs,
+ this.keystrokes = new Os,
+ this._focusCycler = new dd({
+ focusables: this.items,
+ focusTracker: this.focusTracker,
+ keystrokeHandler: this.keystrokes,
+ actions: {
+ focusPrevious: "arrowup",
+ focusNext: "arrowdown"
+ }
+ }),
+ this.setTemplate({
+ tag: "ul",
+ attributes: {
+ class: ["ck", "ck-reset", "ck-list"]
+ },
+ children: this.items
+ })
+ }
+ render() {
+ super.render();
+ for (const e of this.items)
+ this.focusTracker.add(e.element);
+ this.items.on("add", (e, t) => {
+ this.focusTracker.add(t.element)
+ }),
+ this.items.on("remove", (e, t) => {
+ this.focusTracker.remove(t.element)
+ }),
+ this.keystrokes.listenTo(this.element)
+ }
+ focus() {
+ this._focusCycler.focusFirst()
+ }
+ focusLast() {
+ this._focusCycler.focusLast()
+ }
+ }
+ class Sd extends jl {
+ constructor(e) {
+ super(e),
+ this.children = this.createCollection(),
+ this.setTemplate({
+ tag: "li",
+ attributes: {
+ class: ["ck", "ck-list__item"]
+ },
+ children: this.children
+ })
+ }
+ focus() {
+ this.children.first.focus()
+ }
+ }
+ class Md extends jl {
+ constructor(e) {
+ super(e),
+ this.setTemplate({
+ tag: "li",
+ attributes: {
+ class: ["ck", "ck-list__separator"]
+ }
+ })
+ }
+ }
+ i(34),
+ i(36);
+ function Id(e, t = fd) {
+ const i = new t(e),
+ n = new md(e),
+ o = new _d(e, i, n);
+ return i.bind("isEnabled").to(o),
+ i instanceof fd ? i.bind("isOn").to(o, "isOpen") : i.arrowView.bind("isOn").to(o, "isOpen"),
+ function (e) {
+ (function (e) {
+ e.on("render", () => {
+ Dl({
+ emitter: e,
+ activator: () => e.isOpen,
+ callback: () => {
+ e.isOpen = !1
+ },
+ contextElements: [e.element]
+ })
+ })
+ })(e),
+ function (e) {
+ e.on("execute", t => {
+ t.source instanceof ld || (e.isOpen = !1)
+ })
+ }
+ (e),
+ function (e) {
+ e.keystrokes.set("arrowdown", (t, i) => {
+ e.isOpen && (e.panelView.focus(), i())
+ }),
+ e.keystrokes.set("arrowup", (t, i) => {
+ e.isOpen && (e.panelView.focusLast(), i())
+ })
+ }
+ (e)
+ }
+ (o),
+ o
+ }
+ function Nd(e, t) {
+ const i = e.locale,
+ n = e.listView = new Pd(i);
+ n.items.bindTo(t).using(({
+ type: e,
+ model: t
+ }) => {
+ if ("separator" === e)
+ return new Md(i);
+ if ("button" === e || "switchbutton" === e) {
+ const n = new Sd(i);
+ let o;
+ return o = "button" === e ? new cd(i) : new ld(i),
+ o.bind(...Object.keys(t)).to(t),
+ o.delegate("execute").to(n),
+ n.children.add(o),
+ n
+ }
+ }),
+ e.panelView.children.add(n),
+ n.items.delegate("execute").to(e)
+ }
+ i(38);
+ class Rd extends jl {
+ constructor(e) {
+ super(e),
+ this.body = new rd(e)
+ }
+ render() {
+ super.render(),
+ this.body.attachToDom()
+ }
+ destroy() {
+ return this.body.detachFromDom(),
+ super.destroy()
+ }
+ }
+ i(40);
+ class Od extends jl {
+ constructor(e) {
+ super(e),
+ this.set("text"),
+ this.set("for"),
+ this.id = "ck-editor__label_" + s();
+ const t = this.bindTemplate;
+ this.setTemplate({
+ tag: "label",
+ attributes: {
+ class: ["ck", "ck-label"],
+ id: this.id,
+ for : t.to("for")
+ },
+ children: [{
+ text: t.to("text")
+ }
+ ]
+ })
+ }
+ }
+ class Dd extends Rd {
+ constructor(e) {
+ super(e),
+ this.top = this.createCollection(),
+ this.main = this.createCollection(),
+ this._voiceLabelView = this._createVoiceLabel(),
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-reset", "ck-editor", "ck-rounded-corners"],
+ role: "application",
+ dir: e.uiLanguageDirection,
+ lang: e.uiLanguage,
+ "aria-labelledby": this._voiceLabelView.id
+ },
+ children: [this._voiceLabelView, {
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-editor__top", "ck-reset_all"],
+ role: "presentation"
+ },
+ children: this.top
+ }, {
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-editor__main"],
+ role: "presentation"
+ },
+ children: this.main
+ }
+ ]
+ })
+ }
+ _createVoiceLabel() {
+ const e = this.t,
+ t = new Od;
+ return t.text = e("Rich Text Editor"),
+ t.extendTemplate({
+ attributes: {
+ class: "ck-voice-label"
+ }
+ }),
+ t
+ }
+ }
+ class Ld extends jl {
+ constructor(e, t, i) {
+ super(e),
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-content", "ck-editor__editable", "ck-rounded-corners"],
+ lang: e.contentLanguage,
+ dir: e.contentLanguageDirection
+ }
+ }),
+ this.name = null,
+ this.set("isFocused", !1),
+ this._editableElement = i,
+ this._hasExternalElement = !!this._editableElement,
+ this._editingView = t
+ }
+ render() {
+ super.render(),
+ this._hasExternalElement ? this.template.apply(this.element = this._editableElement) : this._editableElement = this.element,
+ this.on("change:isFocused", () => this._updateIsFocusedClasses()),
+ this._updateIsFocusedClasses()
+ }
+ destroy() {
+ this._hasExternalElement && this.template.revert(this._editableElement),
+ super.destroy()
+ }
+ _updateIsFocusedClasses() {
+ const e = this._editingView;
+ function t(t) {
+ e.change(i => {
+ const n = e.document.getRoot(t.name);
+ i.addClass(t.isFocused ? "ck-focused" : "ck-blurred", n),
+ i.removeClass(t.isFocused ? "ck-blurred" : "ck-focused", n)
+ })
+ }
+ e.isRenderingInProgress ? function i(n) {
+ e.once("change:isRenderingInProgress", (e, o, r) => {
+ r ? i(n) : t(n)
+ })
+ }
+ (this) : t(this)
+ }
+ }
+ class zd extends Ld {
+ constructor(e, t, i) {
+ super(e, t, i),
+ this.extendTemplate({
+ attributes: {
+ role: "textbox",
+ class: "ck-editor__editable_inline"
+ }
+ })
+ }
+ render() {
+ super.render();
+ const e = this._editingView,
+ t = this.t;
+ e.change(i => {
+ const n = e.document.getRoot(this.name);
+ i.setAttribute("aria-label", t("Rich Text Editor, %0", this.name), n)
+ })
+ }
+ }
+ i(42);
+ i(44);
+ class Vd extends jl {
+ constructor(e) {
+ super(e),
+ this.set("value"),
+ this.set("id"),
+ this.set("placeholder"),
+ this.set("isReadOnly", !1),
+ this.set("hasError", !1),
+ this.set("ariaDescribedById"),
+ this.focusTracker = new Rs,
+ this.bind("isFocused").to(this.focusTracker),
+ this.set("isEmpty", !0);
+ const t = this.bindTemplate;
+ this.setTemplate({
+ tag: "input",
+ attributes: {
+ type: "text",
+ class: ["ck", "ck-input", "ck-input-text", t.if("isFocused", "ck-input_focused"), t.if("isEmpty", "ck-input-text_empty"), t.if("hasError", "ck-error")],
+ id: t.to("id"),
+ placeholder: t.to("placeholder"),
+ readonly: t.to("isReadOnly"),
+ "aria-invalid": t.if("hasError", !0),
+ "aria-describedby": t.to("ariaDescribedById")
+ },
+ on: {
+ input: t.to("input"),
+ change: t.to(this._updateIsEmpty.bind(this))
+ }
+ })
+ }
+ render() {
+ super.render(),
+ this.focusTracker.add(this.element),
+ this._setDomElementValue(this.value),
+ this._updateIsEmpty(),
+ this.on("change:value", (e, t, i) => {
+ this._setDomElementValue(i),
+ this._updateIsEmpty()
+ })
+ }
+ select() {
+ this.element.select()
+ }
+ focus() {
+ this.element.focus()
+ }
+ _updateIsEmpty() {
+ this.isEmpty = !this.element.value
+ }
+ _setDomElementValue(e) {
+ this.element.value = e || 0 === e ? e : ""
+ }
+ }
+ i(46);
+ class jd extends jl {
+ constructor(e, t) {
+ super(e);
+ const i = "ck-labeled-field-view-" + s(),
+ n = "ck-labeled-field-view-status-" + s();
+ this.fieldView = t(this, i, n),
+ this.set("label"),
+ this.set("isEnabled", !0),
+ this.set("isEmpty", !0),
+ this.set("isFocused", !1),
+ this.set("errorText", null),
+ this.set("infoText", null),
+ this.set("class"),
+ this.set("placeholder"),
+ this.labelView = this._createLabelView(i),
+ this.statusView = this._createStatusView(n),
+ this.bind("_statusText").to(this, "errorText", this, "infoText", (e, t) => e || t);
+ const o = this.bindTemplate;
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-labeled-field-view", o.to("class"), o.if("isEnabled", "ck-disabled", e => !e), o.if("isEmpty", "ck-labeled-field-view_empty"), o.if("isFocused", "ck-labeled-field-view_focused"), o.if("placeholder", "ck-labeled-field-view_placeholder"), o.if("errorText", "ck-error")]
+ },
+ children: [{
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-labeled-field-view__input-wrapper"]
+ },
+ children: [this.fieldView, this.labelView]
+ }, this.statusView]
+ })
+ }
+ _createLabelView(e) {
+ const t = new Od(this.locale);
+ return t.for = e,
+ t.bind("text").to(this, "label"),
+ t
+ }
+ _createStatusView(e) {
+ const t = new jl(this.locale),
+ i = this.bindTemplate;
+ return t.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-labeled-field-view__status", i.if("errorText", "ck-labeled-field-view__status_error"), i.if("_statusText", "ck-hidden", e => !e)],
+ id: e,
+ role: i.if("errorText", "alert")
+ },
+ children: [{
+ text: i.to("_statusText")
+ }
+ ]
+ }),
+ t
+ }
+ focus() {
+ this.fieldView.focus()
+ }
+ }
+ function Bd(e, t, i) {
+ const n = new Vd(e.locale);
+ return n.set({
+ id: t,
+ ariaDescribedById: i
+ }),
+ n.bind("isReadOnly").to(e, "isEnabled", e => !e),
+ n.bind("hasError").to(e, "errorText", e => !!e),
+ n.on("input", () => {
+ e.errorText = null
+ }),
+ e.bind("isEmpty", "isFocused", "placeholder").to(n),
+ n
+ }
+ class Fd extends an {
+ static get pluginName() {
+ return "Notification"
+ }
+ init() {
+ this.on("show:warning", (e, t) => {
+ window.alert(t.message)
+ }, {
+ priority: "lowest"
+ })
+ }
+ showSuccess(e, t = {}) {
+ this._showNotification({
+ message: e,
+ type: "success",
+ namespace: t.namespace,
+ title: t.title
+ })
+ }
+ showInfo(e, t = {}) {
+ this._showNotification({
+ message: e,
+ type: "info",
+ namespace: t.namespace,
+ title: t.title
+ })
+ }
+ showWarning(e, t = {}) {
+ this._showNotification({
+ message: e,
+ type: "warning",
+ namespace: t.namespace,
+ title: t.title
+ })
+ }
+ _showNotification(e) {
+ const t = "show:" + e.type + (e.namespace ? ":" + e.namespace : "");
+ this.fire(t, {
+ message: e.message,
+ type: e.type,
+ title: e.title || ""
+ })
+ }
+ }
+ class Hd {
+ constructor(e, t) {
+ t && Le(this, t),
+ e && this.set(e)
+ }
+ }
+ Ke(Hd, Ue);
+ i(48);
+ const Ud = Is("px"),
+ Wd = _r.document.body;
+ class qd extends jl {
+ constructor(e) {
+ super(e);
+ const t = this.bindTemplate;
+ this.set("top", 0),
+ this.set("left", 0),
+ this.set("position", "arrow_nw"),
+ this.set("isVisible", !1),
+ this.set("withArrow", !0),
+ this.set("class"),
+ this.content = this.createCollection(),
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-balloon-panel", t.to("position", e => "ck-balloon-panel_" + e), t.if("isVisible", "ck-balloon-panel_visible"), t.if("withArrow", "ck-balloon-panel_with-arrow"), t.to("class")],
+ style: {
+ top: t.to("top", Ud),
+ left: t.to("left", Ud)
+ }
+ },
+ children: this.content
+ })
+ }
+ show() {
+ this.isVisible = !0
+ }
+ hide() {
+ this.isVisible = !1
+ }
+ attachTo(e) {
+ this.show();
+ const t = qd.defaultPositions,
+ i = Object.assign({}, {
+ element: this.element,
+ positions: [t.southArrowNorth, t.southArrowNorthMiddleWest, t.southArrowNorthMiddleEast, t.southArrowNorthWest, t.southArrowNorthEast, t.northArrowSouth, t.northArrowSouthMiddleWest, t.northArrowSouthMiddleEast, t.northArrowSouthWest, t.northArrowSouthEast],
+ limiter: Wd,
+ fitInViewport: !0
+ }, e),
+ n = qd._getOptimalPosition(i),
+ o = parseInt(n.left),
+ r = parseInt(n.top),
+ s = n.name;
+ Object.assign(this, {
+ top: r,
+ left: o,
+ position: s
+ })
+ }
+ pin(e) {
+ this.unpin(),
+ this._pinWhenIsVisibleCallback = () => {
+ this.isVisible ? this._startPinning(e) : this._stopPinning()
+ },
+ this._startPinning(e),
+ this.listenTo(this, "change:isVisible", this._pinWhenIsVisibleCallback)
+ }
+ unpin() {
+ this._pinWhenIsVisibleCallback && (this._stopPinning(), this.stopListening(this, "change:isVisible", this._pinWhenIsVisibleCallback), this._pinWhenIsVisibleCallback = null, this.hide())
+ }
+ _startPinning(e) {
+ this.attachTo(e);
+ const t = $d(e.target),
+ i = e.limiter ? $d(e.limiter) : Wd;
+ this.listenTo(_r.document, "scroll", (n, o) => {
+ const r = o.target,
+ s = t && r.contains(t),
+ a = i && r.contains(i);
+ !s && !a && t && i || this.attachTo(e)
+ }, {
+ useCapture: !0
+ }),
+ this.listenTo(_r.window, "resize", () => {
+ this.attachTo(e)
+ })
+ }
+ _stopPinning() {
+ this.stopListening(_r.document, "scroll"),
+ this.stopListening(_r.window, "resize")
+ }
+ }
+ function $d(e) {
+ return Yi(e) ? e : xs(e) ? e.commonAncestorContainer : "function" == typeof e ? $d(e()) : null
+ }
+ function Yd(e, t) {
+ return e.top - t.height - qd.arrowVerticalOffset
+ }
+ function Gd(e) {
+ return e.bottom + qd.arrowVerticalOffset
+ }
+ qd.arrowHorizontalOffset = 25,
+ qd.arrowVerticalOffset = 10,
+ qd._getOptimalPosition = pd,
+ qd.defaultPositions = {
+ northWestArrowSouthWest: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left - qd.arrowHorizontalOffset,
+ name: "arrow_sw"
+ }),
+ northWestArrowSouthMiddleWest: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left - .25 * t.width - qd.arrowHorizontalOffset,
+ name: "arrow_smw"
+ }),
+ northWestArrowSouth: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left - t.width / 2,
+ name: "arrow_s"
+ }),
+ northWestArrowSouthMiddleEast: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left - .75 * t.width + qd.arrowHorizontalOffset,
+ name: "arrow_sme"
+ }),
+ northWestArrowSouthEast: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left - t.width + qd.arrowHorizontalOffset,
+ name: "arrow_se"
+ }),
+ northArrowSouthWest: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left + e.width / 2 - qd.arrowHorizontalOffset,
+ name: "arrow_sw"
+ }),
+ northArrowSouthMiddleWest: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left + e.width / 2 - .25 * t.width - qd.arrowHorizontalOffset,
+ name: "arrow_smw"
+ }),
+ northArrowSouth: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left + e.width / 2 - t.width / 2,
+ name: "arrow_s"
+ }),
+ northArrowSouthMiddleEast: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left + e.width / 2 - .75 * t.width + qd.arrowHorizontalOffset,
+ name: "arrow_sme"
+ }),
+ northArrowSouthEast: (e, t) => ({
+ top: Yd(e, t),
+ left: e.left + e.width / 2 - t.width + qd.arrowHorizontalOffset,
+ name: "arrow_se"
+ }),
+ northEastArrowSouthWest: (e, t) => ({
+ top: Yd(e, t),
+ left: e.right - qd.arrowHorizontalOffset,
+ name: "arrow_sw"
+ }),
+ northEastArrowSouthMiddleWest: (e, t) => ({
+ top: Yd(e, t),
+ left: e.right - .25 * t.width - qd.arrowHorizontalOffset,
+ name: "arrow_smw"
+ }),
+ northEastArrowSouth: (e, t) => ({
+ top: Yd(e, t),
+ left: e.right - t.width / 2,
+ name: "arrow_s"
+ }),
+ northEastArrowSouthMiddleEast: (e, t) => ({
+ top: Yd(e, t),
+ left: e.right - .75 * t.width + qd.arrowHorizontalOffset,
+ name: "arrow_sme"
+ }),
+ northEastArrowSouthEast: (e, t) => ({
+ top: Yd(e, t),
+ left: e.right - t.width + qd.arrowHorizontalOffset,
+ name: "arrow_se"
+ }),
+ southWestArrowNorthWest: (e, t) => ({
+ top: Gd(e),
+ left: e.left - qd.arrowHorizontalOffset,
+ name: "arrow_nw"
+ }),
+ southWestArrowNorthMiddleWest: (e, t) => ({
+ top: Gd(e),
+ left: e.left - .25 * t.width - qd.arrowHorizontalOffset,
+ name: "arrow_nmw"
+ }),
+ southWestArrowNorth: (e, t) => ({
+ top: Gd(e),
+ left: e.left - t.width / 2,
+ name: "arrow_n"
+ }),
+ southWestArrowNorthMiddleEast: (e, t) => ({
+ top: Gd(e),
+ left: e.left - .75 * t.width + qd.arrowHorizontalOffset,
+ name: "arrow_nme"
+ }),
+ southWestArrowNorthEast: (e, t) => ({
+ top: Gd(e),
+ left: e.left - t.width + qd.arrowHorizontalOffset,
+ name: "arrow_ne"
+ }),
+ southArrowNorthWest: (e, t) => ({
+ top: Gd(e),
+ left: e.left + e.width / 2 - qd.arrowHorizontalOffset,
+ name: "arrow_nw"
+ }),
+ southArrowNorthMiddleWest: (e, t) => ({
+ top: Gd(e),
+ left: e.left + e.width / 2 - .25 * t.width - qd.arrowHorizontalOffset,
+ name: "arrow_nmw"
+ }),
+ southArrowNorth: (e, t) => ({
+ top: Gd(e),
+ left: e.left + e.width / 2 - t.width / 2,
+ name: "arrow_n"
+ }),
+ southArrowNorthMiddleEast: (e, t) => ({
+ top: Gd(e),
+ left: e.left + e.width / 2 - .75 * t.width + qd.arrowHorizontalOffset,
+ name: "arrow_nme"
+ }),
+ southArrowNorthEast: (e, t) => ({
+ top: Gd(e),
+ left: e.left + e.width / 2 - t.width + qd.arrowHorizontalOffset,
+ name: "arrow_ne"
+ }),
+ southEastArrowNorthWest: (e, t) => ({
+ top: Gd(e),
+ left: e.right - qd.arrowHorizontalOffset,
+ name: "arrow_nw"
+ }),
+ southEastArrowNorthMiddleWest: (e, t) => ({
+ top: Gd(e),
+ left: e.right - .25 * t.width - qd.arrowHorizontalOffset,
+ name: "arrow_nmw"
+ }),
+ southEastArrowNorth: (e, t) => ({
+ top: Gd(e),
+ left: e.right - t.width / 2,
+ name: "arrow_n"
+ }),
+ southEastArrowNorthMiddleEast: (e, t) => ({
+ top: Gd(e),
+ left: e.right - .75 * t.width + qd.arrowHorizontalOffset,
+ name: "arrow_nme"
+ }),
+ southEastArrowNorthEast: (e, t) => ({
+ top: Gd(e),
+ left: e.right - t.width + qd.arrowHorizontalOffset,
+ name: "arrow_ne"
+ })
+ };
+ i(50),
+ i(52);
+ const Kd = Is("px");
+ class Qd extends Qe {
+ static get pluginName() {
+ return "ContextualBalloon"
+ }
+ constructor(e) {
+ super(e),
+ this.positionLimiter = () => {
+ const e = this.editor.editing.view,
+ t = e.document.selection.editableElement;
+ return t ? e.domConverter.mapViewToDom(t.root) : null
+ },
+ this.set("visibleView", null),
+ this.view = new qd(e.locale),
+ e.ui.view.body.add(this.view),
+ e.ui.focusTracker.add(this.view.element),
+ this._viewToStack = new Map,
+ this._idToStack = new Map,
+ this.set("_numberOfStacks", 0),
+ this.set("_singleViewMode", !1),
+ this._rotatorView = this._createRotatorView(),
+ this._fakePanelsView = this._createFakePanelsView()
+ }
+ hasView(e) {
+ return Array.from(this._viewToStack.keys()).includes(e)
+ }
+ add(e) {
+ if (this.hasView(e.view))
+ throw new c.a("contextualballoon-add-view-exist", [this, e]);
+ const t = e.stackId || "main";
+ if (!this._idToStack.has(t))
+ return this._idToStack.set(t, new Map([[e.view, e]])), this._viewToStack.set(e.view, this._idToStack.get(t)), this._numberOfStacks = this._idToStack.size, void(this._visibleStack && !e.singleViewMode || this.showStack(t));
+ const i = this._idToStack.get(t);
+ e.singleViewMode && this.showStack(t),
+ i.set(e.view, e),
+ this._viewToStack.set(e.view, i),
+ i === this._visibleStack && this._showView(e)
+ }
+ remove(e) {
+ if (!this.hasView(e))
+ throw new c.a("contextualballoon-remove-view-not-exist", [this, e]);
+ const t = this._viewToStack.get(e);
+ this._singleViewMode && this.visibleView === e && (this._singleViewMode = !1),
+ this.visibleView === e && (1 === t.size ? this._idToStack.size > 1 ? this._showNextStack() : (this.view.hide(), this.visibleView = null, this._rotatorView.hideView()) : this._showView(Array.from(t.values())[t.size - 2])),
+ 1 === t.size ? (this._idToStack.delete(this._getStackId(t)), this._numberOfStacks = this._idToStack.size) : t.delete(e),
+ this._viewToStack.delete(e)
+ }
+ updatePosition(e) {
+ e && (this._visibleStack.get(this.visibleView).position = e),
+ this.view.pin(this._getBalloonPosition()),
+ this._fakePanelsView.updatePosition()
+ }
+ showStack(e) {
+ this.visibleStack = e;
+ const t = this._idToStack.get(e);
+ if (!t)
+ throw new c.a("contextualballoon-showstack-stack-not-exist", this);
+ this._visibleStack !== t && this._showView(Array.from(t.values()).pop())
+ }
+ get _visibleStack() {
+ return this._viewToStack.get(this.visibleView)
+ }
+ _getStackId(e) {
+ return Array.from(this._idToStack.entries()).find(t => t[1] === e)[0]
+ }
+ _showNextStack() {
+ const e = Array.from(this._idToStack.values());
+ let t = e.indexOf(this._visibleStack) + 1;
+ e[t] || (t = 0),
+ this.showStack(this._getStackId(e[t]))
+ }
+ _showPrevStack() {
+ const e = Array.from(this._idToStack.values());
+ let t = e.indexOf(this._visibleStack) - 1;
+ e[t] || (t = e.length - 1),
+ this.showStack(this._getStackId(e[t]))
+ }
+ _createRotatorView() {
+ const e = new Jd(this.editor.locale),
+ t = this.editor.locale.t;
+ return this.view.content.add(e),
+ e.bind("isNavigationVisible").to(this, "_numberOfStacks", this, "_singleViewMode", (e, t) => !t && e > 1),
+ e.on("change:isNavigationVisible", () => this.updatePosition(), {
+ priority: "low"
+ }),
+ e.bind("counter").to(this, "visibleView", this, "_numberOfStacks", (e, i) => {
+ if (i < 2)
+ return "";
+ const n = Array.from(this._idToStack.values()).indexOf(this._visibleStack) + 1;
+ return t("%0 of %1", [n, i])
+ }),
+ e.buttonNextView.on("execute", () => {
+ e.focusTracker.isFocused && this.editor.editing.view.focus(),
+ this._showNextStack()
+ }),
+ e.buttonPrevView.on("execute", () => {
+ e.focusTracker.isFocused && this.editor.editing.view.focus(),
+ this._showPrevStack()
+ }),
+ e
+ }
+ _createFakePanelsView() {
+ const e = new Zd(this.editor.locale, this.view);
+ return e.bind("numberOfPanels").to(this, "_numberOfStacks", this, "_singleViewMode", (e, t) => !t && e >= 2 ? Math.min(e - 1, 2) : 0),
+ e.listenTo(this.view, "change:top", () => e.updatePosition()),
+ e.listenTo(this.view, "change:left", () => e.updatePosition()),
+ this.editor.ui.view.body.add(e),
+ e
+ }
+ _showView({
+ view: e,
+ balloonClassName: t = "",
+ withArrow: i = !0,
+ singleViewMode: n = !1
+ }) {
+ this.view.class = t,
+ this.view.withArrow = i,
+ this._rotatorView.showView(e),
+ this.visibleView = e,
+ this.view.pin(this._getBalloonPosition()),
+ this._fakePanelsView.updatePosition(),
+ n && (this._singleViewMode = !0)
+ }
+ _getBalloonPosition() {
+ let e = Array.from(this._visibleStack.values()).pop().position;
+ return e && !e.limiter && (e = Object.assign({}, e, {
+ limiter: this.positionLimiter
+ })),
+ e
+ }
+ }
+ class Jd extends jl {
+ constructor(e) {
+ super(e);
+ const t = e.t,
+ i = this.bindTemplate;
+ this.set("isNavigationVisible", !0),
+ this.focusTracker = new Rs,
+ this.buttonPrevView = this._createButtonView(t("Previous"), ''),
+ this.buttonNextView = this._createButtonView(t("Next"), ''),
+ this.content = this.createCollection(),
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-balloon-rotator"],
+ "z-index": "-1"
+ },
+ children: [{
+ tag: "div",
+ attributes: {
+ class: ["ck-balloon-rotator__navigation", i.to("isNavigationVisible", e => e ? "" : "ck-hidden")]
+ },
+ children: [this.buttonPrevView, {
+ tag: "span",
+ attributes: {
+ class: ["ck-balloon-rotator__counter"]
+ },
+ children: [{
+ text: i.to("counter")
+ }
+ ]
+ }, this.buttonNextView]
+ }, {
+ tag: "div",
+ attributes: {
+ class: "ck-balloon-rotator__content"
+ },
+ children: this.content
+ }
+ ]
+ })
+ }
+ render() {
+ super.render(),
+ this.focusTracker.add(this.element)
+ }
+ showView(e) {
+ this.hideView(),
+ this.content.add(e)
+ }
+ hideView() {
+ this.content.clear()
+ }
+ _createButtonView(e, t) {
+ const i = new cd(this.locale);
+ return i.set({
+ label: e,
+ icon: t,
+ tooltip: !0
+ }),
+ i
+ }
+ }
+ class Zd extends jl {
+ constructor(e, t) {
+ super(e);
+ const i = this.bindTemplate;
+ this.set("top", 0),
+ this.set("left", 0),
+ this.set("height", 0),
+ this.set("width", 0),
+ this.set("numberOfPanels", 0),
+ this.content = this.createCollection(),
+ this._balloonPanelView = t,
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck-fake-panel", i.to("numberOfPanels", e => e ? "" : "ck-hidden")],
+ style: {
+ top: i.to("top", Kd),
+ left: i.to("left", Kd),
+ width: i.to("width", Kd),
+ height: i.to("height", Kd)
+ }
+ },
+ children: this.content
+ }),
+ this.on("change:numberOfPanels", (e, t, i, n) => {
+ i > n ? this._addPanels(i - n) : this._removePanels(n - i),
+ this.updatePosition()
+ })
+ }
+ _addPanels(e) {
+ for (; e--; ) {
+ const e = new jl;
+ e.setTemplate({
+ tag: "div"
+ }),
+ this.content.add(e),
+ this.registerChild(e)
+ }
+ }
+ _removePanels(e) {
+ for (; e--; ) {
+ const e = this.content.last;
+ this.content.remove(e),
+ this.deregisterChild(e),
+ e.destroy()
+ }
+ }
+ updatePosition() {
+ if (this.numberOfPanels) {
+ const {
+ top: e,
+ left: t
+ } = this._balloonPanelView, {
+ width: i,
+ height: n
+ } = new Ts(this._balloonPanelView.element);
+ Object.assign(this, {
+ top: e,
+ left: t,
+ width: i,
+ height: n
+ })
+ }
+ }
+ }
+ i(54);
+ const Xd = Is("px");
+ class eu extends jl {
+ constructor(e) {
+ super(e);
+ const t = this.bindTemplate;
+ this.set("isActive", !1),
+ this.set("isSticky", !1),
+ this.set("limiterElement", null),
+ this.set("limiterBottomOffset", 50),
+ this.set("viewportTopOffset", 0),
+ this.set("_marginLeft", null),
+ this.set("_isStickyToTheLimiter", !1),
+ this.set("_hasViewportTopOffset", !1),
+ this.content = this.createCollection(),
+ this._contentPanelPlaceholder = new Bl({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-sticky-panel__placeholder"],
+ style: {
+ display: t.to("isSticky", e => e ? "block" : "none"),
+ height: t.to("isSticky", e => e ? Xd(this._panelRect.height) : null)
+ }
+ }
+ }).render(),
+ this._contentPanel = new Bl({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-sticky-panel__content", t.if("isSticky", "ck-sticky-panel__content_sticky"), t.if("_isStickyToTheLimiter", "ck-sticky-panel__content_sticky_bottom-limit")],
+ style: {
+ width: t.to("isSticky", e => e ? Xd(this._contentPanelPlaceholder.getBoundingClientRect().width) : null),
+ top: t.to("_hasViewportTopOffset", e => e ? Xd(this.viewportTopOffset) : null),
+ bottom: t.to("_isStickyToTheLimiter", e => e ? Xd(this.limiterBottomOffset) : null),
+ marginLeft: t.to("_marginLeft")
+ }
+ },
+ children: this.content
+ }).render(),
+ this.setTemplate({
+ tag: "div",
+ attributes: {
+ class: ["ck", "ck-sticky-panel"]
+ },
+ children: [this._contentPanelPlaceholder, this._contentPanel]
+ })
+ }
+ render() {
+ super.render(),
+ this._checkIfShouldBeSticky(),
+ this.listenTo(_r.window, "scroll", () => {
+ this._checkIfShouldBeSticky()
+ }),
+ this.listenTo(this, "change:isActive", () => {
+ this._checkIfShouldBeSticky()
+ })
+ }
+ _checkIfShouldBeSticky() {
+ const e = this._panelRect = this._contentPanel.getBoundingClientRect();
+ let t;
+ this.limiterElement ? (t = this._limiterRect = this.limiterElement.getBoundingClientRect(), this.isSticky = this.isActive && t.top < this.viewportTopOffset && this._panelRect.height + this.limiterBottomOffset < t.height) : this.isSticky = !1,
+ this.isSticky ? (this._isStickyToTheLimiter = t.bottom < e.height + this.limiterBottomOffset + this.viewportTopOffset, this._hasViewportTopOffset = !this._isStickyToTheLimiter && !!this.viewportTopOffset, this._marginLeft = this._isStickyToTheLimiter ? null : Xd(-_r.window.scrollX)) : (this._isStickyToTheLimiter = !1, this._hasViewportTopOffset = !1, this._marginLeft = null)
+ }
+ }
+ Is("px");
+ i(56);
+ Is("px");
+ Is("px");
+ i(58);
+ const tu = new WeakMap;
+ function iu(e) {
+ const {
+ view: t,
+ element: i,
+ text: n,
+ isDirectHost: o = !0,
+ keepOnFocus: r = !1
+ } = e,
+ s = t.document;
+ tu.has(s) || (tu.set(s, new Map), s.registerPostFixer(e => ou(s, e))),
+ tu.get(s).set(i, {
+ text: n,
+ isDirectHost: o,
+ keepOnFocus: r,
+ hostElement: o ? i : null
+ }),
+ t.change(e => ou(s, e))
+ }
+ function nu(e, t) {
+ return !!t.hasClass("ck-placeholder") && (e.removeClass("ck-placeholder", t), !0)
+ }
+ function ou(e, t) {
+ const i = tu.get(e),
+ n = [];
+ let o = !1;
+ for (const[e, r]of i)
+ r.isDirectHost && (n.push(e), ru(t, e, r) && (o = !0));
+ for (const[e, r]of i) {
+ if (r.isDirectHost)
+ continue;
+ const i = su(e);
+ i && (n.includes(i) || (r.hostElement = i, ru(t, e, r) && (o = !0)))
+ }
+ return o
+ }
+ function ru(e, t, i) {
+ const {
+ text: n,
+ isDirectHost: o,
+ hostElement: r
+ } = i;
+ let s = !1;
+ r.getAttribute("data-placeholder") !== n && (e.setAttribute("data-placeholder", n, r), s = !0);
+ return (o || 1 == t.childCount) && function (e, t) {
+ if (!e.isAttached())
+ return !1;
+ if (Array.from(e.getChildren()).some(e => !e.is("uiElement")))
+ return !1;
+ if (t)
+ return !0;
+ const i = e.document;
+ if (!i.isFocused)
+ return !0;
+ const n = i.selection.anchor;
+ return n && n.parent !== e
+ }
+ (r, i.keepOnFocus) ? function (e, t) {
+ return !t.hasClass("ck-placeholder") && (e.addClass("ck-placeholder", t), !0)
+ }
+ (e, r) && (s = !0) : nu(e, r) && (s = !0),
+ s
+ }
+ function su(e) {
+ if (e.childCount) {
+ const t = e.getChild(0);
+ if (t.is("element") && !t.is("uiElement"))
+ return t
+ }
+ return null
+ }
+ const au = new Map;
+ function cu(e, t, i) {
+ let n = au.get(e);
+ n || (n = new Map, au.set(e, n)),
+ n.set(t, i)
+ }
+ function lu(e) {
+ return [e]
+ }
+ function du(e, t, i = {}) {
+ const n = function (e, t) {
+ const i = au.get(e);
+ return i && i.has(t) ? i.get(t) : lu
+ }
+ (e.constructor, t.constructor);
+ try {
+ return n(e = e.clone(), t, i)
+ } catch (e) {
+ throw e
+ }
+ }
+ function uu(e, t, i) {
+ e = e.slice(),
+ t = t.slice();
+ const n = new hu(i.document, i.useRelations, i.forceWeakRemove);
+ n.setOriginalOperations(e),
+ n.setOriginalOperations(t);
+ const o = n.originalOperations;
+ if (0 == e.length || 0 == t.length)
+ return {
+ operationsA: e,
+ operationsB: t,
+ originalOperations: o
+ };
+ const r = new WeakMap;
+ for (const t of e)
+ r.set(t, 0);
+ const s = {
+ nextBaseVersionA: e[e.length - 1].baseVersion + 1,
+ nextBaseVersionB: t[t.length - 1].baseVersion + 1,
+ originalOperationsACount: e.length,
+ originalOperationsBCount: t.length
+ };
+ let a = 0;
+ for (; a < e.length; ) {
+ const i = e[a],
+ o = r.get(i);
+ if (o == t.length) {
+ a++;
+ continue
+ }
+ const s = t[o],
+ c = du(i, s, n.getContext(i, s, !0)),
+ l = du(s, i, n.getContext(s, i, !1));
+ n.updateRelation(i, s),
+ n.setOriginalOperations(c, i),
+ n.setOriginalOperations(l, s);
+ for (const e of c)
+ r.set(e, o + l.length);
+ e.splice(a, 1, ...c),
+ t.splice(o, 1, ...l)
+ }
+ if (i.padWithNoOps) {
+ const i = e.length - s.originalOperationsACount,
+ n = t.length - s.originalOperationsBCount;
+ gu(e, n - i),
+ gu(t, i - n)
+ }
+ return fu(e, s.nextBaseVersionB),
+ fu(t, s.nextBaseVersionA), {
+ operationsA: e,
+ operationsB: t,
+ originalOperations: o
+ }
+ }
+ class hu {
+ constructor(e, t, i = !1) {
+ this.originalOperations = new Map,
+ this._history = e.history,
+ this._useRelations = t,
+ this._forceWeakRemove = !!i,
+ this._relations = new Map
+ }
+ setOriginalOperations(e, t = null) {
+ const i = t ? this.originalOperations.get(t) : null;
+ for (const t of e)
+ this.originalOperations.set(t, i || t)
+ }
+ updateRelation(e, t) {
+ switch (e.constructor) {
+ case Cc:
+ switch (t.constructor) {
+ case Mc:
+ e.targetPosition.isEqual(t.sourcePosition) || t.movedRange.containsPosition(e.targetPosition) ? this._setRelation(e, t, "insertAtSource") : e.targetPosition.isEqual(t.deletionPosition) ? this._setRelation(e, t, "insertBetween") : e.targetPosition.isAfter(t.sourcePosition) && this._setRelation(e, t, "moveTargetAfter");
+ break;
+ case Cc:
+ e.targetPosition.isEqual(t.sourcePosition) || e.targetPosition.isBefore(t.sourcePosition) ? this._setRelation(e, t, "insertBefore") : this._setRelation(e, t, "insertAfter")
+ }
+ break;
+ case Ic:
+ switch (t.constructor) {
+ case Mc:
+ e.splitPosition.isBefore(t.sourcePosition) && this._setRelation(e, t, "splitBefore");
+ break;
+ case Cc:
+ if (e.splitPosition.isEqual(t.sourcePosition) || e.splitPosition.isBefore(t.sourcePosition))
+ this._setRelation(e, t, "splitBefore");
+ else {
+ const i = oa._createFromPositionAndShift(t.sourcePosition, t.howMany);
+ if (e.splitPosition.hasSameParentAs(t.sourcePosition) && i.containsPosition(e.splitPosition)) {
+ const n = i.end.offset - e.splitPosition.offset,
+ o = e.splitPosition.offset - i.start.offset;
+ this._setRelation(e, t, {
+ howMany: n,
+ offset: o
+ })
+ }
+ }
+ }
+ break;
+ case Mc:
+ switch (t.constructor) {
+ case Mc:
+ e.targetPosition.isEqual(t.sourcePosition) || this._setRelation(e, t, "mergeTargetNotMoved"),
+ e.sourcePosition.isEqual(t.targetPosition) && this._setRelation(e, t, "mergeSourceNotMoved"),
+ e.sourcePosition.isEqual(t.sourcePosition) && this._setRelation(e, t, "mergeSameElement");
+ break;
+ case Ic:
+ e.sourcePosition.isEqual(t.splitPosition) && this._setRelation(e, t, "splitAtSource")
+ }
+ break;
+ case Ec: {
+ const i = e.newRange;
+ if (!i)
+ return;
+ switch (t.constructor) {
+ case Cc: {
+ const n = oa._createFromPositionAndShift(t.sourcePosition, t.howMany),
+ o = n.containsPosition(i.start) || n.start.isEqual(i.start),
+ r = n.containsPosition(i.end) || n.end.isEqual(i.end);
+ !o && !r || n.containsRange(i) || this._setRelation(e, t, {
+ side: o ? "left" : "right",
+ path: o ? i.start.path.slice() : i.end.path.slice()
+ });
+ break
+ }
+ case Mc: {
+ const n = i.start.isEqual(t.targetPosition),
+ o = i.start.isEqual(t.deletionPosition),
+ r = i.end.isEqual(t.deletionPosition),
+ s = i.end.isEqual(t.sourcePosition);
+ (n || o || r || s) && this._setRelation(e, t, {
+ wasInLeftElement: n,
+ wasStartBeforeMergedElement: o,
+ wasEndBeforeMergedElement: r,
+ wasInRightElement: s
+ });
+ break
+ }
+ }
+ break
+ }
+ }
+ }
+ getContext(e, t, i) {
+ return {
+ aIsStrong: i,
+ aWasUndone: this._wasUndone(e),
+ bWasUndone: this._wasUndone(t),
+ abRelation: this._useRelations ? this._getRelation(e, t) : null,
+ baRelation: this._useRelations ? this._getRelation(t, e) : null,
+ forceWeakRemove: this._forceWeakRemove
+ }
+ }
+ _wasUndone(e) {
+ const t = this.originalOperations.get(e);
+ return t.wasUndone || this._history.isUndoneOperation(t)
+ }
+ _getRelation(e, t) {
+ const i = this.originalOperations.get(t),
+ n = this._history.getUndoneOperation(i);
+ if (!n)
+ return null;
+ const o = this.originalOperations.get(e),
+ r = this._relations.get(o);
+ return r && r.get(n) || null
+ }
+ _setRelation(e, t, i) {
+ const n = this.originalOperations.get(e),
+ o = this.originalOperations.get(t);
+ let r = this._relations.get(n);
+ r || (r = new Map, this._relations.set(n, r)),
+ r.set(o, i)
+ }
+ }
+ function fu(e, t) {
+ for (const i of e)
+ i.baseVersion = t++
+ }
+ function gu(e, t) {
+ for (let i = 0; i < t; i++)
+ e.push(new Qc(0))
+ }
+ function mu(e, t, i) {
+ const n = e.nodes.getNode(0).getAttribute(t);
+ if (n == i)
+ return null;
+ const o = new oa(e.position, e.position.getShiftedBy(e.howMany));
+ return new xc(o, t, n, i, 0)
+ }
+ function pu(e, t) {
+ return null === e.targetPosition._getTransformedByDeletion(t.sourcePosition, t.howMany)
+ }
+ function bu(e, t) {
+ const i = [];
+ for (let n = 0; n < e.length; n++) {
+ const o = e[n],
+ r = new Cc(o.start, o.end.offset - o.start.offset, t, 0);
+ i.push(r);
+ for (let t = n + 1; t < e.length; t++)
+ e[t] = e[t]._getTransformedByMove(r.sourcePosition, r.targetPosition, r.howMany)[0];
+ t = t._getTransformedByMove(r.sourcePosition, r.targetPosition, r.howMany)
+ }
+ return i
+ }
+ cu(xc, xc, (e, t, i) => {
+ if (e.key === t.key && e.range.start.hasSameParentAs(t.range.start)) {
+ const n = e.range.getDifference(t.range).map(t => new xc(t, e.key, e.oldValue, e.newValue, 0)),
+ o = e.range.getIntersection(t.range);
+ return o && i.aIsStrong && n.push(new xc(o, t.key, t.newValue, e.newValue, 0)),
+ 0 == n.length ? [new Qc(0)] : n
+ }
+ return [e]
+ }),
+ cu(xc, Tc, (e, t) => {
+ if (e.range.start.hasSameParentAs(t.position) && e.range.containsPosition(t.position)) {
+ const i = e.range._getTransformedByInsertion(t.position, t.howMany, !t.shouldReceiveAttributes).map(t => new xc(t, e.key, e.oldValue, e.newValue, e.baseVersion));
+ if (t.shouldReceiveAttributes) {
+ const n = mu(t, e.key, e.oldValue);
+ n && i.unshift(n)
+ }
+ return i
+ }
+ return e.range = e.range._getTransformedByInsertion(t.position, t.howMany, !1)[0],
+ [e]
+ }),
+ cu(xc, Mc, (e, t) => {
+ const i = [];
+ e.range.start.hasSameParentAs(t.deletionPosition) && (e.range.containsPosition(t.deletionPosition) || e.range.start.isEqual(t.deletionPosition)) && i.push(oa._createFromPositionAndShift(t.graveyardPosition, 1));
+ const n = e.range._getTransformedByMergeOperation(t);
+ return n.isCollapsed || i.push(n),
+ i.map(t => new xc(t, e.key, e.oldValue, e.newValue, e.baseVersion))
+ }),
+ cu(xc, Cc, (e, t) => function (e, t) {
+ const i = oa._createFromPositionAndShift(t.sourcePosition, t.howMany);
+ let n = null,
+ o = [];
+ i.containsRange(e, !0) ? n = e : e.start.hasSameParentAs(i.start) ? (o = e.getDifference(i), n = e.getIntersection(i)) : o = [e];
+ const r = [];
+ for (let e of o) {
+ e = e._getTransformedByDeletion(t.sourcePosition, t.howMany);
+ const i = t.getMovedRangeStart(),
+ n = e.start.hasSameParentAs(i);
+ e = e._getTransformedByInsertion(i, t.howMany, n),
+ r.push(...e)
+ }
+ n && r.push(n._getTransformedByMove(t.sourcePosition, t.targetPosition, t.howMany, !1)[0]);
+ return r
+ }
+ (e.range, t).map(t => new xc(t, e.key, e.oldValue, e.newValue, e.baseVersion))),
+ cu(xc, Ic, (e, t) => {
+ if (e.range.end.isEqual(t.insertionPosition))
+ return t.graveyardPosition || e.range.end.offset++, [e];
+ if (e.range.start.hasSameParentAs(t.splitPosition) && e.range.containsPosition(t.splitPosition)) {
+ const i = e.clone();
+ return i.range = new oa(t.moveTargetPosition.clone(), e.range.end._getCombined(t.splitPosition, t.moveTargetPosition)),
+ e.range.end = t.splitPosition.clone(),
+ e.range.end.stickiness = "toPrevious",
+ [e, i]
+ }
+ return e.range = e.range._getTransformedBySplitOperation(t),
+ [e]
+ }),
+ cu(Tc, xc, (e, t) => {
+ const i = [e];
+ if (e.shouldReceiveAttributes && e.position.hasSameParentAs(t.range.start) && t.range.containsPosition(e.position)) {
+ const n = mu(e, t.key, t.newValue);
+ n && i.push(n)
+ }
+ return i
+ }),
+ cu(Tc, Tc, (e, t, i) => (e.position.isEqual(t.position) && i.aIsStrong || (e.position = e.position._getTransformedByInsertOperation(t)), [e])),
+ cu(Tc, Cc, (e, t) => (e.position = e.position._getTransformedByMoveOperation(t), [e])),
+ cu(Tc, Ic, (e, t) => (e.position = e.position._getTransformedBySplitOperation(t), [e])),
+ cu(Tc, Mc, (e, t) => (e.position = e.position._getTransformedByMergeOperation(t), [e])),
+ cu(Ec, Tc, (e, t) => (e.oldRange && (e.oldRange = e.oldRange._getTransformedByInsertOperation(t)[0]), e.newRange && (e.newRange = e.newRange._getTransformedByInsertOperation(t)[0]), [e])),
+ cu(Ec, Ec, (e, t, i) => {
+ if (e.name == t.name) {
+ if (!i.aIsStrong)
+ return [new Qc(0)];
+ e.oldRange = t.newRange ? t.newRange.clone() : null
+ }
+ return [e]
+ }),
+ cu(Ec, Mc, (e, t) => (e.oldRange && (e.oldRange = e.oldRange._getTransformedByMergeOperation(t)), e.newRange && (e.newRange = e.newRange._getTransformedByMergeOperation(t)), [e])),
+ cu(Ec, Cc, (e, t, i) => {
+ if (e.oldRange && (e.oldRange = oa._createFromRanges(e.oldRange._getTransformedByMoveOperation(t))), e.newRange) {
+ if (i.abRelation) {
+ const n = oa._createFromRanges(e.newRange._getTransformedByMoveOperation(t));
+ if ("left" == i.abRelation.side && t.targetPosition.isEqual(e.newRange.start))
+ return e.newRange.start.path = i.abRelation.path, e.newRange.end = n.end, [e];
+ if ("right" == i.abRelation.side && t.targetPosition.isEqual(e.newRange.end))
+ return e.newRange.start = n.start, e.newRange.end.path = i.abRelation.path, [e]
+ }
+ e.newRange = oa._createFromRanges(e.newRange._getTransformedByMoveOperation(t))
+ }
+ return [e]
+ }),
+ cu(Ec, Ic, (e, t, i) => {
+ if (e.oldRange && (e.oldRange = e.oldRange._getTransformedBySplitOperation(t)), e.newRange) {
+ if (i.abRelation) {
+ const n = e.newRange._getTransformedBySplitOperation(t);
+ return e.newRange.start.isEqual(t.splitPosition) && i.abRelation.wasStartBeforeMergedElement ? e.newRange.start = ea._createAt(t.insertionPosition) : e.newRange.start.isEqual(t.splitPosition) && !i.abRelation.wasInLeftElement && (e.newRange.start = ea._createAt(t.moveTargetPosition)),
+ e.newRange.end.isEqual(t.splitPosition) && i.abRelation.wasInRightElement ? e.newRange.end = ea._createAt(t.moveTargetPosition) : e.newRange.end.isEqual(t.splitPosition) && i.abRelation.wasEndBeforeMergedElement ? e.newRange.end = ea._createAt(t.insertionPosition) : e.newRange.end = n.end,
+ [e]
+ }
+ e.newRange = e.newRange._getTransformedBySplitOperation(t)
+ }
+ return [e]
+ }),
+ cu(Mc, Tc, (e, t) => (e.sourcePosition.hasSameParentAs(t.position) && (e.howMany += t.howMany), e.sourcePosition = e.sourcePosition._getTransformedByInsertOperation(t), e.targetPosition = e.targetPosition._getTransformedByInsertOperation(t), [e])),
+ cu(Mc, Mc, (e, t, i) => {
+ if (e.sourcePosition.isEqual(t.sourcePosition) && e.targetPosition.isEqual(t.targetPosition)) {
+ if (i.bWasUndone) {
+ const i = t.graveyardPosition.path.slice();
+ return i.push(0),
+ e.sourcePosition = new ea(t.graveyardPosition.root, i),
+ e.howMany = 0,
+ [e]
+ }
+ return [new Qc(0)]
+ }
+ if (e.sourcePosition.isEqual(t.sourcePosition) && !e.targetPosition.isEqual(t.targetPosition) && !i.bWasUndone && "splitAtSource" != i.abRelation) {
+ const n = "$graveyard" == e.targetPosition.root.rootName,
+ o = "$graveyard" == t.targetPosition.root.rootName,
+ r = n && !o;
+ if (o && !n || !r && i.aIsStrong) {
+ const i = t.targetPosition._getTransformedByMergeOperation(t),
+ n = e.targetPosition._getTransformedByMergeOperation(t);
+ return [new Cc(i, e.howMany, n, 0)]
+ }
+ return [new Qc(0)]
+ }
+ return e.sourcePosition.hasSameParentAs(t.targetPosition) && (e.howMany += t.howMany),
+ e.sourcePosition = e.sourcePosition._getTransformedByMergeOperation(t),
+ e.targetPosition = e.targetPosition._getTransformedByMergeOperation(t),
+ e.graveyardPosition.isEqual(t.graveyardPosition) && i.aIsStrong || (e.graveyardPosition = e.graveyardPosition._getTransformedByMergeOperation(t)),
+ [e]
+ }),
+ cu(Mc, Cc, (e, t, i) => {
+ const n = oa._createFromPositionAndShift(t.sourcePosition, t.howMany);
+ return "remove" == t.type && !i.bWasUndone && !i.forceWeakRemove && e.deletionPosition.hasSameParentAs(t.sourcePosition) && n.containsPosition(e.sourcePosition) ? [new Qc(0)] : (e.sourcePosition.hasSameParentAs(t.targetPosition) && (e.howMany += t.howMany), e.sourcePosition.hasSameParentAs(t.sourcePosition) && (e.howMany -= t.howMany), e.sourcePosition = e.sourcePosition._getTransformedByMoveOperation(t), e.targetPosition = e.targetPosition._getTransformedByMoveOperation(t), e.graveyardPosition.isEqual(t.targetPosition) || (e.graveyardPosition = e.graveyardPosition._getTransformedByMoveOperation(t)), [e])
+ }),
+ cu(Mc, Ic, (e, t, i) => {
+ if (t.graveyardPosition && (e.graveyardPosition = e.graveyardPosition._getTransformedByDeletion(t.graveyardPosition, 1), e.deletionPosition.isEqual(t.graveyardPosition) && (e.howMany = t.howMany)), e.targetPosition.isEqual(t.splitPosition)) {
+ const n = 0 != t.howMany,
+ o = t.graveyardPosition && e.deletionPosition.isEqual(t.graveyardPosition);
+ if (n || o || "mergeTargetNotMoved" == i.abRelation)
+ return e.sourcePosition = e.sourcePosition._getTransformedBySplitOperation(t), [e]
+ }
+ if (e.sourcePosition.isEqual(t.splitPosition)) {
+ if ("mergeSourceNotMoved" == i.abRelation)
+ return e.howMany = 0, e.targetPosition = e.targetPosition._getTransformedBySplitOperation(t), [e];
+ if ("mergeSameElement" == i.abRelation || e.sourcePosition.offset > 0)
+ return e.sourcePosition = t.moveTargetPosition.clone(), e.targetPosition = e.targetPosition._getTransformedBySplitOperation(t), [e]
+ }
+ return e.sourcePosition.hasSameParentAs(t.splitPosition) && (e.howMany = t.splitPosition.offset),
+ e.sourcePosition = e.sourcePosition._getTransformedBySplitOperation(t),
+ e.targetPosition = e.targetPosition._getTransformedBySplitOperation(t),
+ [e]
+ }),
+ cu(Cc, Tc, (e, t) => {
+ const i = oa._createFromPositionAndShift(e.sourcePosition, e.howMany)._getTransformedByInsertOperation(t, !1)[0];
+ return e.sourcePosition = i.start,
+ e.howMany = i.end.offset - i.start.offset,
+ e.targetPosition.isEqual(t.position) || (e.targetPosition = e.targetPosition._getTransformedByInsertOperation(t)),
+ [e]
+ }),
+ cu(Cc, Cc, (e, t, i) => {
+ const n = oa._createFromPositionAndShift(e.sourcePosition, e.howMany),
+ o = oa._createFromPositionAndShift(t.sourcePosition, t.howMany);
+ let r,
+ s = i.aIsStrong,
+ a = !i.aIsStrong;
+ if ("insertBefore" == i.abRelation || "insertAfter" == i.baRelation ? a = !0 : "insertAfter" != i.abRelation && "insertBefore" != i.baRelation || (a = !1), r = e.targetPosition.isEqual(t.targetPosition) && a ? e.targetPosition._getTransformedByDeletion(t.sourcePosition, t.howMany) : e.targetPosition._getTransformedByMove(t.sourcePosition, t.targetPosition, t.howMany), pu(e, t) && pu(t, e))
+ return [t.getReversed()];
+ if (n.containsPosition(t.targetPosition) && n.containsRange(o, !0))
+ return n.start = n.start._getTransformedByMove(t.sourcePosition, t.targetPosition, t.howMany), n.end = n.end._getTransformedByMove(t.sourcePosition, t.targetPosition, t.howMany), bu([n], r);
+ if (o.containsPosition(e.targetPosition) && o.containsRange(n, !0))
+ return n.start = n.start._getCombined(t.sourcePosition, t.getMovedRangeStart()), n.end = n.end._getCombined(t.sourcePosition, t.getMovedRangeStart()), bu([n], r);
+ const c = cn(e.sourcePosition.getParentPath(), t.sourcePosition.getParentPath());
+ if ("prefix" == c || "extension" == c)
+ return n.start = n.start._getTransformedByMove(t.sourcePosition, t.targetPosition, t.howMany), n.end = n.end._getTransformedByMove(t.sourcePosition, t.targetPosition, t.howMany), bu([n], r);
+ "remove" != e.type || "remove" == t.type || i.aWasUndone || i.forceWeakRemove ? "remove" == e.type || "remove" != t.type || i.bWasUndone || i.forceWeakRemove || (s = !1) : s = !0;
+ const l = [],
+ d = n.getDifference(o);
+ for (const e of d) {
+ e.start = e.start._getTransformedByDeletion(t.sourcePosition, t.howMany),
+ e.end = e.end._getTransformedByDeletion(t.sourcePosition, t.howMany);
+ const i = "same" == cn(e.start.getParentPath(), t.getMovedRangeStart().getParentPath()),
+ n = e._getTransformedByInsertion(t.getMovedRangeStart(), t.howMany, i);
+ l.push(...n)
+ }
+ const u = n.getIntersection(o);
+ return null !== u && s && (u.start = u.start._getCombined(t.sourcePosition, t.getMovedRangeStart()), u.end = u.end._getCombined(t.sourcePosition, t.getMovedRangeStart()), 0 === l.length ? l.push(u) : 1 == l.length ? o.start.isBefore(n.start) || o.start.isEqual(n.start) ? l.unshift(u) : l.push(u) : l.splice(1, 0, u)),
+ 0 === l.length ? [new Qc(e.baseVersion)] : bu(l, r)
+ }),
+ cu(Cc, Ic, (e, t, i) => {
+ let n = e.targetPosition.clone();
+ e.targetPosition.isEqual(t.insertionPosition) && t.graveyardPosition && "moveTargetAfter" != i.abRelation || (n = e.targetPosition._getTransformedBySplitOperation(t));
+ const o = oa._createFromPositionAndShift(e.sourcePosition, e.howMany);
+ if (o.end.isEqual(t.insertionPosition))
+ return t.graveyardPosition || e.howMany++, e.targetPosition = n, [e];
+ if (o.start.hasSameParentAs(t.splitPosition) && o.containsPosition(t.splitPosition)) {
+ let e = new oa(t.splitPosition, o.end);
+ e = e._getTransformedBySplitOperation(t);
+ return bu([new oa(o.start, t.splitPosition), e], n)
+ }
+ e.targetPosition.isEqual(t.splitPosition) && "insertAtSource" == i.abRelation && (n = t.moveTargetPosition),
+ e.targetPosition.isEqual(t.insertionPosition) && "insertBetween" == i.abRelation && (n = e.targetPosition);
+ const r = [o._getTransformedBySplitOperation(t)];
+ if (t.graveyardPosition) {
+ const n = o.start.isEqual(t.graveyardPosition) || o.containsPosition(t.graveyardPosition);
+ e.howMany > 1 && n && !i.aWasUndone && r.push(oa._createFromPositionAndShift(t.insertionPosition, 1))
+ }
+ return bu(r, n)
+ }),
+ cu(Cc, Mc, (e, t, i) => {
+ const n = oa._createFromPositionAndShift(e.sourcePosition, e.howMany);
+ if (t.deletionPosition.hasSameParentAs(e.sourcePosition) && n.containsPosition(t.sourcePosition))
+ if ("remove" != e.type || i.forceWeakRemove) {
+ if (1 == e.howMany)
+ return i.bWasUndone ? (e.sourcePosition = t.graveyardPosition.clone(), e.targetPosition = e.targetPosition._getTransformedByMergeOperation(t), [e]) : [new Qc(0)]
+ } else if (!i.aWasUndone) {
+ const i = [];
+ let n = t.graveyardPosition.clone(),
+ o = t.targetPosition._getTransformedByMergeOperation(t);
+ e.howMany > 1 && (i.push(new Cc(e.sourcePosition, e.howMany - 1, e.targetPosition, 0)), n = n._getTransformedByMove(e.sourcePosition, e.targetPosition, e.howMany - 1), o = o._getTransformedByMove(e.sourcePosition, e.targetPosition, e.howMany - 1));
+ const r = t.deletionPosition._getCombined(e.sourcePosition, e.targetPosition),
+ s = new Cc(n, 1, r, 0),
+ a = s.getMovedRangeStart().path.slice();
+ a.push(0);
+ const c = new ea(s.targetPosition.root, a);
+ o = o._getTransformedByMove(n, r, 1);
+ const l = new Cc(o, t.howMany, c, 0);
+ return i.push(s),
+ i.push(l),
+ i
+ }
+ const o = oa._createFromPositionAndShift(e.sourcePosition, e.howMany)._getTransformedByMergeOperation(t);
+ return e.sourcePosition = o.start,
+ e.howMany = o.end.offset - o.start.offset,
+ e.targetPosition = e.targetPosition._getTransformedByMergeOperation(t),
+ [e]
+ }),
+ cu(Pc, Tc, (e, t) => (e.position = e.position._getTransformedByInsertOperation(t), [e])),
+ cu(Pc, Mc, (e, t) => e.position.isEqual(t.deletionPosition) ? (e.position = t.graveyardPosition.clone(), e.position.stickiness = "toNext", [e]) : (e.position = e.position._getTransformedByMergeOperation(t), [e])),
+ cu(Pc, Cc, (e, t) => (e.position = e.position._getTransformedByMoveOperation(t), [e])),
+ cu(Pc, Pc, (e, t, i) => {
+ if (e.position.isEqual(t.position)) {
+ if (!i.aIsStrong)
+ return [new Qc(0)];
+ e.oldName = t.newName
+ }
+ return [e]
+ }),
+ cu(Pc, Ic, (e, t) => {
+ if ("same" == cn(e.position.path, t.splitPosition.getParentPath()) && !t.graveyardPosition) {
+ const t = new Pc(e.position.getShiftedBy(1), e.oldName, e.newName, 0);
+ return [e, t]
+ }
+ return e.position = e.position._getTransformedBySplitOperation(t),
+ [e]
+ }),
+ cu(Sc, Sc, (e, t, i) => {
+ if (e.root === t.root && e.key === t.key) {
+ if (!i.aIsStrong || e.newValue === t.newValue)
+ return [new Qc(0)];
+ e.oldValue = t.newValue
+ }
+ return [e]
+ }),
+ cu(Ic, Tc, (e, t) => (e.splitPosition.hasSameParentAs(t.position) && e.splitPosition.offset < t.position.offset && (e.howMany += t.howMany), e.splitPosition = e.splitPosition._getTransformedByInsertOperation(t), e.insertionPosition = e.insertionPosition._getTransformedByInsertOperation(t), [e])),
+ cu(Ic, Mc, (e, t, i) => {
+ if (!e.graveyardPosition && !i.bWasUndone && e.splitPosition.hasSameParentAs(t.sourcePosition)) {
+ const i = t.graveyardPosition.path.slice();
+ i.push(0);
+ const n = new ea(t.graveyardPosition.root, i),
+ o = Ic.getInsertionPosition(new ea(t.graveyardPosition.root, i)),
+ r = new Ic(n, 0, o, null, 0);
+ return e.splitPosition = e.splitPosition._getTransformedByMergeOperation(t),
+ e.insertionPosition = Ic.getInsertionPosition(e.splitPosition),
+ e.graveyardPosition = r.insertionPosition.clone(),
+ e.graveyardPosition.stickiness = "toNext",
+ [r, e]
+ }
+ return e.splitPosition.hasSameParentAs(t.deletionPosition) && !e.splitPosition.isAfter(t.deletionPosition) && e.howMany--,
+ e.splitPosition.hasSameParentAs(t.targetPosition) && (e.howMany += t.howMany),
+ e.splitPosition = e.splitPosition._getTransformedByMergeOperation(t),
+ e.insertionPosition = Ic.getInsertionPosition(e.splitPosition),
+ e.graveyardPosition && (e.graveyardPosition = e.graveyardPosition._getTransformedByMergeOperation(t)),
+ [e]
+ }),
+ cu(Ic, Cc, (e, t, i) => {
+ const n = oa._createFromPositionAndShift(t.sourcePosition, t.howMany);
+ if (e.graveyardPosition) {
+ const o = n.start.isEqual(e.graveyardPosition) || n.containsPosition(e.graveyardPosition);
+ if (!i.bWasUndone && o) {
+ const i = e.splitPosition._getTransformedByMoveOperation(t),
+ n = e.graveyardPosition._getTransformedByMoveOperation(t),
+ o = n.path.slice();
+ o.push(0);
+ const r = new ea(n.root, o);
+ return [new Cc(i, e.howMany, r, 0)]
+ }
+ e.graveyardPosition = e.graveyardPosition._getTransformedByMoveOperation(t)
+ }
+ const o = e.splitPosition.isEqual(t.targetPosition);
+ if (o && ("insertAtSource" == i.baRelation || "splitBefore" == i.abRelation))
+ return e.howMany += t.howMany, e.splitPosition = e.splitPosition._getTransformedByDeletion(t.sourcePosition, t.howMany), e.insertionPosition = Ic.getInsertionPosition(e.splitPosition), [e];
+ if (o && i.abRelation && i.abRelation.howMany) {
+ const {
+ howMany: t,
+ offset: n
+ } = i.abRelation;
+ return e.howMany += t,
+ e.splitPosition = e.splitPosition.getShiftedBy(n),
+ [e]
+ }
+ if (e.splitPosition.hasSameParentAs(t.sourcePosition) && n.containsPosition(e.splitPosition)) {
+ const i = t.howMany - (e.splitPosition.offset - t.sourcePosition.offset);
+ return e.howMany -= i,
+ e.splitPosition.hasSameParentAs(t.targetPosition) && e.splitPosition.offset < t.targetPosition.offset && (e.howMany += t.howMany),
+ e.splitPosition = t.sourcePosition.clone(),
+ e.insertionPosition = Ic.getInsertionPosition(e.splitPosition),
+ [e]
+ }
+ return t.sourcePosition.isEqual(t.targetPosition) || (e.splitPosition.hasSameParentAs(t.sourcePosition) && e.splitPosition.offset <= t.sourcePosition.offset && (e.howMany -= t.howMany), e.splitPosition.hasSameParentAs(t.targetPosition) && e.splitPosition.offset < t.targetPosition.offset && (e.howMany += t.howMany)),
+ e.splitPosition.stickiness = "toNone",
+ e.splitPosition = e.splitPosition._getTransformedByMoveOperation(t),
+ e.splitPosition.stickiness = "toNext",
+ e.graveyardPosition ? e.insertionPosition = e.insertionPosition._getTransformedByMoveOperation(t) : e.insertionPosition = Ic.getInsertionPosition(e.splitPosition),
+ [e]
+ }),
+ cu(Ic, Ic, (e, t, i) => {
+ if (e.splitPosition.isEqual(t.splitPosition)) {
+ if (!e.graveyardPosition && !t.graveyardPosition)
+ return [new Qc(0)];
+ if (e.graveyardPosition && t.graveyardPosition && e.graveyardPosition.isEqual(t.graveyardPosition))
+ return [new Qc(0)];
+ if ("splitBefore" == i.abRelation)
+ return e.howMany = 0, e.graveyardPosition = e.graveyardPosition._getTransformedBySplitOperation(t), [e]
+ }
+ if (e.graveyardPosition && t.graveyardPosition && e.graveyardPosition.isEqual(t.graveyardPosition)) {
+ const n = "$graveyard" == e.splitPosition.root.rootName,
+ o = "$graveyard" == t.splitPosition.root.rootName,
+ r = n && !o;
+ if (o && !n || !r && i.aIsStrong) {
+ const i = [];
+ return t.howMany && i.push(new Cc(t.moveTargetPosition, t.howMany, t.splitPosition, 0)),
+ e.howMany && i.push(new Cc(e.splitPosition, e.howMany, e.moveTargetPosition, 0)),
+ i
+ }
+ return [new Qc(0)]
+ }
+ if (e.graveyardPosition && (e.graveyardPosition = e.graveyardPosition._getTransformedBySplitOperation(t)), e.splitPosition.isEqual(t.insertionPosition) && "splitBefore" == i.abRelation)
+ return e.howMany++, [e];
+ if (t.splitPosition.isEqual(e.insertionPosition) && "splitBefore" == i.baRelation) {
+ const i = t.insertionPosition.path.slice();
+ i.push(0);
+ const n = new ea(t.insertionPosition.root, i);
+ return [e, new Cc(e.insertionPosition, 1, n, 0)]
+ }
+ return e.splitPosition.hasSameParentAs(t.splitPosition) && e.splitPosition.offset < t.splitPosition.offset && (e.howMany -= t.howMany),
+ e.splitPosition = e.splitPosition._getTransformedBySplitOperation(t),
+ e.insertionPosition = Ic.getInsertionPosition(e.splitPosition),
+ [e]
+ });
+ class wu extends ts {
+ constructor(e) {
+ super(e),
+ this.domEventType = "click"
+ }
+ onDomEvent(e) {
+ this.fire(e.type, e)
+ }
+ }
+ class ku extends ts {
+ constructor(e) {
+ super(e),
+ this.domEventType = ["mousedown", "mouseup"]
+ }
+ onDomEvent(e) {
+ this.fire(e.type, e)
+ }
+ }
+ class _u {
+ constructor(e) {
+ this.document = e
+ }
+ createDocumentFragment(e) {
+ return new Uo(this.document, e)
+ }
+ createElement(e, t, i) {
+ return new Xn(this.document, e, t, i)
+ }
+ createText(e) {
+ return new un(this.document, e)
+ }
+ clone(e, t = !1) {
+ return e._clone(t)
+ }
+ appendChild(e, t) {
+ return t._appendChild(e)
+ }
+ insertChild(e, t, i) {
+ return i._insertChild(e, t)
+ }
+ removeChildren(e, t, i) {
+ return i._removeChildren(e, t)
+ }
+ remove(e) {
+ const t = e.parent;
+ return t ? this.removeChildren(t.getChildIndex(e), 1, t) : []
+ }
+ replace(e, t) {
+ const i = e.parent;
+ if (i) {
+ const n = i.getChildIndex(e);
+ return this.removeChildren(n, 1, i),
+ this.insertChild(n, t, i),
+ !0
+ }
+ return !1
+ }
+ unwrapElement(e) {
+ const t = e.parent;
+ if (t) {
+ const i = t.getChildIndex(e);
+ this.remove(e),
+ this.insertChild(i, e.getChildren(), t)
+ }
+ }
+ rename(e, t) {
+ const i = new Xn(this.document, e, t.getAttributes(), t.getChildren());
+ return this.replace(t, i) ? i : null
+ }
+ setAttribute(e, t, i) {
+ i._setAttribute(e, t)
+ }
+ removeAttribute(e, t) {
+ t._removeAttribute(e)
+ }
+ addClass(e, t) {
+ t._addClass(e)
+ }
+ removeClass(e, t) {
+ t._removeClass(e)
+ }
+ setStyle(e, t, i) {
+ ct(e) && void 0 === i && (i = t),
+ i._setStyle(e, t)
+ }
+ removeStyle(e, t) {
+ t._removeStyle(e)
+ }
+ setCustomProperty(e, t, i) {
+ i._setCustomProperty(e, t)
+ }
+ removeCustomProperty(e, t) {
+ return t._removeCustomProperty(e)
+ }
+ createPositionAt(e, t) {
+ return ao._createAt(e, t)
+ }
+ createPositionAfter(e) {
+ return ao._createAfter(e)
+ }
+ createPositionBefore(e) {
+ return ao._createBefore(e)
+ }
+ createRange(e, t) {
+ return new co(e, t)
+ }
+ createRangeOn(e) {
+ return co._createOn(e)
+ }
+ createRangeIn(e) {
+ return co._createIn(e)
+ }
+ createSelection(e, t, i) {
+ return new ho(e, t, i)
+ }
+ }
+ new Set(["black", "silver", "gray", "white", "maroon", "red", "purple", "fuchsia", "green", "lime", "olive", "yellow", "navy", "blue", "teal", "aqua", "orange", "aliceblue", "antiquewhite", "aquamarine", "azure", "beige", "bisque", "blanchedalmond", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "gainsboro", "ghostwhite", "gold", "goldenrod", "greenyellow", "grey", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "limegreen", "linen", "magenta", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "oldlace", "olivedrab", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "thistle", "tomato", "turquoise", "violet", "wheat", "whitesmoke", "yellowgreen", "rebeccapurple", "currentcolor", "transparent"]);
+ class vu extends _l {
+ constructor(e, t) {
+ super(e),
+ this.view = t,
+ this._toolbarConfig = xd(e.config.get("toolbar")),
+ this._elementReplacer = new vs
+ }
+ get element() {
+ return this.view.element
+ }
+ init(e) {
+ const t = this.editor,
+ i = this.view,
+ n = t.editing.view,
+ o = i.editable,
+ r = n.document.getRoot();
+ o.name = r.rootName,
+ i.render();
+ const s = o.element;
+ this.setEditableElement(o.name, s),
+ this.focusTracker.add(s),
+ i.editable.bind("isFocused").to(this.focusTracker),
+ n.attachDomRoot(s),
+ e && this._elementReplacer.replace(e, this.element),
+ this._initPlaceholder(),
+ this._initToolbar(),
+ this.fire("ready")
+ }
+ destroy() {
+ const e = this.view,
+ t = this.editor.editing.view;
+ this._elementReplacer.restore(),
+ t.detachDomRoot(e.editable.name),
+ e.destroy(),
+ super.destroy()
+ }
+ _initToolbar() {
+ const e = this.editor,
+ t = this.view,
+ i = e.editing.view;
+ t.stickyPanel.bind("isActive").to(this.focusTracker, "isFocused"),
+ t.stickyPanel.limiterElement = t.element,
+ this._toolbarConfig.viewportTopOffset && (t.stickyPanel.viewportTopOffset = this._toolbarConfig.viewportTopOffset),
+ t.toolbar.fillFromConfig(this._toolbarConfig, this.componentFactory),
+ function ({
+ origin: e,
+ originKeystrokeHandler: t,
+ originFocusTracker: i,
+ toolbar: n,
+ beforeFocus: o,
+ afterBlur: r
+ }) {
+ i.add(n.element),
+ t.set("Alt+F10", (e, t) => {
+ i.isFocused && !n.focusTracker.isFocused && (o && o(), n.focus(), t())
+ }),
+ n.keystrokes.set("Esc", (t, i) => {
+ n.focusTracker.isFocused && (e.focus(), r && r(), i())
+ })
+ }
+ ({
+ origin: i,
+ originFocusTracker: this.focusTracker,
+ originKeystrokeHandler: e.keystrokes,
+ toolbar: t.toolbar
+ })
+ }
+ _initPlaceholder() {
+ const e = this.editor,
+ t = e.editing.view,
+ i = t.document.getRoot(),
+ n = e.sourceElement,
+ o = e.config.get("placeholder") || n && "textarea" === n.tagName.toLowerCase() && n.getAttribute("placeholder");
+ o && iu({
+ view: t,
+ element: i,
+ text: o,
+ isDirectHost: !1,
+ keepOnFocus: !0
+ })
+ }
+ }
+ i(60);
+ class yu extends Dd {
+ constructor(e, t, i = {}) {
+ super(e),
+ this.stickyPanel = new eu(e),
+ this.toolbar = new Ad(e, {
+ shouldGroupWhenFull: i.shouldToolbarGroupWhenFull
+ }),
+ this.editable = new zd(e, t)
+ }
+ render() {
+ super.render(),
+ this.stickyPanel.content.add(this.toolbar),
+ this.top.add(this.stickyPanel),
+ this.main.add(this.editable)
+ }
+ }
+ class xu extends bl {
+ constructor(e, t) {
+ super(t),
+ Yi(e) && (this.sourceElement = e),
+ this.model.document.createRoot();
+ const i = !this.config.get("toolbar.shouldNotGroupWhenFull"),
+ n = new yu(this.locale, this.editing.view, {
+ shouldToolbarGroupWhenFull: i
+ });
+ this.ui = new vu(this, n),
+ function (e) {
+ if (!I(e.updateSourceElement))
+ throw new c.a("attachtoform-missing-elementapi-interface", e);
+ const t = e.sourceElement;
+ if (t && "textarea" === t.tagName.toLowerCase() && t.form) {
+ let i;
+ const n = t.form,
+ o = () => e.updateSourceElement();
+ I(n.submit) && (i = n.submit, n.submit = () => {
+ o(),
+ i.apply(n)
+ }),
+ n.addEventListener("submit", o),
+ e.on("destroy", () => {
+ n.removeEventListener("submit", o),
+ i && (n.submit = i)
+ })
+ }
+ }
+ (this)
+ }
+ destroy() {
+ return this.sourceElement && this.updateSourceElement(),
+ this.ui.destroy(),
+ super.destroy()
+ }
+ static create(e, t = {}) {
+ return new Promise(i => {
+ const n = new this(e, t);
+ i(n.initPlugins().then(() => n.ui.init(Yi(e) ? e : null)).then(() => {
+ if (!Yi(e) && t.initialData)
+ throw new c.a("editor-create-initial-data", null);
+ const i = void 0 !== t.initialData ? t.initialData : function (e) {
+ return Yi(e) ? (t = e, t instanceof HTMLTextAreaElement ? t.value : t.innerHTML) : e;
+ var t
+ }
+ (e);
+ return n.data.init(i)
+ }).then(() => n.fire("ready")).then(() => n))
+ })
+ }
+ }
+ Ke(xu, vl),
+ Ke(xu, yl);
+ class Au {
+ constructor(e) {
+ this.files = function (e) {
+ const t = e.files ? Array.from(e.files) : [],
+ i = e.items ? Array.from(e.items) : [];
+ if (t.length)
+ return t;
+ return i.filter(e => "file" === e.kind).map(e => e.getAsFile())
+ }
+ (e),
+ this._native = e
+ }
+ get types() {
+ return this._native.types
+ }
+ getData(e) {
+ return this._native.getData(e)
+ }
+ setData(e, t) {
+ this._native.setData(e, t)
+ }
+ set effectAllowed(e) {
+ this._native.effectAllowed = e
+ }
+ get effectAllowed() {
+ return this._native.effectAllowed
+ }
+ set dropEffect(e) {
+ this._native.dropEffect = e
+ }
+ get dropEffect() {
+ return this._native.dropEffect
+ }
+ get isCanceled() {
+ return "none" == this._native.dropEffect || !!this._native.mozUserCancelled
+ }
+ }
+ class Cu extends ts {
+ constructor(e) {
+ super(e);
+ const t = this.document;
+ function i(e) {
+ return (i, n) => {
+ n.preventDefault();
+ const r = n.dropRange ? [n.dropRange] : null,
+ s = new o(t, e);
+ t.fire(s, {
+ dataTransfer: n.dataTransfer,
+ method: i.name,
+ targetRanges: r,
+ target: n.target
+ }),
+ s.stop.called && n.stopPropagation()
+ }
+ }
+ this.domEventType = ["paste", "copy", "cut", "drop", "dragover", "dragstart", "dragend", "dragenter", "dragleave"],
+ this.listenTo(t, "paste", i("clipboardInput"), {
+ priority: "low"
+ }),
+ this.listenTo(t, "drop", i("clipboardInput"), {
+ priority: "low"
+ }),
+ this.listenTo(t, "dragover", i("dragging"), {
+ priority: "low"
+ })
+ }
+ onDomEvent(e) {
+ const t = {
+ dataTransfer: new Au(e.clipboardData ? e.clipboardData : e.dataTransfer)
+ };
+ "drop" != e.type && "dragover" != e.type || (t.dropRange = function (e, t) {
+ const i = t.target.ownerDocument,
+ n = t.clientX,
+ o = t.clientY;
+ let r;
+ i.caretRangeFromPoint && i.caretRangeFromPoint(n, o) ? r = i.caretRangeFromPoint(n, o) : t.rangeParent && (r = i.createRange(), r.setStart(t.rangeParent, t.rangeOffset), r.collapse(!0));
+ if (r)
+ return e.domConverter.domRangeToView(r);
+ return null
+ }
+ (this.view, e)),
+ this.fire(e.type, e, t)
+ }
+ }
+ const Tu = ["figcaption", "li"];
+ class Eu extends Qe {
+ static get pluginName() {
+ return "ClipboardPipeline"
+ }
+ init() {
+ this.editor.editing.view.addObserver(Cu),
+ this._setupPasteDrop(),
+ this._setupCopyCut()
+ }
+ _setupPasteDrop() {
+ const e = this.editor,
+ t = e.model,
+ i = e.editing.view,
+ n = i.document;
+ this.listenTo(n, "clipboardInput", t => {
+ e.isReadOnly && t.stop()
+ }, {
+ priority: "highest"
+ }),
+ this.listenTo(n, "clipboardInput", (e, t) => {
+ const n = t.dataTransfer;
+ let r = t.content || "";
+ var s;
+ r || (n.getData("text/html") ? r = function (e) {
+ return e.replace(/(\s+)<\/span>/g, (e, t) => 1 == t.length ? " " : t)
+ }
+ (n.getData("text/html")) : n.getData("text/plain") && (((s = (s = n.getData("text/plain")).replace(//g, ">").replace(/\r?\n\r?\n/g, "
").replace(/\r?\n/g, "
").replace(/^\s/, " ").replace(/\s$/, " ").replace(/\s\s/g, " ")).includes("
") || s.includes("
")) && (s = `
${s}
`), r = s), r = this.editor.data.htmlProcessor.toView(r)); + const a = new o(this, "inputTransformation"); + this.fire(a, { + content: r, + dataTransfer: n, + targetRanges: t.targetRanges, + method: t.method + }), + a.stop.called && e.stop(), + i.scrollToTheSelection() + }, { + priority: "low" + }), + this.listenTo(this, "inputTransformation", (e, i) => { + if (i.content.isEmpty) + return; + const n = this.editor.data.toModel(i.content, "$clipboardHolder"); + 0 != n.childCount && (e.stop(), t.change(() => { + this.fire("contentInsertion", { + content: n, + method: i.method, + dataTransfer: i.dataTransfer, + targetRanges: i.targetRanges + }) + })) + }, { + priority: "low" + }), + this.listenTo(this, "contentInsertion", (e, i) => { + i.resultRange = t.insertContent(i.content) + }, { + priority: "low" + }) + } + _setupCopyCut() { + const e = this.editor, + t = e.model.document, + i = e.editing.view.document; + function n(n, o) { + const r = o.dataTransfer; + o.preventDefault(); + const s = e.data.toView(e.model.getSelectedContent(t.selection)); + i.fire("clipboardOutput", { + dataTransfer: r, + content: s, + method: n.name + }) + } + this.listenTo(i, "copy", n, { + priority: "low" + }), + this.listenTo(i, "cut", (t, i) => { + e.isReadOnly ? i.preventDefault() : n(t, i) + }, { + priority: "low" + }), + this.listenTo(i, "clipboardOutput", (i, n) => { + n.content.isEmpty || (n.dataTransfer.setData("text/html", this.editor.data.htmlProcessor.toData(n.content)), n.dataTransfer.setData("text/plain", function e(t) { + let i = ""; + if (t.is("$text") || t.is("$textProxy")) + i = t.data; + else if (t.is("element", "img") && t.hasAttribute("alt")) + i = t.getAttribute("alt"); + else if (t.is("element", "br")) + i = "\n"; + else { + let n = null; + for (const o of t.getChildren()) { + const t = e(o); + n && (n.is("containerElement") || o.is("containerElement")) && (Tu.includes(n.name) || Tu.includes(o.name) ? i += "\n" : i += "\n\n"), + i += t, + n = o + } + } + return i + } + (n.content))), + "cut" == n.method && e.model.deleteContent(t.selection) + }, { + priority: "low" + }) + } + } + function * Pu(e, t) { + for (const i of t) + i && e.getAttributeProperties(i[0]).copyOnEnter && (yield i) + } + class Su extends Ze { + execute() { + const e = this.editor.model, + t = e.document; + e.change(i => { + !function (e, t, i, n) { + const o = i.isCollapsed, + r = i.getFirstRange(), + s = r.start.parent, + a = r.end.parent; + if (n.isLimit(s) || n.isLimit(a)) + return void(o || s != a || e.deleteContent(i)); + if (o) { + const e = Pu(t.model.schema, i.getAttributes()); + Mu(t, r.start), + t.setSelectionAttribute(e) + } else { + const n = !(r.start.isAtStart && r.end.isAtEnd), + o = s == a; + e.deleteContent(i, { + leaveUnmerged: n + }), + n && (o ? Mu(t, i.focus) : t.setSelection(a, 0)) + } + } + (this.editor.model, i, t.selection, e.schema), + this.fire("afterExecute", { + writer: i + }) + }) + } + } + function Mu(e, t) { + e.split(t), + e.setSelection(t.parent.nextSibling, 0) + } + class Iu extends Or { + constructor(e) { + super(e); + const t = this.document; + t.on("keydown", (e, i) => { + if (this.isEnabled && i.keyCode == Io.enter) { + const n = new go(t, "enter", t.selection.getFirstRange()); + t.fire(n, new es(t, i.domEvent, { + isSoft: i.shiftKey + })), + n.stop.called && e.stop() + } + }) + } + observe() {} + } + class Nu extends Qe { + static get pluginName() { + return "Enter" + } + init() { + const e = this.editor, + t = e.editing.view, + i = t.document; + t.addObserver(Iu), + e.commands.add("enter", new Su(e)), + this.listenTo(i, "enter", (i, n) => { + n.preventDefault(), + n.isSoft || (e.execute("enter"), t.scrollToTheSelection()) + }, { + priority: "low" + }) + } + } + class Ru { + constructor(e, t = 20) { + this.model = e, + this.size = 0, + this.limit = t, + this.isLocked = !1, + this._changeCallback = (e, t) => { + "transparent" != t.type && t !== this._batch && this._reset(!0) + }, + this._selectionChangeCallback = () => { + this._reset() + }, + this.model.document.on("change", this._changeCallback), + this.model.document.selection.on("change:range", this._selectionChangeCallback), + this.model.document.selection.on("change:attribute", this._selectionChangeCallback) + } + get batch() { + return this._batch || (this._batch = this.model.createBatch()), + this._batch + } + input(e) { + this.size += e, + this.size >= this.limit && this._reset(!0) + } + lock() { + this.isLocked = !0 + } + unlock() { + this.isLocked = !1 + } + destroy() { + this.model.document.off("change", this._changeCallback), + this.model.document.selection.off("change:range", this._selectionChangeCallback), + this.model.document.selection.off("change:attribute", this._selectionChangeCallback) + } + _reset(e) { + this.isLocked && !e || (this._batch = null, this.size = 0) + } + } + class Ou extends Ze { + constructor(e, t) { + super(e), + this.direction = t, + this._buffer = new Ru(e.model, e.config.get("typing.undoStep")) + } + get buffer() { + return this._buffer + } + execute(e = {}) { + const t = this.editor.model, + i = t.document; + t.enqueueChange(this._buffer.batch, n => { + this._buffer.lock(); + const o = n.createSelection(e.selection || i.selection), + r = e.sequence || 1, + s = o.isCollapsed; + if (o.isCollapsed && t.modifySelection(o, { + direction: this.direction, + unit: e.unit + }), this._shouldEntireContentBeReplacedWithParagraph(r)) + return void this._replaceEntireContentWithParagraph(n); + if (this._shouldReplaceFirstBlockWithParagraph(o, r)) + return void this.editor.execute("paragraph", { + selection: o + }); + if (o.isCollapsed) + return; + let a = 0; + o.getFirstRange().getMinimalFlatRanges().forEach(e => { + a += uo(e.getWalker({ + singleCharacters: !0, + ignoreElementEnd: !0, + shallow: !0 + })) + }), + t.deleteContent(o, { + doNotResetEntireContent: s, + direction: this.direction + }), + this._buffer.input(a), + n.setSelection(o), + this._buffer.unlock() + }) + } + _shouldEntireContentBeReplacedWithParagraph(e) { + if (e > 1) + return !1; + const t = this.editor.model, + i = t.document.selection, + n = t.schema.getLimitElement(i); + if (!(i.isCollapsed && i.containsEntireContent(n))) + return !1; + if (!t.schema.checkChild(n, "paragraph")) + return !1; + const o = n.getChild(0); + return !o || "paragraph" !== o.name + } + _replaceEntireContentWithParagraph(e) { + const t = this.editor.model, + i = t.document.selection, + n = t.schema.getLimitElement(i), + o = e.createElement("paragraph"); + e.remove(e.createRangeIn(n)), + e.insert(o, n), + e.setSelection(o, 0) + } + _shouldReplaceFirstBlockWithParagraph(e, t) { + const i = this.editor.model; + if (t > 1 || "backward" != this.direction) + return !1; + if (!e.isCollapsed) + return !1; + const n = e.getFirstPosition(), + o = i.schema.getLimitElement(n), + r = o.getChild(0); + return n.parent == r && (!!e.containsEntireContent(r) && (!!i.schema.checkChild(o, "paragraph") && "paragraph" != r.name)) + } + } + class Du extends Or { + constructor(e) { + super(e); + const t = e.document; + let i = 0; + function n(e, i, n) { + const o = new go(t, "delete", t.selection.getFirstRange()); + t.fire(o, new es(t, i, n)), + o.stop.called && e.stop() + } + t.on("keyup", (e, t) => { + t.keyCode != Io.delete && t.keyCode != Io.backspace || (i = 0) + }), + t.on("keydown", (e, t) => { + const o = {}; + if (t.keyCode == Io.delete) + o.direction = "forward", o.unit = "character"; + else { + if (t.keyCode != Io.backspace) + return; + o.direction = "backward", + o.unit = "codePoint" + } + const r = Po.isMac ? t.altKey : t.ctrlKey; + o.unit = r ? "word" : o.unit, + o.sequence = ++i, + n(e, t.domEvent, o) + }), + Po.isAndroid && t.on("beforeinput", (t, i) => { + if ("deleteContentBackward" != i.domEvent.inputType) + return; + const o = { + unit: "codepoint", + direction: "backward", + sequence: 1 + }, + r = i.domTarget.ownerDocument.defaultView.getSelection(); + r.anchorNode == r.focusNode && r.anchorOffset + 1 != r.focusOffset && (o.selectionToRemove = e.domConverter.domSelectionToView(r)), + n(t, i.domEvent, o) + }) + } + observe() {} + } + class Lu extends Qe { + static get pluginName() { + return "Delete" + } + init() { + const e = this.editor, + t = e.editing.view, + i = t.document; + t.addObserver(Du); + const n = new Ou(e, "forward"); + if (e.commands.add("deleteForward", n), e.commands.add("forwardDelete", n), e.commands.add("delete", new Ou(e, "backward")), this.listenTo(i, "delete", (i, n) => { + const o = { + unit: n.unit, + sequence: n.sequence + }; + if (n.selectionToRemove) { + const t = e.model.createSelection(), + i = []; + for (const t of n.selectionToRemove.getRanges()) + i.push(e.editing.mapper.toModelRange(t)); + t.setTo(i), + o.selection = t + } + e.execute("forward" == n.direction ? "deleteForward" : "delete", o), + n.preventDefault(), + t.scrollToTheSelection() + }, { + priority: "low" + }), Po.isAndroid) { + let e = null; + this.listenTo(i, "delete", (t, i) => { + const n = i.domTarget.ownerDocument.defaultView.getSelection(); + e = { + anchorNode: n.anchorNode, + anchorOffset: n.anchorOffset, + focusNode: n.focusNode, + focusOffset: n.focusOffset + } + }, { + priority: "lowest" + }), + this.listenTo(i, "keyup", (t, i) => { + if (e) { + const t = i.domTarget.ownerDocument.defaultView.getSelection(); + t.collapse(e.anchorNode, e.anchorOffset), + t.extend(e.focusNode, e.focusOffset), + e = null + } + }) + } + } + } + class zu { + constructor() { + this._stack = [] + } + add(e, t) { + const i = this._stack, + n = i[0]; + this._insertDescriptor(e); + const o = i[0]; + n === o || Vu(n, o) || this.fire("change:top", { + oldDescriptor: n, + newDescriptor: o, + writer: t + }) + } + remove(e, t) { + const i = this._stack, + n = i[0]; + this._removeDescriptor(e); + const o = i[0]; + n === o || Vu(n, o) || this.fire("change:top", { + oldDescriptor: n, + newDescriptor: o, + writer: t + }) + } + _insertDescriptor(e) { + const t = this._stack, + i = t.findIndex(t => t.id === e.id); + if (Vu(e, t[i])) + return; + i > -1 && t.splice(i, 1); + let n = 0; + for (; t[n] && ju(t[n], e); ) + n++; + t.splice(n, 0, e) + } + _removeDescriptor(e) { + const t = this._stack, + i = t.findIndex(t => t.id === e); + i > -1 && t.splice(i, 1) + } + } + function Vu(e, t) { + return e && t && e.priority == t.priority && Bu(e.classes) == Bu(t.classes) + } + function ju(e, t) { + return e.priority > t.priority || !(e.priority < t.priority) && Bu(e.classes) > Bu(t.classes) + } + function Bu(e) { + return Array.isArray(e) ? e.sort().join(",") : e + } + Ke(zu, u); + function Fu(e) { + return !!e.is("element") && !!e.getCustomProperty("widget") + } + function Hu(e, t, i = {}) { + if (!e.is("containerElement")) + throw new c.a("widget-to-widget-wrong-element-type", null, { + element: e + }); + return t.setAttribute("contenteditable", "false", e), + t.addClass("ck-widget", e), + t.setCustomProperty("widget", !0, e), + e.getFillerOffset = Ju, + i.label && function (e, t, i) { + i.setCustomProperty("widgetLabel", t, e) + } + (e, i.label, t), + i.hasSelectionHandle && function (e, t) { + const i = t.createUIElement("div", { + class: "ck ck-widget__selection-handle" + }, (function (e) { + const t = this.toDomElement(e), + i = new sd; + return i.set("content", ''), + i.render(), + t.appendChild(i.element), + t + })); + t.insert(t.createPositionAt(e, 0), i), + t.addClass(["ck-widget_with-selection-handle"], e) + } + (e, t), + qu(e, t, Uu, Wu), + e + } + function Uu(e, t, i) { + if (t.classes && i.addClass(en(t.classes), e), t.attributes) + for (const n in t.attributes) + i.setAttribute(n, t.attributes[n], e) + } + function Wu(e, t, i) { + if (t.classes && i.removeClass(en(t.classes), e), t.attributes) + for (const n in t.attributes) + i.removeAttribute(n, e) + } + function qu(e, t, i, n) { + const o = new zu; + o.on("change:top", (t, o) => { + o.oldDescriptor && n(e, o.oldDescriptor, o.writer), + o.newDescriptor && i(e, o.newDescriptor, o.writer) + }), + t.setCustomProperty("addHighlight", (e, t, i) => o.add(t, i), e), + t.setCustomProperty("removeHighlight", (e, t, i) => o.remove(t, i), e) + } + function $u(e) { + const t = e.getCustomProperty("widgetLabel"); + return t ? "function" == typeof t ? t() : t : "" + } + function Yu(e, t) { + return t.addClass(["ck-editor__editable", "ck-editor__nested-editable"], e), + t.setAttribute("contenteditable", e.isReadOnly ? "false" : "true", e), + e.on("change:isReadOnly", (i, n, o) => { + t.setAttribute("contenteditable", o ? "false" : "true", e) + }), + e.on("change:isFocused", (i, n, o) => { + o ? t.addClass("ck-editor__nested-editable_focused", e) : t.removeClass("ck-editor__nested-editable_focused", e) + }), + e + } + function Gu(e, t) { + const i = e.getSelectedElement(); + if (i) { + const n = Xu(e); + if (n) + return t.createPositionAt(i, n); + if (t.schema.isBlock(i)) + return t.createPositionAfter(i) + } + const n = e.getSelectedBlocks().next().value; + if (n) { + if (n.isEmpty) + return t.createPositionAt(n, 0); + const i = t.createPositionAfter(n); + return e.focus.isTouching(i) ? i : t.createPositionBefore(n) + } + return e.focus + } + function Ku(e, t) { + const i = e.getSelectedElement(); + return !!i && t.isObject(i) + } + function Qu(e, t) { + const i = new Ts(_r.window), + n = i.getIntersection(e), + o = t.height + qd.arrowVerticalOffset; + if (e.top - o > i.top || e.bottom + o < i.bottom) + return null; + const r = n || e, + s = r.left + r.width / 2 - t.width / 2; + return { + top: Math.max(e.top, 0) + qd.arrowVerticalOffset, + left: s, + name: "arrow_n" + } + } + function Ju() { + return null + } + function Zu(e, t, i) { + return e && Fu(e) && !i.isInline(t) + } + function Xu(e) { + return e.getAttribute("widget-type-around") + } + const eh = [Ro("arrowUp"), Ro("arrowRight"), Ro("arrowDown"), Ro("arrowLeft"), 9, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 45, 91, 93, 144, 145, 173, 174, 175, 176, 177, 178, 179, 255]; + for (let e = 112; e <= 135; e++) + eh.push(e); + function th(e) { + return !(!e.ctrlKey && !e.metaKey) || eh.includes(e.keyCode) + } + i(62); + const ih = ["before", "after"], + nh = (new DOMParser).parseFromString('', "image/svg+xml").firstChild; + class oh extends Qe { + static get pluginName() { + return "WidgetTypeAround" + } + static get requires() { + return [Nu, Lu] + } + constructor(e) { + super(e), + this._currentFakeCaretModelElement = null + } + init() { + const e = this.editor, + t = e.editing.view; + this.on("change:isEnabled", (i, n, o) => { + t.change(e => { + for (const i of t.document.roots) + o ? e.removeClass("ck-widget__type-around_disabled", i) : e.addClass("ck-widget__type-around_disabled", i) + }), + o || e.model.change(e => { + e.removeSelectionAttribute("widget-type-around") + }) + }), + this._enableTypeAroundUIInjection(), + this._enableInsertingParagraphsOnButtonClick(), + this._enableInsertingParagraphsOnEnterKeypress(), + this._enableInsertingParagraphsOnTypingKeystroke(), + this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(), + this._enableDeleteIntegration(), + this._enableInsertContentIntegration() + } + destroy() { + this._currentFakeCaretModelElement = null + } + _insertParagraph(e, t) { + const i = this.editor, + n = i.editing.view; + i.execute("insertParagraph", { + position: i.model.createPositionAt(e, t) + }), + n.focus(), + n.scrollToTheSelection() + } + _listenToIfEnabled(e, t, i, n) { + this.listenTo(e, t, (...e) => { + this.isEnabled && i(...e) + }, n) + } + _insertParagraphAccordingToFakeCaretPosition() { + const e = this.editor.model.document.selection, + t = Xu(e); + if (!t) + return !1; + const i = e.getSelectedElement(); + return this._insertParagraph(i, t), + !0 + } + _enableTypeAroundUIInjection() { + const e = this.editor, + t = e.model.schema, + i = e.locale.t, + n = { + before: i("Insert paragraph before block"), + after: i("Insert paragraph after block") + }; + e.editing.downcastDispatcher.on("insert", (e, i, o) => { + const r = o.mapper.toViewElement(i.item); + Zu(r, i.item, t) && function (e, t, i) { + const n = e.createUIElement("div", { + class: "ck ck-reset_all ck-widget__type-around" + }, (function (e) { + const i = this.toDomElement(e); + return function (e, t) { + for (const i of ih) { + const n = new Bl({ + tag: "div", + attributes: { + class: ["ck", "ck-widget__type-around__button", "ck-widget__type-around__button_" + i], + title: t[i] + }, + children: [e.ownerDocument.importNode(nh, !0)] + }); + e.appendChild(n.render()) + } + } + (i, t), + function (e) { + const t = new Bl({ + tag: "div", + attributes: { + class: ["ck", "ck-widget__type-around__fake-caret"] + } + }); + e.appendChild(t.render()) + } + (i), + i + })); + e.insert(e.createPositionAt(i, "end"), n) + } + (o.writer, n, r) + }, { + priority: "low" + }) + } + _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() { + const e = this.editor, + t = e.model, + i = t.document.selection, + n = t.schema, + o = e.editing.view; + function r(e) { + return "ck-widget_type-around_show-fake-caret_" + e + } + this._listenToIfEnabled(o.document, "arrowKey", (e, t) => { + this._handleArrowKeyPress(e, t) + }, { + context: [Fu, "$text"], + priority: "high" + }), + this._listenToIfEnabled(i, "change:range", (t, i) => { + i.directChange && e.model.change(e => { + e.removeSelectionAttribute("widget-type-around") + }) + }), + this._listenToIfEnabled(t.document, "change:data", () => { + const t = i.getSelectedElement(); + if (t) { + if (Zu(e.editing.mapper.toViewElement(t), t, n)) + return + } + e.model.change(e => { + e.removeSelectionAttribute("widget-type-around") + }) + }), + this._listenToIfEnabled(e.editing.downcastDispatcher, "selection", (e, t, i) => { + const o = i.writer; + if (this._currentFakeCaretModelElement) { + const e = i.mapper.toViewElement(this._currentFakeCaretModelElement); + e && (o.removeClass(ih.map(r), e), this._currentFakeCaretModelElement = null) + } + const s = t.selection.getSelectedElement(); + if (!s) + return; + const a = i.mapper.toViewElement(s); + if (!Zu(a, s, n)) + return; + const c = Xu(t.selection); + c && (o.addClass(r(c), a), this._currentFakeCaretModelElement = s) + }), + this._listenToIfEnabled(e.ui.focusTracker, "change:isFocused", (t, i, n) => { + n || e.model.change(e => { + e.removeSelectionAttribute("widget-type-around") + }) + }) + } + _handleArrowKeyPress(e, t) { + const i = this.editor, + n = i.model, + o = n.document.selection, + r = n.schema, + s = i.editing.view, + a = zo(t.keyCode, i.locale.contentLanguageDirection), + c = s.document.selection.getSelectedElement(); + let l; + Zu(c, i.editing.mapper.toModelElement(c), r) ? l = this._handleArrowKeyPressOnSelectedWidget(a) : o.isCollapsed && (l = this._handleArrowKeyPressWhenSelectionNextToAWidget(a)), + l && (t.preventDefault(), e.stop()) + } + _handleArrowKeyPressOnSelectedWidget(e) { + const t = this.editor.model, + i = Xu(t.document.selection); + return t.change(t => { + if (!i) + return t.setSelectionAttribute("widget-type-around", e ? "after" : "before"), !0; + if (!(i === (e ? "after" : "before"))) + return t.removeSelectionAttribute("widget-type-around"), !0; + return !1 + }) + } + _handleArrowKeyPressWhenSelectionNextToAWidget(e) { + const t = this.editor, + i = t.model, + n = i.schema, + o = t.plugins.get("Widget"), + r = o._getObjectElementNextToSelection(e); + return !!Zu(t.editing.mapper.toViewElement(r), r, n) && (i.change(t => { + o._setSelectionOverElement(r), + t.setSelectionAttribute("widget-type-around", e ? "before" : "after") + }), !0) + } + _enableInsertingParagraphsOnButtonClick() { + const e = this.editor, + t = e.editing.view; + this._listenToIfEnabled(t.document, "mousedown", (i, n) => { + const o = n.domTarget.closest(".ck-widget__type-around__button"); + if (!o) + return; + const r = function (e) { + return e.classList.contains("ck-widget__type-around__button_before") ? "before" : "after" + } + (o), + s = function (e, t) { + const i = e.closest(".ck-widget"); + return t.mapDomToView(i) + } + (o, t.domConverter), + a = e.editing.mapper.toModelElement(s); + this._insertParagraph(a, r), + n.preventDefault(), + i.stop() + }) + } + _enableInsertingParagraphsOnEnterKeypress() { + const e = this.editor, + t = e.model.document.selection, + i = e.editing.view; + this._listenToIfEnabled(i.document, "enter", (i, n) => { + if ("atTarget" != i.eventPhase) + return; + const o = t.getSelectedElement(), + r = e.editing.mapper.toViewElement(o), + s = e.model.schema; + let a; + this._insertParagraphAccordingToFakeCaretPosition() ? a = !0 : Zu(r, o, s) && (this._insertParagraph(o, n.isSoft ? "before" : "after"), a = !0), + a && (n.preventDefault(), i.stop()) + }, { + context: Fu + }) + } + _enableInsertingParagraphsOnTypingKeystroke() { + const e = this.editor.editing.view, + t = [Io.enter, Io.delete, Io.backspace]; + this._listenToIfEnabled(e.document, "keydown", (e, i) => { + t.includes(i.keyCode) || th(i) || this._insertParagraphAccordingToFakeCaretPosition() + }, { + priority: "high" + }) + } + _enableDeleteIntegration() { + const e = this.editor, + t = e.editing.view, + i = e.model, + n = i.schema; + this._listenToIfEnabled(t.document, "delete", (t, o) => { + if ("atTarget" != t.eventPhase) + return; + const r = Xu(i.document.selection); + if (!r) + return; + const s = o.direction, + a = i.document.selection.getSelectedElement(), + c = "forward" == s; + if ("before" === r === c) + e.execute("delete", { + selection: i.createSelection(a, "on") + }); + else { + const t = n.getNearestSelectionRange(i.createPositionAt(a, r), s); + if (t) + if (t.isCollapsed) { + const o = i.createSelection(t.start); + if (i.modifySelection(o, { + direction: s + }), o.focus.isEqual(t.start)) { + const e = function (e, t) { + let i = t; + for (const n of t.getAncestors({ + parentFirst: !0 + })) { + if (n.childCount > 1 || e.isLimit(n)) + break; + i = n + } + return i + } + (n, t.start.parent); + i.deleteContent(i.createSelection(e, "on"), { + doNotAutoparagraph: !0 + }) + } else + i.change(i => { + i.setSelection(t), + e.execute(c ? "deleteForward" : "delete") + }) + } else + i.change(i => { + i.setSelection(t), + e.execute(c ? "deleteForward" : "delete") + }) + } + o.preventDefault(), + t.stop() + }, { + context: Fu + }) + } + _enableInsertContentIntegration() { + const e = this.editor, + t = this.editor.model, + i = t.document.selection; + this._listenToIfEnabled(e.model, "insertContent", (e, [n, o]) => { + if (o && !o.is("documentSelection")) + return; + const r = Xu(i); + return r ? (e.stop(), t.change(e => { + const o = i.getSelectedElement(), + s = t.createPositionAt(o, r), + a = e.createSelection(s), + c = t.insertContent(n, a); + return e.setSelection(a), + c + })) : void 0 + }, { + priority: "high" + }) + } + } + i(64); + function rh(e) { + const t = e.model; + return (i, n) => { + const o = n.keyCode == Io.arrowup, + r = n.keyCode == Io.arrowdown, + s = n.shiftKey, + a = t.document.selection; + if (!o && !r) + return; + const c = r; + if (s && function (e, t) { + return !e.isCollapsed && e.isBackward == t + } + (a, c)) + return; + const l = function (e, t, i) { + const n = e.model; + if (i) { + const e = t.isCollapsed ? t.focus : t.getLastPosition(), + i = sh(n, e, "forward"); + if (!i) + return null; + const o = n.createRange(e, i), + r = ah(n.schema, o, "backward"); + return r && e.isBefore(r) ? n.createRange(e, r) : null + } { + const e = t.isCollapsed ? t.focus : t.getFirstPosition(), + i = sh(n, e, "backward"); + if (!i) + return null; + const o = n.createRange(i, e), + r = ah(n.schema, o, "forward"); + return r && e.isAfter(r) ? n.createRange(r, e) : null + } + } + (e, a, c); + l && !l.isCollapsed && function (e, t, i) { + const n = e.model, + o = e.view.domConverter; + if (i) { + const e = n.createSelection(t.start); + n.modifySelection(e), + e.focus.isAtEnd || t.start.isEqual(e.focus) || (t = n.createRange(e.focus, t.end)) + } + const r = e.mapper.toViewRange(t), + s = o.viewRangeToDom(r), + a = Ts.getDomRangeRects(s); + let c; + for (const e of a) + if (void 0 !== c) { + if (Math.round(e.top) >= c) + return !1; + c = Math.max(c, Math.round(e.bottom)) + } else + c = Math.round(e.bottom); + return !0 + } + (e, l, c) && (t.change(e => { + const i = c ? l.end : l.start; + if (s) { + const n = t.createSelection(a.anchor); + n.setFocus(i), + e.setSelection(n) + } else + e.setSelection(i) + }), i.stop(), n.preventDefault(), n.stopPropagation()) + } + } + function sh(e, t, i) { + const n = e.schema, + o = e.createRangeIn(t.root), + r = "forward" == i ? "elementStart" : "elementEnd"; + for (const { + previousPosition: e, + item: s, + type: a + } + of o.getWalker({ + startPosition: t, + direction: i + })) { + if (n.isLimit(s) && !n.isInline(s)) + return e; + if (a == r && n.isBlock(s)) + return null + } + return null + } + function ah(e, t, i) { + const n = "backward" == i ? t.end : t.start; + if (e.checkChild(n, "$text")) + return n; + for (const { + nextPosition: n + } + of t.getWalker({ + direction: i + })) + if (e.checkChild(n, "$text")) + return n + } + class ch extends Qe { + static get pluginName() { + return "Widget" + } + static get requires() { + return [oh, Lu] + } + init() { + const e = this.editor.editing.view, + t = e.document; + this._previouslySelected = new Set, + this.editor.editing.downcastDispatcher.on("selection", (e, t, i) => { + this._clearPreviouslySelectedWidgets(i.writer); + const n = i.writer, + o = n.document.selection, + r = o.getSelectedElement(); + let s = null; + for (const e of o.getRanges()) + for (const t of e) { + const e = t.item; + Fu(e) && !lh(e, s) && (n.addClass("ck-widget_selected", e), this._previouslySelected.add(e), s = e, e == r && n.setSelection(o.getRanges(), { + fake: !0, + label: $u(r) + })) + } + }, { + priority: "low" + }), + e.addObserver(ku), + this.listenTo(t, "mousedown", (...e) => this._onMousedown(...e)), + this.listenTo(t, "arrowKey", (...e) => { + this._handleSelectionChangeOnArrowKeyPress(...e) + }, { + context: [Fu, "$text"] + }), + this.listenTo(t, "arrowKey", (...e) => { + this._preventDefaultOnArrowKeyPress(...e) + }, { + context: "$root" + }), + this.listenTo(t, "arrowKey", rh(this.editor.editing), { + context: "$text" + }), + this.listenTo(t, "delete", (e, t) => { + this._handleDelete("forward" == t.direction) && (t.preventDefault(), e.stop()) + }, { + context: "$root" + }) + } + _onMousedown(e, t) { + const i = this.editor, + n = i.editing.view, + o = n.document; + let r = t.target; + if (function (e) { + for (; e; ) { + if (e.is("editableElement") && !e.is("rootElement")) + return !0; + if (Fu(e)) + return !1; + e = e.parent + } + return !1 + } + (r)) { + if ((Po.isSafari || Po.isGecko) && t.domEvent.detail >= 3) { + const e = i.editing.mapper, + n = r.is("attributeElement") ? r.findAncestor(e => !e.is("attributeElement")) : r, + o = e.toModelElement(n); + t.preventDefault(), + this.editor.model.change(e => { + e.setSelection(o, "in") + }) + } + return + } + if (!Fu(r) && (r = r.findAncestor(Fu), !r)) + return; + Po.isAndroid && t.preventDefault(), + o.isFocused || n.focus(); + const s = i.editing.mapper.toModelElement(r); + this._setSelectionOverElement(s) + } + _handleSelectionChangeOnArrowKeyPress(e, t) { + const i = t.keyCode, + n = this.editor.model, + o = n.schema, + r = n.document.selection, + s = r.getSelectedElement(), + a = zo(i, this.editor.locale.contentLanguageDirection); + if (s && o.isObject(s)) { + const i = a ? r.getLastPosition() : r.getFirstPosition(), + s = o.getNearestSelectionRange(i, a ? "forward" : "backward"); + return void(s && (n.change(e => { + e.setSelection(s) + }), t.preventDefault(), e.stop())) + } + if (!r.isCollapsed) + return; + const c = this._getObjectElementNextToSelection(a); + c && o.isObject(c) && (this._setSelectionOverElement(c), t.preventDefault(), e.stop()) + } + _preventDefaultOnArrowKeyPress(e, t) { + const i = this.editor.model, + n = i.schema, + o = i.document.selection.getSelectedElement(); + o && n.isObject(o) && (t.preventDefault(), e.stop()) + } + _handleDelete(e) { + if (this.editor.isReadOnly) + return; + const t = this.editor.model.document.selection; + if (!t.isCollapsed) + return; + const i = this._getObjectElementNextToSelection(e); + return i ? (this.editor.model.change(e => { + let n = t.anchor.parent; + for (; n.isEmpty; ) { + const t = n; + n = t.parent, + e.remove(t) + } + this._setSelectionOverElement(i) + }), !0) : void 0 + } + _setSelectionOverElement(e) { + this.editor.model.change(t => { + t.setSelection(t.createRangeOn(e)) + }) + } + _getObjectElementNextToSelection(e) { + const t = this.editor.model, + i = t.schema, + n = t.document.selection, + o = t.createSelection(n); + t.modifySelection(o, { + direction: e ? "forward" : "backward" + }); + const r = e ? o.focus.nodeBefore : o.focus.nodeAfter; + return r && i.isObject(r) ? r : null + } + _clearPreviouslySelectedWidgets(e) { + for (const t of this._previouslySelected) + e.removeClass("ck-widget_selected", t); + this._previouslySelected.clear() + } + } + function lh(e, t) { + return !!t && Array.from(e.getAncestors()).includes(t) + } + var dh = function (e, t, i) { + var n = !0, + o = !0; + if ("function" != typeof e) + throw new TypeError("Expected a function"); + return w(i) && (n = "leading" in i ? !!i.leading : n, o = "trailing" in i ? !!i.trailing : o), + ms(e, t, { + leading: n, + maxWait: t, + trailing: o + }) + }; + i(66); + class uh extends Qe { + static get pluginName() { + return "DragDrop" + } + static get requires() { + return [Eu, ch] + } + init() { + const e = this.editor, + t = e.editing.view; + this._draggedRange = null, + this._draggingUid = "", + this._draggableElement = null, + this._updateDropMarkerThrottled = dh(e => this._updateDropMarker(e), 40), + this._removeDropMarkerDelayed = gh(() => this._removeDropMarker(), 40), + this._clearDraggableAttributesDelayed = gh(() => this._clearDraggableAttributes(), 40), + t.addObserver(Cu), + t.addObserver(ku), + this._setupDragging(), + this._setupContentInsertionIntegration(), + this._setupClipboardInputIntegration(), + this._setupDropMarker(), + this._setupDraggableAttributeHandling(), + this.listenTo(e, "change:isReadOnly", (e, t, i) => { + i ? this.forceDisabled("readOnlyMode") : this.clearForceDisabled("readOnlyMode") + }), + this.on("change:isEnabled", (e, t, i) => { + i || this._finalizeDragging(!1) + }), + Po.isAndroid && this.forceDisabled("noAndroidSupport") + } + destroy() { + return this._draggedRange && (this._draggedRange.detach(), this._draggedRange = null), + this._updateDropMarkerThrottled.cancel(), + this._removeDropMarkerDelayed.cancel(), + this._clearDraggableAttributesDelayed.cancel(), + super.destroy() + } + _setupDragging() { + const e = this.editor, + t = e.model, + i = t.document, + n = e.editing.view, + o = n.document; + this.listenTo(o, "dragstart", (n, r) => { + const a = i.selection; + if (r.target && r.target.is("editableElement")) + return void r.preventDefault(); + const c = r.target ? mh(r.target) : null; + if (c) { + const i = e.editing.mapper.toModelElement(c); + this._draggedRange = ba.fromRange(t.createRangeOn(i)) + } else if (!o.selection.isCollapsed) { + const e = o.selection.getSelectedElement(); + e && Fu(e) || (this._draggedRange = ba.fromRange(a.getFirstRange())) + } + if (!this._draggedRange) + return void r.preventDefault(); + this._draggingUid = s(), + r.dataTransfer.effectAllowed = this.isEnabled ? "copyMove" : "copy", + r.dataTransfer.setData("application/ckeditor5-dragging-uid", this._draggingUid); + const l = t.createSelection(this._draggedRange.toRange()), + d = e.data.toView(t.getSelectedContent(l)); + o.fire("clipboardOutput", { + dataTransfer: r.dataTransfer, + content: d, + method: n.name + }), + this.isEnabled || (this._draggedRange.detach(), this._draggedRange = null, this._draggingUid = "") + }, { + priority: "low" + }), + this.listenTo(o, "dragend", (e, t) => { + this._finalizeDragging(!t.dataTransfer.isCanceled && "move" == t.dataTransfer.dropEffect) + }, { + priority: "low" + }), + this.listenTo(o, "dragenter", () => { + this.isEnabled && n.focus() + }), + this.listenTo(o, "dragleave", () => { + this._removeDropMarkerDelayed() + }), + this.listenTo(o, "dragging", (t, i) => { + if (!this.isEnabled) + return void(i.dataTransfer.dropEffect = "none"); + this._removeDropMarkerDelayed.cancel(); + const n = hh(e, i.targetRanges, i.target); + this._draggedRange || (i.dataTransfer.dropEffect = "copy"), + Po.isGecko || ("copy" == i.dataTransfer.effectAllowed ? i.dataTransfer.dropEffect = "copy" : ["all", "copyMove"].includes(i.dataTransfer.effectAllowed) && (i.dataTransfer.dropEffect = "move")), + n && this._updateDropMarkerThrottled(n) + }, { + priority: "low" + }) + } + _setupClipboardInputIntegration() { + const e = this.editor, + t = e.editing.view.document; + this.listenTo(t, "clipboardInput", (t, i) => { + if ("drop" != i.method) + return; + const n = hh(e, i.targetRanges, i.target); + if (this._removeDropMarker(), !n) + return this._finalizeDragging(!1), void t.stop(); + this._draggedRange && this._draggingUid != i.dataTransfer.getData("application/ckeditor5-dragging-uid") && (this._draggedRange.detach(), this._draggedRange = null, this._draggingUid = ""); + if ("move" == fh(i.dataTransfer) && this._draggedRange && this._draggedRange.containsRange(n, !0)) + return this._finalizeDragging(!1), void t.stop(); + i.targetRanges = [e.editing.mapper.toViewRange(n)] + }, { + priority: "high" + }) + } + _setupContentInsertionIntegration() { + const e = this.editor.plugins.get(Eu); + e.on("contentInsertion", (e, t) => { + if (!this.isEnabled || "drop" !== t.method) + return; + const i = t.targetRanges.map(e => this.editor.editing.mapper.toModelRange(e)); + this.editor.model.change(e => e.setSelection(i)) + }, { + priority: "high" + }), + e.on("contentInsertion", (e, t) => { + if (!this.isEnabled || "drop" !== t.method) + return; + const i = "move" == fh(t.dataTransfer), + n = !t.resultRange || !t.resultRange.isCollapsed; + this._finalizeDragging(n && i) + }, { + priority: "lowest" + }) + } + _setupDraggableAttributeHandling() { + const e = this.editor, + t = e.editing.view, + i = t.document; + this.listenTo(i, "mousedown", (n, o) => { + if (Po.isAndroid || !o) + return; + this._clearDraggableAttributesDelayed.cancel(); + let r = mh(o.target); + if (Po.isBlink && !e.isReadOnly && !r && !i.selection.isCollapsed) { + const e = i.selection.getSelectedElement(); + e && Fu(e) || (r = i.selection.editableElement) + } + r && (t.change(e => { + e.setAttribute("draggable", "true", r) + }), this._draggableElement = e.editing.mapper.toModelElement(r)) + }), + this.listenTo(i, "mouseup", () => { + Po.isAndroid || this._clearDraggableAttributesDelayed() + }) + } + _clearDraggableAttributes() { + const e = this.editor.editing; + e.view.change(t => { + this._draggableElement && "$graveyard" != this._draggableElement.root.rootName && t.removeAttribute("draggable", e.mapper.toViewElement(this._draggableElement)), + this._draggableElement = null + }) + } + _setupDropMarker() { + const e = this.editor; + e.conversion.for("editingDowncast").markerToHighlight({ + model: "drop-target", + view: { + classes: ["ck-clipboard-drop-target-range"] + } + }), + e.conversion.for("editingDowncast").markerToElement({ + model: "drop-target", + view: (t, { + writer: i + }) => { + if (e.model.schema.checkChild(t.markerRange.start, "$text")) + return i.createUIElement("span", { + class: "ck ck-clipboard-drop-target-position" + }, (function (e) { + const t = this.toDomElement(e); + return t.innerHTML = "⁠⁠", + t + })) + } + }) + } + _updateDropMarker(e) { + const t = this.editor, + i = t.model.markers; + t.model.change(t => { + i.has("drop-target") ? i.get("drop-target").getRange().isEqual(e) || t.updateMarker("drop-target", { + range: e + }) : t.addMarker("drop-target", { + range: e, + usingOperation: !1, + affectsData: !1 + }) + }) + } + _removeDropMarker() { + const e = this.editor.model; + this._removeDropMarkerDelayed.cancel(), + this._updateDropMarkerThrottled.cancel(), + e.markers.has("drop-target") && e.change(e => { + e.removeMarker("drop-target") + }) + } + _finalizeDragging(e) { + const t = this.editor.model; + this._removeDropMarker(), + this._clearDraggableAttributes(), + this._draggingUid = "", + this._draggedRange && (e && this.isEnabled && t.deleteContent(t.createSelection(this._draggedRange), { + doNotAutoparagraph: !0 + }), this._draggedRange.detach(), this._draggedRange = null) + } + } + function hh(e, t, i) { + const n = e.model, + o = e.editing.mapper; + let r = null; + const s = t ? t[0].start : null; + if (i.is("uiElement") && (i = i.parent), r = function (e, t) { + const i = e.model, + n = e.editing.mapper; + if (Fu(t)) + return i.createRangeOn(n.toModelElement(t)); + if (!t.is("editableElement")) { + const e = t.findAncestor(e => Fu(e) || e.is("editableElement")); + if (Fu(e)) + return i.createRangeOn(n.toModelElement(e)) + } + return null + } + (e, i), r)return r; + const a = function (e, t) { + const i = e.editing.mapper, + n = e.editing.view, + o = i.toModelElement(t); + if (o) + return o; + const r = n.createPositionBefore(t), + s = i.findMappedViewAncestor(r); + return i.toModelElement(s) + } + (e, i), + c = s ? o.toModelPosition(s) : null; + return c ? (r = function (e, t, i) { + const n = e.model; + if (!n.schema.checkChild(i, "$block")) + return null; + const o = n.createPositionAt(i, 0), + r = t.path.slice(0, o.path.length), + s = n.createPositionFromPath(t.root, r).nodeAfter; + if (s && n.schema.isObject(s)) + return n.createRangeOn(s); + return null + } + (e, c, a), r || (r = n.schema.getNearestSelectionRange(c, Po.isGecko ? "forward" : "backward"), r || function (e, t) { + const i = e.model; + for (; t; ) { + if (i.schema.isObject(t)) + return i.createRangeOn(t); + t = t.parent + } + } + (e, c.parent))) : function (e, t) { + const i = e.model, + n = i.schema, + o = i.createPositionAt(t, 0); + return n.getNearestSelectionRange(o, "forward") + } + (e, a) + } + function fh(e) { + return Po.isGecko ? e.dropEffect : ["all", "copyMove"].includes(e.effectAllowed) ? "move" : "copy" + } + function gh(e, t) { + let i; + function n(...o) { + n.cancel(), + i = setTimeout(() => e(...o), t) + } + return n.cancel = () => { + clearTimeout(i) + }, + n + } + function mh(e) { + if (e.is("editableElement")) + return null; + if (e.hasClass("ck-widget__selection-handle")) + return e.findAncestor(Fu); + if (Fu(e)) + return e; + const t = e.findAncestor(e => Fu(e) || e.is("editableElement")); + return Fu(t) ? t : null + } + class ph extends Qe { + static get pluginName() { + return "PastePlainText" + } + static get requires() { + return [Eu] + } + init() { + const e = this.editor, + t = e.model, + i = e.editing.view, + n = i.document, + o = t.document.selection; + let r = !1; + i.addObserver(Cu), + this.listenTo(n, "keydown", (e, t) => { + r = t.shiftKey + }), + e.plugins.get(Eu).on("contentInsertion", (e, i) => { + (r || function (e, t) { + if (e.childCount > 1) + return !1; + const i = e.getChild(0); + if (t.isObject(i)) + return !1; + return 0 == [...i.getAttributeKeys()].length + } + (i.content, t.schema)) && t.change(e => { + const n = Array.from(o.getAttributes()).filter(([e]) => t.schema.getAttributeProperties(e).isFormatting); + o.isCollapsed || t.deleteContent(o, { + doNotAutoparagraph: !0 + }), + n.push(...o.getAttributes()); + const r = e.createRangeIn(i.content); + for (const t of r.getItems()) + t.is("$textProxy") && e.setAttributes(n, t) + }) + }) + } + } + class bh extends Qe { + static get pluginName() { + return "Clipboard" + } + static get requires() { + return [Eu, uh, ph] + } + } + class wh extends Ze { + execute() { + const e = this.editor.model, + t = e.document; + e.change(i => { + !function (e, t, i) { + const n = i.isCollapsed, + o = i.getFirstRange(), + r = o.start.parent, + s = o.end.parent, + a = r == s; + if (n) { + const n = Pu(e.schema, i.getAttributes()); + kh(e, t, o.end), + t.removeSelectionAttribute(i.getAttributeKeys()), + t.setSelectionAttribute(n) + } else { + const n = !(o.start.isAtStart && o.end.isAtEnd); + e.deleteContent(i, { + leaveUnmerged: n + }), + a ? kh(e, t, i.focus) : n && t.setSelection(s, 0) + } + } + (e, i, t.selection), + this.fire("afterExecute", { + writer: i + }) + }) + } + refresh() { + const e = this.editor.model, + t = e.document; + this.isEnabled = function (e, t) { + if (t.rangeCount > 1) + return !1; + const i = t.anchor; + if (!i || !e.checkChild(i, "softBreak")) + return !1; + const n = t.getFirstRange(), + o = n.start.parent, + r = n.end.parent; + if ((_h(o, e) || _h(r, e)) && o !== r) + return !1; + return !0 + } + (e.schema, t.selection) + } + } + function kh(e, t, i) { + const n = t.createElement("softBreak"); + e.insertContent(n, i), + t.setSelection(n, "after") + } + function _h(e, t) { + return !e.is("rootElement") && (t.isLimit(e) || _h(e.parent, t)) + } + class vh extends Qe { + static get pluginName() { + return "ShiftEnter" + } + init() { + const e = this.editor, + t = e.model.schema, + i = e.conversion, + n = e.editing.view, + o = n.document; + t.register("softBreak", { + allowWhere: "$text", + isInline: !0 + }), + i.for("upcast").elementToElement({ + model: "softBreak", + view: "br" + }), + i.for("downcast").elementToElement({ + model: "softBreak", + view: (e, { + writer: t + }) => t.createEmptyElement("br") + }), + n.addObserver(Iu), + e.commands.add("shiftEnter", new wh(e)), + this.listenTo(o, "enter", (t, i) => { + i.preventDefault(), + i.isSoft && (e.execute("shiftEnter"), n.scrollToTheSelection()) + }, { + priority: "low" + }) + } + } + class yh extends Ze { + execute() { + const e = this.editor.model, + t = e.document.selection; + let i = e.schema.getLimitElement(t); + if (t.containsEntireContent(i) || !xh(e.schema, i)) + do { + if (i = i.parent, !i) + return + } while (!xh(e.schema, i)); + e.change(e => { + e.setSelection(i, "in") + }) + } + } + function xh(e, t) { + return e.isLimit(t) && (e.checkChild(t, "$text") || e.checkChild(t, "paragraph")) + } + const Ah = Oo("Ctrl+A"); + class Ch extends Qe { + static get pluginName() { + return "SelectAllEditing" + } + init() { + const e = this.editor, + t = e.editing.view.document; + e.commands.add("selectAll", new yh(e)), + this.listenTo(t, "keydown", (t, i) => { + Ro(i) === Ah && (e.execute("selectAll"), i.preventDefault()) + }) + } + } + class Th extends Qe { + static get pluginName() { + return "SelectAllUI" + } + init() { + const e = this.editor; + e.ui.componentFactory.add("selectAll", t => { + const i = e.commands.get("selectAll"), + n = new cd(t), + o = t.t; + return n.set({ + label: o("Select all"), + icon: '', + keystroke: "Ctrl+A", + tooltip: !0 + }), + n.bind("isOn", "isEnabled").to(i, "value", "isEnabled"), + this.listenTo(n, "execute", () => { + e.execute("selectAll"), + e.editing.view.focus() + }), + n + }) + } + } + class Eh extends Qe { + static get requires() { + return [Ch, Th] + } + static get pluginName() { + return "SelectAll" + } + } + class Ph extends Ze { + constructor(e, t) { + super(e), + this._buffer = new Ru(e.model, t), + this._batches = new WeakSet + } + get buffer() { + return this._buffer + } + destroy() { + super.destroy(), + this._buffer.destroy() + } + execute(e = {}) { + const t = this.editor.model, + i = t.document, + n = e.text || "", + o = n.length, + r = e.range ? t.createSelection(e.range) : i.selection, + s = e.resultRange; + t.enqueueChange(this._buffer.batch, e => { + this._buffer.lock(), + this._batches.add(this._buffer.batch), + t.deleteContent(r), + n && t.insertContent(e.createText(n, i.selection.getAttributes()), r), + s ? e.setSelection(s) : r.is("documentSelection") || e.setSelection(r), + this._buffer.unlock(), + this._buffer.input(o) + }) + } + } + function Sh(e) { + if (e.newChildren.length - e.oldChildren.length != 1) + return; + const t = function (e, t) { + const i = []; + let n, + o = 0; + return e.forEach(e => { + "equal" == e ? (r(), o++) : "insert" == e ? (s("insert") ? n.values.push(t[o]) : (r(), n = { + type: "insert", + index: o, + values: [t[o]] + }), o++) : s("delete") ? n.howMany++ : (r(), n = { + type: "delete", + index: o, + howMany: 1 + }) + }), + r(), + i; + function r() { + n && (i.push(n), n = null) + } + function s(e) { + return n && n.type == e + } + } + (hr(e.oldChildren, e.newChildren, Mh), e.newChildren); + if (t.length > 1) + return; + const i = t[0]; + return i.values[0] && i.values[0].is("$text") ? i : void 0 + } + function Mh(e, t) { + return e && e.is("$text") && t && t.is("$text") ? e.data === t.data : e === t + } + class Ih { + constructor(e) { + this.editor = e, + this.editing = this.editor.editing + } + handle(e, t) { + if (function (e) { + if (0 == e.length) + return !1; + for (const t of e) + if ("children" === t.type && !Sh(t)) + return !0; + return !1 + } + (e)) + this._handleContainerChildrenMutations(e, t); + else + for (const i of e) + this._handleTextMutation(i, t), this._handleTextNodeInsertion(i) + } + _handleContainerChildrenMutations(e, t) { + const i = function (e) { + const t = e.map(e => e.node).reduce((e, t) => e.getCommonAncestor(t, { + includeSelf: !0 + })); + if (!t) + return; + return t.getAncestors({ + includeSelf: !0, + parentFirst: !0 + }).find(e => e.is("containerElement") || e.is("rootElement")) + } + (e); + if (!i) + return; + const n = this.editor.editing.view.domConverter.mapViewToDom(i), + o = new Tr(this.editor.editing.view.document), + r = this.editor.data.toModel(o.domToView(n)).getChild(0), + s = this.editor.editing.mapper.toModelElement(i); + if (!s) + return; + const a = Array.from(r.getChildren()), + c = Array.from(s.getChildren()), + l = a[a.length - 1], + d = c[c.length - 1], + u = l && l.is("element", "softBreak"), + h = d && !d.is("element", "softBreak"); + u && h && a.pop(); + const f = this.editor.model.schema; + if (!Nh(a, f) || !Nh(c, f)) + return; + const g = a.map(e => e.is("$text") ? e.data : "@").join("").replace(/\u00A0/g, " "), + m = c.map(e => e.is("$text") ? e.data : "@").join("").replace(/\u00A0/g, " "); + if (m === g) + return; + const p = hr(m, g), { + firstChangeAt: b, + insertions: w, + deletions: k + } = Rh(p); + let _ = null; + t && (_ = this.editing.mapper.toModelRange(t.getFirstRange())); + const v = g.substr(b, w), + y = this.editor.model.createRange(this.editor.model.createPositionAt(s, b), this.editor.model.createPositionAt(s, b + k)); + this.editor.execute("input", { + text: v, + range: y, + resultRange: _ + }) + } + _handleTextMutation(e, t) { + if ("text" != e.type) + return; + const i = e.newText.replace(/\u00A0/g, " "), + n = e.oldText.replace(/\u00A0/g, " "); + if (n === i) + return; + const o = hr(n, i), { + firstChangeAt: r, + insertions: s, + deletions: a + } = Rh(o); + let c = null; + t && (c = this.editing.mapper.toModelRange(t.getFirstRange())); + const l = this.editing.view.createPositionAt(e.node, r), + d = this.editing.mapper.toModelPosition(l), + u = this.editor.model.createRange(d, d.getShiftedBy(a)), + h = i.substr(r, s); + this.editor.execute("input", { + text: h, + range: u, + resultRange: c + }) + } + _handleTextNodeInsertion(e) { + if ("children" != e.type) + return; + const t = Sh(e), + i = this.editing.view.createPositionAt(e.node, t.index), + n = this.editing.mapper.toModelPosition(i), + o = t.values[0].data; + this.editor.execute("input", { + text: o.replace(/\u00A0/g, " "), + range: this.editor.model.createRange(n) + }) + } + } + function Nh(e, t) { + return e.every(e => t.isInline(e)) + } + function Rh(e) { + let t = null, + i = null; + for (let n = 0; n < e.length; n++) { + "equal" != e[n] && (t = null === t ? n : t, i = n) + } + let n = 0, + o = 0; + for (let r = t; r <= i; r++) + "insert" != e[r] && n++, "delete" != e[r] && o++; + return { + insertions: o, + deletions: n, + firstChangeAt: t + } + } + class Oh extends Qe { + static get pluginName() { + return "Input" + } + init() { + const e = this.editor, + t = new Ph(e, e.config.get("typing.undoStep") || 20); + e.commands.add("input", t), + function (e) { + let t = null; + const i = e.model, + n = e.editing.view, + o = e.commands.get("input"); + function r(e) { + const r = i.document, + a = n.document.isComposing, + c = t && t.isEqual(r.selection); + t = null, + o.isEnabled && (th(e) || r.selection.isCollapsed || a && 229 === e.keyCode || !a && 229 === e.keyCode && c || s()) + } + function s() { + const e = o.buffer; + e.lock(); + const t = e.batch; + o._batches.add(t), + i.enqueueChange(t, () => { + i.deleteContent(i.document.selection) + }), + e.unlock() + } + Po.isAndroid ? n.document.on("beforeinput", (e, t) => r(t), { + priority: "lowest" + }) : n.document.on("keydown", (e, t) => r(t), { + priority: "lowest" + }), + n.document.on("compositionstart", (function () { + const e = i.document, + t = 1 !== e.selection.rangeCount || e.selection.getFirstRange().isFlat; + if (e.selection.isCollapsed || t) + return; + s() + }), { + priority: "lowest" + }), + n.document.on("compositionend", () => { + t = i.createSelection(i.document.selection) + }, { + priority: "lowest" + }) + } + (e), + function (e) { + e.editing.view.document.on("mutations", (t, i, n) => { + new Ih(e).handle(i, n) + }) + } + (e) + } + isInput(e) { + return this.editor.commands.get("input")._batches.has(e) + } + } + class Dh extends Qe { + static get requires() { + return [Oh, Lu] + } + static get pluginName() { + return "Typing" + } + } + function Lh(e, t) { + let i = e.start; + return { + text: Array.from(e.getItems()).reduce((e, n) => n.is("$text") || n.is("$textProxy") ? e + n.data : (i = t.createPositionAfter(n), ""), ""), + range: t.createRange(i, e.end) + } + } + class zh { + constructor(e, t) { + this.model = e, + this.testCallback = t, + this.hasMatch = !1, + this.set("isEnabled", !0), + this.on("change:isEnabled", () => { + this.isEnabled ? this._startListening() : (this.stopListening(e.document.selection), this.stopListening(e.document)) + }), + this._startListening() + } + _startListening() { + const e = this.model.document; + this.listenTo(e.selection, "change:range", (t, { + directChange: i + }) => { + i && (e.selection.isCollapsed ? this._evaluateTextBeforeSelection("selection") : this.hasMatch && (this.fire("unmatched"), this.hasMatch = !1)) + }), + this.listenTo(e, "change:data", (e, t) => { + "transparent" != t.type && this._evaluateTextBeforeSelection("data", { + batch: t + }) + }) + } + _evaluateTextBeforeSelection(e, t = {}) { + const i = this.model, + n = i.document.selection, + o = i.createRange(i.createPositionAt(n.focus.parent, 0), n.focus), { + text: r, + range: s + } = Lh(o, i), + a = this.testCallback(r); + if (!a && this.hasMatch && this.fire("unmatched"), this.hasMatch = !!a, a) { + const i = Object.assign(t, { + text: r, + range: s + }); + "object" == typeof a && Object.assign(i, a), + this.fire("matched:" + e, i) + } + } + } + Ke(zh, Ue); + class Vh extends Qe { + static get pluginName() { + return "TwoStepCaretMovement" + } + constructor(e) { + super(e), + this.attributes = new Set, + this._overrideUid = null + } + init() { + const e = this.editor, + t = e.model, + i = e.editing.view, + n = e.locale, + o = t.document.selection; + this.listenTo(i.document, "arrowKey", (e, t) => { + if (!o.isCollapsed) + return; + if (t.shiftKey || t.altKey || t.ctrlKey) + return; + const i = t.keyCode == Io.arrowright, + r = t.keyCode == Io.arrowleft; + if (!i && !r) + return; + const s = n.contentLanguageDirection; + let a = !1; + a = "ltr" === s && i || "rtl" === s && r ? this._handleForwardMovement(t) : this._handleBackwardMovement(t), + !0 === a && e.stop() + }, { + context: "$text", + priority: "highest" + }), + this._isNextGravityRestorationSkipped = !1, + this.listenTo(o, "change:range", (e, t) => { + this._isNextGravityRestorationSkipped ? this._isNextGravityRestorationSkipped = !1 : this._isGravityOverridden && (!t.directChange && Hh(o.getFirstPosition(), this.attributes) || this._restoreGravity()) + }) + } + registerAttribute(e) { + this.attributes.add(e) + } + _handleForwardMovement(e) { + const t = this.attributes, + i = this.editor.model.document.selection, + n = i.getFirstPosition(); + return !this._isGravityOverridden && ((!n.isAtStart || !jh(i, t)) && (Hh(n, t) ? (Fh(e), this._overrideGravity(), !0) : void 0)) + } + _handleBackwardMovement(e) { + const t = this.attributes, + i = this.editor.model, + n = i.document.selection, + o = n.getFirstPosition(); + return this._isGravityOverridden ? (Fh(e), this._restoreGravity(), Bh(i, t, o), !0) : o.isAtStart ? !!jh(n, t) && (Fh(e), Bh(i, t, o), !0) : function (e, t) { + return Hh(e.getShiftedBy(-1), t) + } + (o, t) ? o.isAtEnd && !jh(n, t) && Hh(o, t) ? (Fh(e), Bh(i, t, o), !0) : (this._isNextGravityRestorationSkipped = !0, this._overrideGravity(), !1) : void 0 + } + get _isGravityOverridden() { + return !!this._overrideUid + } + _overrideGravity() { + this._overrideUid = this.editor.model.change(e => e.overrideSelectionGravity()) + } + _restoreGravity() { + this.editor.model.change(e => { + e.restoreSelectionGravity(this._overrideUid), + this._overrideUid = null + }) + } + } + function jh(e, t) { + for (const i of t) + if (e.hasAttribute(i)) + return !0; + return !1 + } + function Bh(e, t, i) { + const n = i.nodeBefore; + e.change(e => { + n ? e.setSelectionAttribute(n.getAttributes()) : e.removeSelectionAttribute(t) + }) + } + function Fh(e) { + e.preventDefault() + } + function Hh(e, t) { + const { + nodeBefore: i, + nodeAfter: n + } = e; + for (const e of t) { + const t = i ? i.getAttribute(e) : void 0; + if ((n ? n.getAttribute(e) : void 0) !== t) + return !0 + } + return !1 + } + var Uh = /[\\^$.*+?()[\]{}|]/g, + Wh = RegExp(Uh.source); + var qh = function (e) { + return (e = Sn(e)) && Wh.test(e) ? e.replace(Uh, "\\$&") : e + }; + const $h = { + copyright: { + from: "(c)", + to: "©" + }, + registeredTrademark: { + from: "(r)", + to: "®" + }, + trademark: { + from: "(tm)", + to: "™" + }, + oneHalf: { + from: "1/2", + to: "½" + }, + oneThird: { + from: "1/3", + to: "⅓" + }, + twoThirds: { + from: "2/3", + to: "⅔" + }, + oneForth: { + from: "1/4", + to: "¼" + }, + threeQuarters: { + from: "3/4", + to: "¾" + }, + lessThanOrEqual: { + from: "<=", + to: "≤" + }, + greaterThanOrEqual: { + from: ">=", + to: "≥" + }, + notEqual: { + from: "!=", + to: "≠" + }, + arrowLeft: { + from: "<-", + to: "←" + }, + arrowRight: { + from: "->", + to: "→" + }, + horizontalEllipsis: { + from: "...", + to: "…" + }, + enDash: { + from: /(^| )(--)( )$/, + to: [null, "–", null] + }, + emDash: { + from: /(^| )(---)( )$/, + to: [null, "—", null] + }, + quotesPrimary: { + from: Zh('"'), + to: [null, "“", null, "”"] + }, + quotesSecondary: { + from: Zh("'"), + to: [null, "‘", null, "’"] + }, + quotesPrimaryEnGb: { + from: Zh("'"), + to: [null, "‘", null, "’"] + }, + quotesSecondaryEnGb: { + from: Zh('"'), + to: [null, "“", null, "”"] + }, + quotesPrimaryPl: { + from: Zh('"'), + to: [null, "„", null, "”"] + }, + quotesSecondaryPl: { + from: Zh("'"), + to: [null, "‚", null, "’"] + } + }, + Yh = { + symbols: ["copyright", "registeredTrademark", "trademark"], + mathematical: ["oneHalf", "oneThird", "twoThirds", "oneForth", "threeQuarters", "lessThanOrEqual", "greaterThanOrEqual", "notEqual", "arrowLeft", "arrowRight"], + typography: ["horizontalEllipsis", "enDash", "emDash"], + quotes: ["quotesPrimary", "quotesSecondary"] + }, + Gh = ["symbols", "mathematical", "typography", "quotes"]; + function Kh(e) { + return "string" == typeof e ? new RegExp(`(${qh(e)})$`) : e + } + function Qh(e) { + return "string" == typeof e ? () => [e] : e instanceof Array ? () => e : e + } + function Jh(e) { + return (e.textNode ? e.textNode : e.nodeAfter).getAttributes() + } + function Zh(e) { + return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`) + } + function Xh(e, t, i, n) { + return n.createRange(ef(e, t, i, !0, n), ef(e, t, i, !1, n)) + } + function ef(e, t, i, n, o) { + let r = e.textNode || (n ? e.nodeBefore : e.nodeAfter), + s = null; + for (; r && r.getAttribute(t) == i; ) + s = r, r = n ? r.previousSibling : r.nextSibling; + return s ? o.createPositionAt(s, n ? "before" : "after") : e + } + class tf extends Ze { + constructor(e) { + super(e), + this._stack = [], + this._createdBatches = new WeakSet, + this.refresh(), + this.listenTo(e.data, "set", () => this.clearStack()) + } + refresh() { + this.isEnabled = this._stack.length > 0 + } + addBatch(e) { + const t = this.editor.model.document.selection, + i = { + ranges: t.hasOwnRange ? Array.from(t.getRanges()) : [], + isBackward: t.isBackward + }; + this._stack.push({ + batch: e, + selection: i + }), + this.refresh() + } + clearStack() { + this._stack = [], + this.refresh() + } + _restoreSelection(e, t, i) { + const n = this.editor.model, + o = n.document, + r = [], + s = e.map(e => e.getTransformedByOperations(i)), + a = s.flat(); + for (const e of s) { + const t = e.filter(e => e.root != o.graveyard).filter(e => !of(e, a)); + t.length && (nf(t), r.push(t[0])) + } + r.length && n.change(e => { + e.setSelection(r, { + backward: t + }) + }) + } + _undo(e, t) { + const i = this.editor.model, + n = i.document; + this._createdBatches.add(t); + const o = e.operations.slice().filter(e => e.isDocumentOperation); + o.reverse(); + for (const e of o) { + const o = e.baseVersion + 1, + r = Array.from(n.history.getOperations(o)), + s = uu([e.getReversed()], r, { + useRelations: !0, + document: this.editor.model.document, + padWithNoOps: !1, + forceWeakRemove: !0 + }).operationsA; + for (const o of s) + t.addOperation(o), i.applyOperation(o), n.history.setOperationAsUndone(e, o) + } + } + } + function nf(e) { + e.sort((e, t) => e.start.isBefore(t.start) ? -1 : 1); + for (let t = 1; t < e.length; t++) { + const i = e[t - 1].getJoined(e[t], !0); + i && (t--, e.splice(t, 2, i)) + } + } + function of(e, t) { + return t.some(t => t !== e && t.containsRange(e, !0)) + } + class rf extends tf { + execute(e = null) { + const t = e ? this._stack.findIndex(t => t.batch == e) : this._stack.length - 1, + i = this._stack.splice(t, 1)[0], + n = this.editor.model.createBatch("transparent"); + this.editor.model.enqueueChange(n, () => { + this._undo(i.batch, n); + const e = this.editor.model.document.history.getOperations(i.batch.baseVersion); + this._restoreSelection(i.selection.ranges, i.selection.isBackward, e), + this.fire("revert", i.batch, n) + }), + this.refresh() + } + } + class sf extends tf { + execute() { + const e = this._stack.pop(), + t = this.editor.model.createBatch("transparent"); + this.editor.model.enqueueChange(t, () => { + const i = e.batch.operations[e.batch.operations.length - 1].baseVersion + 1, + n = this.editor.model.document.history.getOperations(i); + this._restoreSelection(e.selection.ranges, e.selection.isBackward, n), + this._undo(e.batch, t) + }), + this.refresh() + } + } + class af extends Qe { + static get pluginName() { + return "UndoEditing" + } + constructor(e) { + super(e), + this._batchRegistry = new WeakSet + } + init() { + const e = this.editor; + this._undoCommand = new rf(e), + this._redoCommand = new sf(e), + e.commands.add("undo", this._undoCommand), + e.commands.add("redo", this._redoCommand), + this.listenTo(e.model, "applyOperation", (e, t) => { + const i = t[0]; + if (!i.isDocumentOperation) + return; + const n = i.batch, + o = this._redoCommand._createdBatches.has(n), + r = this._undoCommand._createdBatches.has(n); + this._batchRegistry.has(n) || "transparent" == n.type && !o && !r || (o ? this._undoCommand.addBatch(n) : r || (this._undoCommand.addBatch(n), this._redoCommand.clearStack()), this._batchRegistry.add(n)) + }, { + priority: "highest" + }), + this.listenTo(this._undoCommand, "revert", (e, t, i) => { + this._redoCommand.addBatch(i) + }), + e.keystrokes.set("CTRL+Z", "undo"), + e.keystrokes.set("CTRL+Y", "redo"), + e.keystrokes.set("CTRL+SHIFT+Z", "redo") + } + } + var cf = '', + lf = ''; + class df extends Qe { + static get pluginName() { + return "UndoUI" + } + init() { + const e = this.editor, + t = e.locale, + i = e.t, + n = "ltr" == t.uiLanguageDirection ? cf : lf, + o = "ltr" == t.uiLanguageDirection ? lf : cf; + this._addButton("undo", i("Undo"), "CTRL+Z", n), + this._addButton("redo", i("Redo"), "CTRL+Y", o) + } + _addButton(e, t, i, n) { + const o = this.editor; + o.ui.componentFactory.add(e, r => { + const s = o.commands.get(e), + a = new cd(r); + return a.set({ + label: t, + icon: n, + keystroke: i, + tooltip: !0 + }), + a.bind("isEnabled").to(s, "isEnabled"), + this.listenTo(a, "execute", () => { + o.execute(e), + o.editing.view.focus() + }), + a + }) + } + } + class uf extends Qe { + static get requires() { + return [af, df] + } + static get pluginName() { + return "Undo" + } + } + class hf { + constructor() { + const e = new window.FileReader; + this._reader = e, + this._data = void 0, + this.set("loaded", 0), + e.onprogress = e => { + this.loaded = e.loaded + } + } + get error() { + return this._reader.error + } + get data() { + return this._data + } + read(e) { + const t = this._reader; + return this.total = e.size, + new Promise((i, n) => { + t.onload = () => { + const e = t.result; + this._data = e, + i(e) + }, + t.onerror = () => { + n("error") + }, + t.onabort = () => { + n("aborted") + }, + this._reader.readAsDataURL(e) + }) + } + abort() { + this._reader.abort() + } + } + Ke(hf, Ue); + class ff extends Qe { + static get pluginName() { + return "FileRepository" + } + static get requires() { + return [xl] + } + init() { + this.loaders = new Zi, + this.loaders.on("add", () => this._updatePendingAction()), + this.loaders.on("remove", () => this._updatePendingAction()), + this._loadersMap = new Map, + this._pendingAction = null, + this.set("uploaded", 0), + this.set("uploadTotal", null), + this.bind("uploadedPercent").to(this, "uploaded", this, "uploadTotal", (e, t) => t ? e / t * 100 : 0) + } + getLoader(e) { + return this._loadersMap.get(e) || null + } + createLoader(e) { + if (!this.createUploadAdapter) + return Object(c.b)("filerepository-no-upload-adapter"), null; + const t = new gf(Promise.resolve(e), this.createUploadAdapter); + return this.loaders.add(t), + this._loadersMap.set(e, t), + e instanceof Promise && t.file.then(e => { + this._loadersMap.set(e, t) + }).catch(() => {}), + t.on("change:uploaded", () => { + let e = 0; + for (const t of this.loaders) + e += t.uploaded; + this.uploaded = e + }), + t.on("change:uploadTotal", () => { + let e = 0; + for (const t of this.loaders) + t.uploadTotal && (e += t.uploadTotal); + this.uploadTotal = e + }), + t + } + destroyLoader(e) { + const t = e instanceof gf ? e : this.getLoader(e); + t._destroy(), + this.loaders.remove(t), + this._loadersMap.forEach((e, i) => { + e === t && this._loadersMap.delete(i) + }) + } + _updatePendingAction() { + const e = this.editor.plugins.get(xl); + if (this.loaders.length) { + if (!this._pendingAction) { + const t = this.editor.t, + i = e => `${t("Upload in progress")} ${parseInt(e)}%.`; + this._pendingAction = e.add(i(this.uploadedPercent)), + this._pendingAction.bind("message").to(this, "uploadedPercent", i) + } + } else + e.remove(this._pendingAction), this._pendingAction = null + } + } + Ke(ff, Ue); + class gf { + constructor(e, t) { + this.id = s(), + this._filePromiseWrapper = this._createFilePromiseWrapper(e), + this._adapter = t(this), + this._reader = new hf, + this.set("status", "idle"), + this.set("uploaded", 0), + this.set("uploadTotal", null), + this.bind("uploadedPercent").to(this, "uploaded", this, "uploadTotal", (e, t) => t ? e / t * 100 : 0), + this.set("uploadResponse", null) + } + get file() { + return this._filePromiseWrapper ? this._filePromiseWrapper.promise.then(e => this._filePromiseWrapper ? e : null) : Promise.resolve(null) + } + get data() { + return this._reader.data + } + read() { + if ("idle" != this.status) + throw new c.a("filerepository-read-wrong-status", this); + return this.status = "reading", + this.file.then(e => this._reader.read(e)).then(e => { + if ("reading" !== this.status) + throw this.status; + return this.status = "idle", + e + }).catch(e => { + if ("aborted" === e) + throw this.status = "aborted", "aborted"; + throw this.status = "error", + this._reader.error ? this._reader.error : e + }) + } + upload() { + if ("idle" != this.status) + throw new c.a("filerepository-upload-wrong-status", this); + return this.status = "uploading", + this.file.then(() => this._adapter.upload()).then(e => (this.uploadResponse = e, this.status = "idle", e)).catch(e => { + if ("aborted" === this.status) + throw "aborted"; + throw this.status = "error", + e + }) + } + abort() { + const e = this.status; + this.status = "aborted", + this._filePromiseWrapper.isFulfilled ? "reading" == e ? this._reader.abort() : "uploading" == e && this._adapter.abort && this._adapter.abort() : (this._filePromiseWrapper.promise.catch(() => {}), this._filePromiseWrapper.rejecter("aborted")), + this._destroy() + } + _destroy() { + this._filePromiseWrapper = void 0, + this._reader = void 0, + this._adapter = void 0, + this.uploadResponse = void 0 + } + _createFilePromiseWrapper(e) { + const t = {}; + return t.promise = new Promise((i, n) => { + t.rejecter = n, + t.isFulfilled = !1, + e.then(e => { + t.isFulfilled = !0, + i(e) + }).catch(e => { + t.isFulfilled = !0, + n(e) + }) + }), + t + } + } + Ke(gf, Ue); + class mf extends jl { + constructor(e) { + super(e), + this.buttonView = new cd(e), + this._fileInputView = new pf(e), + this._fileInputView.bind("acceptedType").to(this), + this._fileInputView.bind("allowMultipleFiles").to(this), + this._fileInputView.delegate("done").to(this), + this.setTemplate({ + tag: "span", + attributes: { + class: "ck-file-dialog-button" + }, + children: [this.buttonView, this._fileInputView] + }), + this.buttonView.on("execute", () => { + this._fileInputView.open() + }) + } + focus() { + this.buttonView.focus() + } + } + class pf extends jl { + constructor(e) { + super(e), + this.set("acceptedType"), + this.set("allowMultipleFiles", !1); + const t = this.bindTemplate; + this.setTemplate({ + tag: "input", + attributes: { + class: ["ck-hidden"], + type: "file", + tabindex: "-1", + accept: t.to("acceptedType"), + multiple: t.to("allowMultipleFiles") + }, + on: { + change: t.to(() => { + this.element && this.element.files && this.element.files.length && this.fire("done", this.element.files), + this.element.value = "" + }) + } + }) + } + open() { + this.element.click() + } + } + function bf() { + let e = function (e) { + e = e.toLowerCase(); + const t = document.cookie.split(";"); + for (const i of t) { + const t = i.split("="); + if (decodeURIComponent(t[0].trim().toLowerCase()) === e) + return decodeURIComponent(t[1]) + } + return null + } + ("ckCsrfToken"); + var t, + i; + return e && 40 == e.length || (e = function (e) { + let t = ""; + const i = new Uint8Array(e); + window.crypto.getRandomValues(i); + for (let e = 0; e < i.length; e++) { + const n = "abcdefghijklmnopqrstuvwxyz0123456789".charAt(i[e] % "abcdefghijklmnopqrstuvwxyz0123456789".length); + t += Math.random() > .5 ? n.toUpperCase() : n + } + return t + } + (40), t = "ckCsrfToken", i = e, document.cookie = encodeURIComponent(t) + "=" + encodeURIComponent(i) + ";path=/"), + e + } + class wf { + constructor(e, t, i) { + this.loader = e, + this.url = t, + this.t = i + } + upload() { + return this.loader.file.then(e => new Promise((t, i) => { + this._initRequest(), + this._initListeners(t, i, e), + this._sendRequest(e) + })) + } + abort() { + this.xhr && this.xhr.abort() + } + _initRequest() { + const e = this.xhr = new XMLHttpRequest; + e.open("POST", this.url, !0), + e.responseType = "json" + } + _initListeners(e, t, i) { + const n = this.xhr, + o = this.loader, + r = (0, this.t)("Cannot upload file:") + ` ${i.name}.`; + n.addEventListener("error", () => t(r)), + n.addEventListener("abort", () => t()), + n.addEventListener("load", () => { + const i = n.response; + if (!i || !i.uploaded) + return t(i && i.error && i.error.message ? i.error.message : r); + e({ + default: + i.url + }) + }), + n.upload && n.upload.addEventListener("progress", e => { + e.lengthComputable && (o.uploadTotal = e.total, o.uploaded = e.loaded) + }) + } + _sendRequest(e) { + const t = new FormData; + t.append("upload", e), + t.append("ckCsrfToken", bf()), + this.xhr.send(t) + } + } + function kf(e, t, i, n) { + let o, + r = null; + "function" == typeof n ? o = n : (r = e.commands.get(n), o = () => { + e.execute(n) + }), + e.model.document.on("change:data", (s, a) => { + if (r && !r.isEnabled || !t.isEnabled) + return; + const c = Ns(e.model.document.selection.getRanges()); + if (!c.isCollapsed) + return; + if ("transparent" == a.type) + return; + const l = Array.from(e.model.document.differ.getChanges()), + d = l[0]; + if (1 != l.length || "insert" !== d.type || "$text" != d.name || 1 != d.length) + return; + const u = d.position.parent; + if (u.is("element", "codeBlock")) + return; + if (u.is("element", "listItem") && "function" != typeof n && !["numberedList", "bulletedList", "todoList"].includes(n)) + return; + if (r && !0 === r.value) + return; + const h = u.getChild(0), + f = e.model.createRangeOn(h); + if (!f.containsRange(c) && !c.end.isEqual(f.end)) + return; + const g = i.exec(h.data.substr(0, c.end.offset)); + g && e.model.enqueueChange(t => { + const i = t.createPositionAt(u, 0), + n = t.createPositionAt(u, g[0].length), + r = new ba(i, n); + if (!1 !== o({ + match: g + })) { + t.remove(r); + const i = e.model.document.selection.getFirstRange(), + n = t.createRangeIn(u); + !u.isEmpty || n.isEqual(i) || n.containsRange(i, !0) || t.remove(u) + } + r.detach() + }) + }) + } + function _f(e, t, i, n) { + let o, + r; + i instanceof RegExp ? o = i : r = i, + r = r || (e => { + let t; + const i = [], + n = []; + for (; null !== (t = o.exec(e)) && !(t && t.length < 4); ) { + let { + index: e, + 1: o, + 2: r, + 3: s + } = t; + const a = o + r + s; + e += t[0].length - a.length; + const c = [e, e + o.length], + l = [e + o.length + r.length, e + o.length + r.length + s.length]; + i.push(c), + i.push(l), + n.push([e + o.length, e + o.length + r.length]) + } + return { + remove: i, + format: n + } + }), + e.model.document.on("change:data", (i, o) => { + if ("transparent" == o.type || !t.isEnabled) + return; + const s = e.model, + a = s.document.selection; + if (!a.isCollapsed) + return; + const c = Array.from(s.document.differ.getChanges()), + l = c[0]; + if (1 != c.length || "insert" !== l.type || "$text" != l.name || 1 != l.length) + return; + const d = a.focus, + u = d.parent, { + text: h, + range: f + } = function (e, t) { + let i = e.start; + return { + text: Array.from(e.getItems()).reduce((e, n) => !n.is("$text") && !n.is("$textProxy") || n.getAttribute("code") ? (i = t.createPositionAfter(n), "") : e + n.data, ""), + range: t.createRange(i, e.end) + } + } + (s.createRange(s.createPositionAt(u, 0), d), s), + g = r(h), + m = vf(f.start, g.format, s), + p = vf(f.start, g.remove, s); + m.length && p.length && s.enqueueChange(e => { + if (!1 !== n(e, m)) + for (const t of p.reverse()) + e.remove(t) + }) + }) + } + function vf(e, t, i) { + return t.filter(e => void 0 !== e[0] && void 0 !== e[1]).map(t => i.createRange(e.getShiftedBy(t[0]), e.getShiftedBy(t[1]))) + } + function yf(e, t) { + return (i, n) => { + if (!e.commands.get(t).isEnabled) + return !1; + const o = e.model.schema.getValidRanges(n, t); + for (const e of o) + i.setAttribute(t, !0, e); + i.removeSelectionAttribute(t) + } + } + class xf extends Ze { + constructor(e, t) { + super(e), + this.attributeKey = t + } + refresh() { + const e = this.editor.model, + t = e.document; + this.value = this._getValueFromFirstAllowedNode(), + this.isEnabled = e.schema.checkAttributeInSelection(t.selection, this.attributeKey) + } + execute(e = {}) { + const t = this.editor.model, + i = t.document.selection, + n = void 0 === e.forceValue ? !this.value : e.forceValue; + t.change(e => { + if (i.isCollapsed) + n ? e.setSelectionAttribute(this.attributeKey, !0) : e.removeSelectionAttribute(this.attributeKey); + else { + const o = t.schema.getValidRanges(i.getRanges(), this.attributeKey); + for (const t of o) + n ? e.setAttribute(this.attributeKey, n, t) : e.removeAttribute(this.attributeKey, t) + } + }) + } + _getValueFromFirstAllowedNode() { + const e = this.editor.model, + t = e.schema, + i = e.document.selection; + if (i.isCollapsed) + return i.hasAttribute(this.attributeKey); + for (const e of i.getRanges()) + for (const i of e.getItems()) + if (t.checkAttribute(i, this.attributeKey)) + return i.hasAttribute(this.attributeKey); + return !1 + } + } + class Af extends Qe { + static get pluginName() { + return "BoldEditing" + } + init() { + const e = this.editor; + e.model.schema.extend("$text", { + allowAttributes: "bold" + }), + e.model.schema.setAttributeProperties("bold", { + isFormatting: !0, + copyOnEnter: !0 + }), + e.conversion.attributeToElement({ + model: "bold", + view: "strong", + upcastAlso: ["b", e => { + const t = e.getStyle("font-weight"); + return t ? "bold" == t || Number(t) >= 600 ? { + name: !0, + styles: ["font-weight"] + } + : void 0 : null + } + ] + }), + e.commands.add("bold", new xf(e, "bold")), + e.keystrokes.set("CTRL+B", "bold") + } + } + class Cf extends Qe { + static get pluginName() { + return "BoldUI" + } + init() { + const e = this.editor, + t = e.t; + e.ui.componentFactory.add("bold", i => { + const n = e.commands.get("bold"), + o = new cd(i); + return o.set({ + label: t("Bold"), + icon: '', + keystroke: "CTRL+B", + tooltip: !0, + isToggleable: !0 + }), + o.bind("isOn", "isEnabled").to(n, "value", "isEnabled"), + this.listenTo(o, "execute", () => { + e.execute("bold"), + e.editing.view.focus() + }), + o + }) + } + } + class Tf extends Qe { + static get pluginName() { + return "ItalicEditing" + } + init() { + const e = this.editor; + e.model.schema.extend("$text", { + allowAttributes: "italic" + }), + e.model.schema.setAttributeProperties("italic", { + isFormatting: !0, + copyOnEnter: !0 + }), + e.conversion.attributeToElement({ + model: "italic", + view: "i", + upcastAlso: ["em", { + styles: { + "font-style": "italic" + } + } + ] + }), + e.commands.add("italic", new xf(e, "italic")), + e.keystrokes.set("CTRL+I", "italic") + } + } + class Ef extends Qe { + static get pluginName() { + return "ItalicUI" + } + init() { + const e = this.editor, + t = e.t; + e.ui.componentFactory.add("italic", i => { + const n = e.commands.get("italic"), + o = new cd(i); + return o.set({ + label: t("Italic"), + icon: '', + keystroke: "CTRL+I", + tooltip: !0, + isToggleable: !0 + }), + o.bind("isOn", "isEnabled").to(n, "value", "isEnabled"), + this.listenTo(o, "execute", () => { + e.execute("italic"), + e.editing.view.focus() + }), + o + }) + } + } + class Pf extends Ze { + refresh() { + this.value = this._getValue(), + this.isEnabled = this._checkEnabled() + } + execute(e = {}) { + const t = this.editor.model, + i = t.schema, + n = t.document.selection, + o = Array.from(n.getSelectedBlocks()), + r = void 0 === e.forceValue ? !this.value : e.forceValue; + t.change(e => { + if (r) { + const t = o.filter(e => Sf(e) || If(i, e)); + this._applyQuote(e, t) + } else + this._removeQuote(e, o.filter(Sf)) + }) + } + _getValue() { + const e = Ns(this.editor.model.document.selection.getSelectedBlocks()); + return !(!e || !Sf(e)) + } + _checkEnabled() { + if (this.value) + return !0; + const e = this.editor.model.document.selection, + t = this.editor.model.schema, + i = Ns(e.getSelectedBlocks()); + return !!i && If(t, i) + } + _removeQuote(e, t) { + Mf(e, t).reverse().forEach(t => { + if (t.start.isAtStart && t.end.isAtEnd) + return void e.unwrap(t.start.parent); + if (t.start.isAtStart) { + const i = e.createPositionBefore(t.start.parent); + return void e.move(t, i) + } + t.end.isAtEnd || e.split(t.end); + const i = e.createPositionAfter(t.end.parent); + e.move(t, i) + }) + } + _applyQuote(e, t) { + const i = []; + Mf(e, t).reverse().forEach(t => { + let n = Sf(t.start); + n || (n = e.createElement("blockQuote"), e.wrap(t, n)), + i.push(n) + }), + i.reverse().reduce((t, i) => t.nextSibling == i ? (e.merge(e.createPositionAfter(t)), t) : i) + } + } + function Sf(e) { + return "blockQuote" == e.parent.name ? e.parent : null + } + function Mf(e, t) { + let i, + n = 0; + const o = []; + for (; n < t.length; ) { + const r = t[n], + s = t[n + 1]; + i || (i = e.createPositionBefore(r)), + s && r.nextSibling == s || (o.push(e.createRange(i, e.createPositionAfter(r))), i = null), + n++ + } + return o + } + function If(e, t) { + const i = e.checkChild(t.parent, "blockQuote"), + n = e.checkChild(["$root", "blockQuote"], t); + return i && n + } + class Nf extends Qe { + static get pluginName() { + return "BlockQuoteEditing" + } + static get requires() { + return [Nu, Lu] + } + init() { + const e = this.editor, + t = e.model.schema; + e.commands.add("blockQuote", new Pf(e)), + t.register("blockQuote", { + allowWhere: "$block", + allowContentOf: "$root" + }), + e.conversion.elementToElement({ + model: "blockQuote", + view: "blockquote" + }), + e.model.document.registerPostFixer(i => { + const n = e.model.document.differ.getChanges(); + for (const e of n) + if ("insert" == e.type) { + const n = e.position.nodeAfter; + if (!n) + continue; + if (n.is("element", "blockQuote") && n.isEmpty) + return i.remove(n), !0; + if (n.is("element", "blockQuote") && !t.checkChild(e.position, n)) + return i.unwrap(n), !0; + if (n.is("element")) { + const e = i.createRangeIn(n); + for (const n of e.getItems()) + if (n.is("element", "blockQuote") && !t.checkChild(i.createPositionBefore(n), n)) + return i.unwrap(n), !0 + } + } else if ("remove" == e.type) { + const t = e.position.parent; + if (t.is("element", "blockQuote") && t.isEmpty) + return i.remove(t), !0 + } + return !1 + }); + const i = this.editor.editing.view.document, + n = e.model.document.selection, + o = e.commands.get("blockQuote"); + this.listenTo(i, "enter", (t, i) => { + if (!n.isCollapsed || !o.value) + return; + n.getLastPosition().parent.isEmpty && (e.execute("blockQuote"), e.editing.view.scrollToTheSelection(), i.preventDefault(), t.stop()) + }, { + context: "blockquote" + }), + this.listenTo(i, "delete", (t, i) => { + if ("backward" != i.direction || !n.isCollapsed || !o.value) + return; + const r = n.getLastPosition().parent; + r.isEmpty && !r.previousSibling && (e.execute("blockQuote"), e.editing.view.scrollToTheSelection(), i.preventDefault(), t.stop()) + }, { + context: "blockquote" + }) + } + } + i(68); + class Rf extends Qe { + static get pluginName() { + return "BlockQuoteUI" + } + init() { + const e = this.editor, + t = e.t; + e.ui.componentFactory.add("blockQuote", i => { + const n = e.commands.get("blockQuote"), + o = new cd(i); + return o.set({ + label: t("Block quote"), + icon: Rl, + tooltip: !0, + isToggleable: !0 + }), + o.bind("isOn", "isEnabled").to(n, "value", "isEnabled"), + this.listenTo(o, "execute", () => { + e.execute("blockQuote"), + e.editing.view.focus() + }), + o + }) + } + } + class Of extends Qe { + static get pluginName() { + return "CKFinderUI" + } + init() { + const e = this.editor, + t = e.ui.componentFactory, + i = e.t; + t.add("ckfinder", t => { + const n = e.commands.get("ckfinder"), + o = new cd(t); + return o.set({ + label: i("Insert image or file"), + icon: '', + tooltip: !0 + }), + o.bind("isEnabled").to(n), + o.on("execute", () => { + e.execute("ckfinder"), + e.editing.view.focus() + }), + o + }) + } + } + class Df extends Ze { + constructor(e) { + super(e), + this.stopListening(this.editor.model.document, "change"), + this.listenTo(this.editor.model.document, "change", () => this.refresh(), { + priority: "low" + }) + } + refresh() { + const e = this.editor.commands.get("insertImage"), + t = this.editor.commands.get("link"); + this.isEnabled = e.isEnabled || t.isEnabled + } + execute() { + const e = this.editor, + t = this.editor.config.get("ckfinder.openerMethod") || "modal"; + if ("popup" != t && "modal" != t) + throw new c.a("ckfinder-unknown-openermethod", e); + const i = this.editor.config.get("ckfinder.options") || {}; + i.chooseFiles = !0; + const n = i.onInit; + i.language || (i.language = e.locale.uiLanguage), + i.onInit = t => { + n && n(t), + t.on("files:choose", i => { + const n = i.data.files.toArray(), + o = n.filter(e => !e.isImage()), + r = n.filter(e => e.isImage()); + for (const t of o) + e.execute("link", t.getUrl()); + const s = []; + for (const e of r) { + const i = e.getUrl(); + s.push(i || t.request("file:getProxyUrl", { + file: e + })) + } + s.length && Lf(e, s) + }), + t.on("file:choose:resizedImage", t => { + const i = t.data.resizedUrl; + if (i) + Lf(e, [i]); + else { + const t = e.plugins.get("Notification"), + i = e.locale.t; + t.showWarning(i("Could not obtain resized image URL."), { + title: i("Selecting resized image failed"), + namespace: "ckfinder" + }) + } + }) + }, + window.CKFinder[t](i) + } + } + function Lf(e, t) { + if (e.commands.get("insertImage").isEnabled) + e.execute("insertImage", { + source: t + }); + else { + const t = e.plugins.get("Notification"), + i = e.locale.t; + t.showWarning(i("Could not insert image at the current position."), { + title: i("Inserting image failed"), + namespace: "ckfinder" + }) + } + } + class zf extends Qe { + static get pluginName() { + return "CKFinderEditing" + } + static get requires() { + return [Fd, "ImageEditing", "LinkEditing"] + } + init() { + const e = this.editor; + e.commands.add("ckfinder", new Df(e)) + } + } + class Vf extends Qe { + static get pluginName() { + return "CloudServicesUploadAdapter" + } + static get requires() { + return ["CloudServices", ff] + } + init() { + const e = this.editor, + t = e.plugins.get("CloudServices"), + i = t.token, + n = t.uploadUrl; + i && (this._uploadGateway = e.plugins.get("CloudServicesCore").createUploadGateway(i, n), e.plugins.get(ff).createUploadAdapter = e => new jf(this._uploadGateway, e)) + } + } + class jf { + constructor(e, t) { + this.uploadGateway = e, + this.loader = t + } + upload() { + return this.loader.file.then(e => (this.fileUploader = this.uploadGateway.upload(e), this.fileUploader.on("progress", (e, t) => { + this.loader.uploadTotal = t.total, + this.loader.uploaded = t.uploaded + }), this.fileUploader.send())) + } + abort() { + this.fileUploader.abort() + } + } + class Bf extends Ze { + refresh() { + const e = this.editor.model, + t = Ns(e.document.selection.getSelectedBlocks()); + this.value = !!t && t.is("element", "paragraph"), + this.isEnabled = !!t && Ff(t, e.schema) + } + execute(e = {}) { + const t = this.editor.model, + i = t.document; + t.change(n => { + const o = (e.selection || i.selection).getSelectedBlocks(); + for (const e of o) + !e.is("element", "paragraph") && Ff(e, t.schema) && n.rename(e, "paragraph") + }) + } + } + function Ff(e, t) { + return t.checkChild(e.parent, "paragraph") && !t.isObject(e) + } + class Hf extends Ze { + execute(e) { + const t = this.editor.model; + let i = e.position; + t.change(e => { + const n = e.createElement("paragraph"); + if (!t.schema.checkChild(i.parent, n)) { + const o = t.schema.findAllowedParent(i, n); + if (!o) + return; + i = e.split(i, o).position + } + t.insertContent(n, i), + e.setSelection(n, "in") + }) + } + } + class Uf extends Qe { + static get pluginName() { + return "Paragraph" + } + init() { + const e = this.editor, + t = e.model; + e.commands.add("paragraph", new Bf(e)), + e.commands.add("insertParagraph", new Hf(e)), + t.schema.register("paragraph", { + inheritAllFrom: "$block" + }), + e.conversion.elementToElement({ + model: "paragraph", + view: "p" + }), + e.conversion.for("upcast").elementToElement({ + model: (e, { + writer: t + }) => Uf.paragraphLikeElements.has(e.name) ? e.isEmpty ? null : t.createElement("paragraph") : null, + view: /.+/, + converterPriority: "low" + }) + } + } + Uf.paragraphLikeElements = new Set(["blockquote", "dd", "div", "dt", "h1", "h2", "h3", "h4", "h5", "h6", "li", "p", "td", "th"]); + class Wf extends Ze { + constructor(e, t) { + super(e), + this.modelElements = t + } + refresh() { + const e = Ns(this.editor.model.document.selection.getSelectedBlocks()); + this.value = !!e && this.modelElements.includes(e.name) && e.name, + this.isEnabled = !!e && this.modelElements.some(t => qf(e, t, this.editor.model.schema)) + } + execute(e) { + const t = this.editor.model, + i = t.document, + n = e.value; + t.change(e => { + const o = Array.from(i.selection.getSelectedBlocks()).filter(e => qf(e, n, t.schema)); + for (const t of o) + t.is("element", n) || e.rename(t, n) + }) + } + } + function qf(e, t, i) { + return i.checkChild(e.parent, t) && !i.isObject(e) + } + class $f extends Qe { + static get pluginName() { + return "HeadingEditing" + } + constructor(e) { + super(e), + e.config.define("heading", { + options: [{ + model: "paragraph", + title: "Paragraph", + class: "ck-heading_paragraph" + }, { + model: "heading1", + view: "h2", + title: "Heading 1", + class: "ck-heading_heading1" + }, { + model: "heading2", + view: "h3", + title: "Heading 2", + class: "ck-heading_heading2" + }, { + model: "heading3", + view: "h4", + title: "Heading 3", + class: "ck-heading_heading3" + } + ] + }) + } + static get requires() { + return [Uf] + } + init() { + const e = this.editor, + t = e.config.get("heading.options"), + i = []; + for (const n of t) + "paragraph" !== n.model && (e.model.schema.register(n.model, { + inheritAllFrom: "$block" + }), e.conversion.elementToElement(n), i.push(n.model)); + this._addDefaultH1Conversion(e), + e.commands.add("heading", new Wf(e, i)) + } + afterInit() { + const e = this.editor, + t = e.commands.get("enter"), + i = e.config.get("heading.options"); + t && this.listenTo(t, "afterExecute", (t, n) => { + const o = e.model.document.selection.getFirstPosition().parent; + i.some(e => o.is("element", e.model)) && !o.is("element", "paragraph") && 0 === o.childCount && n.writer.rename(o, "paragraph") + }) + } + _addDefaultH1Conversion(e) { + e.conversion.for("upcast").elementToElement({ + model: "heading1", + view: "h1", + converterPriority: a.get("low") + 1 + }) + } + } + i(12); + class Yf extends Qe { + static get pluginName() { + return "HeadingUI" + } + init() { + const e = this.editor, + t = e.t, + i = function (e) { + const t = e.t, + i = { + Paragraph: t("Paragraph"), + "Heading 1": t("Heading 1"), + "Heading 2": t("Heading 2"), + "Heading 3": t("Heading 3"), + "Heading 4": t("Heading 4"), + "Heading 5": t("Heading 5"), + "Heading 6": t("Heading 6") + }; + return e.config.get("heading.options").map(e => { + const t = i[e.title]; + return t && t != e.title && (e.title = t), + e + }) + } + (e), + n = t("Choose heading"), + o = t("Heading"); + e.ui.componentFactory.add("heading", t => { + const r = {}, + s = new Zi, + a = e.commands.get("heading"), + c = e.commands.get("paragraph"), + l = [a]; + for (const e of i) { + const t = { + type: "button", + model: new Hd({ + label: e.title, + class: e.class, + withText: !0 + }) + }; + "paragraph" === e.model ? (t.model.bind("isOn").to(c, "value"), t.model.set("commandName", "paragraph"), l.push(c)) : (t.model.bind("isOn").to(a, "value", t => t === e.model), t.model.set({ + commandName: "heading", + commandValue: e.model + })), + s.add(t), + r[e.model] = e.title + } + const d = Id(t); + return Nd(d, s), + d.buttonView.set({ + isOn: !1, + withText: !0, + tooltip: o + }), + d.extendTemplate({ + attributes: { + class: ["ck-heading-dropdown"] + } + }), + d.bind("isEnabled").toMany(l, "isEnabled", (...e) => e.some(e => e)), + d.buttonView.bind("label").to(a, "value", c, "value", (e, t) => { + const i = e || t && "paragraph"; + return r[i] ? r[i] : n + }), + this.listenTo(d, "execute", t => { + e.execute(t.source.commandName, t.source.commandValue ? { + value: t.source.commandValue + } + : void 0), + e.editing.view.focus() + }), + d + }) + } + } + class Gf extends Qe { + static get requires() { + return [Qd] + } + static get pluginName() { + return "WidgetToolbarRepository" + } + init() { + const e = this.editor; + if (e.plugins.has("BalloonToolbar")) { + const t = e.plugins.get("BalloonToolbar"); + this.listenTo(t, "show", t => { + (function (e) { + const t = e.getSelectedElement(); + return !(!t || !Fu(t)) + })(e.editing.view.document.selection) && t.stop() + }, { + priority: "high" + }) + } + this._toolbarDefinitions = new Map, + this._balloon = this.editor.plugins.get("ContextualBalloon"), + this.on("change:isEnabled", () => { + this._updateToolbarsVisibility() + }), + this.listenTo(e.ui, "update", () => { + this._updateToolbarsVisibility() + }), + this.listenTo(e.ui.focusTracker, "change:isFocused", () => { + this._updateToolbarsVisibility() + }, { + priority: "low" + }) + } + destroy() { + super.destroy(); + for (const e of this._toolbarDefinitions.values()) + e.view.destroy() + } + register(e, { + ariaLabel: t, + items: i, + getRelatedElement: n, + balloonClassName: o = "ck-toolbar-container" + }) { + if (!i.length) + return void Object(c.b)("widget-toolbar-no-items", { + toolbarId: e + }); + const r = this.editor, + s = r.t, + a = new Ad(r.locale); + if (a.ariaLabel = t || s("Widget toolbar"), this._toolbarDefinitions.has(e)) + throw new c.a("widget-toolbar-duplicated", this, { + toolbarId: e + }); + a.fillFromConfig(i, r.ui.componentFactory), + this._toolbarDefinitions.set(e, { + view: a, + getRelatedElement: n, + balloonClassName: o + }) + } + _updateToolbarsVisibility() { + let e = 0, + t = null, + i = null; + for (const n of this._toolbarDefinitions.values()) { + const o = n.getRelatedElement(this.editor.editing.view.document.selection); + if (this.isEnabled && o) + if (this.editor.ui.focusTracker.isFocused) { + const r = o.getAncestors().length; + r > e && (e = r, t = o, i = n) + } else + this._isToolbarVisible(n) && this._hideToolbar(n); + else + this._isToolbarInBalloon(n) && this._hideToolbar(n) + } + i && this._showToolbar(i, t) + } + _hideToolbar(e) { + this._balloon.remove(e.view), + this.stopListening(this._balloon, "change:visibleView") + } + _showToolbar(e, t) { + this._isToolbarVisible(e) ? Kf(this.editor, t) : this._isToolbarInBalloon(e) || (this._balloon.add({ + view: e.view, + position: Qf(this.editor, t), + balloonClassName: e.balloonClassName + }), this.listenTo(this._balloon, "change:visibleView", () => { + for (const e of this._toolbarDefinitions.values()) + if (this._isToolbarVisible(e)) { + const t = e.getRelatedElement(this.editor.editing.view.document.selection); + Kf(this.editor, t) + } + })) + } + _isToolbarVisible(e) { + return this._balloon.visibleView === e.view + } + _isToolbarInBalloon(e) { + return this._balloon.hasView(e.view) + } + } + function Kf(e, t) { + const i = e.plugins.get("ContextualBalloon"), + n = Qf(e, t); + i.updatePosition(n) + } + function Qf(e, t) { + const i = e.editing.view, + n = qd.defaultPositions; + return { + target: i.domConverter.mapViewToDom(t), + positions: [n.northArrowSouth, n.northArrowSouthWest, n.northArrowSouthEast, n.southArrowNorth, n.southArrowNorthWest, n.southArrowNorthEast, Qu] + } + } + class Jf { + constructor(e) { + this.set("activeHandlePosition", null), + this.set("proposedWidthPercents", null), + this.set("proposedWidth", null), + this.set("proposedHeight", null), + this.set("proposedHandleHostWidth", null), + this.set("proposedHandleHostHeight", null), + this._options = e, + this._referenceCoordinates = null + } + begin(e, t, i) { + const n = new Ts(t); + this.activeHandlePosition = function (e) { + const t = ["top-left", "top-right", "bottom-right", "bottom-left"]; + for (const i of t) + if (e.classList.contains("ck-widget__resizer__handle-" + i)) + return i + } + (e), + this._referenceCoordinates = function (e, t) { + const i = new Ts(e), + n = t.split("-"), + o = { + x: "right" == n[1] ? i.right : i.left, + y: "bottom" == n[0] ? i.bottom : i.top + }; + return o.x += e.ownerDocument.defaultView.scrollX, + o.y += e.ownerDocument.defaultView.scrollY, + o + } + (t, function (e) { + const t = e.split("-"), + i = { + top: "bottom", + bottom: "top", + left: "right", + right: "left" + }; + return `${i[t[0]]}-${i[t[1]]}` + } + (this.activeHandlePosition)), + this.originalWidth = n.width, + this.originalHeight = n.height, + this.aspectRatio = n.width / n.height; + const o = i.style.width; + o && o.match(/^\d+(\.\d*)?%$/) ? this.originalWidthPercents = parseFloat(o) : this.originalWidthPercents = function (e, t) { + const i = e.parentElement, + n = parseFloat(i.ownerDocument.defaultView.getComputedStyle(i).width); + return t.width / n * 100 + } + (i, n) + } + update(e) { + this.proposedWidth = e.width, + this.proposedHeight = e.height, + this.proposedWidthPercents = e.widthPercents, + this.proposedHandleHostWidth = e.handleHostWidth, + this.proposedHandleHostHeight = e.handleHostHeight + } + } + Ke(Jf, Ue); + class Zf { + constructor(e) { + this._options = e, + this._domResizerWrapper = null, + this._viewResizerWrapper = null, + this.set("isEnabled", !0), + this.decorate("begin"), + this.decorate("cancel"), + this.decorate("commit"), + this.decorate("updateSize"), + this.on("commit", e => { + this.state.proposedWidth || this.state.proposedWidthPercents || (this._cleanup(), e.stop()) + }, { + priority: "high" + }), + this.on("change:isEnabled", () => { + this.isEnabled && this.redraw() + }) + } + attach() { + const e = this, + t = this._options.viewElement; + this._options.editor.editing.view.change(i => { + const n = i.createUIElement("div", { + class: "ck ck-reset_all ck-widget__resizer" + }, (function (t) { + const i = this.toDomElement(t); + return e._appendHandles(i), + e._appendSizeUI(i), + e._domResizerWrapper = i, + e.on("change:isEnabled", (e, t, n) => { + i.style.display = n ? "" : "none" + }), + i.style.display = e.isEnabled ? "" : "none", + i + })); + i.insert(i.createPositionAt(t, "end"), n), + i.addClass("ck-widget_with-resizer", t), + this._viewResizerWrapper = n + }) + } + begin(e) { + this.state = new Jf(this._options), + this._sizeUI.bindToState(this._options, this.state), + this._initialViewWidth = this._options.viewElement.getStyle("width"), + this.state.begin(e, this._getHandleHost(), this._getResizeHost()) + } + updateSize(e) { + const t = this._proposeNewSize(e); + this._options.editor.editing.view.change(e => { + const i = this._options.unit || "%", + n = ("%" === i ? t.widthPercents : t.width) + i; + e.setStyle("width", n, this._options.viewElement) + }); + const i = this._getHandleHost(), + n = new Ts(i); + t.handleHostWidth = Math.round(n.width), + t.handleHostHeight = Math.round(n.height); + const o = new Ts(i); + t.width = Math.round(o.width), + t.height = Math.round(o.height), + this.redraw(n), + this.state.update(t) + } + commit() { + const e = this._options.unit || "%", + t = ("%" === e ? this.state.proposedWidthPercents : this.state.proposedWidth) + e; + this._options.editor.editing.view.change(() => { + this._cleanup(), + this._options.onCommit(t) + }) + } + cancel() { + this._cleanup() + } + destroy() { + this.cancel() + } + redraw(e) { + const t = this._domResizerWrapper; + if (!((i = t) && i.ownerDocument && i.ownerDocument.contains(i))) + return; + var i; + const n = t.parentElement, + o = this._getHandleHost(), + r = this._viewResizerWrapper, + s = [r.getStyle("width"), r.getStyle("height"), r.getStyle("left"), r.getStyle("top")]; + let a; + if (n.isSameNode(o)) { + const t = e || new Ts(o); + a = [t.width + "px", t.height + "px", void 0, void 0] + } else + a = [o.offsetWidth + "px", o.offsetHeight + "px", o.offsetLeft + "px", o.offsetTop + "px"]; + "same" !== cn(s, a) && this._options.editor.editing.view.change(e => { + e.setStyle({ + width: a[0], + height: a[1], + left: a[2], + top: a[3] + }, r) + }) + } + containsHandle(e) { + return this._domResizerWrapper.contains(e) + } + static isResizeHandle(e) { + return e.classList.contains("ck-widget__resizer__handle") + } + _cleanup() { + this._sizeUI.dismiss(), + this._sizeUI.isVisible = !1; + this._options.editor.editing.view.change(e => { + e.setStyle("width", this._initialViewWidth, this._options.viewElement) + }) + } + _proposeNewSize(e) { + const t = this.state, + i = { + x: (n = e).pageX, + y: n.pageY + }; + var n; + const o = !this._options.isCentered || this._options.isCentered(this), + r = { + x: t._referenceCoordinates.x - (i.x + t.originalWidth), + y: i.y - t.originalHeight - t._referenceCoordinates.y + }; + o && t.activeHandlePosition.endsWith("-right") && (r.x = i.x - (t._referenceCoordinates.x + t.originalWidth)), + o && (r.x *= 2); + const s = { + width: Math.abs(t.originalWidth + r.x), + height: Math.abs(t.originalHeight + r.y) + }; + s.dominant = s.width / t.aspectRatio > s.height ? "width" : "height", + s.max = s[s.dominant]; + const a = { + width: s.width, + height: s.height + }; + return "width" == s.dominant ? a.height = a.width / t.aspectRatio : a.width = a.height * t.aspectRatio, { + width: Math.round(a.width), + height: Math.round(a.height), + widthPercents: Math.min(Math.round(t.originalWidthPercents / t.originalWidth * a.width * 100) / 100, 100) + } + } + _getResizeHost() { + const e = this._domResizerWrapper.parentElement; + return this._options.getResizeHost(e) + } + _getHandleHost() { + const e = this._domResizerWrapper.parentElement; + return this._options.getHandleHost(e) + } + _appendHandles(e) { + const t = ["top-left", "top-right", "bottom-right", "bottom-left"]; + for (const n of t) + e.appendChild(new Bl({ + tag: "div", + attributes: { + class: "ck-widget__resizer__handle " + (i = n, "ck-widget__resizer__handle-" + i) + } + }).render()); + var i + } + _appendSizeUI(e) { + const t = new Xf; + t.render(), + this._sizeUI = t, + e.appendChild(t.element) + } + } + Ke(Zf, Ue); + class Xf extends jl { + constructor() { + super(); + const e = this.bindTemplate; + this.setTemplate({ + tag: "div", + attributes: { + class: ["ck", "ck-size-view", e.to("activeHandlePosition", e => e ? "ck-orientation-" + e : "")], + style: { + display: e.if("isVisible", "none", e => !e) + } + }, + children: [{ + text: e.to("label") + } + ] + }) + } + bindToState(e, t) { + this.bind("isVisible").to(t, "proposedWidth", t, "proposedHeight", (e, t) => null !== e && null !== t), + this.bind("label").to(t, "proposedHandleHostWidth", t, "proposedHandleHostHeight", t, "proposedWidthPercents", (t, i, n) => "px" === e.unit ? `${t}×${i}` : n + "%"), + this.bind("activeHandlePosition").to(t) + } + dismiss() { + this.unbind(), + this.isVisible = !1 + } + } + i(71); + Ke(class extends Qe { + static get pluginName() { + return "WidgetResize" + } + init() { + this.set("visibleResizer", null), + this.set("_activeResizer", null), + this._resizers = new Map; + const e = _r.window.document; + this.editor.model.schema.setAttributeProperties("width", { + isFormatting: !0 + }), + this.editor.editing.view.addObserver(ku), + this._observer = Object.create(Ir), + this.listenTo(this.editor.editing.view.document, "mousedown", this._mouseDownListener.bind(this), { + priority: "high" + }), + this._observer.listenTo(e, "mousemove", this._mouseMoveListener.bind(this)), + this._observer.listenTo(e, "mouseup", this._mouseUpListener.bind(this)); + const t = () => { + this.visibleResizer && this.visibleResizer.redraw() + }, + i = dh(t, 200); + this.on("change:visibleResizer", t), + this.editor.ui.on("update", i), + this._observer.listenTo(_r.window, "resize", i); + const n = this.editor.editing.view.document.selection; + n.on("change", () => { + const e = n.getSelectedElement(); + this.visibleResizer = this.getResizerByViewElement(e) || null + }) + } + destroy() { + this._observer.stopListening(); + for (const e of this._resizers.values()) + e.destroy() + } + attachTo(e) { + const t = new Zf(e), + i = this.editor.plugins; + if (t.attach(), i.has("WidgetToolbarRepository")) { + const e = i.get("WidgetToolbarRepository"); + t.on("begin", () => { + e.forceDisabled("resize") + }, { + priority: "lowest" + }), + t.on("cancel", () => { + e.clearForceDisabled("resize") + }, { + priority: "highest" + }), + t.on("commit", () => { + e.clearForceDisabled("resize") + }, { + priority: "highest" + }) + } + this._resizers.set(e.viewElement, t); + const n = this.editor.editing.view.document.selection.getSelectedElement(); + return this.getResizerByViewElement(n) == t && (this.visibleResizer = t), + t + } + getResizerByViewElement(e) { + return this._resizers.get(e) + } + _getResizerByHandle(e) { + for (const t of this._resizers.values()) + if (t.containsHandle(e)) + return t + } + _mouseDownListener(e, t) { + const i = t.domTarget; + Zf.isResizeHandle(i) && (this._activeResizer = this._getResizerByHandle(i), this._activeResizer && (this._activeResizer.begin(i), e.stop(), t.preventDefault())) + } + _mouseMoveListener(e, t) { + this._activeResizer && this._activeResizer.updateSize(t) + } + _mouseUpListener() { + this._activeResizer && (this._activeResizer.commit(), this._activeResizer = null) + } + }, Ue); + class eg extends Or { + observe(e) { + this.listenTo(e, "load", (e, t) => { + const i = t.target; + this.checkShouldIgnoreEventFromTarget(i) || "IMG" == i.tagName && this._fireEvents(t) + }, { + useCapture: !0 + }) + } + _fireEvents(e) { + this.isEnabled && (this.document.fire("layoutChanged"), this.document.fire("imageLoaded", e)) + } + } + function tg(e) { + return !!e.getCustomProperty("image") && Fu(e) + } + function ig(e) { + const t = e.getSelectedElement(); + return t && tg(t) ? t : null + } + function ng(e) { + return !!e && e.is("element", "image") + } + function og(e, t = {}, i = null) { + e.change(n => { + const o = n.createElement("image", t), + r = i || Gu(e.document.selection, e); + e.insertContent(o, r), + o.parent && n.setSelection(o, "on") + }) + } + function rg(e) { + const t = e.schema, + i = e.document.selection; + return function (e, t, i) { + const n = function (e, t) { + const i = Gu(e, t).parent; + if (i.isEmpty && !i.is("element", "$root")) + return i.parent; + return i + } + (e, i); + return t.checkChild(n, "image") + } + (i, t, e) && !Ku(i, t) && function (e) { + return [...e.focus.getAncestors()].every(e => !e.is("element", "image")) + } + (i) + } + function sg(e) { + const t = []; + for (const i of e.getChildren()) + t.push(i), i.is("element") && t.push(...i.getChildren()); + return t.find(e => e.is("element", "img")) + } + function ag(e) { + return i => { + i.on(`attribute:${e}:image`, t) + }; + function t(e, t, i) { + if (!i.consumable.consume(t.item, e.name)) + return; + const n = i.writer, + o = sg(i.mapper.toViewElement(t.item)); + n.setAttribute(t.attributeKey, t.attributeNewValue || "", o) + } + } + class cg extends Ze { + refresh() { + this.isEnabled = rg(this.editor.model) + } + execute(e) { + const t = this.editor.model; + for (const i of en(e.source)) + og(t, { + src: i + }) + } + } + class lg extends Qe { + static get pluginName() { + return "ImageEditing" + } + init() { + const e = this.editor, + t = e.model.schema, + i = e.t, + n = e.conversion; + e.editing.view.addObserver(eg), + t.register("image", { + isObject: !0, + isBlock: !0, + allowWhere: "$block", + allowAttributes: ["alt", "src", "srcset"] + }), + n.for("dataDowncast").elementToElement({ + model: "image", + view: (e, { + writer: t + }) => dg(t) + }), + n.for("editingDowncast").elementToElement({ + model: "image", + view: (e, { + writer: t + }) => function (e, t, i) { + return t.setCustomProperty("image", !0, e), + Hu(e, t, { + label: function () { + const t = sg(e).getAttribute("alt"); + return t ? `${t} ${i}` : i + } + }) + } + (dg(t), t, i("image widget")) + }), + n.for("downcast").add(ag("src")).add(ag("alt")).add(function () { + return t => { + t.on("attribute:srcset:image", e) + }; + function e(e, t, i) { + if (!i.consumable.consume(t.item, e.name)) + return; + const n = i.writer, + o = sg(i.mapper.toViewElement(t.item)); + if (null === t.attributeNewValue) { + const e = t.attributeOldValue; + e.data && (n.removeAttribute("srcset", o), n.removeAttribute("sizes", o), e.width && n.removeAttribute("width", o)) + } else { + const e = t.attributeNewValue; + e.data && (n.setAttribute("srcset", e.data, o), n.setAttribute("sizes", "100vw", o), e.width && n.setAttribute("width", e.width, o)) + } + } + } + ()), + n.for("upcast").elementToElement({ + view: { + name: "img", + attributes: { + src: !0 + } + }, + model: (e, { + writer: t + }) => t.createElement("image", { + src: e.getAttribute("src") + }) + }).attributeToAttribute({ + view: { + name: "img", + key: "alt" + }, + model: "alt" + }).attributeToAttribute({ + view: { + name: "img", + key: "srcset" + }, + model: { + key: "srcset", + value: e => { + const t = { + data: e.getAttribute("srcset") + }; + return e.hasAttribute("width") && (t.width = e.getAttribute("width")), + t + } + } + }).add(function () { + return t => { + t.on("element:figure", e) + }; + function e(e, t, i) { + if (!i.consumable.test(t.viewItem, { + name: !0, + classes: "image" + })) + return; + const n = sg(t.viewItem); + if (!n || !n.hasAttribute("src") || !i.consumable.test(n, { + name: !0 + })) + return; + const o = Ns(i.convertItem(n, t.modelCursor).modelRange.getItems()); + o && (i.convertChildren(t.viewItem, o), i.updateConversionResult(o, t)) + } + } + ()); + const o = new cg(e); + e.commands.add("insertImage", o), + e.commands.add("imageInsert", o) + } + } + function dg(e) { + const t = e.createEmptyElement("img"), + i = e.createContainerElement("figure", { + class: "image" + }); + return e.insert(e.createPositionAt(i, 0), t), + i + } + class ug extends Ze { + refresh() { + const e = this.editor.model.document.selection.getSelectedElement(); + this.isEnabled = ng(e), + ng(e) && e.hasAttribute("alt") ? this.value = e.getAttribute("alt") : this.value = !1 + } + execute(e) { + const t = this.editor.model, + i = t.document.selection.getSelectedElement(); + t.change(t => { + t.setAttribute("alt", e.newValue, i) + }) + } + } + class hg extends Qe { + static get pluginName() { + return "ImageTextAlternativeEditing" + } + init() { + this.editor.commands.add("imageTextAlternative", new ug(this.editor)) + } + } + i(73), + i(7); + class fg extends jl { + constructor(e) { + super(e); + const t = this.locale.t; + this.focusTracker = new Rs, + this.keystrokes = new Os, + this.labeledInput = this._createLabeledInputView(), + this.saveButtonView = this._createButton(t("Save"), Cl, "ck-button-save"), + this.saveButtonView.type = "submit", + this.cancelButtonView = this._createButton(t("Cancel"), Al, "ck-button-cancel", "cancel"), + this._focusables = new Vl, + this._focusCycler = new dd({ + focusables: this._focusables, + focusTracker: this.focusTracker, + keystrokeHandler: this.keystrokes, + actions: { + focusPrevious: "shift + tab", + focusNext: "tab" + } + }), + this.setTemplate({ + tag: "form", + attributes: { + class: ["ck", "ck-text-alternative-form", "ck-responsive-form"], + tabindex: "-1" + }, + children: [this.labeledInput, this.saveButtonView, this.cancelButtonView] + }), + Ll(this) + } + render() { + super.render(), + this.keystrokes.listenTo(this.element), + zl({ + view: this + }), + [this.labeledInput, this.saveButtonView, this.cancelButtonView].forEach(e => { + this._focusables.add(e), + this.focusTracker.add(e.element) + }) + } + _createButton(e, t, i, n) { + const o = new cd(this.locale); + return o.set({ + label: e, + icon: t, + tooltip: !0 + }), + o.extendTemplate({ + attributes: { + class: i + } + }), + n && o.delegate("execute").to(this, n), + o + } + _createLabeledInputView() { + const e = this.locale.t, + t = new jd(this.locale, Bd); + return t.label = e("Text alternative"), + t + } + } + function gg(e) { + const t = e.editing.view, + i = qd.defaultPositions; + return { + target: t.domConverter.viewToDom(t.document.selection.getSelectedElement()), + positions: [i.northArrowSouth, i.northArrowSouthWest, i.northArrowSouthEast, i.southArrowNorth, i.southArrowNorthWest, i.southArrowNorthEast] + } + } + class mg extends Qe { + static get requires() { + return [Qd] + } + static get pluginName() { + return "ImageTextAlternativeUI" + } + init() { + this._createButton(), + this._createForm() + } + destroy() { + super.destroy(), + this._form.destroy() + } + _createButton() { + const e = this.editor, + t = e.t; + e.ui.componentFactory.add("imageTextAlternative", i => { + const n = e.commands.get("imageTextAlternative"), + o = new cd(i); + return o.set({ + label: t("Change image text alternative"), + icon: Tl, + tooltip: !0 + }), + o.bind("isEnabled").to(n, "isEnabled"), + this.listenTo(o, "execute", () => { + this._showForm() + }), + o + }) + } + _createForm() { + const e = this.editor, + t = e.editing.view.document; + this._balloon = this.editor.plugins.get("ContextualBalloon"), + this._form = new fg(e.locale), + this._form.render(), + this.listenTo(this._form, "submit", () => { + e.execute("imageTextAlternative", { + newValue: this._form.labeledInput.fieldView.element.value + }), + this._hideForm(!0) + }), + this.listenTo(this._form, "cancel", () => { + this._hideForm(!0) + }), + this._form.keystrokes.set("Esc", (e, t) => { + this._hideForm(!0), + t() + }), + this.listenTo(e.ui, "update", () => { + ig(t.selection) ? this._isVisible && function (e) { + const t = e.plugins.get("ContextualBalloon"); + if (ig(e.editing.view.document.selection)) { + const i = gg(e); + t.updatePosition(i) + } + } + (e) : this._hideForm(!0) + }), + Dl({ + emitter: this._form, + activator: () => this._isVisible, + contextElements: [this._balloon.view.element], + callback: () => this._hideForm() + }) + } + _showForm() { + if (this._isVisible) + return; + const e = this.editor, + t = e.commands.get("imageTextAlternative"), + i = this._form.labeledInput; + this._form.disableCssTransitions(), + this._isInBalloon || this._balloon.add({ + view: this._form, + position: gg(e) + }), + i.fieldView.value = i.fieldView.element.value = t.value || "", + this._form.labeledInput.fieldView.select(), + this._form.enableCssTransitions() + } + _hideForm(e) { + this._isInBalloon && (this._form.focusTracker.isFocused && this._form.saveButtonView.focus(), this._balloon.remove(this._form), e && this.editor.editing.view.focus()) + } + get _isVisible() { + return this._balloon.visibleView === this._form + } + get _isInBalloon() { + return this._balloon.hasView(this._form) + } + } + class pg extends Qe { + static get requires() { + return [hg, mg] + } + static get pluginName() { + return "ImageTextAlternative" + } + } + i(76); + function bg(e) { + for (const t of e.getChildren()) + if (t && t.is("element", "caption")) + return t; + return null + } + function wg(e) { + const t = e.parent; + return "figcaption" == e.name && t && "figure" == t.name && t.hasClass("image") ? { + name: !0 + } + : null + } + class kg extends Qe { + static get pluginName() { + return "ImageCaptionEditing" + } + init() { + const e = this.editor, + t = e.editing.view, + i = e.model.schema, + n = e.data, + o = e.editing, + r = e.t; + i.register("caption", { + allowIn: "image", + allowContentOf: "$block", + isLimit: !0 + }), + e.model.document.registerPostFixer(e => this._insertMissingModelCaptionElement(e)), + e.conversion.for("upcast").elementToElement({ + view: wg, + model: "caption" + }); + n.downcastDispatcher.on("insert:caption", _g(e => e.createContainerElement("figcaption"), !1)); + const s = function (e, t) { + return i => { + const n = i.createEditableElement("figcaption"); + return i.setCustomProperty("imageCaption", !0, n), + iu({ + view: e, + element: n, + text: t + }), + Yu(n, i) + } + } + (t, r("Enter image caption")); + o.downcastDispatcher.on("insert:caption", _g(s)), + o.downcastDispatcher.on("insert", this._fixCaptionVisibility(e => e.item), { + priority: "high" + }), + o.downcastDispatcher.on("remove", this._fixCaptionVisibility(e => e.position.parent), { + priority: "high" + }), + t.document.registerPostFixer(e => this._updateCaptionVisibility(e)) + } + _updateCaptionVisibility(e) { + const t = this.editor.editing.mapper, + i = this._lastSelectedCaption; + let n; + const o = this.editor.model.document.selection, + r = o.getSelectedElement(); + if (r && r.is("element", "image")) { + const e = bg(r); + n = t.toViewElement(e) + } + const s = vg(o.getFirstPosition().parent); + if (s && (n = t.toViewElement(s)), n && !this.editor.isReadOnly) + return i ? (i === n || (yg(i, e), this._lastSelectedCaption = n), xg(n, e)) : (this._lastSelectedCaption = n, xg(n, e)); + if (i) { + const t = yg(i, e); + return this._lastSelectedCaption = null, + t + } + return !1 + } + _fixCaptionVisibility(e) { + return (t, i, n) => { + const o = vg(e(i)), + r = this.editor.editing.mapper, + s = n.writer; + if (o) { + const e = r.toViewElement(o); + e && (o.childCount ? s.removeClass("ck-hidden", e) : s.addClass("ck-hidden", e)) + } + } + } + _insertMissingModelCaptionElement(e) { + const t = this.editor.model, + i = t.document.differ.getChanges(), + n = []; + for (const e of i) + if ("insert" == e.type && "$text" != e.name) { + const i = e.position.nodeAfter; + if (i.is("element", "image") && !bg(i) && n.push(i), !i.is("element", "image") && i.childCount) + for (const e of t.createRangeIn(i).getItems()) + e.is("element", "image") && !bg(e) && n.push(e) + } + for (const t of n) + e.appendElement("caption", t); + return !!n.length + } + } + function _g(e, t = !0) { + return (i, n, o) => { + const r = n.item; + if ((r.childCount || t) && ng(r.parent)) { + if (!o.consumable.consume(n.item, "insert")) + return; + const t = o.mapper.toViewElement(n.range.start.parent), + i = e(o.writer), + s = o.writer; + r.childCount || s.addClass("ck-hidden", i), + function (e, t, i, n) { + const o = n.writer.createPositionAt(i, "end"); + n.writer.insert(o, e), + n.mapper.bindElements(t, e) + } + (i, n.item, t, o) + } + } + } + function vg(e) { + const t = e.getAncestors({ + includeSelf: !0 + }).find(e => "caption" == e.name); + return t && t.parent && "image" == t.parent.name ? t : null + } + function yg(e, t) { + return !e.childCount && !e.hasClass("ck-hidden") && (t.addClass("ck-hidden", e), !0) + } + function xg(e, t) { + return !!e.hasClass("ck-hidden") && (t.removeClass("ck-hidden", e), !0) + } + i(78); + class Ag extends Ze { + constructor(e, t) { + super(e), + this.defaultStyle = !1, + this.styles = t.reduce((e, t) => (e[t.name] = t, t.isDefault && (this.defaultStyle = t.name), e), {}) + } + refresh() { + const e = this.editor.model.document.selection.getSelectedElement(); + if (this.isEnabled = ng(e), e) + if (e.hasAttribute("imageStyle")) { + const t = e.getAttribute("imageStyle"); + this.value = !!this.styles[t] && t + } else + this.value = this.defaultStyle; + else + this.value = !1 + } + execute(e) { + const t = e.value, + i = this.editor.model, + n = i.document.selection.getSelectedElement(); + i.change(e => { + this.styles[t].isDefault ? e.removeAttribute("imageStyle", n) : e.setAttribute("imageStyle", t, n) + }) + } + } + function Cg(e, t) { + for (const i of t) + if (i.name === e) + return i + } + const Tg = { + full: { + name: "full", + title: "Full size image", + icon: Il, + isDefault: !0 + }, + side: { + name: "side", + title: "Side image", + icon: Ml, + className: "image-style-side" + }, + alignLeft: { + name: "alignLeft", + title: "Left aligned image", + icon: Pl, + className: "image-style-align-left" + }, + alignCenter: { + name: "alignCenter", + title: "Centered image", + icon: Sl, + className: "image-style-align-center" + }, + alignRight: { + name: "alignRight", + title: "Right aligned image", + icon: Ml, + className: "image-style-align-right" + } + }, + Eg = { + full: Il, + left: Pl, + right: Ml, + center: Sl + }; + function Pg(e = []) { + return e.map(Sg) + } + function Sg(e) { + if ("string" == typeof e) { + const t = e; + Tg[t] ? e = Object.assign({}, Tg[t]) : (Object(c.b)("image-style-not-found", { + name: t + }), e = { + name: t + }) + } else if (Tg[e.name]) { + const t = Tg[e.name], + i = Object.assign({}, e); + for (const n in t) + Object.prototype.hasOwnProperty.call(e, n) || (i[n] = t[n]); + e = i + } + return "string" == typeof e.icon && Eg[e.icon] && (e.icon = Eg[e.icon]), + e + } + class Mg extends Qe { + static get pluginName() { + return "ImageStyleEditing" + } + init() { + const e = this.editor, + t = e.model.schema, + i = e.data, + n = e.editing; + e.config.define("image.styles", ["full", "side"]); + const o = Pg(e.config.get("image.styles")); + t.extend("image", { + allowAttributes: "imageStyle" + }); + const r = function (e) { + return (t, i, n) => { + if (!n.consumable.consume(i.item, t.name)) + return; + const o = Cg(i.attributeNewValue, e), + r = Cg(i.attributeOldValue, e), + s = n.mapper.toViewElement(i.item), + a = n.writer; + r && a.removeClass(r.className, s), + o && a.addClass(o.className, s) + } + } + (o); + n.downcastDispatcher.on("attribute:imageStyle:image", r), + i.downcastDispatcher.on("attribute:imageStyle:image", r), + i.upcastDispatcher.on("element:figure", function (e) { + const t = e.filter(e => !e.isDefault); + return (e, i, n) => { + if (!i.modelRange) + return; + const o = i.viewItem, + r = Ns(i.modelRange.getItems()); + if (!r || n.schema.checkAttribute(r, "imageStyle")) + for (const e of t) + n.consumable.consume(o, { + classes: e.className + }) && n.writer.setAttribute("imageStyle", e.name, r) + } + } + (o), { + priority: "low" + }), + e.commands.add("imageStyle", new Ag(e, o)) + } + } + i(80); + class Ig extends Qe { + static get pluginName() { + return "ImageStyleUI" + } + get localizedDefaultStylesTitles() { + const e = this.editor.t; + return { + "Full size image": e("Full size image"), + "Side image": e("Side image"), + "Left aligned image": e("Left aligned image"), + "Centered image": e("Centered image"), + "Right aligned image": e("Right aligned image") + } + } + init() { + const e = function (e, t) { + for (const i of e) + t[i.title] && (i.title = t[i.title]); + return e + } + (Pg(this.editor.config.get("image.styles")), this.localizedDefaultStylesTitles); + for (const t of e) + this._createButton(t) + } + _createButton(e) { + const t = this.editor, + i = "imageStyle:" + e.name; + t.ui.componentFactory.add(i, i => { + const n = t.commands.get("imageStyle"), + o = new cd(i); + return o.set({ + label: e.title, + icon: e.icon, + tooltip: !0, + isToggleable: !0 + }), + o.bind("isEnabled").to(n, "isEnabled"), + o.bind("isOn").to(n, "value", t => t === e.name), + this.listenTo(o, "execute", () => { + t.execute("imageStyle", { + value: e.name + }), + t.editing.view.focus() + }), + o + }) + } + } + function Ng(e) { + const t = e.map(e => e.replace("+", "\\+")); + return new RegExp(`^image\\/(${t.join("|")})$`) + } + function Rg(e) { + return new Promise((t, i) => { + const n = e.getAttribute("src"); + fetch(n).then(e => e.blob()).then(e => { + const i = Og(e, n), + o = i.replace("image/", ""), + r = new File([e], "image." + o, { + type: i + }); + t(r) + }).catch(e => e && "TypeError" === e.name ? function (e) { + return function (e) { + return new Promise((t, i) => { + const n = _r.document.createElement("img"); + n.addEventListener("load", () => { + const e = _r.document.createElement("canvas"); + e.width = n.width, + e.height = n.height; + e.getContext("2d").drawImage(n, 0, 0), + e.toBlob(e => e ? t(e) : i()) + }), + n.addEventListener("error", () => i()), + n.src = e + }) + } + (e).then(t => { + const i = Og(t, e), + n = i.replace("image/", ""); + return new File([t], "image." + n, { + type: i + }) + }) + } + (n).then(t).catch(i) : i(e)) + }) + } + function Og(e, t) { + return e.type ? e.type : t.match(/data:(image\/\w+);base64/) ? t.match(/data:(image\/\w+);base64/)[1].toLowerCase() : "image/jpeg" + } + class Dg extends Qe { + static get pluginName() { + return "ImageUploadUI" + } + init() { + const e = this.editor, + t = e.t, + i = i => { + const n = new mf(i), + o = e.commands.get("uploadImage"), + r = e.config.get("image.upload.types"), + s = Ng(r); + return n.set({ + acceptedType: r.map(e => "image/" + e).join(","), + allowMultipleFiles: !0 + }), + n.buttonView.set({ + label: t("Insert image"), + icon: El, + tooltip: !0 + }), + n.buttonView.bind("isEnabled").to(o), + n.on("done", (t, i) => { + const n = Array.from(i).filter(e => s.test(e.type)); + n.length && e.execute("uploadImage", { + file: n + }) + }), + n + }; + e.ui.componentFactory.add("uploadImage", i), + e.ui.componentFactory.add("imageUpload", i) + } + } + i(82), + i(84), + i(86); + class Lg extends Qe { + static get pluginName() { + return "ImageUploadProgress" + } + constructor(e) { + super(e), + this.placeholder = "data:image/svg+xml;utf8," + encodeURIComponent('') + } + init() { + this.editor.editing.downcastDispatcher.on("attribute:uploadStatus:image", (...e) => this.uploadStatusChange(...e)) + } + uploadStatusChange(e, t, i) { + const n = this.editor, + o = t.item, + r = o.getAttribute("uploadId"); + if (!i.consumable.consume(t.item, e.name)) + return; + const s = n.plugins.get(ff), + a = r ? t.attributeNewValue : null, + c = this.placeholder, + l = n.editing.mapper.toViewElement(o), + d = i.writer; + if ("reading" == a) + return zg(l, d), void Vg(c, l, d); + if ("uploading" == a) { + const e = s.loaders.get(r); + return zg(l, d), + void(e ? (jg(l, d), function (e, t, i, n) { + const o = function (e) { + const t = e.createUIElement("div", { + class: "ck-progress-bar" + }); + return e.setCustomProperty("progressBar", !0, t), + t + } + (t); + t.insert(t.createPositionAt(e, "end"), o), + i.on("change:uploadedPercent", (e, t, i) => { + n.change(e => { + e.setStyle("width", i + "%", o) + }) + }) + } + (l, d, e, n.editing.view), function (e, t, i) { + if (i.data) { + const n = sg(e); + t.setAttribute("src", i.data, n) + } + } + (l, d, e)) : Vg(c, l, d)) + } + "complete" == a && s.loaders.get(r) && function (e, t, i) { + const n = t.createUIElement("div", { + class: "ck-image-upload-complete-icon" + }); + t.insert(t.createPositionAt(e, "end"), n), + setTimeout(() => { + i.change(e => e.remove(e.createRangeOn(n))) + }, 3e3) + } + (l, d, n.editing.view), + function (e, t) { + Fg(e, t, "progressBar") + } + (l, d), + jg(l, d), + function (e, t) { + t.removeClass("ck-appear", e) + } + (l, d) + } + } + function zg(e, t) { + e.hasClass("ck-appear") || t.addClass("ck-appear", e) + } + function Vg(e, t, i) { + t.hasClass("ck-image-upload-placeholder") || i.addClass("ck-image-upload-placeholder", t); + const n = sg(t); + n.getAttribute("src") !== e && i.setAttribute("src", e, n), + Bg(t, "placeholder") || i.insert(i.createPositionAfter(n), function (e) { + const t = e.createUIElement("div", { + class: "ck-upload-placeholder-loader" + }); + return e.setCustomProperty("placeholder", !0, t), + t + } + (i)) + } + function jg(e, t) { + e.hasClass("ck-image-upload-placeholder") && t.removeClass("ck-image-upload-placeholder", e), + Fg(e, t, "placeholder") + } + function Bg(e, t) { + for (const i of e.getChildren()) + if (i.getCustomProperty(t)) + return i + } + function Fg(e, t, i) { + const n = Bg(e, i); + n && t.remove(t.createRangeOn(n)) + } + class Hg extends Ze { + refresh() { + const e = this.editor.model.document.selection.getSelectedElement(), + t = e && "image" === e.name || !1; + this.isEnabled = rg(this.editor.model) || t + } + execute(e) { + const t = this.editor, + i = t.model, + n = t.plugins.get(ff); + for (const t of en(e.file)) + Ug(i, n, t) + } + } + function Ug(e, t, i) { + const n = t.createLoader(i); + n && og(e, { + uploadId: n.id + }) + } + class Wg extends Qe { + static get requires() { + return [ff, Fd, Eu] + } + static get pluginName() { + return "ImageUploadEditing" + } + constructor(e) { + super(e), + e.config.define("image", { + upload: { + types: ["jpeg", "png", "gif", "bmp", "webp", "tiff"] + } + }) + } + init() { + const e = this.editor, + t = e.model.document, + i = e.model.schema, + n = e.conversion, + o = e.plugins.get(ff), + r = Ng(e.config.get("image.upload.types")); + i.extend("image", { + allowAttributes: ["uploadId", "uploadStatus"] + }); + const s = new Hg(e); + e.commands.add("uploadImage", s), + e.commands.add("imageUpload", s), + n.for("upcast").attributeToAttribute({ + view: { + name: "img", + key: "uploadId" + }, + model: "uploadId" + }), + this.listenTo(e.editing.view.document, "clipboardInput", (t, i) => { + if (n = i.dataTransfer, Array.from(n.types).includes("text/html") && "" !== n.getData("text/html")) + return; + var n; + const o = Array.from(i.dataTransfer.files).filter(e => !!e && r.test(e.type)); + o.length && (t.stop(), e.model.change(t => { + i.targetRanges && t.setSelection(i.targetRanges.map(t => e.editing.mapper.toModelRange(t))), + e.model.enqueueChange("default", () => { + e.execute("uploadImage", { + file: o + }) + }) + })) + }), + this.listenTo(e.plugins.get("ClipboardPipeline"), "inputTransformation", (t, i) => { + const n = Array.from(e.editing.view.createRangeIn(i.content)).filter(e => { + return !(!(t = e.item).is("element", "img") || !t.getAttribute("src")) && (t.getAttribute("src").match(/^data:image\/\w+;base64,/g) || t.getAttribute("src").match(/^blob:/g)) && !e.item.getAttribute("uploadProcessed"); + var t + }).map(e => ({ + promise: Rg(e.item), + imageElement: e.item + })); + if (!n.length) + return; + const r = new _u(e.editing.view.document); + for (const e of n) { + r.setAttribute("uploadProcessed", !0, e.imageElement); + const t = o.createLoader(e.promise); + t && (r.setAttribute("src", "", e.imageElement), r.setAttribute("uploadId", t.id, e.imageElement)) + } + }), + e.editing.view.document.on("dragover", (e, t) => { + t.preventDefault() + }), + t.on("change", () => { + const i = t.differ.getChanges({ + includeChangesInGraveyard: !0 + }); + for (const t of i) + if ("insert" == t.type && "$text" != t.name) { + const i = t.position.nodeAfter, + n = "$graveyard" == t.position.root.rootName; + for (const t of qg(e, i)) { + const e = t.getAttribute("uploadId"); + if (!e) + continue; + const i = o.loaders.get(e); + i && (n ? i.abort() : "idle" == i.status && this._readAndUpload(i, t)) + } + } + }), + this.on("uploadComplete", (e, { + imageElement: t, + data: i + }) => { + const n = i.urls ? i.urls : i; + this.editor.model.change(e => { + e.setAttribute("src", n.default, t), + this._parseAndSetSrcsetAttributeOnImage(n, t, e) + }) + }, { + priority: "low" + }) + } + _readAndUpload(e, t) { + const i = this.editor, + n = i.model, + o = i.locale.t, + r = i.plugins.get(ff), + s = i.plugins.get(Fd); + return n.enqueueChange("transparent", e => { + e.setAttribute("uploadStatus", "reading", t) + }), + e.read().then(() => { + const o = e.upload(); + if (Po.isSafari) { + const e = sg(i.editing.mapper.toViewElement(t)); + i.editing.view.once("render", () => { + if (!e.parent) + return; + const t = i.editing.view.domConverter.mapViewToDom(e.parent); + if (!t) + return; + const n = t.style.display; + t.style.display = "none", + t._ckHack = t.offsetHeight, + t.style.display = n + }) + } + return n.enqueueChange("transparent", e => { + e.setAttribute("uploadStatus", "uploading", t) + }), + o + }).then(e => { + n.enqueueChange("transparent", i => { + i.setAttribute("uploadStatus", "complete", t), + this.fire("uploadComplete", { + data: e, + imageElement: t + }) + }), + a() + }).catch(i => { + if ("error" !== e.status && "aborted" !== e.status) + throw i; + "error" == e.status && i && s.showWarning(i, { + title: o("Upload failed"), + namespace: "upload" + }), + a(), + n.enqueueChange("transparent", e => { + e.remove(t) + }) + }); + function a() { + n.enqueueChange("transparent", e => { + e.removeAttribute("uploadId", t), + e.removeAttribute("uploadStatus", t) + }), + r.destroyLoader(e) + } + } + _parseAndSetSrcsetAttributeOnImage(e, t, i) { + let n = 0; + const o = Object.keys(e).filter(e => { + const t = parseInt(e, 10); + if (!isNaN(t)) + return n = Math.max(n, t), !0 + }).map(t => `${e[t]} ${t}w`).join(", "); + "" != o && i.setAttribute("srcset", { + data: o, + width: n + }, t) + } + } + function qg(e, t) { + return Array.from(e.model.createRangeOn(t)).filter(e => e.item.is("element", "image")).map(e => e.item) + } + class $g extends Qe { + static get pluginName() { + return "IndentEditing" + } + init() { + const e = this.editor; + e.commands.add("indent", new et(e)), + e.commands.add("outdent", new et(e)) + } + } + var Yg = '', + Gg = ''; + class Kg extends Qe { + static get pluginName() { + return "IndentUI" + } + init() { + const e = this.editor, + t = e.locale, + i = e.t, + n = "ltr" == t.uiLanguageDirection ? Yg : Gg, + o = "ltr" == t.uiLanguageDirection ? Gg : Yg; + this._defineButton("indent", i("Increase indent"), n), + this._defineButton("outdent", i("Decrease indent"), o) + } + _defineButton(e, t, i) { + const n = this.editor; + n.ui.componentFactory.add(e, o => { + const r = n.commands.get(e), + s = new cd(o); + return s.set({ + label: t, + icon: i, + tooltip: !0 + }), + s.bind("isOn", "isEnabled").to(r, "value", "isEnabled"), + this.listenTo(s, "execute", () => { + n.execute(e), + n.editing.view.focus() + }), + s + }) + } + } + class Qg { + constructor() { + this._definitions = new Set + } + get length() { + return this._definitions.size + } + add(e) { + Array.isArray(e) ? e.forEach(e => this._definitions.add(e)) : this._definitions.add(e) + } + getDispatcher() { + return e => { + e.on("attribute:linkHref", (e, t, i) => { + if (!i.consumable.test(t.item, "attribute:linkHref")) + return; + const n = i.writer, + o = n.document.selection; + for (const e of this._definitions) { + const r = n.createAttributeElement("a", e.attributes, { + priority: 5 + }); + n.setCustomProperty("link", !0, r), + e.callback(t.attributeNewValue) ? t.item.is("selection") ? n.wrap(o.getFirstRange(), r) : n.wrap(i.mapper.toViewRange(t.range), r) : n.unwrap(i.mapper.toViewRange(t.range), r) + } + }, { + priority: "high" + }) + } + } + getDispatcherForLinkedImage() { + return e => { + e.on("attribute:linkHref:image", (e, t, i) => { + const n = i.mapper.toViewElement(t.item), + o = Array.from(n.getChildren()).find(e => "a" === e.name); + for (const e of this._definitions) { + const n = fn(e.attributes); + if (e.callback(t.attributeNewValue)) + for (const[e, t]of n) + "class" === e ? i.writer.addClass(t, o) : i.writer.setAttribute(e, t, o); + else + for (const[e, t]of n) + "class" === e ? i.writer.removeClass(t, o) : i.writer.removeAttribute(e, o) + } + }) + } + } + } + var Jg = function (e, t, i) { + var n = e.length; + return i = void 0 === i ? n : i, + !t && i >= n ? e : On(e, t, i) + }, + Zg = RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"); + var Xg = function (e) { + return Zg.test(e) + }; + var em = function (e) { + return e.split("") + }, + tm = "[\\ud800-\\udfff]", + im = "[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]", + nm = "\\ud83c[\\udffb-\\udfff]", + om = "[^\\ud800-\\udfff]", + rm = "(?:\\ud83c[\\udde6-\\uddff]){2}", + sm = "[\\ud800-\\udbff][\\udc00-\\udfff]", + am = "(?:" + im + "|" + nm + ")" + "?", + cm = "[\\ufe0e\\ufe0f]?" + am + ("(?:\\u200d(?:" + [om, rm, sm].join("|") + ")[\\ufe0e\\ufe0f]?" + am + ")*"), + lm = "(?:" + [om + im + "?", im, rm, sm, tm].join("|") + ")", + dm = RegExp(nm + "(?=" + nm + ")|" + lm + cm, "g"); + var um = function (e) { + return e.match(dm) || [] + }; + var hm = function (e) { + return Xg(e) ? um(e) : em(e) + }; + var fm = function (e) { + return function (t) { + t = Sn(t); + var i = Xg(t) ? hm(t) : void 0, + n = i ? i[0] : t.charAt(0), + o = i ? Jg(i, 1).join("") : t.slice(1); + return n[e]() + o + } + } + ("toUpperCase"); + const gm = /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g, + mm = /^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i, + pm = /^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i, + bm = /^((\w+:(\/{2,})?)|(\W))/i; + function wm(e, { + writer: t + }) { + const i = t.createAttributeElement("a", { + href: e + }, { + priority: 5 + }); + return t.setCustomProperty("link", !0, i), + i + } + function km(e) { + return function (e) { + return e.replace(gm, "").match(mm) + } + (e = String(e)) ? e : "#" + } + function _m(e, t) { + return !!e && (e.is("element", "image") && t.checkAttribute("image", "linkHref")) + } + function vm(e, t) { + const i = (n = e, pm.test(n) ? "mailto:" : t); + var n; + const o = !!i && !bm.test(e); + return e && o ? i + e : e + } + class ym extends Ze { + constructor(e) { + super(e), + this.manualDecorators = new Zi, + this.automaticDecorators = new Qg + } + restoreManualDecoratorStates() { + for (const e of this.manualDecorators) + e.value = this._getDecoratorStateFromModel(e.id) + } + refresh() { + const e = this.editor.model, + t = e.document, + i = Ns(t.selection.getSelectedBlocks()); + _m(i, e.schema) ? (this.value = i.getAttribute("linkHref"), this.isEnabled = e.schema.checkAttribute(i, "linkHref")) : (this.value = t.selection.getAttribute("linkHref"), this.isEnabled = e.schema.checkAttributeInSelection(t.selection, "linkHref")); + for (const e of this.manualDecorators) + e.value = this._getDecoratorStateFromModel(e.id) + } + execute(e, t = {}) { + const i = this.editor.model, + n = i.document.selection, + o = [], + r = []; + for (const e in t) + t[e] ? o.push(e) : r.push(e); + i.change(t => { + if (n.isCollapsed) { + const s = n.getFirstPosition(); + if (n.hasAttribute("linkHref")) { + const a = Xh(s, "linkHref", n.getAttribute("linkHref"), i); + t.setAttribute("linkHref", e, a), + o.forEach(e => { + t.setAttribute(e, !0, a) + }), + r.forEach(e => { + t.removeAttribute(e, a) + }), + t.setSelection(t.createPositionAfter(a.end.nodeBefore)) + } else if ("" !== e) { + const r = fn(n.getAttributes()); + r.set("linkHref", e), + o.forEach(e => { + r.set(e, !0) + }); + const { + end: a + } = i.insertContent(t.createText(e, r), s); + t.setSelection(a) + } + ["linkHref", ...o, ...r].forEach(e => { + t.removeSelectionAttribute(e) + }) + } else { + const s = i.schema.getValidRanges(n.getRanges(), "linkHref"), + a = []; + for (const e of n.getSelectedBlocks()) + i.schema.checkAttribute(e, "linkHref") && a.push(t.createRangeOn(e)); + const c = a.slice(); + for (const e of s) + this._isRangeToUpdate(e, a) && c.push(e); + for (const i of c) + t.setAttribute("linkHref", e, i), o.forEach(e => { + t.setAttribute(e, !0, i) + }), r.forEach(e => { + t.removeAttribute(e, i) + }) + } + }) + } + _getDecoratorStateFromModel(e) { + const t = this.editor.model, + i = t.document, + n = Ns(i.selection.getSelectedBlocks()); + return _m(n, t.schema) ? n.getAttribute(e) : i.selection.getAttribute(e) + } + _isRangeToUpdate(e, t) { + for (const i of t) + if (i.containsRange(e)) + return !1; + return !0 + } + } + class xm extends Ze { + refresh() { + const e = this.editor.model, + t = e.document, + i = Ns(t.selection.getSelectedBlocks()); + _m(i, e.schema) ? this.isEnabled = e.schema.checkAttribute(i, "linkHref") : this.isEnabled = e.schema.checkAttributeInSelection(t.selection, "linkHref") + } + execute() { + const e = this.editor, + t = this.editor.model, + i = t.document.selection, + n = e.commands.get("link"); + t.change(e => { + const o = i.isCollapsed ? [Xh(i.getFirstPosition(), "linkHref", i.getAttribute("linkHref"), t)] : t.schema.getValidRanges(i.getRanges(), "linkHref"); + for (const t of o) + if (e.removeAttribute("linkHref", t), n) + for (const i of n.manualDecorators) + e.removeAttribute(i.id, t) + }) + } + } + class Am { + constructor({ + id: e, + label: t, + attributes: i, + defaultValue: n + }) { + this.id = e, + this.set("value"), + this.defaultValue = n, + this.label = t, + this.attributes = i + } + } + Ke(Am, Ue); + i(88); + const Cm = /^(https?:)?\/\//; + class Tm extends Qe { + static get pluginName() { + return "LinkEditing" + } + static get requires() { + return [Vh, Oh, Eu] + } + constructor(e) { + super(e), + e.config.define("link", { + addTargetToExternalLinks: !1 + }) + } + init() { + const e = this.editor; + e.model.schema.extend("$text", { + allowAttributes: "linkHref" + }), + e.conversion.for("dataDowncast").attributeToElement({ + model: "linkHref", + view: wm + }), + e.conversion.for("editingDowncast").attributeToElement({ + model: "linkHref", + view: (e, t) => wm(km(e), t) + }), + e.conversion.for("upcast").elementToAttribute({ + view: { + name: "a", + attributes: { + href: !0 + } + }, + model: { + key: "linkHref", + value: e => e.getAttribute("href") + } + }), + e.commands.add("link", new ym(e)), + e.commands.add("unlink", new xm(e)); + const t = function (e, t) { + const i = { + "Open in a new tab": e("Open in a new tab"), + Downloadable: e("Downloadable") + }; + return t.forEach(e => (e.label && i[e.label] && (e.label = i[e.label]), e)), + t + } + (e.t, function (e) { + const t = []; + if (e) + for (const[i, n]of Object.entries(e)) { + const e = Object.assign({}, n, { + id: "link" + fm(i) + }); + t.push(e) + } + return t + } + (e.config.get("link.decorators"))); + this._enableAutomaticDecorators(t.filter(e => "automatic" === e.mode)), + this._enableManualDecorators(t.filter(e => "manual" === e.mode)); + e.plugins.get(Vh).registerAttribute("linkHref"), + function (e, t, i, n) { + const o = e.editing.view, + r = new Set; + o.document.registerPostFixer(o => { + const s = e.model.document.selection; + let a = !1; + if (s.hasAttribute(t)) { + const c = Xh(s.getFirstPosition(), t, s.getAttribute(t), e.model), + l = e.editing.mapper.toViewRange(c); + for (const e of l.getItems()) + e.is("element", i) && !e.hasClass(n) && (o.addClass(n, e), r.add(e), a = !0) + } + return a + }), + e.conversion.for("editingDowncast").add(e => { + function t() { + o.change(e => { + for (const t of r.values()) + e.removeClass(n, t), r.delete(t) + }) + } + e.on("insert", t, { + priority: "highest" + }), + e.on("remove", t, { + priority: "highest" + }), + e.on("attribute", t, { + priority: "highest" + }), + e.on("selection", t, { + priority: "highest" + }) + }) + } + (e, "linkHref", "a", "ck-link_selected"), + this._enableInsertContentSelectionAttributesFixer(), + this._enableClickingAfterLink(), + this._enableTypingOverLink(), + this._handleDeleteContentAfterLink() + } + _enableAutomaticDecorators(e) { + const t = this.editor, + i = t.commands.get("link").automaticDecorators; + t.config.get("link.addTargetToExternalLinks") && i.add({ + id: "linkIsExternal", + mode: "automatic", + callback: e => Cm.test(e), + attributes: { + target: "_blank", + rel: "noopener noreferrer" + } + }), + i.add(e), + i.length && t.conversion.for("downcast").add(i.getDispatcher()) + } + _enableManualDecorators(e) { + if (!e.length) + return; + const t = this.editor, + i = t.commands.get("link").manualDecorators; + e.forEach(e => { + t.model.schema.extend("$text", { + allowAttributes: e.id + }), + i.add(new Am(e)), + t.conversion.for("downcast").attributeToElement({ + model: e.id, + view: (t, { + writer: n + }) => { + if (t) { + const t = i.get(e.id).attributes, + o = n.createAttributeElement("a", t, { + priority: 5 + }); + return n.setCustomProperty("link", !0, o), + o + } + } + }), + t.conversion.for("upcast").elementToAttribute({ + view: { + name: "a", + attributes: i.get(e.id).attributes + }, + model: { + key: e.id + } + }) + }) + } + _enableInsertContentSelectionAttributesFixer() { + const e = this.editor, + t = e.model, + i = t.document.selection, + n = e.commands.get("link"); + this.listenTo(t, "insertContent", () => { + const e = i.anchor.nodeBefore, + o = i.anchor.nodeAfter; + i.hasAttribute("linkHref") && e && e.hasAttribute("linkHref") && (o && o.hasAttribute("linkHref") || t.change(e => { + Em(e, n.manualDecorators) + })) + }, { + priority: "low" + }) + } + _enableClickingAfterLink() { + const e = this.editor, + t = e.commands.get("link"); + e.editing.view.addObserver(ku); + let i = !1; + this.listenTo(e.editing.view.document, "mousedown", () => { + i = !0 + }), + this.listenTo(e.editing.view.document, "selectionChange", () => { + if (!i) + return; + i = !1; + const n = e.model.document.selection; + if (!n.isCollapsed) + return; + if (!n.hasAttribute("linkHref")) + return; + const o = n.getFirstPosition(), + r = Xh(o, "linkHref", n.getAttribute("linkHref"), e.model); + (o.isTouching(r.start) || o.isTouching(r.end)) && e.model.change(e => { + Em(e, t.manualDecorators) + }) + }) + } + _enableTypingOverLink() { + const e = this.editor, + t = e.editing.view; + let i, + n; + this.listenTo(t.document, "delete", () => { + n = !0 + }, { + priority: "high" + }), + this.listenTo(e.model, "deleteContent", () => { + const t = e.model.document.selection; + t.isCollapsed || (n ? n = !1 : Pm(e) && function (e) { + const t = e.document.selection, + i = t.getFirstPosition(), + n = t.getLastPosition(), + o = i.nodeAfter; + if (!o) + return !1; + if (!o.is("$text")) + return !1; + if (!o.hasAttribute("linkHref")) + return !1; + const r = n.textNode || n.nodeBefore; + if (o === r) + return !0; + return Xh(i, "linkHref", o.getAttribute("linkHref"), e).containsRange(e.createRange(i, n), !0) + } + (e.model) && (i = t.getAttributes())) + }, { + priority: "high" + }), + this.listenTo(e.model, "insertContent", (t, [o]) => { + n = !1, + Pm(e) && i && (e.model.change(e => { + for (const[t, n]of i) + e.setAttribute(t, n, o) + }), i = null) + }, { + priority: "high" + }) + } + _handleDeleteContentAfterLink() { + const e = this.editor, + t = e.model, + i = t.document.selection, + n = e.editing.view, + o = e.commands.get("link"); + let r = !1, + s = !1; + this.listenTo(n.document, "delete", (e, t) => { + s = t.domEvent.keyCode === Io.backspace + }, { + priority: "high" + }), + this.listenTo(t, "deleteContent", () => { + r = !1; + const e = i.getFirstPosition(), + n = i.getAttribute("linkHref"); + if (!n) + return; + const o = Xh(e, "linkHref", n, t); + r = o.containsPosition(e) || o.end.isEqual(e) + }, { + priority: "high" + }), + this.listenTo(t, "deleteContent", () => { + s && (s = !1, r || e.model.enqueueChange(e => { + Em(e, o.manualDecorators) + })) + }, { + priority: "low" + }) + } + } + function Em(e, t) { + e.removeSelectionAttribute("linkHref"); + for (const i of t) + e.removeSelectionAttribute(i.id) + } + function Pm(e) { + return e.plugins.get("Input").isInput(e.model.change(e => e.batch)) + } + i(90); + class Sm extends jl { + constructor(e, t) { + super(e); + const i = e.t; + this.focusTracker = new Rs, + this.keystrokes = new Os, + this.urlInputView = this._createUrlInput(), + this.saveButtonView = this._createButton(i("Save"), Cl, "ck-button-save"), + this.saveButtonView.type = "submit", + this.cancelButtonView = this._createButton(i("Cancel"), Al, "ck-button-cancel", "cancel"), + this._manualDecoratorSwitches = this._createManualDecoratorSwitches(t), + this.children = this._createFormChildren(t.manualDecorators), + this._focusables = new Vl, + this._focusCycler = new dd({ + focusables: this._focusables, + focusTracker: this.focusTracker, + keystrokeHandler: this.keystrokes, + actions: { + focusPrevious: "shift + tab", + focusNext: "tab" + } + }); + const n = ["ck", "ck-link-form", "ck-responsive-form"]; + t.manualDecorators.length && n.push("ck-link-form_layout-vertical", "ck-vertical-form"), + this.setTemplate({ + tag: "form", + attributes: { + class: n, + tabindex: "-1" + }, + children: this.children + }), + Ll(this) + } + getDecoratorSwitchesState() { + return Array.from(this._manualDecoratorSwitches).reduce((e, t) => (e[t.name] = t.isOn, e), {}) + } + render() { + super.render(), + zl({ + view: this + }); + [this.urlInputView, ...this._manualDecoratorSwitches, this.saveButtonView, this.cancelButtonView].forEach(e => { + this._focusables.add(e), + this.focusTracker.add(e.element) + }), + this.keystrokes.listenTo(this.element) + } + focus() { + this._focusCycler.focusFirst() + } + _createUrlInput() { + const e = this.locale.t, + t = new jd(this.locale, Bd); + return t.label = e("Link URL"), + t + } + _createButton(e, t, i, n) { + const o = new cd(this.locale); + return o.set({ + label: e, + icon: t, + tooltip: !0 + }), + o.extendTemplate({ + attributes: { + class: i + } + }), + n && o.delegate("execute").to(this, n), + o + } + _createManualDecoratorSwitches(e) { + const t = this.createCollection(); + for (const i of e.manualDecorators) { + const n = new ld(this.locale); + n.set({ + name: i.id, + label: i.label, + withText: !0 + }), + n.bind("isOn").toMany([i, e], "value", (e, t) => void 0 === t && void 0 === e ? i.defaultValue : e), + n.on("execute", () => { + i.set("value", !n.isOn) + }), + t.add(n) + } + return t + } + _createFormChildren(e) { + const t = this.createCollection(); + if (t.add(this.urlInputView), e.length) { + const e = new jl; + e.setTemplate({ + tag: "ul", + children: this._manualDecoratorSwitches.map(e => ({ + tag: "li", + children: [e], + attributes: { + class: ["ck", "ck-list__item"] + } + })), + attributes: { + class: ["ck", "ck-reset", "ck-list"] + } + }), + t.add(e) + } + return t.add(this.saveButtonView), + t.add(this.cancelButtonView), + t + } + } + i(92); + class Mm extends jl { + constructor(e) { + super(e); + const t = e.t; + this.focusTracker = new Rs, + this.keystrokes = new Os, + this.previewButtonView = this._createPreviewButton(), + this.unlinkButtonView = this._createButton(t("Unlink"), '', "unlink"), + this.editButtonView = this._createButton(t("Edit link"), Nl, "edit"), + this.set("href"), + this._focusables = new Vl, + this._focusCycler = new dd({ + focusables: this._focusables, + focusTracker: this.focusTracker, + keystrokeHandler: this.keystrokes, + actions: { + focusPrevious: "shift + tab", + focusNext: "tab" + } + }), + this.setTemplate({ + tag: "div", + attributes: { + class: ["ck", "ck-link-actions", "ck-responsive-form"], + tabindex: "-1" + }, + children: [this.previewButtonView, this.editButtonView, this.unlinkButtonView] + }) + } + render() { + super.render(); + [this.previewButtonView, this.editButtonView, this.unlinkButtonView].forEach(e => { + this._focusables.add(e), + this.focusTracker.add(e.element) + }), + this.keystrokes.listenTo(this.element) + } + focus() { + this._focusCycler.focusFirst() + } + _createButton(e, t, i) { + const n = new cd(this.locale); + return n.set({ + label: e, + icon: t, + tooltip: !0 + }), + n.delegate("execute").to(this, i), + n + } + _createPreviewButton() { + const e = new cd(this.locale), + t = this.bindTemplate, + i = this.t; + return e.set({ + withText: !0, + tooltip: i("Open link in new tab") + }), + e.extendTemplate({ + attributes: { + class: ["ck", "ck-link-actions__preview"], + href: t.to("href", e => e && km(e)), + target: "_blank", + rel: "noopener noreferrer" + } + }), + e.bind("label").to(this, "href", e => e || i("This link has no URL")), + e.bind("isEnabled").to(this, "href", e => !!e), + e.template.tag = "a", + e.template.eventListeners = {}, + e + } + } + class Im extends Qe { + static get requires() { + return [Qd] + } + static get pluginName() { + return "LinkUI" + } + init() { + const e = this.editor; + e.editing.view.addObserver(wu), + this.actionsView = this._createActionsView(), + this.formView = this._createFormView(), + this._balloon = e.plugins.get(Qd), + this._createToolbarLinkButton(), + this._enableUserBalloonInteractions(), + e.conversion.for("editingDowncast").markerToHighlight({ + model: "link-ui", + view: { + classes: ["ck-fake-link-selection"] + } + }), + e.conversion.for("editingDowncast").markerToElement({ + model: "link-ui", + view: { + name: "span", + classes: ["ck-fake-link-selection", "ck-fake-link-selection_collapsed"] + } + }) + } + destroy() { + super.destroy(), + this.formView.destroy() + } + _createActionsView() { + const e = this.editor, + t = new Mm(e.locale), + i = e.commands.get("link"), + n = e.commands.get("unlink"); + return t.bind("href").to(i, "value"), + t.editButtonView.bind("isEnabled").to(i), + t.unlinkButtonView.bind("isEnabled").to(n), + this.listenTo(t, "edit", () => { + this._addFormView() + }), + this.listenTo(t, "unlink", () => { + e.execute("unlink"), + this._hideUI() + }), + t.keystrokes.set("Esc", (e, t) => { + this._hideUI(), + t() + }), + t.keystrokes.set("Ctrl+K", (e, t) => { + this._addFormView(), + t() + }), + t + } + _createFormView() { + const e = this.editor, + t = e.commands.get("link"), + i = e.config.get("link.defaultProtocol"), + n = new Sm(e.locale, t); + return n.urlInputView.fieldView.bind("value").to(t, "value"), + n.urlInputView.bind("isReadOnly").to(t, "isEnabled", e => !e), + n.saveButtonView.bind("isEnabled").to(t), + this.listenTo(n, "submit", () => { + const { + value: t + } = n.urlInputView.fieldView.element, + o = vm(t, i); + e.execute("link", o, n.getDecoratorSwitchesState()), + this._closeFormView() + }), + this.listenTo(n, "cancel", () => { + this._closeFormView() + }), + n.keystrokes.set("Esc", (e, t) => { + this._closeFormView(), + t() + }), + n + } + _createToolbarLinkButton() { + const e = this.editor, + t = e.commands.get("link"), + i = e.t; + e.keystrokes.set("Ctrl+K", (e, i) => { + i(), + t.isEnabled && this._showUI(!0) + }), + e.ui.componentFactory.add("link", e => { + const n = new cd(e); + return n.isEnabled = !0, + n.label = i("Link"), + n.icon = '', + n.keystroke = "Ctrl+K", + n.tooltip = !0, + n.isToggleable = !0, + n.bind("isEnabled").to(t, "isEnabled"), + n.bind("isOn").to(t, "value", e => !!e), + this.listenTo(n, "execute", () => this._showUI(!0)), + n + }) + } + _enableUserBalloonInteractions() { + const e = this.editor.editing.view.document; + this.listenTo(e, "click", () => { + this._getSelectedLinkElement() && this._showUI() + }), + this.editor.keystrokes.set("Tab", (e, t) => { + this._areActionsVisible && !this.actionsView.focusTracker.isFocused && (this.actionsView.focus(), t()) + }, { + priority: "high" + }), + this.editor.keystrokes.set("Esc", (e, t) => { + this._isUIVisible && (this._hideUI(), t()) + }), + Dl({ + emitter: this.formView, + activator: () => this._isUIInPanel, + contextElements: [this._balloon.view.element], + callback: () => this._hideUI() + }) + } + _addActionsView() { + this._areActionsInPanel || this._balloon.add({ + view: this.actionsView, + position: this._getBalloonPositionData() + }) + } + _addFormView() { + if (this._isFormInPanel) + return; + const e = this.editor.commands.get("link"); + this.formView.disableCssTransitions(), + this._balloon.add({ + view: this.formView, + position: this._getBalloonPositionData() + }), + this._balloon.visibleView === this.formView && this.formView.urlInputView.fieldView.select(), + this.formView.enableCssTransitions(), + this.formView.urlInputView.fieldView.element.value = e.value || "" + } + _closeFormView() { + const e = this.editor.commands.get("link"); + e.restoreManualDecoratorStates(), + void 0 !== e.value ? this._removeFormView() : this._hideUI() + } + _removeFormView() { + this._isFormInPanel && (this.formView.saveButtonView.focus(), this._balloon.remove(this.formView), this.editor.editing.view.focus(), this._hideFakeVisualSelection()) + } + _showUI(e = !1) { + this._getSelectedLinkElement() ? (this._areActionsVisible ? this._addFormView() : this._addActionsView(), e && this._balloon.showStack("main")) : (this._showFakeVisualSelection(), this._addActionsView(), e && this._balloon.showStack("main"), this._addFormView()), + this._startUpdatingUI() + } + _hideUI() { + if (!this._isUIInPanel) + return; + const e = this.editor; + this.stopListening(e.ui, "update"), + this.stopListening(this._balloon, "change:visibleView"), + e.editing.view.focus(), + this._removeFormView(), + this._balloon.remove(this.actionsView), + this._hideFakeVisualSelection() + } + _startUpdatingUI() { + const e = this.editor, + t = e.editing.view.document; + let i = this._getSelectedLinkElement(), + n = r(); + const o = () => { + const e = this._getSelectedLinkElement(), + t = r(); + i && !e || !i && t !== n ? this._hideUI() : this._isUIVisible && this._balloon.updatePosition(this._getBalloonPositionData()), + i = e, + n = t + }; + function r() { + return t.selection.focus.getAncestors().reverse().find(e => e.is("element")) + } + this.listenTo(e.ui, "update", o), + this.listenTo(this._balloon, "change:visibleView", o) + } + get _isFormInPanel() { + return this._balloon.hasView(this.formView) + } + get _areActionsInPanel() { + return this._balloon.hasView(this.actionsView) + } + get _areActionsVisible() { + return this._balloon.visibleView === this.actionsView + } + get _isUIInPanel() { + return this._isFormInPanel || this._areActionsInPanel + } + get _isUIVisible() { + return this._balloon.visibleView == this.formView || this._areActionsVisible + } + _getBalloonPositionData() { + const e = this.editor.editing.view, + t = this.editor.model, + i = e.document; + let n = null; + if (t.markers.has("link-ui")) { + const t = Array.from(this.editor.editing.mapper.markerNameToElements("link-ui")), + i = e.createRange(e.createPositionBefore(t[0]), e.createPositionAfter(t[t.length - 1])); + n = e.domConverter.viewRangeToDom(i) + } else { + const t = this._getSelectedLinkElement(), + o = i.selection.getFirstRange(); + n = t ? e.domConverter.mapViewToDom(t) : e.domConverter.viewRangeToDom(o) + } + return { + target: n + } + } + _getSelectedLinkElement() { + const e = this.editor.editing.view, + t = e.document.selection; + if (t.isCollapsed) + return Nm(t.getFirstPosition()); { + const i = t.getFirstRange().getTrimmed(), + n = Nm(i.start), + o = Nm(i.end); + return n && n == o && e.createRangeIn(n).getTrimmed().isEqual(i) ? n : null + } + } + _showFakeVisualSelection() { + const e = this.editor.model; + e.change(t => { + const i = e.document.selection.getFirstRange(); + if (e.markers.has("link-ui")) + t.updateMarker("link-ui", { + range: i + }); + else if (i.start.isAtEnd) { + const n = i.start.getLastMatchingPosition(({ + item: t + }) => !e.schema.isContent(t), { + boundaries: i + }); + t.addMarker("link-ui", { + usingOperation: !1, + affectsData: !1, + range: t.createRange(n, i.end) + }) + } else + t.addMarker("link-ui", { + usingOperation: !1, + affectsData: !1, + range: i + }) + }) + } + _hideFakeVisualSelection() { + const e = this.editor.model; + e.markers.has("link-ui") && e.change(e => { + e.removeMarker("link-ui") + }) + } + } + function Nm(e) { + return e.getAncestors().find(e => { + return (t = e).is("attributeElement") && !!t.getCustomProperty("link"); + var t + }) + } + const Rm = new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$", "i"); + class Om extends Qe { + static get pluginName() { + return "AutoLink" + } + init() { + const e = this.editor.model.document.selection; + e.on("change:range", () => { + this.isEnabled = !e.anchor.parent.is("element", "codeBlock") + }), + this._enableTypingHandling() + } + afterInit() { + this._enableEnterHandling(), + this._enableShiftEnterHandling() + } + _enableTypingHandling() { + const e = this.editor, + t = new zh(e.model, e => { + if (!function (e) { + return e.length > 4 && " " === e[e.length - 1] && " " !== e[e.length - 2] + } + (e)) + return; + const t = Dm(e.substr(0, e.length - 1)); + return t ? { + url: t + } + : void 0 + }), + i = e.plugins.get("Input"); + t.on("matched:data", (t, n) => { + const { + batch: o, + range: r, + url: s + } = n; + if (!i.isInput(o)) + return; + const a = r.end.getShiftedBy(-1), + c = a.getShiftedBy(-s.length), + l = e.model.createRange(c, a); + this._applyAutoLink(s, l) + }), + t.bind("isEnabled").to(this) + } + _enableEnterHandling() { + const e = this.editor, + t = e.model, + i = e.commands.get("enter"); + i && i.on("execute", () => { + const e = t.document.selection.getFirstPosition(); + if (!e.parent.previousSibling) + return; + const i = t.createRangeIn(e.parent.previousSibling); + this._checkAndApplyAutoLinkOnRange(i) + }) + } + _enableShiftEnterHandling() { + const e = this.editor, + t = e.model, + i = e.commands.get("shiftEnter"); + i && i.on("execute", () => { + const e = t.document.selection.getFirstPosition(), + i = t.createRange(t.createPositionAt(e.parent, 0), e.getShiftedBy(-1)); + this._checkAndApplyAutoLinkOnRange(i) + }) + } + _checkAndApplyAutoLinkOnRange(e) { + const t = this.editor.model, { + text: i, + range: n + } = Lh(e, t), + o = Dm(i); + if (o) { + const e = t.createRange(n.end.getShiftedBy(-o.length), n.end); + this._applyAutoLink(o, e) + } + } + _applyAutoLink(e, t) { + const i = this.editor.model; + this.isEnabled && function (e, t) { + return t.schema.checkAttributeInSelection(t.createSelection(e), "linkHref") + } + (t, i) && i.enqueueChange(i => { + const n = this.editor.config.get("link.defaultProtocol"), + o = vm(e, n); + i.setAttribute("linkHref", o, t) + }) + } + } + function Dm(e) { + const t = Rm.exec(e); + return t ? t[2] : null + } + class Lm extends Ze { + constructor(e, t) { + super(e), + this.type = t + } + refresh() { + this.value = this._getValue(), + this.isEnabled = this._checkEnabled() + } + execute(e = {}) { + const t = this.editor.model, + i = t.document, + n = Array.from(i.selection.getSelectedBlocks()).filter(e => Vm(e, t.schema)), + o = void 0 !== e.forceValue ? !e.forceValue : this.value; + t.change(e => { + if (o) { + let t = n[n.length - 1].nextSibling, + i = Number.POSITIVE_INFINITY, + o = []; + for (; t && "listItem" == t.name && 0 !== t.getAttribute("listIndent"); ) { + const e = t.getAttribute("listIndent"); + e < i && (i = e); + const n = e - i; + o.push({ + element: t, + listIndent: n + }), + t = t.nextSibling + } + o = o.reverse(); + for (const t of o) + e.setAttribute("listIndent", t.listIndent, t.element) + } + if (!o) { + let e = Number.POSITIVE_INFINITY; + for (const t of n) + t.is("element", "listItem") && t.getAttribute("listIndent") < e && (e = t.getAttribute("listIndent")); + e = 0 === e ? 1 : e, + zm(n, !0, e), + zm(n, !1, e) + } + for (const t of n.reverse()) + o && "listItem" == t.name ? e.rename(t, "paragraph") : o || "listItem" == t.name ? o || "listItem" != t.name || t.getAttribute("listType") == this.type || e.setAttribute("listType", this.type, t) : (e.setAttributes({ + listType: this.type, + listIndent: 0 + }, t), e.rename(t, "listItem")); + this.fire("_executeCleanup", n) + }) + } + _getValue() { + const e = Ns(this.editor.model.document.selection.getSelectedBlocks()); + return !!e && e.is("element", "listItem") && e.getAttribute("listType") == this.type + } + _checkEnabled() { + if (this.value) + return !0; + const e = this.editor.model.document.selection, + t = this.editor.model.schema, + i = Ns(e.getSelectedBlocks()); + return !!i && Vm(i, t) + } + } + function zm(e, t, i) { + const n = t ? e[0] : e[e.length - 1]; + if (n.is("element", "listItem")) { + let o = n[t ? "previousSibling" : "nextSibling"], + r = n.getAttribute("listIndent"); + for (; o && o.is("element", "listItem") && o.getAttribute("listIndent") >= i; ) + r > o.getAttribute("listIndent") && (r = o.getAttribute("listIndent")), o.getAttribute("listIndent") == r && e[t ? "unshift" : "push"](o), o = o[t ? "previousSibling" : "nextSibling"] + } + } + function Vm(e, t) { + return t.checkChild(e.parent, "listItem") && !t.isObject(e) + } + class jm extends Ze { + constructor(e, t) { + super(e), + this._indentBy = "forward" == t ? 1 : -1 + } + refresh() { + this.isEnabled = this._checkEnabled() + } + execute() { + const e = this.editor.model, + t = e.document; + let i = Array.from(t.selection.getSelectedBlocks()); + e.change(e => { + const t = i[i.length - 1]; + let n = t.nextSibling; + for (; n && "listItem" == n.name && n.getAttribute("listIndent") > t.getAttribute("listIndent"); ) + i.push(n), n = n.nextSibling; + this._indentBy < 0 && (i = i.reverse()); + for (const t of i) { + const i = t.getAttribute("listIndent") + this._indentBy; + i < 0 ? e.rename(t, "paragraph") : e.setAttribute("listIndent", i, t) + } + this.fire("_executeCleanup", i) + }) + } + _checkEnabled() { + const e = Ns(this.editor.model.document.selection.getSelectedBlocks()); + if (!e || !e.is("element", "listItem")) + return !1; + if (this._indentBy > 0) { + const t = e.getAttribute("listIndent"), + i = e.getAttribute("listType"); + let n = e.previousSibling; + for (; n && n.is("element", "listItem") && n.getAttribute("listIndent") >= t; ) { + if (n.getAttribute("listIndent") == t) + return n.getAttribute("listType") == i; + n = n.previousSibling + } + return !1 + } + return !0 + } + } + function Bm(e, t) { + const i = t.mapper, + n = t.writer, + o = "numbered" == e.getAttribute("listType") ? "ol" : "ul", + r = function (e) { + const t = e.createContainerElement("li"); + return t.getFillerOffset = $m, + t + } + (n), + s = n.createContainerElement(o, null); + return n.insert(n.createPositionAt(s, 0), r), + i.bindElements(e, r), + r + } + function Fm(e, t, i, n) { + const o = t.parent, + r = i.mapper, + s = i.writer; + let a = r.toViewPosition(n.createPositionBefore(e)); + const c = Wm(e.previousSibling, { + sameIndent: !0, + smallerIndent: !0, + listIndent: e.getAttribute("listIndent") + }), + l = e.previousSibling; + if (c && c.getAttribute("listIndent") == e.getAttribute("listIndent")) { + const e = r.toViewElement(c); + a = s.breakContainer(s.createPositionAfter(e)) + } else if (l && "listItem" == l.name) { + a = r.toViewPosition(n.createPositionAt(l, "end")); + const e = r.findMappedViewAncestor(a), + t = function (e) { + for (const t of e.getChildren()) + if ("ul" == t.name || "ol" == t.name) + return t; + return null + } + (e); + a = t ? s.createPositionBefore(t) : s.createPositionAt(e, "end") + } else + a = r.toViewPosition(n.createPositionBefore(e)); + if (a = Um(a), s.insert(a, o), l && "listItem" == l.name) { + const e = r.toViewElement(l), + i = s.createRange(s.createPositionAt(e, 0), a).getWalker({ + ignoreElementEnd: !0 + }); + for (const e of i) + if (e.item.is("element", "li")) { + const n = s.breakContainer(s.createPositionBefore(e.item)), + o = e.item.parent, + r = s.createPositionAt(t, "end"); + Hm(s, r.nodeBefore, r.nodeAfter), + s.move(s.createRangeOn(o), r), + i.position = n + } + } else { + const i = o.nextSibling; + if (i && (i.is("element", "ul") || i.is("element", "ol"))) { + let n = null; + for (const t of i.getChildren()) { + const i = r.toModelElement(t); + if (!(i && i.getAttribute("listIndent") > e.getAttribute("listIndent"))) + break; + n = t + } + n && (s.breakContainer(s.createPositionAfter(n)), s.move(s.createRangeOn(n.parent), s.createPositionAt(t, "end"))) + } + } + Hm(s, o, o.nextSibling), + Hm(s, o.previousSibling, o) + } + function Hm(e, t, i) { + return !t || !i || "ul" != t.name && "ol" != t.name || t.name != i.name || t.getAttribute("class") !== i.getAttribute("class") ? null : e.mergeContainers(e.createPositionAfter(t)) + } + function Um(e) { + return e.getLastMatchingPosition(e => e.item.is("uiElement")) + } + function Wm(e, t) { + const i = !!t.sameIndent, + n = !!t.smallerIndent, + o = t.listIndent; + let r = e; + for (; r && "listItem" == r.name; ) { + const e = r.getAttribute("listIndent"); + if (i && o == e || n && o > e) + return r; + r = "forward" === t.direction ? r.nextSibling : r.previousSibling + } + return null + } + function qm(e, t, i, n) { + e.ui.componentFactory.add(t, o => { + const r = e.commands.get(t), + s = new cd(o); + return s.set({ + label: i, + icon: n, + tooltip: !0, + isToggleable: !0 + }), + s.bind("isOn", "isEnabled").to(r, "value", "isEnabled"), + s.on("execute", () => { + e.execute(t), + e.editing.view.focus() + }), + s + }) + } + function $m() { + const e = !this.isEmpty && ("ul" == this.getChild(0).name || "ol" == this.getChild(0).name); + return this.isEmpty || e ? 0 : io.call(this) + } + function Ym(e) { + return (t, i, n) => { + const o = n.consumable; + if (!o.test(i.item, "insert") || !o.test(i.item, "attribute:listType") || !o.test(i.item, "attribute:listIndent")) + return; + o.consume(i.item, "insert"), + o.consume(i.item, "attribute:listType"), + o.consume(i.item, "attribute:listIndent"); + const r = i.item; + Fm(r, Bm(r, n), n, e) + } + } + function Gm(e, t, i) { + if (!i.consumable.consume(t.item, "attribute:listType")) + return; + const n = i.mapper.toViewElement(t.item), + o = i.writer; + o.breakContainer(o.createPositionBefore(n)), + o.breakContainer(o.createPositionAfter(n)); + const r = n.parent, + s = "numbered" == t.attributeNewValue ? "ol" : "ul"; + o.rename(s, r) + } + function Km(e, t, i) { + const n = i.mapper.toViewElement(t.item).parent, + o = i.writer; + Hm(o, n, n.nextSibling), + Hm(o, n.previousSibling, n); + for (const e of t.item.getChildren()) + i.consumable.consume(e, "insert") + } + function Qm(e, t, i) { + if ("listItem" != t.item.name) { + let e = i.mapper.toViewPosition(t.range.start); + const n = i.writer, + o = []; + for (; ("ul" == e.parent.name || "ol" == e.parent.name) && (e = n.breakContainer(e), "li" == e.parent.name); ) { + const t = e, + i = n.createPositionAt(e.parent, "end"); + if (!t.isEqual(i)) { + const e = n.remove(n.createRange(t, i)); + o.push(e) + } + e = n.createPositionAfter(e.parent) + } + if (o.length > 0) { + for (let t = 0; t < o.length; t++) { + const i = e.nodeBefore; + if (e = n.insert(e, o[t]).end, t > 0) { + const t = Hm(n, i, i.nextSibling); + t && t.parent == i && e.offset-- + } + } + Hm(n, e.nodeBefore, e.nodeAfter) + } + } + } + function Jm(e, t, i) { + const n = i.mapper.toViewPosition(t.position), + o = n.nodeBefore, + r = n.nodeAfter; + Hm(i.writer, o, r) + } + function Zm(e, t, i) { + if (i.consumable.consume(t.viewItem, { + name: !0 + })) { + const e = i.writer, + n = e.createElement("listItem"), + o = function (e) { + let t = 0, + i = e.parent; + for (; i; ) { + if (i.is("element", "li")) + t++; + else { + const e = i.previousSibling; + e && e.is("element", "li") && t++ + } + i = i.parent + } + return t + } + (t.viewItem); + e.setAttribute("listIndent", o, n); + const r = t.viewItem.parent && "ol" == t.viewItem.parent.name ? "numbered" : "bulleted"; + if (e.setAttribute("listType", r, n), !i.safeInsert(n, t.modelCursor)) + return; + const s = function (e, t, i) { + const { + writer: n, + schema: o + } = i; + let r = n.createPositionAfter(e); + for (const s of t) + if ("ul" == s.name || "ol" == s.name) + r = i.convertItem(s, r).modelCursor; + else { + const t = i.convertItem(s, n.createPositionAt(e, "end")), + a = t.modelRange.start.nodeAfter; + a && a.is("element") && !o.checkChild(e, a.name) && (e = t.modelCursor.parent.is("element", "listItem") ? t.modelCursor.parent : np(t.modelCursor), r = n.createPositionAfter(e)) + } + return r + } + (n, t.viewItem.getChildren(), i); + t.modelRange = e.createRange(t.modelCursor, s), + i.updateConversionResult(n, t) + } + } + function Xm(e, t, i) { + if (i.consumable.test(t.viewItem, { + name: !0 + })) { + const e = Array.from(t.viewItem.getChildren()); + for (const t of e) { + !(t.is("element", "li") || rp(t)) && t._remove() + } + } + } + function ep(e, t, i) { + if (i.consumable.test(t.viewItem, { + name: !0 + })) { + if (0 === t.viewItem.childCount) + return; + const e = [...t.viewItem.getChildren()]; + let i = !1, + n = !0; + for (const t of e) + i && !rp(t) && t._remove(), t.is("$text") ? (n && (t._data = t.data.trimStart()), t.nextSibling && !rp(t.nextSibling) || (t._data = t.data.trimEnd())) : rp(t) && (i = !0), n = !1 + } + } + function tp(e) { + return (t, i) => { + if (i.isPhantom) + return; + const n = i.modelPosition.nodeBefore; + if (n && n.is("element", "listItem")) { + const t = i.mapper.toViewElement(n), + o = t.getAncestors().find(rp), + r = e.createPositionAt(t, 0).getWalker(); + for (const e of r) { + if ("elementStart" == e.type && e.item.is("element", "li")) { + i.viewPosition = e.previousPosition; + break + } + if ("elementEnd" == e.type && e.item == o) { + i.viewPosition = e.nextPosition; + break + } + } + } + } + } + function ip(e, [t, i]) { + let n, + o = t.is("documentFragment") ? t.getChild(0) : t; + if (n = i ? this.createSelection(i) : this.document.selection, o && o.is("element", "listItem")) { + const e = n.getFirstPosition(); + let t = null; + if (e.parent.is("element", "listItem") ? t = e.parent : e.nodeBefore && e.nodeBefore.is("element", "listItem") && (t = e.nodeBefore), t) { + const e = t.getAttribute("listIndent"); + if (e > 0) + for (; o && o.is("element", "listItem"); ) + o._setAttribute("listIndent", o.getAttribute("listIndent") + e), o = o.nextSibling + } + } + } + function np(e) { + const t = new Zs({ + startPosition: e + }); + let i; + do { + i = t.next() + } while (!i.value.item.is("element", "listItem")); + return i.value.item + } + function op(e, t, i, n, o, r) { + const s = Wm(t.nodeBefore, { + sameIndent: !0, + smallerIndent: !0, + listIndent: e, + foo: "b" + }), + a = o.mapper, + c = o.writer, + l = s ? s.getAttribute("listIndent") : null; + let d; + if (s) + if (l == e) { + const e = a.toViewElement(s).parent; + d = c.createPositionAfter(e) + } else { + const e = r.createPositionAt(s, "end"); + d = a.toViewPosition(e) + } + else + d = i; + d = Um(d); + for (const e of[...n.getChildren()]) + rp(e) && (d = c.move(c.createRangeOn(e), d).end, Hm(c, e, e.nextSibling), Hm(c, e.previousSibling, e)) + } + function rp(e) { + return e.is("element", "ol") || e.is("element", "ul") + } + class sp extends Qe { + static get pluginName() { + return "ListEditing" + } + static get requires() { + return [Nu, Lu] + } + init() { + const e = this.editor; + e.model.schema.register("listItem", { + inheritAllFrom: "$block", + allowAttributes: ["listType", "listIndent"] + }); + const t = e.data, + i = e.editing; + var n; + e.model.document.registerPostFixer(t => function (e, t) { + const i = e.document.differ.getChanges(), + n = new Map; + let o = !1; + for (const n of i) + if ("insert" == n.type && "listItem" == n.name) + r(n.position); + else if ("insert" == n.type && "listItem" != n.name) { + if ("$text" != n.name) { + const i = n.position.nodeAfter; + i.hasAttribute("listIndent") && (t.removeAttribute("listIndent", i), o = !0), + i.hasAttribute("listType") && (t.removeAttribute("listType", i), o = !0), + i.hasAttribute("listStyle") && (t.removeAttribute("listStyle", i), o = !0); + for (const t of Array.from(e.createRangeIn(i)).filter(e => e.item.is("element", "listItem"))) + r(t.previousPosition) + } + r(n.position.getShiftedBy(n.length)) + } else + "remove" == n.type && "listItem" == n.name ? r(n.position) : ("attribute" == n.type && "listIndent" == n.attributeKey || "attribute" == n.type && "listType" == n.attributeKey) && r(n.range.start); + for (const e of n.values()) + s(e), a(e); + return o; + function r(e) { + const t = e.nodeBefore; + if (t && t.is("element", "listItem")) { + let e = t; + if (n.has(e)) + return; + for (let t = e.previousSibling; t && t.is("element", "listItem"); t = e.previousSibling) + if (e = t, n.has(e)) + return; + n.set(t, e) + } else { + const t = e.nodeAfter; + t && t.is("element", "listItem") && n.set(t, t) + } + } + function s(e) { + let i = 0, + n = null; + for (; e && e.is("element", "listItem"); ) { + const r = e.getAttribute("listIndent"); + if (r > i) { + let s; + null === n ? (n = r - i, s = i) : (n > r && (n = r), s = r - n), + t.setAttribute("listIndent", s, e), + o = !0 + } else + n = null, i = e.getAttribute("listIndent") + 1; + e = e.nextSibling + } + } + function a(e) { + let i = [], + n = null; + for (; e && e.is("element", "listItem"); ) { + const r = e.getAttribute("listIndent"); + if (n && n.getAttribute("listIndent") > r && (i = i.slice(0, r + 1)), 0 != r) + if (i[r]) { + const n = i[r]; + e.getAttribute("listType") != n && (t.setAttribute("listType", n, e), o = !0) + } else + i[r] = e.getAttribute("listType"); + n = e, + e = e.nextSibling + } + } + } + (e.model, t)), + i.mapper.registerViewToModelLength("li", ap), + t.mapper.registerViewToModelLength("li", ap), + i.mapper.on("modelToViewPosition", tp(i.view)), + i.mapper.on("viewToModelPosition", (n = e.model, (e, t) => { + const i = t.viewPosition, + o = i.parent, + r = t.mapper; + if ("ul" == o.name || "ol" == o.name) { + if (i.isAtEnd) { + const e = r.toModelElement(i.nodeBefore), + o = r.getModelLength(i.nodeBefore); + t.modelPosition = n.createPositionBefore(e).getShiftedBy(o) + } else { + const e = r.toModelElement(i.nodeAfter); + t.modelPosition = n.createPositionBefore(e) + } + e.stop() + } else if ("li" == o.name && i.nodeBefore && ("ul" == i.nodeBefore.name || "ol" == i.nodeBefore.name)) { + const s = r.toModelElement(o); + let a = 1, + c = i.nodeBefore; + for (; c && rp(c); ) + a += r.getModelLength(c), c = c.previousSibling; + t.modelPosition = n.createPositionBefore(s).getShiftedBy(a), + e.stop() + } + })), + t.mapper.on("modelToViewPosition", tp(i.view)), + e.conversion.for("editingDowncast").add(t => { + t.on("insert", Qm, { + priority: "high" + }), + t.on("insert:listItem", Ym(e.model)), + t.on("attribute:listType:listItem", Gm, { + priority: "high" + }), + t.on("attribute:listType:listItem", Km, { + priority: "low" + }), + t.on("attribute:listIndent:listItem", function (e) { + return (t, i, n) => { + if (!n.consumable.consume(i.item, "attribute:listIndent")) + return; + const o = n.mapper.toViewElement(i.item), + r = n.writer; + r.breakContainer(r.createPositionBefore(o)), + r.breakContainer(r.createPositionAfter(o)); + const s = o.parent, + a = s.previousSibling, + c = r.createRangeOn(s); + r.remove(c), + a && a.nextSibling && Hm(r, a, a.nextSibling), + op(i.attributeOldValue + 1, i.range.start, c.start, o, n, e), + Fm(i.item, o, n, e); + for (const e of i.item.getChildren()) + n.consumable.consume(e, "insert") + } + } + (e.model)), + t.on("remove:listItem", function (e) { + return (t, i, n) => { + const o = n.mapper.toViewPosition(i.position).getLastMatchingPosition(e => !e.item.is("element", "li")).nodeAfter, + r = n.writer; + r.breakContainer(r.createPositionBefore(o)), + r.breakContainer(r.createPositionAfter(o)); + const s = o.parent, + a = s.previousSibling, + c = r.createRangeOn(s), + l = r.remove(c); + a && a.nextSibling && Hm(r, a, a.nextSibling); + op(n.mapper.toModelElement(o).getAttribute("listIndent") + 1, i.position, c.start, o, n, e); + for (const e of r.createRangeIn(l).getItems()) + n.mapper.unbindViewElement(e); + t.stop() + } + } + (e.model)), + t.on("remove", Jm, { + priority: "low" + }) + }), + e.conversion.for("dataDowncast").add(t => { + t.on("insert", Qm, { + priority: "high" + }), + t.on("insert:listItem", Ym(e.model)) + }), + e.conversion.for("upcast").add(e => { + e.on("element:ul", Xm, { + priority: "high" + }), + e.on("element:ol", Xm, { + priority: "high" + }), + e.on("element:li", ep, { + priority: "high" + }), + e.on("element:li", Zm) + }), + e.model.on("insertContent", ip, { + priority: "high" + }), + e.commands.add("numberedList", new Lm(e, "numbered")), + e.commands.add("bulletedList", new Lm(e, "bulleted")), + e.commands.add("indentList", new jm(e, "forward")), + e.commands.add("outdentList", new jm(e, "backward")); + const o = i.view.document; + this.listenTo(o, "enter", (e, t) => { + const i = this.editor.model.document, + n = i.selection.getLastPosition().parent; + i.selection.isCollapsed && "listItem" == n.name && n.isEmpty && (this.editor.execute("outdentList"), t.preventDefault(), e.stop()) + }, { + context: "li" + }), + this.listenTo(o, "delete", (e, t) => { + if ("backward" !== t.direction) + return; + const i = this.editor.model.document.selection; + if (!i.isCollapsed) + return; + const n = i.getFirstPosition(); + if (!n.isAtStart) + return; + const o = n.parent; + if ("listItem" !== o.name) + return; + o.previousSibling && "listItem" === o.previousSibling.name || (this.editor.execute("outdentList"), t.preventDefault(), e.stop()) + }, { + context: "li" + }); + const r = e => (t, i) => { + this.editor.commands.get(e).isEnabled && (this.editor.execute(e), i()) + }; + e.keystrokes.set("Tab", r("indentList")), + e.keystrokes.set("Shift+Tab", r("outdentList")) + } + afterInit() { + const e = this.editor.commands, + t = e.get("indent"), + i = e.get("outdent"); + t && t.registerChildCommand(e.get("indentList")), + i && i.registerChildCommand(e.get("outdentList")) + } + } + function ap(e) { + let t = 1; + for (const i of e.getChildren()) + if ("ul" == i.name || "ol" == i.name) + for (const e of i.getChildren()) + t += ap(e); + return t + } + class cp extends Qe { + static get pluginName() { + return "ListUI" + } + init() { + const e = this.editor.t; + qm(this.editor, "numberedList", e("Numbered List"), ''), + qm(this.editor, "bulletedList", e("Bulleted List"), '') + } + } + function lp(e, t) { + return e => { + e.on("attribute:url:media", i) + }; + function i(i, n, o) { + if (!o.consumable.consume(n.item, i.name)) + return; + const r = n.attributeNewValue, + s = o.writer, + a = o.mapper.toViewElement(n.item), + c = [...a.getChildren()].find(e => e.getCustomProperty("media-content")); + s.remove(c); + const l = e.getMediaViewElement(s, r, t); + s.insert(s.createPositionAt(a, 0), l) + } + } + function dp(e, t, i, n) { + const o = e.createContainerElement("figure", { + class: "media" + }); + return e.insert(e.createPositionAt(o, 0), t.getMediaViewElement(e, i, n)), + o + } + function up(e) { + const t = e.getSelectedElement(); + return t && t.is("element", "media") ? t : null + } + function hp(e, t, i) { + e.change(n => { + const o = n.createElement("media", { + url: t + }); + e.insertContent(o, i), + n.setSelection(o, "on") + }) + } + class fp extends Ze { + refresh() { + const e = this.editor.model, + t = e.document.selection, + i = e.schema, + n = up(t); + this.value = n ? n.getAttribute("url") : null, + this.isEnabled = function (e) { + const t = e.getSelectedElement(); + return !!t && "media" === t.name + } + (t) || function (e, t) { + let i = Gu(e, t).parent; + i.isEmpty && !t.schema.isLimit(i) && (i = i.parent); + return t.schema.checkChild(i, "media") + } + (t, e) && !Ku(t, i) + } + execute(e) { + const t = this.editor.model, + i = t.document.selection, + n = up(i); + if (n) + t.change(t => { + t.setAttribute("url", e, n) + }); + else { + const n = Gu(i, t); + hp(t, e, n) + } + } + } + class gp { + constructor(e, t) { + const i = t.providers, + n = t.extraProviders || [], + o = new Set(t.removeProviders), + r = i.concat(n).filter(e => { + const t = e.name; + return t ? !o.has(t) : (Object(c.b)("media-embed-no-provider-name", { + provider: e + }), !1) + }); + this.locale = e, + this.providerDefinitions = r + } + hasMedia(e) { + return !!this._getMedia(e) + } + getMediaViewElement(e, t, i) { + return this._getMedia(t).getViewElement(e, i) + } + _getMedia(e) { + if (!e) + return new mp(this.locale); + e = e.trim(); + for (const t of this.providerDefinitions) { + const i = t.html, + n = en(t.url); + for (const t of n) { + const n = this._getUrlMatches(e, t); + if (n) + return new mp(this.locale, e, n, i) + } + } + return null + } + _getUrlMatches(e, t) { + let i = e.match(t); + if (i) + return i; + let n = e.replace(/^https?:\/\//, ""); + return i = n.match(t), + i || (n = n.replace(/^www\./, ""), i = n.match(t), i || null) + } + } + class mp { + constructor(e, t, i, n) { + this.url = this._getValidUrl(t), + this._t = e.t, + this._match = i, + this._previewRenderer = n + } + getViewElement(e, t) { + const i = {}; + let n; + if (t.renderForEditingView || t.renderMediaPreview && this.url && this._previewRenderer) { + this.url && (i["data-oembed-url"] = this.url), + t.renderForEditingView && (i.class = "ck-media__wrapper"); + const o = this._getPreviewHtml(t); + n = e.createRawElement("div", i, (function (e) { + e.innerHTML = o + })) + } else + this.url && (i.url = this.url), n = e.createEmptyElement(t.elementName, i); + return e.setCustomProperty("media-content", !0, n), + n + } + _getPreviewHtml(e) { + return this._previewRenderer ? this._previewRenderer(this._match) : this.url && e.renderForEditingView ? this._getPlaceholderHtml() : "" + } + _getPlaceholderHtml() { + const e = new ad, + t = new sd; + e.text = this._t("Open media in new tab"), + t.content = '', + t.viewBox = "0 0 64 42"; + return new Bl({ + tag: "div", + attributes: { + class: "ck ck-reset_all ck-media__placeholder" + }, + children: [{ + tag: "div", + attributes: { + class: "ck-media__placeholder__icon" + }, + children: [t] + }, { + tag: "a", + attributes: { + class: "ck-media__placeholder__url", + target: "_blank", + rel: "noopener noreferrer", + href: this.url + }, + children: [{ + tag: "span", + attributes: { + class: "ck-media__placeholder__url__text" + }, + children: [this.url] + }, e] + } + ] + }).render().outerHTML + } + _getValidUrl(e) { + return e ? e.match(/^https?/) ? e : "https://" + e : null + } + } + i(94); + class pp extends Qe { + static get pluginName() { + return "MediaEmbedEditing" + } + constructor(e) { + super(e), + e.config.define("mediaEmbed", { + elementName: "oembed", + providers: [{ + name: "dailymotion", + url: /^dailymotion\.com\/video\/(\w+)/, + html: e => `` + }, { + name: "spotify", + url: [/^open\.spotify\.com\/(artist\/\w+)/, /^open\.spotify\.com\/(album\/\w+)/, /^open\.spotify\.com\/(track\/\w+)/], + html: e => `` + }, { + name: "youtube", + url: [/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)/, /^(?:m\.)?youtube\.com\/v\/([\w-]+)/, /^youtube\.com\/embed\/([\w-]+)/, /^youtu\.be\/([\w-]+)/], + html: e => `` + }, { + name: "vimeo", + url: [/^vimeo\.com\/(\d+)/, /^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/, /^vimeo\.com\/album\/[^/]+\/video\/(\d+)/, /^vimeo\.com\/channels\/[^/]+\/(\d+)/, /^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/, /^vimeo\.com\/ondemand\/[^/]+\/(\d+)/, /^player\.vimeo\.com\/video\/(\d+)/], + html: e => `` + }, { + name: "instagram", + url: /^instagram\.com\/p\/(\w+)/ + }, { + name: "twitter", + url: /^twitter\.com/ + }, { + name: "googleMaps", + url: /^google\.com\/maps/ + }, { + name: "flickr", + url: /^flickr\.com/ + }, { + name: "facebook", + url: /^facebook\.com/ + } + ] + }), + this.registry = new gp(e.locale, e.config.get("mediaEmbed")) + } + init() { + const e = this.editor, + t = e.model.schema, + i = e.t, + n = e.conversion, + o = e.config.get("mediaEmbed.previewsInData"), + r = e.config.get("mediaEmbed.elementName"), + s = this.registry; + e.commands.add("mediaEmbed", new fp(e)), + t.register("media", { + isObject: !0, + isBlock: !0, + allowWhere: "$block", + allowAttributes: ["url"] + }), + n.for("dataDowncast").elementToElement({ + model: "media", + view: (e, { + writer: t + }) => { + const i = e.getAttribute("url"); + return dp(t, s, i, { + elementName: r, + renderMediaPreview: i && o + }) + } + }), + n.for("dataDowncast").add(lp(s, { + elementName: r, + renderMediaPreview: o + })), + n.for("editingDowncast").elementToElement({ + model: "media", + view: (e, { + writer: t + }) => { + const n = e.getAttribute("url"); + return function (e, t, i) { + return t.setCustomProperty("media", !0, e), + Hu(e, t, { + label: i + }) + } + (dp(t, s, n, { + elementName: r, + renderForEditingView: !0 + }), t, i("media widget")) + } + }), + n.for("editingDowncast").add(lp(s, { + elementName: r, + renderForEditingView: !0 + })), + n.for("upcast").elementToElement({ + view: e => ["oembed", r].includes(e.name) && e.getAttribute("url") ? { + name: !0 + } + : null, + model: (e, { + writer: t + }) => { + const i = e.getAttribute("url"); + if (s.hasMedia(i)) + return t.createElement("media", { + url: i + }) + } + }).elementToElement({ + view: { + name: "div", + attributes: { + "data-oembed-url": !0 + } + }, + model: (e, { + writer: t + }) => { + const i = e.getAttribute("data-oembed-url"); + if (s.hasMedia(i)) + return t.createElement("media", { + url: i + }) + } + }) + } + } + const bp = /^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/; + class wp extends Qe { + static get requires() { + return [bh, uf] + } + static get pluginName() { + return "AutoMediaEmbed" + } + constructor(e) { + super(e), + this._timeoutId = null, + this._positionToInsert = null + } + init() { + const e = this.editor, + t = e.model.document; + this.listenTo(e.plugins.get("ClipboardPipeline"), "inputTransformation", () => { + const e = t.selection.getFirstRange(), + i = Zc.fromPosition(e.start); + i.stickiness = "toPrevious"; + const n = Zc.fromPosition(e.end); + n.stickiness = "toNext", + t.once("change:data", () => { + this._embedMediaBetweenPositions(i, n), + i.detach(), + n.detach() + }, { + priority: "high" + }) + }), + e.commands.get("undo").on("execute", () => { + this._timeoutId && (_r.window.clearTimeout(this._timeoutId), this._positionToInsert.detach(), this._timeoutId = null, this._positionToInsert = null) + }, { + priority: "high" + }) + } + _embedMediaBetweenPositions(e, t) { + const i = this.editor, + n = i.plugins.get(pp).registry, + o = new ba(e, t), + r = o.getWalker({ + ignoreElementEnd: !0 + }); + let s = ""; + for (const e of r) + e.item.is("$textProxy") && (s += e.item.data); + if (s = s.trim(), !s.match(bp)) + return void o.detach(); + if (!n.hasMedia(s)) + return void o.detach(); + i.commands.get("mediaEmbed").isEnabled ? (this._positionToInsert = Zc.fromPosition(e), this._timeoutId = _r.window.setTimeout(() => { + i.model.change(e => { + let t; + this._timeoutId = null, + e.remove(o), + o.detach(), + "$graveyard" !== this._positionToInsert.root.rootName && (t = this._positionToInsert), + hp(i.model, s, t), + this._positionToInsert.detach(), + this._positionToInsert = null + }) + }, 100)) : o.detach() + } + } + i(96); + class kp extends jl { + constructor(e, t) { + super(t); + const i = t.t; + this.focusTracker = new Rs, + this.keystrokes = new Os, + this.set("mediaURLInputValue", ""), + this.urlInputView = this._createUrlInput(), + this.saveButtonView = this._createButton(i("Save"), Cl, "ck-button-save"), + this.saveButtonView.type = "submit", + this.saveButtonView.bind("isEnabled").to(this, "mediaURLInputValue", e => !!e), + this.cancelButtonView = this._createButton(i("Cancel"), Al, "ck-button-cancel", "cancel"), + this._focusables = new Vl, + this._focusCycler = new dd({ + focusables: this._focusables, + focusTracker: this.focusTracker, + keystrokeHandler: this.keystrokes, + actions: { + focusPrevious: "shift + tab", + focusNext: "tab" + } + }), + this._validators = e, + this.setTemplate({ + tag: "form", + attributes: { + class: ["ck", "ck-media-form", "ck-responsive-form"], + tabindex: "-1" + }, + children: [this.urlInputView, this.saveButtonView, this.cancelButtonView] + }), + Ll(this) + } + render() { + super.render(), + zl({ + view: this + }); + [this.urlInputView, this.saveButtonView, this.cancelButtonView].forEach(e => { + this._focusables.add(e), + this.focusTracker.add(e.element) + }), + this.keystrokes.listenTo(this.element); + const e = e => e.stopPropagation(); + this.keystrokes.set("arrowright", e), + this.keystrokes.set("arrowleft", e), + this.keystrokes.set("arrowup", e), + this.keystrokes.set("arrowdown", e), + this.listenTo(this.urlInputView.element, "selectstart", (e, t) => { + t.stopPropagation() + }, { + priority: "high" + }) + } + focus() { + this._focusCycler.focusFirst() + } + get url() { + return this.urlInputView.fieldView.element.value.trim() + } + set url(e) { + this.urlInputView.fieldView.element.value = e.trim() + } + isValid() { + this.resetFormStatus(); + for (const e of this._validators) { + const t = e(this); + if (t) + return this.urlInputView.errorText = t, !1 + } + return !0 + } + resetFormStatus() { + this.urlInputView.errorText = null, + this.urlInputView.infoText = this._urlInputViewInfoDefault + } + _createUrlInput() { + const e = this.locale.t, + t = new jd(this.locale, Bd), + i = t.fieldView; + return this._urlInputViewInfoDefault = e("Paste the media URL in the input."), + this._urlInputViewInfoTip = e("Tip: Paste the URL into the content to embed faster."), + t.label = e("Media URL"), + t.infoText = this._urlInputViewInfoDefault, + i.on("input", () => { + t.infoText = i.element.value ? this._urlInputViewInfoTip : this._urlInputViewInfoDefault, + this.mediaURLInputValue = i.element.value.trim() + }), + t + } + _createButton(e, t, i, n) { + const o = new cd(this.locale); + return o.set({ + label: e, + icon: t, + tooltip: !0 + }), + o.extendTemplate({ + attributes: { + class: i + } + }), + n && o.delegate("execute").to(this, n), + o + } + } + class _p extends Qe { + static get requires() { + return [pp] + } + static get pluginName() { + return "MediaEmbedUI" + } + init() { + const e = this.editor, + t = e.commands.get("mediaEmbed"), + i = e.plugins.get(pp).registry; + e.ui.componentFactory.add("mediaEmbed", n => { + const o = Id(n), + r = new kp(function (e, t) { + return [t => { + if (!t.url.length) + return e("The URL must not be empty.") + }, i => { + if (!t.hasMedia(i.url)) + return e("This media URL is not supported.") + } + ] + } + (e.t, i), e.locale); + return this._setUpDropdown(o, r, t, e), + this._setUpForm(o, r, t), + o + }) + } + _setUpDropdown(e, t, i) { + const n = this.editor, + o = n.t, + r = e.buttonView; + function s() { + n.editing.view.focus(), + e.isOpen = !1 + } + e.bind("isEnabled").to(i), + e.panelView.children.add(t), + r.set({ + label: o("Insert media"), + icon: '', + tooltip: !0 + }), + r.on("open", () => { + t.disableCssTransitions(), + t.url = i.value || "", + t.urlInputView.fieldView.select(), + t.focus(), + t.enableCssTransitions() + }, { + priority: "low" + }), + e.on("submit", () => { + t.isValid() && (n.execute("mediaEmbed", t.url), s()) + }), + e.on("change:isOpen", () => t.resetFormStatus()), + e.on("cancel", () => s()) + } + _setUpForm(e, t, i) { + t.delegate("submit", "cancel").to(e), + t.urlInputView.bind("value").to(i, "value"), + t.urlInputView.bind("isReadOnly").to(i, "isEnabled", e => !e) + } + } + i(98); + function vp(e, t) { + if (!e.childCount) + return; + const i = new _u(e.document), + n = function (e, t) { + const i = t.createRangeIn(e), + n = new gn({ + name: /^p|h\d+$/, + styles: { + "mso-list": /.*/ + } + }), + o = []; + for (const e of i) + if ("elementStart" === e.type && n.match(e.item)) { + const t = Ap(e.item); + o.push({ + element: e.item, + id: t.id, + order: t.order, + indent: t.indent + }) + } + return o + } + (e, i); + if (!n.length) + return; + let o = null, + r = 1; + n.forEach((e, s) => { + const a = function (e, t) { + if (!e) + return !0; + if (e.id !== t.id) + return t.indent - e.indent != 1; + const i = t.element.previousSibling; + if (!i) + return !0; + return n = i, + !(n.is("element", "ol") || n.is("element", "ul")); + var n + } + (n[s - 1], e), + c = a ? null : n[s - 1], + l = (u = e, (d = c) ? u.indent - d.indent : u.indent - 1); + var d, + u; + if (a && (o = null, r = 1), !o || 0 !== l) { + const n = function (e, t) { + const i = new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`, "gi"), + n = /mso-level-number-format:([^;]{0,100});/gi, + o = i.exec(t); + let r = "decimal", + s = "ol"; + if (o && o[1]) { + const t = n.exec(o[1]); + if (t && t[1] && (r = t[1].trim(), s = "bullet" !== r && "image" !== r ? "ol" : "ul"), "bullet" === r) { + const t = function (e) { + const t = function (e) { + if (e.getChild(0).is("$text")) + return null; + const t = e.getChild(0).getChild(0); + if (t.is("$text")) + return t; + return t.getChild(0) + } + (e); + if (!t) + return null; + const i = t._data; + if ("o" === i) + return "circle"; + if ("·" === i) + return "disc"; + if ("§" === i) + return "square"; + return null + } + (e.element); + t && (r = t) + } + } + return { + type: s, + style: yp(r) + } + } + (e, t); + if (o) { + if (e.indent > r) { + const e = o.getChild(o.childCount - 1), + t = e.getChild(e.childCount - 1); + o = xp(n, t, i), + r += 1 + } else if (e.indent < r) { + const t = r - e.indent; + o = function (e, t) { + const i = e.getAncestors({ + parentFirst: !0 + }); + let n = null, + o = 0; + for (const e of i) + if ("ul" !== e.name && "ol" !== e.name || o++, o === t) { + n = e; + break + } + return n + } + (o, t), + r = parseInt(e.indent) + } + } else + o = xp(n, e.element, i); + e.indent <= r && (o.is("element", n.type) || (o = i.rename(n.type, o))) + } + const h = function (e, t) { + return function (e, t) { + const i = new gn({ + name: "span", + styles: { + "mso-list": "Ignore" + } + }), + n = t.createRangeIn(e); + for (const e of n) + "elementStart" === e.type && i.match(e.item) && t.remove(e.item) + } + (e, t), + t.rename("li", e) + } + (e.element, i); + i.appendChild(h, o) + }) + } + function yp(e) { + switch (e) { + case "arabic-leading-zero": + return "decimal-leading-zero"; + case "alpha-upper": + return "upper-alpha"; + case "alpha-lower": + return "lower-alpha"; + case "roman-upper": + return "upper-roman"; + case "roman-lower": + return "lower-roman"; + case "circle": + case "disc": + case "square": + return e; + default: + return null + } + } + function xp(e, t, i) { + const n = t.parent, + o = i.createElement(e.type), + r = n.getChildIndex(t) + 1; + return i.insertChild(r, o, n), + e.style && i.setStyle("list-style-type", e.style, o), + o + } + function Ap(e) { + const t = {}, + i = e.getStyle("mso-list"); + if (i) { + const e = i.match(/(^|\s{1,100})l(\d+)/i), + n = i.match(/\s{0,100}lfo(\d+)/i), + o = i.match(/\s{0,100}level(\d+)/i); + e && n && o && (t.id = e[2], t.order = n[1], t.indent = o[1]) + } + return t + } + const Cp = /id=("|')docs-internal-guid-[-0-9a-f]+("|')/i; + class Tp { + constructor(e) { + this.document = e + } + isActive(e) { + return Cp.test(e) + } + execute(e) { + const t = new _u(this.document); + !function (e, t) { + for (const i of e.getChildren()) + if (i.is("element", "b") && "normal" === i.getStyle("font-weight")) { + const n = e.getChildIndex(i); + t.remove(i), + t.insertChild(n, i.getChildren(), e) + } + } + (e.content, t), + function (e, t) { + for (const i of t.createRangeIn(e)) { + const e = i.item; + if (e.is("element", "li")) { + const i = e.getChild(0); + i && i.is("element", "p") && t.unwrapElement(i) + } + } + } + (e.content, t) + } + } + function Ep(e) { + return e.replace(/(\s+)<\/span>/g, (e, t) => 1 === t.length ? " " : Array(t.length + 1).join(" ").substr(0, t.length)) + } + function Pp(e, t) { + const i = new DOMParser, + n = function (e) { + return Ep(Ep(e)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g, "$1$2").replace(/<\/span>/g, "").replace(/ <\//g, " ").replace(/