diff --git a/Wino.Core.Domain/Interfaces/INativeAppService.cs b/Wino.Core.Domain/Interfaces/INativeAppService.cs index 4abd1dc6..b6d14249 100644 --- a/Wino.Core.Domain/Interfaces/INativeAppService.cs +++ b/Wino.Core.Domain/Interfaces/INativeAppService.cs @@ -8,7 +8,7 @@ namespace Wino.Core.Domain.Interfaces { string GetWebAuthenticationBrokerUri(); Task GetMimeMessageStoragePath(); - Task GetQuillEditorBundlePathAsync(); + Task GetEditorBundlePathAsync(); Task LaunchFileAsync(string filePath); Task LaunchUriAsync(Uri uri); bool IsAppRunning(); diff --git a/Wino.Core.Domain/Models/Requests/WebViewMessage.cs b/Wino.Core.Domain/Models/Requests/WebViewMessage.cs new file mode 100644 index 00000000..2c6aab9c --- /dev/null +++ b/Wino.Core.Domain/Models/Requests/WebViewMessage.cs @@ -0,0 +1,9 @@ +namespace Wino.Core.Domain.Models.Requests +{ + // Used to pass messages from the webview to the app. + public class WebViewMessage + { + public string type { get; set; } + public string value { get; set; } + } +} diff --git a/Wino.Core.Domain/Translations/en_US/resources.json b/Wino.Core.Domain/Translations/en_US/resources.json index d390fcff..03ee3264 100644 --- a/Wino.Core.Domain/Translations/en_US/resources.json +++ b/Wino.Core.Domain/Translations/en_US/resources.json @@ -52,6 +52,7 @@ "ClipboardTextCopyFailed_Message": "Failed to copy {0} to clipboard.", "ComposerToPlaceholder": "click enter to input addresses", "ComposerAttachmentsDropZone_Message": "Drop your files here", + "ComposerImagesDropZone_Message": "Drop your images here", "ComposerAttachmentsDragDropAttach_Message": "Attach", "CustomThemeBuilder_AccentColorDescription": "Set custom accent color if you wish. Not selecting a color will use your Windows accent color.", "CustomThemeBuilder_AccentColorTitle": "Accent color", diff --git a/Wino.Core.Domain/Translator.Designer.cs b/Wino.Core.Domain/Translator.Designer.cs index 9697d379..8dc6edbf 100644 --- a/Wino.Core.Domain/Translator.Designer.cs +++ b/Wino.Core.Domain/Translator.Designer.cs @@ -1,18 +1,4 @@  - - - - - - - - - - - - - - namespace Wino.Core.Domain { public class Translator @@ -32,3119 +18,2604 @@ namespace Wino.Core.Domain } } - /// /// all done /// public static string AccountCreationDialog_Completed => Resources.GetTranslatedString(@"AccountCreationDialog_Completed"); - /// /// initializing /// public static string AccountCreationDialog_Initializing => Resources.GetTranslatedString(@"AccountCreationDialog_Initializing"); - /// /// We are getting folder information at the moment. /// public static string AccountCreationDialog_PreparingFolders => Resources.GetTranslatedString(@"AccountCreationDialog_PreparingFolders"); - /// /// Account information is being saved. /// public static string AccountCreationDialog_SigninIn => Resources.GetTranslatedString(@"AccountCreationDialog_SigninIn"); - /// /// Account Name /// public static string AccountEditDialog_Message => Resources.GetTranslatedString(@"AccountEditDialog_Message"); - /// /// Edit Account /// public static string AccountEditDialog_Title => Resources.GetTranslatedString(@"AccountEditDialog_Title"); - /// /// Pick an account /// public static string AccountPickerDialog_Title => Resources.GetTranslatedString(@"AccountPickerDialog_Title"); - /// /// Sender Display Name /// public static string AccountSettingsDialog_AccountName => Resources.GetTranslatedString(@"AccountSettingsDialog_AccountName"); - /// /// eg. John Doe /// public static string AccountSettingsDialog_AccountNamePlaceholder => Resources.GetTranslatedString(@"AccountSettingsDialog_AccountNamePlaceholder"); - /// /// Add /// public static string AddHyperlink => Resources.GetTranslatedString(@"AddHyperlink"); - /// /// Searching for mail settings... /// public static string AutoDiscoveryProgressMessage => Resources.GetTranslatedString(@"AutoDiscoveryProgressMessage"); - /// /// Advanced Configuration /// public static string BasicIMAPSetupDialog_AdvancedConfiguration => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_AdvancedConfiguration"); - /// /// Your credentials will only be stored locally on your computer. /// public static string BasicIMAPSetupDialog_CredentialLocalMessage => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_CredentialLocalMessage"); - /// /// Some accounts require additional steps to sign in /// public static string BasicIMAPSetupDialog_Description => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_Description"); - /// /// Display Name /// public static string BasicIMAPSetupDialog_DisplayName => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_DisplayName"); - /// /// eg. John Doe /// public static string BasicIMAPSetupDialog_DisplayNamePlaceholder => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_DisplayNamePlaceholder"); - /// /// Learn more /// public static string BasicIMAPSetupDialog_LearnMore => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_LearnMore"); - /// /// E-Mail Address /// public static string BasicIMAPSetupDialog_MailAddress => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_MailAddress"); - /// /// johndoe@fabrikam.com /// public static string BasicIMAPSetupDialog_MailAddressPlaceholder => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_MailAddressPlaceholder"); - /// /// Password /// public static string BasicIMAPSetupDialog_Password => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_Password"); - /// /// IMAP Account /// public static string BasicIMAPSetupDialog_Title => Resources.GetTranslatedString(@"BasicIMAPSetupDialog_Title"); - /// /// Add Account /// public static string Buttons_AddAccount => Resources.GetTranslatedString(@"Buttons_AddAccount"); - /// /// Apply Theme /// public static string Buttons_ApplyTheme => Resources.GetTranslatedString(@"Buttons_ApplyTheme"); - /// /// Browse /// public static string Buttons_Browse => Resources.GetTranslatedString(@"Buttons_Browse"); - /// /// Cancel /// public static string Buttons_Cancel => Resources.GetTranslatedString(@"Buttons_Cancel"); - /// /// Close /// public static string Buttons_Close => Resources.GetTranslatedString(@"Buttons_Close"); - /// /// Create /// public static string Buttons_Create => Resources.GetTranslatedString(@"Buttons_Create"); - /// /// Create Account /// public static string Buttons_CreateAccount => Resources.GetTranslatedString(@"Buttons_CreateAccount"); - /// /// Copy /// public static string Buttons_Copy => Resources.GetTranslatedString(@"Buttons_Copy"); - /// /// Delete /// public static string Buttons_Delete => Resources.GetTranslatedString(@"Buttons_Delete"); - /// /// Edit /// public static string Buttons_Edit => Resources.GetTranslatedString(@"Buttons_Edit"); - /// /// Discard /// public static string Buttons_Discard => Resources.GetTranslatedString(@"Buttons_Discard"); - /// /// Enable /// public static string Buttons_EnableImageRendering => Resources.GetTranslatedString(@"Buttons_EnableImageRendering"); - /// /// No /// public static string Buttons_No => Resources.GetTranslatedString(@"Buttons_No"); - /// /// Open /// public static string Buttons_Open => Resources.GetTranslatedString(@"Buttons_Open"); - /// /// Purchase /// public static string Buttons_Purchase => Resources.GetTranslatedString(@"Buttons_Purchase"); - /// /// Rate Wino /// public static string Buttons_RateWino => Resources.GetTranslatedString(@"Buttons_RateWino"); - /// /// Save /// public static string Buttons_Save => Resources.GetTranslatedString(@"Buttons_Save"); - /// /// Save Configuration /// public static string Buttons_SaveConfiguration => Resources.GetTranslatedString(@"Buttons_SaveConfiguration"); - /// /// Share /// public static string Buttons_Share => Resources.GetTranslatedString(@"Buttons_Share"); - /// /// Sign In /// public static string Buttons_SignIn => Resources.GetTranslatedString(@"Buttons_SignIn"); - /// /// Try Again /// public static string Buttons_TryAgain => Resources.GetTranslatedString(@"Buttons_TryAgain"); - /// /// Yes /// public static string Buttons_Yes => Resources.GetTranslatedString(@"Buttons_Yes"); - /// /// Center /// public static string Center => Resources.GetTranslatedString(@"Center"); - /// /// Coming soon... /// public static string ComingSoon => Resources.GetTranslatedString(@"ComingSoon"); - /// /// From: /// public static string ComposerFrom => Resources.GetTranslatedString(@"ComposerFrom"); - /// /// Subject: /// public static string ComposerSubject => Resources.GetTranslatedString(@"ComposerSubject"); - /// /// To: /// public static string ComposerTo => Resources.GetTranslatedString(@"ComposerTo"); - /// /// {0} copied to clipboard. /// public static string ClipboardTextCopied_Message => Resources.GetTranslatedString(@"ClipboardTextCopied_Message"); - /// /// Copied /// public static string ClipboardTextCopied_Title => Resources.GetTranslatedString(@"ClipboardTextCopied_Title"); - /// /// Failed to copy {0} to clipboard. /// public static string ClipboardTextCopyFailed_Message => Resources.GetTranslatedString(@"ClipboardTextCopyFailed_Message"); - /// /// click enter to input addresses /// public static string ComposerToPlaceholder => Resources.GetTranslatedString(@"ComposerToPlaceholder"); - /// /// Drop your files here /// public static string ComposerAttachmentsDropZone_Message => Resources.GetTranslatedString(@"ComposerAttachmentsDropZone_Message"); - + /// + /// Drop your images here + /// + public static string ComposerImagesDropZone_Message => Resources.GetTranslatedString(@"ComposerImagesDropZone_Message"); + /// /// Attach /// public static string ComposerAttachmentsDragDropAttach_Message => Resources.GetTranslatedString(@"ComposerAttachmentsDragDropAttach_Message"); - /// /// Set custom accent color if you wish. Not selecting a color will use your Windows accent color. /// public static string CustomThemeBuilder_AccentColorDescription => Resources.GetTranslatedString(@"CustomThemeBuilder_AccentColorDescription"); - /// /// Accent color /// public static string CustomThemeBuilder_AccentColorTitle => Resources.GetTranslatedString(@"CustomThemeBuilder_AccentColorTitle"); - /// /// Pick /// public static string CustomThemeBuilder_PickColor => Resources.GetTranslatedString(@"CustomThemeBuilder_PickColor"); - /// /// Unique name for your custom theme. /// public static string CustomThemeBuilder_ThemeNameDescription => Resources.GetTranslatedString(@"CustomThemeBuilder_ThemeNameDescription"); - /// /// Theme name /// public static string CustomThemeBuilder_ThemeNameTitle => Resources.GetTranslatedString(@"CustomThemeBuilder_ThemeNameTitle"); - /// /// Custom Theme Builder /// public static string CustomThemeBuilder_Title => Resources.GetTranslatedString(@"CustomThemeBuilder_Title"); - /// /// Set a custom wallpaper for Wino /// public static string CustomThemeBuilder_WallpaperDescription => Resources.GetTranslatedString(@"CustomThemeBuilder_WallpaperDescription"); - /// /// Set custom wallpaper /// public static string CustomThemeBuilder_WallpaperTitle => Resources.GetTranslatedString(@"CustomThemeBuilder_WallpaperTitle"); - /// /// You have reached the account creation limit. Would you like to purchase 'Unlimited Account' add-on to continue? /// public static string DialogMessage_AccountLimitMessage => Resources.GetTranslatedString(@"DialogMessage_AccountLimitMessage"); - /// /// Account Limit Reached /// public static string DialogMessage_AccountLimitTitle => Resources.GetTranslatedString(@"DialogMessage_AccountLimitTitle"); - /// /// Do you want to permanently delete all the mails in this folder? /// public static string DialogMessage_CleanupFolderMessage => Resources.GetTranslatedString(@"DialogMessage_CleanupFolderMessage"); - /// /// Cleanup Folder /// public static string DialogMessage_CleanupFolderTitle => Resources.GetTranslatedString(@"DialogMessage_CleanupFolderTitle"); - /// /// Message has no recipient. /// public static string DialogMessage_ComposerMissingRecipientMessage => Resources.GetTranslatedString(@"DialogMessage_ComposerMissingRecipientMessage"); - /// /// Validation Failed /// public static string DialogMessage_ComposerValidationFailedTitle => Resources.GetTranslatedString(@"DialogMessage_ComposerValidationFailedTitle"); - /// /// Give this new link a name. Accounts will be merged under this name. /// public static string DialogMessage_CreateLinkedAccountMessage => Resources.GetTranslatedString(@"DialogMessage_CreateLinkedAccountMessage"); - /// /// Account Link Name /// public static string DialogMessage_CreateLinkedAccountTitle => Resources.GetTranslatedString(@"DialogMessage_CreateLinkedAccountTitle"); - /// /// Delete {0}? /// public static string DialogMessage_DeleteAccountConfirmationMessage => Resources.GetTranslatedString(@"DialogMessage_DeleteAccountConfirmationMessage"); - /// /// All data associated with this account will be deleted from disk permanently. /// public static string DialogMessage_DeleteAccountConfirmationTitle => Resources.GetTranslatedString(@"DialogMessage_DeleteAccountConfirmationTitle"); - /// /// This draft will be discarded. Do you want to continue? /// public static string DialogMessage_DiscardDraftConfirmationMessage => Resources.GetTranslatedString(@"DialogMessage_DiscardDraftConfirmationMessage"); - /// /// Discard Draft /// public static string DialogMessage_DiscardDraftConfirmationTitle => Resources.GetTranslatedString(@"DialogMessage_DiscardDraftConfirmationTitle"); - /// /// Permanent Delete /// public static string DialogMessage_HardDeleteConfirmationMessage => Resources.GetTranslatedString(@"DialogMessage_HardDeleteConfirmationMessage"); - /// /// Message(s) will be permanently deleted. Do you want to continue? /// public static string DialogMessage_HardDeleteConfirmationTitle => Resources.GetTranslatedString(@"DialogMessage_HardDeleteConfirmationTitle"); - /// /// You don't have any accounts to create message from. /// public static string DialogMessage_NoAccountsForCreateMailMessage => Resources.GetTranslatedString(@"DialogMessage_NoAccountsForCreateMailMessage"); - /// /// Account Missing /// public static string DialogMessage_NoAccountsForCreateMailTitle => Resources.GetTranslatedString(@"DialogMessage_NoAccountsForCreateMailTitle"); - /// /// Enter new name for linked account /// public static string DialogMessage_RenameLinkedAccountsMessage => Resources.GetTranslatedString(@"DialogMessage_RenameLinkedAccountsMessage"); - /// /// Rename Linked Account /// public static string DialogMessage_RenameLinkedAccountsTitle => Resources.GetTranslatedString(@"DialogMessage_RenameLinkedAccountsTitle"); - /// /// This operation will not delete your accounts but only break the link for shared folder connections. Do you want to continue? /// public static string DialogMessage_UnlinkAccountsConfirmationMessage => Resources.GetTranslatedString(@"DialogMessage_UnlinkAccountsConfirmationMessage"); - /// /// Unlink Accounts /// public static string DialogMessage_UnlinkAccountsConfirmationTitle => Resources.GetTranslatedString(@"DialogMessage_UnlinkAccountsConfirmationTitle"); - /// /// Missin Subject /// public static string DialogMessage_EmptySubjectConfirmation => Resources.GetTranslatedString(@"DialogMessage_EmptySubjectConfirmation"); - /// /// Message has no subject. Do you want to continue? /// public static string DialogMessage_EmptySubjectConfirmationMessage => Resources.GetTranslatedString(@"DialogMessage_EmptySubjectConfirmationMessage"); - /// /// Unsubscribe /// public static string DialogMessage_UnsubscribeConfirmationTitle => Resources.GetTranslatedString(@"DialogMessage_UnsubscribeConfirmationTitle"); - /// /// Do you want to stop getting messages from {0}? /// public static string DialogMessage_UnsubscribeConfirmationOneClickMessage => Resources.GetTranslatedString(@"DialogMessage_UnsubscribeConfirmationOneClickMessage"); - /// /// To stop getting messages from {0}, go to their website to unsubscribe. /// public static string DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage => Resources.GetTranslatedString(@"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage"); - /// /// Go to website /// public static string DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton => Resources.GetTranslatedString(@"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton"); - /// /// Do you want to stop getting messages from {0}? Wino will unsubscribe for you by sending an email from your email account to {1}. /// public static string DialogMessage_UnsubscribeConfirmationMailtoMessage => Resources.GetTranslatedString(@"DialogMessage_UnsubscribeConfirmationMailtoMessage"); - /// /// Don't ask again /// public static string Dialog_DontAskAgain => Resources.GetTranslatedString(@"Dialog_DontAskAgain"); - /// /// Wino doesn't have it's own Discord server, but special 'wino-mail' channel is hosted at 'Developer Sanctuary' server. To get the updates about Wino please join Developer Sanctuary server and follow 'wino-mail' channel under 'Community Projects' You will be directed to server URL since Discord doesn't support channel invites. /// public static string DiscordChannelDisclaimerMessage => Resources.GetTranslatedString(@"DiscordChannelDisclaimerMessage"); - /// /// Important Discord Information /// public static string DiscordChannelDisclaimerTitle => Resources.GetTranslatedString(@"DiscordChannelDisclaimerTitle"); - /// /// Draft /// public static string Draft => Resources.GetTranslatedString(@"Draft"); - /// /// Draw /// public static string EditorToolbarOption_Draw => Resources.GetTranslatedString(@"EditorToolbarOption_Draw"); - /// /// Format /// public static string EditorToolbarOption_Format => Resources.GetTranslatedString(@"EditorToolbarOption_Format"); - /// /// Insert /// public static string EditorToolbarOption_Insert => Resources.GetTranslatedString(@"EditorToolbarOption_Insert"); - /// /// None /// public static string EditorToolbarOption_None => Resources.GetTranslatedString(@"EditorToolbarOption_None"); - /// /// Options /// public static string EditorToolbarOption_Options => Resources.GetTranslatedString(@"EditorToolbarOption_Options"); - /// /// Dark mode /// public static string ElementTheme_Dark => Resources.GetTranslatedString(@"ElementTheme_Dark"); - /// /// Use system setting /// public static string ElementTheme_Default => Resources.GetTranslatedString(@"ElementTheme_Default"); - /// /// Light mode /// public static string ElementTheme_Light => Resources.GetTranslatedString(@"ElementTheme_Light"); - /// /// Emoji /// public static string Emoji => Resources.GetTranslatedString(@"Emoji"); - /// /// Couldn't find mailbox settings. /// public static string Exception_ImapAutoDiscoveryFailed => Resources.GetTranslatedString(@"Exception_ImapAutoDiscoveryFailed"); - /// /// IMAP Client Pool failed. /// public static string Exception_ImapClientPoolFailed => Resources.GetTranslatedString(@"Exception_ImapClientPoolFailed"); - /// /// Authentication canceled /// public static string Exception_AuthenticationCanceled => Resources.GetTranslatedString(@"Exception_AuthenticationCanceled"); - /// /// This theme already exists. /// public static string Exception_CustomThemeExists => Resources.GetTranslatedString(@"Exception_CustomThemeExists"); - /// /// You must provide a name. /// public static string Exception_CustomThemeMissingName => Resources.GetTranslatedString(@"Exception_CustomThemeMissingName"); - /// /// You must provide a custom background image. /// public static string Exception_CustomThemeMissingWallpaper => Resources.GetTranslatedString(@"Exception_CustomThemeMissingWallpaper"); - /// /// Failed to synchronize folders /// public static string Exception_FailedToSynchronizeFolders => Resources.GetTranslatedString(@"Exception_FailedToSynchronizeFolders"); - /// /// Callback uri is null on activation. /// public static string Exception_GoogleAuthCallbackNull => Resources.GetTranslatedString(@"Exception_GoogleAuthCallbackNull"); - /// /// Corrupted authorization response. /// public static string Exception_GoogleAuthCorruptedCode => Resources.GetTranslatedString(@"Exception_GoogleAuthCorruptedCode"); - /// /// OAuth authorization error: {0} /// public static string Exception_GoogleAuthError => Resources.GetTranslatedString(@"Exception_GoogleAuthError"); - /// /// Received request with invalid state ({0}) /// public static string Exception_GoogleAuthInvalidResponse => Resources.GetTranslatedString(@"Exception_GoogleAuthInvalidResponse"); - /// /// Authorization code exchange failed. /// public static string Exception_GoogleAuthorizationCodeExchangeFailed => Resources.GetTranslatedString(@"Exception_GoogleAuthorizationCodeExchangeFailed"); - /// /// System folder configuration is not valid. Check configuration and try again. /// public static string Exception_InvalidSystemFolderConfiguration => Resources.GetTranslatedString(@"Exception_InvalidSystemFolderConfiguration"); - /// /// Assigned account is null /// public static string Exception_NullAssignedAccount => Resources.GetTranslatedString(@"Exception_NullAssignedAccount"); - /// /// Assigned folder is null /// public static string Exception_NullAssignedFolder => Resources.GetTranslatedString(@"Exception_NullAssignedFolder"); - /// /// Response handling failed with error HTTP code {0} /// public static string Exception_SynchronizerFailureHTTP => Resources.GetTranslatedString(@"Exception_SynchronizerFailureHTTP"); - /// /// Token generation failed /// public static string Exception_TokenGenerationFailed => Resources.GetTranslatedString(@"Exception_TokenGenerationFailed"); - /// /// Failed to get token information. /// public static string Exception_TokenInfoRetrivalFailed => Resources.GetTranslatedString(@"Exception_TokenInfoRetrivalFailed"); - /// /// Unknown error occurred during authentication /// public static string Exception_UnknowErrorDuringAuthentication => Resources.GetTranslatedString(@"Exception_UnknowErrorDuringAuthentication"); - /// /// Action {0} is not implemented in request processor /// public static string Exception_UnsupportedAction => Resources.GetTranslatedString(@"Exception_UnsupportedAction"); - /// /// This provider is not supported. /// public static string Exception_UnsupportedProvider => Resources.GetTranslatedString(@"Exception_UnsupportedProvider"); - /// /// This operation is not supported for {0} /// public static string Exception_UnsupportedSynchronizerOperation => Resources.GetTranslatedString(@"Exception_UnsupportedSynchronizerOperation"); - /// /// User canceled system folder config dialog. /// public static string Exception_UserCancelSystemFolderSetupDialog => Resources.GetTranslatedString(@"Exception_UserCancelSystemFolderSetupDialog"); - /// /// Couldn't setup account folders. /// public static string Exception_InboxNotAvailable => Resources.GetTranslatedString(@"Exception_InboxNotAvailable"); - /// /// Files /// public static string Files => Resources.GetTranslatedString(@"Files"); - /// /// All /// public static string FilteringOption_All => Resources.GetTranslatedString(@"FilteringOption_All"); - /// /// Flagged /// public static string FilteringOption_Flagged => Resources.GetTranslatedString(@"FilteringOption_Flagged"); - /// /// Unread /// public static string FilteringOption_Unread => Resources.GetTranslatedString(@"FilteringOption_Unread"); - /// /// Has files /// public static string FilteringOption_Files => Resources.GetTranslatedString(@"FilteringOption_Files"); - /// /// Focused /// public static string Focused => Resources.GetTranslatedString(@"Focused"); - /// /// Create sub folder /// public static string FolderOperation_CreateSubFolder => Resources.GetTranslatedString(@"FolderOperation_CreateSubFolder"); - /// /// Delete /// public static string FolderOperation_Delete => Resources.GetTranslatedString(@"FolderOperation_Delete"); - /// /// Don't sync this folder /// public static string FolderOperation_DontSync => Resources.GetTranslatedString(@"FolderOperation_DontSync"); - /// /// Empty this folder /// public static string FolderOperation_Empty => Resources.GetTranslatedString(@"FolderOperation_Empty"); - /// /// Mark all as read /// public static string FolderOperation_MarkAllAsRead => Resources.GetTranslatedString(@"FolderOperation_MarkAllAsRead"); - /// /// Move /// public static string FolderOperation_Move => Resources.GetTranslatedString(@"FolderOperation_Move"); - /// /// Move to {0} /// public static string DragMoveToFolderCaption => Resources.GetTranslatedString(@"DragMoveToFolderCaption"); - /// /// None /// public static string FolderOperation_None => Resources.GetTranslatedString(@"FolderOperation_None"); - /// /// Pin /// public static string FolderOperation_Pin => Resources.GetTranslatedString(@"FolderOperation_Pin"); - /// /// Rename /// public static string FolderOperation_Rename => Resources.GetTranslatedString(@"FolderOperation_Rename"); - /// /// Unpin /// public static string FolderOperation_Unpin => Resources.GetTranslatedString(@"FolderOperation_Unpin"); - /// /// Archive /// public static string HoverActionOption_Archive => Resources.GetTranslatedString(@"HoverActionOption_Archive"); - /// /// Delete /// public static string HoverActionOption_Delete => Resources.GetTranslatedString(@"HoverActionOption_Delete"); - /// /// Move to Junk /// public static string HoverActionOption_MoveJunk => Resources.GetTranslatedString(@"HoverActionOption_MoveJunk"); - /// /// Flag / Unflag /// public static string HoverActionOption_ToggleFlag => Resources.GetTranslatedString(@"HoverActionOption_ToggleFlag"); - /// /// Read / Unread /// public static string HoverActionOption_ToggleRead => Resources.GetTranslatedString(@"HoverActionOption_ToggleRead"); - /// /// Inbox /// public static string MergedAccountCommonFolderInbox => Resources.GetTranslatedString(@"MergedAccountCommonFolderInbox"); - /// /// Sent /// public static string MergedAccountCommonFolderSent => Resources.GetTranslatedString(@"MergedAccountCommonFolderSent"); - /// /// Draft /// public static string MergedAccountCommonFolderDraft => Resources.GetTranslatedString(@"MergedAccountCommonFolderDraft"); - /// /// Junk /// public static string MergedAccountCommonFolderJunk => Resources.GetTranslatedString(@"MergedAccountCommonFolderJunk"); - /// /// Deleted /// public static string MergedAccountCommonFolderTrash => Resources.GetTranslatedString(@"MergedAccountCommonFolderTrash"); - /// /// Archive /// public static string MergedAccountCommonFolderArchive => Resources.GetTranslatedString(@"MergedAccountCommonFolderArchive"); - /// /// Account type /// public static string IMAPSetupDialog_AccountType => Resources.GetTranslatedString(@"IMAPSetupDialog_AccountType"); - /// /// Display Name /// public static string IMAPSetupDialog_DisplayName => Resources.GetTranslatedString(@"IMAPSetupDialog_DisplayName"); - /// /// eg. John Doe /// public static string IMAPSetupDialog_DisplayNamePlaceholder => Resources.GetTranslatedString(@"IMAPSetupDialog_DisplayNamePlaceholder"); - /// /// Incoming mail server /// public static string IMAPSetupDialog_IncomingMailServer => Resources.GetTranslatedString(@"IMAPSetupDialog_IncomingMailServer"); - /// /// Port /// public static string IMAPSetupDialog_IncomingMailServerPort => Resources.GetTranslatedString(@"IMAPSetupDialog_IncomingMailServerPort"); - /// /// Email address /// public static string IMAPSetupDialog_MailAddress => Resources.GetTranslatedString(@"IMAPSetupDialog_MailAddress"); - /// /// someone@example.com /// public static string IMAPSetupDialog_MailAddressPlaceholder => Resources.GetTranslatedString(@"IMAPSetupDialog_MailAddressPlaceholder"); - /// /// Outgoing (SMTP) mail server /// public static string IMAPSetupDialog_OutgoingMailServer => Resources.GetTranslatedString(@"IMAPSetupDialog_OutgoingMailServer"); - /// /// Outgoing server password /// public static string IMAPSetupDialog_OutgoingMailServerPassword => Resources.GetTranslatedString(@"IMAPSetupDialog_OutgoingMailServerPassword"); - /// /// Port /// public static string IMAPSetupDialog_OutgoingMailServerPort => Resources.GetTranslatedString(@"IMAPSetupDialog_OutgoingMailServerPort"); - /// /// Outgoing server requires authentication /// public static string IMAPSetupDialog_OutgoingMailServerRequireAuthentication => Resources.GetTranslatedString(@"IMAPSetupDialog_OutgoingMailServerRequireAuthentication"); - /// /// Outgoing server user name /// public static string IMAPSetupDialog_OutgoingMailServerUsername => Resources.GetTranslatedString(@"IMAPSetupDialog_OutgoingMailServerUsername"); - /// /// Password /// public static string IMAPSetupDialog_Password => Resources.GetTranslatedString(@"IMAPSetupDialog_Password"); - /// /// Require SSL for incoming email /// public static string IMAPSetupDialog_RequireSSLForIncomingMail => Resources.GetTranslatedString(@"IMAPSetupDialog_RequireSSLForIncomingMail"); - /// /// Require SSL for outgoing email /// public static string IMAPSetupDialog_RequireSSLForOutgoingMail => Resources.GetTranslatedString(@"IMAPSetupDialog_RequireSSLForOutgoingMail"); - /// /// Advanced IMAP Configuration /// public static string IMAPSetupDialog_Title => Resources.GetTranslatedString(@"IMAPSetupDialog_Title"); - /// /// Use the same username and password for sending email /// public static string IMAPSetupDialog_UseSameConfig => Resources.GetTranslatedString(@"IMAPSetupDialog_UseSameConfig"); - /// /// Username /// public static string IMAPSetupDialog_Username => Resources.GetTranslatedString(@"IMAPSetupDialog_Username"); - /// /// johndoe, johndoe@fabrikam.com, domain/johndoe /// public static string IMAPSetupDialog_UsernamePlaceholder => Resources.GetTranslatedString(@"IMAPSetupDialog_UsernamePlaceholder"); - /// /// Connection Failed /// public static string IMAPSetupDialog_ConnectionFailedTitle => Resources.GetTranslatedString(@"IMAPSetupDialog_ConnectionFailedTitle"); - /// /// IMAP connection failed. /// public static string IMAPSetupDialog_ConnectionFailedMessage => Resources.GetTranslatedString(@"IMAPSetupDialog_ConnectionFailedMessage"); - /// /// Image rendering is disabled for this message. /// public static string ImageRenderingDisabled => Resources.GetTranslatedString(@"ImageRenderingDisabled"); - /// /// Enable /// public static string InfoBarAction_Enable => Resources.GetTranslatedString(@"InfoBarAction_Enable"); - /// /// This folder is disabled for synchronization. /// public static string InfoBarMessage_SynchronizationDisabledFolder => Resources.GetTranslatedString(@"InfoBarMessage_SynchronizationDisabledFolder"); - /// /// Disabled Folder /// public static string InfoBarTitle_SynchronizationDisabledFolder => Resources.GetTranslatedString(@"InfoBarTitle_SynchronizationDisabledFolder"); - /// /// Error /// public static string GeneralTitle_Error => Resources.GetTranslatedString(@"GeneralTitle_Error"); - /// /// Warning /// public static string GeneralTitle_Warning => Resources.GetTranslatedString(@"GeneralTitle_Warning"); - /// /// Information /// public static string GeneralTitle_Info => Resources.GetTranslatedString(@"GeneralTitle_Info"); - /// /// {0} is created /// public static string Info_AccountCreatedMessage => Resources.GetTranslatedString(@"Info_AccountCreatedMessage"); - /// /// Account Creation /// public static string Info_AccountCreatedTitle => Resources.GetTranslatedString(@"Info_AccountCreatedTitle"); - /// /// Account Creation Failed /// public static string Info_AccountCreationFailedTitle => Resources.GetTranslatedString(@"Info_AccountCreationFailedTitle"); - /// /// {0} is successfuly deleted. /// public static string Info_AccountDeletedMessage => Resources.GetTranslatedString(@"Info_AccountDeletedMessage"); - /// /// Account Deleted /// public static string Info_AccountDeletedTitle => Resources.GetTranslatedString(@"Info_AccountDeletedTitle"); - /// /// Failed /// public static string Info_AccountIssueFixFailedTitle => Resources.GetTranslatedString(@"Info_AccountIssueFixFailedTitle"); - /// /// Fixed all account issues. /// public static string Info_AccountIssueFixSuccessMessage => Resources.GetTranslatedString(@"Info_AccountIssueFixSuccessMessage"); - /// /// Success /// public static string Info_AccountIssueFixSuccessTitle => Resources.GetTranslatedString(@"Info_AccountIssueFixSuccessTitle"); - /// /// Can't open this attachment. /// public static string Info_AttachmentOpenFailedMessage => Resources.GetTranslatedString(@"Info_AttachmentOpenFailedMessage"); - /// /// Failed /// public static string Info_AttachmentOpenFailedTitle => Resources.GetTranslatedString(@"Info_AttachmentOpenFailedTitle"); - /// /// Can't save this attachment. /// public static string Info_AttachmentSaveFailedMessage => Resources.GetTranslatedString(@"Info_AttachmentSaveFailedMessage"); - /// /// Failed /// public static string Info_AttachmentSaveFailedTitle => Resources.GetTranslatedString(@"Info_AttachmentSaveFailedTitle"); - /// /// Attachment is saved. /// public static string Info_AttachmentSaveSuccessMessage => Resources.GetTranslatedString(@"Info_AttachmentSaveSuccessMessage"); - /// /// Attachment Saved /// public static string Info_AttachmentSaveSuccessTitle => Resources.GetTranslatedString(@"Info_AttachmentSaveSuccessTitle"); - /// /// Background execution for the app is denied. This may affect background synchronization and live notifications. /// public static string Info_BackgroundExecutionDeniedMessage => Resources.GetTranslatedString(@"Info_BackgroundExecutionDeniedMessage"); - /// /// Denied Background Execution /// public static string Info_BackgroundExecutionDeniedTitle => Resources.GetTranslatedString(@"Info_BackgroundExecutionDeniedTitle"); - /// /// Unknown exception occurred when registering background synchronizer. /// public static string Info_BackgroundExecutionUnknownErrorMessage => Resources.GetTranslatedString(@"Info_BackgroundExecutionUnknownErrorMessage"); - /// /// Background Execution Failure /// public static string Info_BackgroundExecutionUnknownErrorTitle => Resources.GetTranslatedString(@"Info_BackgroundExecutionUnknownErrorTitle"); - /// /// Couldn't locate the MIME file. Synchronizing may help. /// public static string Info_ComposerMissingMIMEMessage => Resources.GetTranslatedString(@"Info_ComposerMissingMIMEMessage"); - /// /// Failed /// public static string Info_ComposerMissingMIMETitle => Resources.GetTranslatedString(@"Info_ComposerMissingMIMETitle"); - /// /// This contact is already in the recipient list. /// public static string Info_ContactExistsMessage => Resources.GetTranslatedString(@"Info_ContactExistsMessage"); - /// /// Contact Exists /// public static string Info_ContactExistsTitle => Resources.GetTranslatedString(@"Info_ContactExistsTitle"); - /// /// Draft folder is missing for this account. Please check your account settings. /// public static string Info_DraftFolderMissingMessage => Resources.GetTranslatedString(@"Info_DraftFolderMissingMessage"); - /// /// Missing Draft Folder /// public static string Info_DraftFolderMissingTitle => Resources.GetTranslatedString(@"Info_DraftFolderMissingTitle"); - /// /// Failed to launch file /// public static string Info_FileLaunchFailedTitle => Resources.GetTranslatedString(@"Info_FileLaunchFailedTitle"); - /// /// '{0}' is not a valid e-mail address. /// public static string Info_InvalidAddressMessage => Resources.GetTranslatedString(@"Info_InvalidAddressMessage"); - /// /// Invalid Address /// public static string Info_InvalidAddressTitle => Resources.GetTranslatedString(@"Info_InvalidAddressTitle"); - /// /// You can't move selected mails to this folder. /// public static string Info_InvalidMoveTargetMessage => Resources.GetTranslatedString(@"Info_InvalidMoveTargetMessage"); - /// /// Invalid Move Target /// public static string Info_InvalidMoveTargetTitle => Resources.GetTranslatedString(@"Info_InvalidMoveTargetTitle"); - /// /// There are no logs to share. /// public static string Info_LogsNotFoundMessage => Resources.GetTranslatedString(@"Info_LogsNotFoundMessage"); - /// /// Logs Not Found /// public static string Info_LogsNotFoundTitle => Resources.GetTranslatedString(@"Info_LogsNotFoundTitle"); - /// /// {0} is saved to selected folder. /// public static string Info_LogsSavedMessage => Resources.GetTranslatedString(@"Info_LogsSavedMessage"); - /// /// Saved /// public static string Info_LogsSavedTitle => Resources.GetTranslatedString(@"Info_LogsSavedTitle"); - /// /// This mail is corrupted or can't be opened. {0} /// public static string Info_MailRenderingFailedMessage => Resources.GetTranslatedString(@"Info_MailRenderingFailedMessage"); - /// /// Render Failed /// public static string Info_MailRenderingFailedTitle => Resources.GetTranslatedString(@"Info_MailRenderingFailedTitle"); - /// /// This message is corrupted. /// public static string Info_MessageCorruptedMessage => Resources.GetTranslatedString(@"Info_MessageCorruptedMessage"); - /// /// Error /// public static string Info_MessageCorruptedTitle => Resources.GetTranslatedString(@"Info_MessageCorruptedTitle"); - /// /// {0} doesn't exist for this account. /// public static string Info_MissingFolderMessage => Resources.GetTranslatedString(@"Info_MissingFolderMessage"); - /// /// Missing Folder /// public static string Info_MissingFolderTitle => Resources.GetTranslatedString(@"Info_MissingFolderTitle"); - /// /// Success /// public static string Info_PDFSaveSuccessTitle => Resources.GetTranslatedString(@"Info_PDFSaveSuccessTitle"); - /// /// Failed to save PDF file /// public static string Info_PDFSaveFailedTitle => Resources.GetTranslatedString(@"Info_PDFSaveFailedTitle"); - /// /// PDF file is saved to {0} /// public static string Info_PDFSaveSuccessMessage => Resources.GetTranslatedString(@"Info_PDFSaveSuccessMessage"); - /// /// Looks like this product has already been purchased before. /// public static string Info_PurchaseExistsMessage => Resources.GetTranslatedString(@"Info_PurchaseExistsMessage"); - /// /// Existing Product /// public static string Info_PurchaseExistsTitle => Resources.GetTranslatedString(@"Info_PurchaseExistsTitle"); - /// /// Thank You /// public static string Info_PurchaseThankYouMessage => Resources.GetTranslatedString(@"Info_PurchaseThankYouMessage"); - /// /// Purchase successful /// public static string Info_PurchaseThankYouTitle => Resources.GetTranslatedString(@"Info_PurchaseThankYouTitle"); - /// /// Failed to Create Requests /// public static string Info_RequestCreationFailedTitle => Resources.GetTranslatedString(@"Info_RequestCreationFailedTitle"); - /// /// There was a network issue with your review. /// public static string Info_ReviewNetworkErrorMessage => Resources.GetTranslatedString(@"Info_ReviewNetworkErrorMessage"); - /// /// Network Issue /// public static string Info_ReviewNetworkErrorTitle => Resources.GetTranslatedString(@"Info_ReviewNetworkErrorTitle"); - /// /// All feedbacks are appreciated. Thank you for the review! /// public static string Info_ReviewNewMessage => Resources.GetTranslatedString(@"Info_ReviewNewMessage"); - /// /// Thank you /// public static string Info_ReviewSuccessTitle => Resources.GetTranslatedString(@"Info_ReviewSuccessTitle"); - /// /// There was an unknown issue with your review. ({0}) /// public static string Info_ReviewUnknownErrorMessage => Resources.GetTranslatedString(@"Info_ReviewUnknownErrorMessage"); - /// /// Unknown Error /// public static string Info_ReviewUnknownErrorTitle => Resources.GetTranslatedString(@"Info_ReviewUnknownErrorTitle"); - /// /// Thank you for the updated review. /// public static string Info_ReviewUpdatedMessage => Resources.GetTranslatedString(@"Info_ReviewUpdatedMessage"); - /// /// Disabled signature for this account /// public static string Info_SignatureDisabledMessage => Resources.GetTranslatedString(@"Info_SignatureDisabledMessage"); - /// /// Success /// public static string Info_SignatureDisabledTitle => Resources.GetTranslatedString(@"Info_SignatureDisabledTitle"); - /// /// New signature is saved /// public static string Info_SignatureSavedMessage => Resources.GetTranslatedString(@"Info_SignatureSavedMessage"); - /// /// Success /// public static string Info_SignatureSavedTitle => Resources.GetTranslatedString(@"Info_SignatureSavedTitle"); - /// /// Canceled /// public static string Info_SyncCanceledMessage => Resources.GetTranslatedString(@"Info_SyncCanceledMessage"); - /// /// Synchronization /// public static string Info_SyncCanceledTitle => Resources.GetTranslatedString(@"Info_SyncCanceledTitle"); - /// /// Synchronization Failed /// public static string Info_SyncFailedTitle => Resources.GetTranslatedString(@"Info_SyncFailedTitle"); - /// /// This functionality is not implemented yet. /// public static string Info_UnsupportedFunctionalityDescription => Resources.GetTranslatedString(@"Info_UnsupportedFunctionalityDescription"); - /// /// Unsupported /// public static string Info_UnsupportedFunctionalityTitle => Resources.GetTranslatedString(@"Info_UnsupportedFunctionalityTitle"); - /// /// Invalid Unsubscribe Uri /// public static string Info_UnsubscribeLinkInvalidTitle => Resources.GetTranslatedString(@"Info_UnsubscribeLinkInvalidTitle"); - /// /// This unsubscribe link is invalid. Failed to unsubscribe from the list. /// public static string Info_UnsubscribeLinkInvalidMessage => Resources.GetTranslatedString(@"Info_UnsubscribeLinkInvalidMessage"); - /// /// Successfully unsubscribed from {0}. /// public static string Info_UnsubscribeSuccessMessage => Resources.GetTranslatedString(@"Info_UnsubscribeSuccessMessage"); - /// /// Failed to unsubscribe /// public static string Info_UnsubscribeErrorMessage => Resources.GetTranslatedString(@"Info_UnsubscribeErrorMessage"); - /// /// Authentication method /// public static string ImapAdvancedSetupDialog_AuthenticationMethod => Resources.GetTranslatedString(@"ImapAdvancedSetupDialog_AuthenticationMethod"); - /// /// Connection security /// public static string ImapAdvancedSetupDialog_ConnectionSecurity => Resources.GetTranslatedString(@"ImapAdvancedSetupDialog_ConnectionSecurity"); - /// /// Auto /// public static string ImapAuthenticationMethod_Auto => Resources.GetTranslatedString(@"ImapAuthenticationMethod_Auto"); - /// /// CRAM-MD5 /// public static string ImapAuthenticationMethod_CramMD5 => Resources.GetTranslatedString(@"ImapAuthenticationMethod_CramMD5"); - /// /// DIGEST-MD5 /// public static string ImapAuthenticationMethod_DigestMD5 => Resources.GetTranslatedString(@"ImapAuthenticationMethod_DigestMD5"); - /// /// No authentication /// public static string ImapAuthenticationMethod_None => Resources.GetTranslatedString(@"ImapAuthenticationMethod_None"); - /// /// Normal password /// public static string ImapAuthenticationMethod_Plain => Resources.GetTranslatedString(@"ImapAuthenticationMethod_Plain"); - /// /// Encrypted password /// public static string ImapAuthenticationMethod_EncryptedPassword => Resources.GetTranslatedString(@"ImapAuthenticationMethod_EncryptedPassword"); - /// /// NTLM /// public static string ImapAuthenticationMethod_Ntlm => Resources.GetTranslatedString(@"ImapAuthenticationMethod_Ntlm"); - /// /// None /// public static string ImapConnectionSecurity_None => Resources.GetTranslatedString(@"ImapConnectionSecurity_None"); - /// /// SSL/TLS /// public static string ImapConnectionSecurity_SslTls => Resources.GetTranslatedString(@"ImapConnectionSecurity_SslTls"); - /// /// STARTTLS /// public static string ImapConnectionSecurity_StartTls => Resources.GetTranslatedString(@"ImapConnectionSecurity_StartTls"); - /// /// Auto /// public static string ImapConnectionSecurity_Auto => Resources.GetTranslatedString(@"ImapConnectionSecurity_Auto"); - /// /// Justify /// public static string Justify => Resources.GetTranslatedString(@"Justify"); - /// /// Left /// public static string Left => Resources.GetTranslatedString(@"Left"); - /// /// Link /// public static string Link => Resources.GetTranslatedString(@"Link"); - /// /// you must have at least 2 accounts to create link link will be removed on save /// public static string LinkedAccountsCreatePolicyMessage => Resources.GetTranslatedString(@"LinkedAccountsCreatePolicyMessage"); - /// /// Linked Accounts /// public static string LinkedAccountsTitle => Resources.GetTranslatedString(@"LinkedAccountsTitle"); - /// /// Always Move to Focused /// public static string MailOperation_AlwaysMoveFocused => Resources.GetTranslatedString(@"MailOperation_AlwaysMoveFocused"); - /// /// Always Move to Other /// public static string MailOperation_AlwaysMoveOther => Resources.GetTranslatedString(@"MailOperation_AlwaysMoveOther"); - /// /// Archive /// public static string MailOperation_Archive => Resources.GetTranslatedString(@"MailOperation_Archive"); - /// /// Clear flag /// public static string MailOperation_ClearFlag => Resources.GetTranslatedString(@"MailOperation_ClearFlag"); - /// /// Dark /// public static string MailOperation_DarkEditor => Resources.GetTranslatedString(@"MailOperation_DarkEditor"); - /// /// Delete /// public static string MailOperation_Delete => Resources.GetTranslatedString(@"MailOperation_Delete"); - /// /// Export to PDF /// public static string MailOperation_ExportPDF => Resources.GetTranslatedString(@"MailOperation_ExportPDF"); - /// /// Find /// public static string MailOperation_Find => Resources.GetTranslatedString(@"MailOperation_Find"); - /// /// Forward /// public static string MailOperation_Forward => Resources.GetTranslatedString(@"MailOperation_Forward"); - /// /// Ignore /// public static string MailOperation_Ignore => Resources.GetTranslatedString(@"MailOperation_Ignore"); - /// /// Light /// public static string MailOperation_LightEditor => Resources.GetTranslatedString(@"MailOperation_LightEditor"); - /// /// Mark as junk /// public static string MailOperation_MarkAsJunk => Resources.GetTranslatedString(@"MailOperation_MarkAsJunk"); - /// /// Mark as read /// public static string MailOperation_MarkAsRead => Resources.GetTranslatedString(@"MailOperation_MarkAsRead"); - /// /// Mark as unread /// public static string MailOperation_MarkAsUnread => Resources.GetTranslatedString(@"MailOperation_MarkAsUnread"); - /// /// Mark as Not Junk /// public static string MailOperation_MarkNotJunk => Resources.GetTranslatedString(@"MailOperation_MarkNotJunk"); - /// /// Move /// public static string MailOperation_Move => Resources.GetTranslatedString(@"MailOperation_Move"); - /// /// Move to Focused /// public static string MailOperation_MoveFocused => Resources.GetTranslatedString(@"MailOperation_MoveFocused"); - /// /// Move to Junk /// public static string MailOperation_MoveJunk => Resources.GetTranslatedString(@"MailOperation_MoveJunk"); - /// /// Move to Other /// public static string MailOperation_MoveOther => Resources.GetTranslatedString(@"MailOperation_MoveOther"); - /// /// Navigate /// public static string MailOperation_Navigate => Resources.GetTranslatedString(@"MailOperation_Navigate"); - /// /// Print /// public static string MailOperation_Print => Resources.GetTranslatedString(@"MailOperation_Print"); - /// /// Reply /// public static string MailOperation_Reply => Resources.GetTranslatedString(@"MailOperation_Reply"); - /// /// Reply all /// public static string MailOperation_ReplyAll => Resources.GetTranslatedString(@"MailOperation_ReplyAll"); - /// /// Save As /// public static string MailOperation_SaveAs => Resources.GetTranslatedString(@"MailOperation_SaveAs"); - /// /// Set flag /// public static string MailOperation_SetFlag => Resources.GetTranslatedString(@"MailOperation_SetFlag"); - /// /// Unarchive /// public static string MailOperation_Unarchive => Resources.GetTranslatedString(@"MailOperation_Unarchive"); - /// /// Zoom /// public static string MailOperation_Zoom => Resources.GetTranslatedString(@"MailOperation_Zoom"); - /// /// {0} item(s) selected /// public static string MailsSelected => Resources.GetTranslatedString(@"MailsSelected"); - /// /// Mark as flagged/unflagged /// public static string MarkFlagUnflag => Resources.GetTranslatedString(@"MarkFlagUnflag"); - /// /// Mark as read/unread /// public static string MarkReadUnread => Resources.GetTranslatedString(@"MarkReadUnread"); - /// /// Manage Accounts /// public static string MenuManageAccounts => Resources.GetTranslatedString(@"MenuManageAccounts"); - /// /// New Mail /// public static string MenuNewMail => Resources.GetTranslatedString(@"MenuNewMail"); - /// /// accounts /// public static string MenuMergedAccountItemAccountsSuffix => Resources.GetTranslatedString(@"MenuMergedAccountItemAccountsSuffix"); - /// /// Rate Wino /// public static string MenuRate => Resources.GetTranslatedString(@"MenuRate"); - /// /// Settings /// public static string MenuSettings => Resources.GetTranslatedString(@"MenuSettings"); - /// /// Available Accounts /// public static string MergedAccountsAvailableAccountsTitle => Resources.GetTranslatedString(@"MergedAccountsAvailableAccountsTitle"); - /// /// More /// public static string More => Resources.GetTranslatedString(@"More"); - /// /// {0} is not a valid folder for this mail. /// public static string MoveMailDialog_InvalidFolderMessage => Resources.GetTranslatedString(@"MoveMailDialog_InvalidFolderMessage"); - /// /// Pick a folder /// public static string MoveMailDialog_Title => Resources.GetTranslatedString(@"MoveMailDialog_Title"); - /// /// Account Name /// public static string NewAccountDialog_AccountName => Resources.GetTranslatedString(@"NewAccountDialog_AccountName"); - /// /// Personal /// public static string NewAccountDialog_AccountNameDefaultValue => Resources.GetTranslatedString(@"NewAccountDialog_AccountNameDefaultValue"); - /// /// eg. Personal Mail /// public static string NewAccountDialog_AccountNamePlaceholder => Resources.GetTranslatedString(@"NewAccountDialog_AccountNamePlaceholder"); - /// /// Add New Account /// public static string NewAccountDialog_Title => Resources.GetTranslatedString(@"NewAccountDialog_Title"); - /// /// No message selected /// public static string NoMailSelected => Resources.GetTranslatedString(@"NoMailSelected"); - /// /// No messages match your search criteria /// public static string NoMessageCrieteria => Resources.GetTranslatedString(@"NoMessageCrieteria"); - /// /// This folder is empty /// public static string NoMessageEmptyFolder => Resources.GetTranslatedString(@"NoMessageEmptyFolder"); - /// /// You have {0} new mails /// public static string Notifications_MultipleNotificationsMessage => Resources.GetTranslatedString(@"Notifications_MultipleNotificationsMessage"); - /// /// New Mails /// public static string Notifications_MultipleNotificationsTitle => Resources.GetTranslatedString(@"Notifications_MultipleNotificationsTitle"); - /// /// Checkout new version {0} /// public static string Notifications_WinoUpdatedMessage => Resources.GetTranslatedString(@"Notifications_WinoUpdatedMessage"); - /// /// Wino Mail has been updated. /// public static string Notifications_WinoUpdatedTitle => Resources.GetTranslatedString(@"Notifications_WinoUpdatedTitle"); - /// /// Other /// public static string Other => Resources.GetTranslatedString(@"Other"); - /// /// Default /// public static string PaneLengthOption_Default => Resources.GetTranslatedString(@"PaneLengthOption_Default"); - /// /// Extra Large /// public static string PaneLengthOption_ExtraLarge => Resources.GetTranslatedString(@"PaneLengthOption_ExtraLarge"); - /// /// Large /// public static string PaneLengthOption_Large => Resources.GetTranslatedString(@"PaneLengthOption_Large"); - /// /// Medium /// public static string PaneLengthOption_Medium => Resources.GetTranslatedString(@"PaneLengthOption_Medium"); - /// /// Micro /// public static string PaneLengthOption_Micro => Resources.GetTranslatedString(@"PaneLengthOption_Micro"); - /// /// Small /// public static string PaneLengthOption_Small => Resources.GetTranslatedString(@"PaneLengthOption_Small"); - /// /// Photos /// public static string Photos => Resources.GetTranslatedString(@"Photos"); - /// /// Preparing folders /// public static string PreparingFoldersMessage => Resources.GetTranslatedString(@"PreparingFoldersMessage"); - /// /// Google Account /// public static string ProviderDetail_Gmail_Description => Resources.GetTranslatedString(@"ProviderDetail_Gmail_Description"); - /// /// Custom IMAP/SMTP server /// public static string ProviderDetail_IMAP_Description => Resources.GetTranslatedString(@"ProviderDetail_IMAP_Description"); - /// /// IMAP Server /// public static string ProviderDetail_IMAP_Title => Resources.GetTranslatedString(@"ProviderDetail_IMAP_Title"); - /// /// Protocol logs are available for diagnostics. /// public static string ProtocolLogAvailable_Message => Resources.GetTranslatedString(@"ProtocolLogAvailable_Message"); - /// /// Results /// public static string Results => Resources.GetTranslatedString(@"Results"); - /// /// Right /// public static string Right => Resources.GetTranslatedString(@"Right"); - /// /// up to date /// public static string SynchronizationFolderReport_Success => Resources.GetTranslatedString(@"SynchronizationFolderReport_Success"); - /// /// synchronization is failed /// public static string SynchronizationFolderReport_Failed => Resources.GetTranslatedString(@"SynchronizationFolderReport_Failed"); - /// /// Search /// public static string SearchBarPlaceholder => Resources.GetTranslatedString(@"SearchBarPlaceholder"); - /// /// Searching in /// public static string SearchingIn => Resources.GetTranslatedString(@"SearchingIn"); - /// /// Results /// public static string SearchPivotName => Resources.GetTranslatedString(@"SearchPivotName"); - /// /// Go to issue tracker GitHub repository. /// public static string SettingsAboutGithub_Description => Resources.GetTranslatedString(@"SettingsAboutGithub_Description"); - /// /// GitHub /// public static string SettingsAboutGithub_Title => Resources.GetTranslatedString(@"SettingsAboutGithub_Title"); - /// /// Append messages to Sent folder /// public static string SettingsAccountManagementAppendMessage_Title => Resources.GetTranslatedString(@"SettingsAccountManagementAppendMessage_Title"); - /// /// Create a copy of the message in Sent folder after the draft is sent. Enable this if you don't see your mails after you sent them in Sent folder. /// public static string SettingsAccountManagementAppendMessage_Description => Resources.GetTranslatedString(@"SettingsAccountManagementAppendMessage_Description"); - /// /// Edit Linked Inbox /// public static string SettingsEditLinkedInbox_Title => Resources.GetTranslatedString(@"SettingsEditLinkedInbox_Title"); - /// /// Add / remove accounts, rename or break the link between accounts. /// public static string SettingsEditLinkedInbox_Description => Resources.GetTranslatedString(@"SettingsEditLinkedInbox_Description"); - /// /// Version /// public static string SettingsAboutVersion => Resources.GetTranslatedString(@"SettingsAboutVersion"); - /// /// Lightweight mail client for Windows device families. /// public static string SettingsAboutWinoDescription => Resources.GetTranslatedString(@"SettingsAboutWinoDescription"); - /// /// Learn more about Wino. /// public static string SettingsAbout_Description => Resources.GetTranslatedString(@"SettingsAbout_Description"); - /// /// About /// public static string SettingsAbout_Title => Resources.GetTranslatedString(@"SettingsAbout_Title"); - /// /// Change application's accent color /// public static string SettingsAccentColor_Description => Resources.GetTranslatedString(@"SettingsAccentColor_Description"); - /// /// Accent Color /// public static string SettingsAccentColor_Title => Resources.GetTranslatedString(@"SettingsAccentColor_Title"); - /// /// Use my Windows accent color /// public static string SettingsAccentColor_UseWindowsAccentColor => Resources.GetTranslatedString(@"SettingsAccentColor_UseWindowsAccentColor"); - /// /// Change the name of the account. /// public static string SettingsAccountName_Description => Resources.GetTranslatedString(@"SettingsAccountName_Description"); - /// /// Account Name /// public static string SettingsAccountName_Title => Resources.GetTranslatedString(@"SettingsAccountName_Title"); - /// /// Personalize Wino with different custom application themes for your like. /// public static string SettingsApplicationTheme_Description => Resources.GetTranslatedString(@"SettingsApplicationTheme_Description"); - /// /// Application Theme /// public static string SettingsApplicationTheme_Title => Resources.GetTranslatedString(@"SettingsApplicationTheme_Title"); - /// /// Select a theme from Wino's own collection for your taste or apply your own themes. /// public static string SettingsAvailableThemes_Description => Resources.GetTranslatedString(@"SettingsAvailableThemes_Description"); - /// /// Available Themes /// public static string SettingsAvailableThemes_Title => Resources.GetTranslatedString(@"SettingsAvailableThemes_Title"); - /// /// Auto select next item /// public static string SettingsAutoSelectNextItem_Title => Resources.GetTranslatedString(@"SettingsAutoSelectNextItem_Title"); - /// /// Select the next item after you delete or move a mail. /// public static string SettingsAutoSelectNextItem_Description => Resources.GetTranslatedString(@"SettingsAutoSelectNextItem_Description"); - /// /// Create your own custom theme with custom wallpaper and accent color. /// public static string SettingsCustomTheme_Description => Resources.GetTranslatedString(@"SettingsCustomTheme_Description"); - /// /// Custom Theme /// public static string SettingsCustomTheme_Title => Resources.GetTranslatedString(@"SettingsCustomTheme_Title"); - /// /// Configure System Folders /// public static string SettingsConfigureSpecialFolders_Title => Resources.GetTranslatedString(@"SettingsConfigureSpecialFolders_Title"); - /// /// Set folders with special functions. Folders such as Archive, Inbox, and Drafts are essential for Wino to function properly. /// public static string SettingsConfigureSpecialFolders_Description => Resources.GetTranslatedString(@"SettingsConfigureSpecialFolders_Description"); - /// /// Configure /// public static string SettingConfigureSpecialFolders_Button => Resources.GetTranslatedString(@"SettingConfigureSpecialFolders_Button"); - /// /// Failed to setup system folders /// public static string Error_FailedToSetupSystemFolders_Title => Resources.GetTranslatedString(@"Error_FailedToSetupSystemFolders_Title"); - /// /// Delete all e-mails and credentials associated with this account. /// public static string SettingsDeleteAccount_Description => Resources.GetTranslatedString(@"SettingsDeleteAccount_Description"); - /// /// Delete this account /// public static string SettingsDeleteAccount_Title => Resources.GetTranslatedString(@"SettingsDeleteAccount_Title"); - /// /// Should Wino ask you for comfirmation every time you try to permanently delete a mail using Shift + Del keys? /// public static string SettingsDeleteProtection_Description => Resources.GetTranslatedString(@"SettingsDeleteProtection_Description"); - /// /// Permanent Delete Protection /// public static string SettingsDeleteProtection_Title => Resources.GetTranslatedString(@"SettingsDeleteProtection_Title"); - /// /// For developers /// public static string SettingsDiagnostics_Description => Resources.GetTranslatedString(@"SettingsDiagnostics_Description"); - /// /// Diagnostics /// public static string SettingsDiagnostics_Title => Resources.GetTranslatedString(@"SettingsDiagnostics_Title"); - /// /// Get regular development updates, join roadmap discussions and provide feedback. /// public static string SettingsDiscord_Description => Resources.GetTranslatedString(@"SettingsDiscord_Description"); - /// /// Discord Channel /// public static string SettingsDiscord_Title => Resources.GetTranslatedString(@"SettingsDiscord_Title"); - /// /// Element theme selection is disabled when application theme is selected other than Default. /// public static string SettingsElementThemeSelectionDisabled => Resources.GetTranslatedString(@"SettingsElementThemeSelectionDisabled"); - /// /// Select a Windows theme for Wino /// public static string SettingsElementTheme_Description => Resources.GetTranslatedString(@"SettingsElementTheme_Description"); - /// /// Element Theme /// public static string SettingsElementTheme_Title => Resources.GetTranslatedString(@"SettingsElementTheme_Title"); - /// /// Enable hover actions /// public static string SettingsEnableHoverActions_Title => Resources.GetTranslatedString(@"SettingsEnableHoverActions_Title"); - /// /// Enable this to provide details about IMAP connectivity issuses you had during IMAP server setup. /// public static string SettingsEnableIMAPLogs_Description => Resources.GetTranslatedString(@"SettingsEnableIMAPLogs_Description"); - /// /// Enable IMAP Protocol Logs /// public static string SettingsEnableIMAPLogs_Title => Resources.GetTranslatedString(@"SettingsEnableIMAPLogs_Title"); - /// /// I might need logs for crashes to diagnose issues you have opened in GitHub. None of the logs will expose your credentials or sensetive information to public. /// public static string SettingsEnableLogs_Description => Resources.GetTranslatedString(@"SettingsEnableLogs_Description"); - /// /// Enable Logs /// public static string SettingsEnableLogs_Title => Resources.GetTranslatedString(@"SettingsEnableLogs_Title"); - /// /// Enable Signature /// public static string SettingsEnableSignature => Resources.GetTranslatedString(@"SettingsEnableSignature"); - /// /// Set whether Wino should expand this account's folders on startup. /// public static string SettingsExpandOnStartup_Description => Resources.GetTranslatedString(@"SettingsExpandOnStartup_Description"); - /// /// Expand Menu on Startup /// public static string SettingsExpandOnStartup_Title => Resources.GetTranslatedString(@"SettingsExpandOnStartup_Title"); - /// /// Manage external content settings when rendering mails. /// public static string SettingsExternalContent_Description => Resources.GetTranslatedString(@"SettingsExternalContent_Description"); - /// /// External Content /// public static string SettingsExternalContent_Title => Resources.GetTranslatedString(@"SettingsExternalContent_Title"); - /// /// Set whether Inbox should be split into two as Focused - Other. /// public static string SettingsFocusedInbox_Description => Resources.GetTranslatedString(@"SettingsFocusedInbox_Description"); - /// /// Focused Inbox /// public static string SettingsFocusedInbox_Title => Resources.GetTranslatedString(@"SettingsFocusedInbox_Title"); - /// /// Enable or disable specific folders for synchronization. /// public static string SettingsFolderSync_Description => Resources.GetTranslatedString(@"SettingsFolderSync_Description"); - /// /// Folder Synchronization /// public static string SettingsFolderSync_Title => Resources.GetTranslatedString(@"SettingsFolderSync_Title"); - /// /// Folder Configuration /// public static string SettingsFolderOptions_Title => Resources.GetTranslatedString(@"SettingsFolderOptions_Title"); - /// /// Change individual folder settings like enable/disable sync or show/hide unread badge. /// public static string SettingsFolderOptions_Description => Resources.GetTranslatedString(@"SettingsFolderOptions_Description"); - /// /// Center Action /// public static string SettingsHoverActionCenter => Resources.GetTranslatedString(@"SettingsHoverActionCenter"); - /// /// Left Action /// public static string SettingsHoverActionLeft => Resources.GetTranslatedString(@"SettingsHoverActionLeft"); - /// /// Right Action /// public static string SettingsHoverActionRight => Resources.GetTranslatedString(@"SettingsHoverActionRight"); - /// /// Select 3 actions to show up when you hover over the mails with cursor. /// public static string SettingsHoverActions_Description => Resources.GetTranslatedString(@"SettingsHoverActions_Description"); - /// /// Hover Actions /// public static string SettingsHoverActions_Title => Resources.GetTranslatedString(@"SettingsHoverActions_Title"); - /// /// Change display language for Wino. /// public static string SettingsLanguage_Description => Resources.GetTranslatedString(@"SettingsLanguage_Description"); - /// /// Display Language /// public static string SettingsLanguage_Title => Resources.GetTranslatedString(@"SettingsLanguage_Title"); - /// /// Language & Time /// public static string SettingsLanguageTime_Title => Resources.GetTranslatedString(@"SettingsLanguageTime_Title"); - /// /// Wino display language, preferred time format. /// public static string SettingsLanguageTime_Description => Resources.GetTranslatedString(@"SettingsLanguageTime_Description"); - /// /// Categories /// public static string CategoriesFolderNameOverride => Resources.GetTranslatedString(@"CategoriesFolderNameOverride"); - /// /// More /// public static string MoreFolderNameOverride => Resources.GetTranslatedString(@"MoreFolderNameOverride"); - /// /// Settings /// public static string SettingsOptions_Title => Resources.GetTranslatedString(@"SettingsOptions_Title"); - /// /// Merge multiple accounts into one. See mails from one Inbox together. /// public static string SettingsLinkAccounts_Description => Resources.GetTranslatedString(@"SettingsLinkAccounts_Description"); - /// /// Create Linked Accounts /// public static string SettingsLinkAccounts_Title => Resources.GetTranslatedString(@"SettingsLinkAccounts_Title"); - /// /// Modify the current link with the new accounts. /// public static string SettingsLinkedAccountsSave_Description => Resources.GetTranslatedString(@"SettingsLinkedAccountsSave_Description"); - /// /// Save Changes /// public static string SettingsLinkedAccountsSave_Title => Resources.GetTranslatedString(@"SettingsLinkedAccountsSave_Title"); - /// /// Load images automatically /// public static string SettingsLoadImages_Title => Resources.GetTranslatedString(@"SettingsLoadImages_Title"); - /// /// Load styles automatically /// public static string SettingsLoadStyles_Title => Resources.GetTranslatedString(@"SettingsLoadStyles_Title"); - /// /// Adjust the spacing for listing mails. /// public static string SettingsMailSpacing_Description => Resources.GetTranslatedString(@"SettingsMailSpacing_Description"); - /// /// Mail Spacing /// public static string SettingsMailSpacing_Title => Resources.GetTranslatedString(@"SettingsMailSpacing_Title"); - /// /// Create Nested Folders /// public static string SettingsFolderMenuStyle_Title => Resources.GetTranslatedString(@"SettingsFolderMenuStyle_Title"); - /// /// Change whether account folders should be nested inside an account menu item or not. Toggle this off if you like the old menu system in Windows Mail /// public static string SettingsFolderMenuStyle_Description => Resources.GetTranslatedString(@"SettingsFolderMenuStyle_Description"); - /// /// Notifications, signatures, synchronization and other settings per account. /// public static string SettingsManageAccountSettings_Description => Resources.GetTranslatedString(@"SettingsManageAccountSettings_Description"); - /// /// Manage Account Settings /// public static string SettingsManageAccountSettings_Title => Resources.GetTranslatedString(@"SettingsManageAccountSettings_Title"); - /// /// Reorder Accounts /// public static string SettingsReorderAccounts_Title => Resources.GetTranslatedString(@"SettingsReorderAccounts_Title"); - /// /// Change the order of accounts in the account list. /// public static string SettingsReorderAccounts_Description => Resources.GetTranslatedString(@"SettingsReorderAccounts_Description"); - /// /// Move items to add new link or remove existing link. /// public static string SettingsManageLink_Description => Resources.GetTranslatedString(@"SettingsManageLink_Description"); - /// /// Manage Link /// public static string SettingsManageLink_Title => Resources.GetTranslatedString(@"SettingsManageLink_Title"); - /// /// Change what should happen to the selected item. /// public static string SettingsMarkAsRead_Description => Resources.GetTranslatedString(@"SettingsMarkAsRead_Description"); - /// /// Don't automatically mark item as read /// public static string SettingsMarkAsRead_DontChange => Resources.GetTranslatedString(@"SettingsMarkAsRead_DontChange"); - /// /// Seconds to wait: /// public static string SettingsMarkAsRead_SecondsToWait => Resources.GetTranslatedString(@"SettingsMarkAsRead_SecondsToWait"); - /// /// When viewed in the reading pane /// public static string SettingsMarkAsRead_Timer => Resources.GetTranslatedString(@"SettingsMarkAsRead_Timer"); - /// /// Mark item as read /// public static string SettingsMarkAsRead_Title => Resources.GetTranslatedString(@"SettingsMarkAsRead_Title"); - /// /// When selected /// public static string SettingsMarkAsRead_WhenSelected => Resources.GetTranslatedString(@"SettingsMarkAsRead_WhenSelected"); - /// /// Change how your messages should be organized in mail list. /// public static string SettingsMessageList_Description => Resources.GetTranslatedString(@"SettingsMessageList_Description"); - /// /// Message List /// public static string SettingsMessageList_Title => Resources.GetTranslatedString(@"SettingsMessageList_Title"); - /// /// You didn't setup any accounts yet. /// public static string SettingsNoAccountSetupMessage => Resources.GetTranslatedString(@"SettingsNoAccountSetupMessage"); - /// /// Turn on or off notifications for this account. /// public static string SettingsNotifications_Description => Resources.GetTranslatedString(@"SettingsNotifications_Description"); - /// /// Notifications /// public static string SettingsNotifications_Title => Resources.GetTranslatedString(@"SettingsNotifications_Title"); - /// /// Change the width of the mail list. /// public static string SettingsPaneLength_Description => Resources.GetTranslatedString(@"SettingsPaneLength_Description"); - /// /// Mail List Pane Length /// public static string SettingsPaneLength_Title => Resources.GetTranslatedString(@"SettingsPaneLength_Title"); - /// /// Show much more love ❤️ All donations are appreciated. /// public static string SettingsPaypal_Description => Resources.GetTranslatedString(@"SettingsPaypal_Description"); - /// /// Donate via PayPal /// public static string SettingsPaypal_Title => Resources.GetTranslatedString(@"SettingsPaypal_Title"); - /// /// Compact Mode /// public static string SettingsPersonalizationMailDisplayCompactMode => Resources.GetTranslatedString(@"SettingsPersonalizationMailDisplayCompactMode"); - /// /// Medium Mode /// public static string SettingsPersonalizationMailDisplayMediumMode => Resources.GetTranslatedString(@"SettingsPersonalizationMailDisplayMediumMode"); - /// /// Spacious Mode /// public static string SettingsPersonalizationMailDisplaySpaciousMode => Resources.GetTranslatedString(@"SettingsPersonalizationMailDisplaySpaciousMode"); - /// /// Change appearance of Wino as you like. /// public static string SettingsPersonalization_Description => Resources.GetTranslatedString(@"SettingsPersonalization_Description"); - /// /// Personalization /// public static string SettingsPersonalization_Title => Resources.GetTranslatedString(@"SettingsPersonalization_Title"); - /// /// Review privacy policy. /// public static string SettingsPrivacyPolicy_Description => Resources.GetTranslatedString(@"SettingsPrivacyPolicy_Description"); - /// /// Privacy Policy /// public static string SettingsPrivacyPolicy_Title => Resources.GetTranslatedString(@"SettingsPrivacyPolicy_Title"); - /// /// Mail rendering options. /// public static string SettingsReadingPane_Description => Resources.GetTranslatedString(@"SettingsReadingPane_Description"); - /// /// Reading Pane /// public static string SettingsReadingPane_Title => Resources.GetTranslatedString(@"SettingsReadingPane_Title"); - /// /// Default Reader Font /// public static string SettingsReaderFont_Title => Resources.GetTranslatedString(@"SettingsReaderFont_Title"); - /// /// Change the default font family and font size for reading mails. /// public static string SettingsReaderFontFamily_Description => Resources.GetTranslatedString(@"SettingsReaderFontFamily_Description"); - /// /// Font Family /// public static string SettingsFontFamily_Title => Resources.GetTranslatedString(@"SettingsFontFamily_Title"); - /// /// Font Size /// public static string SettingsFontSize_Title => Resources.GetTranslatedString(@"SettingsFontSize_Title"); - /// /// Preview /// public static string SettingsFontPreview_Title => Resources.GetTranslatedString(@"SettingsFontPreview_Title"); - /// /// Default Composer Font /// public static string SettingsComposerFont_Title => Resources.GetTranslatedString(@"SettingsComposerFont_Title"); - /// /// Change the default font family and font size for composing mails. /// public static string SettingsComposerFontFamily_Description => Resources.GetTranslatedString(@"SettingsComposerFontFamily_Description"); - /// /// Change the display name of the linked accounts. /// public static string SettingsRenameMergeAccount_Description => Resources.GetTranslatedString(@"SettingsRenameMergeAccount_Description"); - /// /// Rename /// public static string SettingsRenameMergeAccount_Title => Resources.GetTranslatedString(@"SettingsRenameMergeAccount_Title"); - /// /// This will allow you to click on the headers in messages list and go to specific date /// public static string SettingsSemanticZoom_Description => Resources.GetTranslatedString(@"SettingsSemanticZoom_Description"); - /// /// Semantic Zoom for Date Headers /// public static string SettingsSemanticZoom_Title => Resources.GetTranslatedString(@"SettingsSemanticZoom_Title"); - /// /// Hide/show thepreview text. /// public static string SettingsShowPreviewText_Description => Resources.GetTranslatedString(@"SettingsShowPreviewText_Description"); - /// /// Show Preview Text /// public static string SettingsShowPreviewText_Title => Resources.GetTranslatedString(@"SettingsShowPreviewText_Title"); - /// /// Hide/show the thumbnail sender pictures. /// public static string SettingsShowSenderPictures_Description => Resources.GetTranslatedString(@"SettingsShowSenderPictures_Description"); - /// /// Show Sender Avatars /// public static string SettingsShowSenderPictures_Title => Resources.GetTranslatedString(@"SettingsShowSenderPictures_Title"); - /// /// Display Clock Format in 24 Hours /// public static string SettingsPrefer24HourClock_Title => Resources.GetTranslatedString(@"SettingsPrefer24HourClock_Title"); - /// /// Mail recieve times will be displayed in 24 hour format instead of 12 (AM/PM) /// public static string SettingsPrefer24HourClock_Description => Resources.GetTranslatedString(@"SettingsPrefer24HourClock_Description"); - /// /// Manage account signatures /// public static string SettingsSignature_Description => Resources.GetTranslatedString(@"SettingsSignature_Description"); - /// /// Signature /// public static string SettingsSignature_Title => Resources.GetTranslatedString(@"SettingsSignature_Title"); - /// /// Primary account item to load Inbox at startup. /// public static string SettingsStartupItem_Description => Resources.GetTranslatedString(@"SettingsStartupItem_Description"); - /// /// Startup Item /// public static string SettingsStartupItem_Title => Resources.GetTranslatedString(@"SettingsStartupItem_Title"); - /// /// Show some love ❤️ /// public static string SettingsStore_Description => Resources.GetTranslatedString(@"SettingsStore_Description"); - /// /// Rate in Store /// public static string SettingsStore_Title => Resources.GetTranslatedString(@"SettingsStore_Title"); - /// /// Organize messages into conversation threads. /// public static string SettingsThreads_Description => Resources.GetTranslatedString(@"SettingsThreads_Description"); - /// /// Conversation Threading /// public static string SettingsThreads_Title => Resources.GetTranslatedString(@"SettingsThreads_Title"); - /// /// Remove the link between accounts. This will not delete your accounts. /// public static string SettingsUnlinkAccounts_Description => Resources.GetTranslatedString(@"SettingsUnlinkAccounts_Description"); - /// /// Unlink Accounts /// public static string SettingsUnlinkAccounts_Title => Resources.GetTranslatedString(@"SettingsUnlinkAccounts_Title"); - /// /// by date /// public static string SortingOption_Date => Resources.GetTranslatedString(@"SortingOption_Date"); - /// /// by name /// public static string SortingOption_Name => Resources.GetTranslatedString(@"SortingOption_Name"); - /// /// All feedbacks are appreciated and they will make much Wino better in the future. Would you like to rate Wino in Microsoft Store? /// public static string StoreRatingDialog_MessageFirstLine => Resources.GetTranslatedString(@"StoreRatingDialog_MessageFirstLine"); - /// /// Would you like to rate Wino Mail in Microsoft Store? /// public static string StoreRatingDialog_MessageSecondLine => Resources.GetTranslatedString(@"StoreRatingDialog_MessageSecondLine"); - /// /// Enjoying Wino? /// public static string StoreRatingDialog_Title => Resources.GetTranslatedString(@"StoreRatingDialog_Title"); - /// /// Archived messages will be moved to here. /// public static string SystemFolderConfigDialog_ArchiveFolderDescription => Resources.GetTranslatedString(@"SystemFolderConfigDialog_ArchiveFolderDescription"); - /// /// Archive Folder /// public static string SystemFolderConfigDialog_ArchiveFolderHeader => Resources.GetTranslatedString(@"SystemFolderConfigDialog_ArchiveFolderHeader"); - /// /// Deleted messages will be moved to here. /// public static string SystemFolderConfigDialog_DeletedFolderDescription => Resources.GetTranslatedString(@"SystemFolderConfigDialog_DeletedFolderDescription"); - /// /// Deleted Folder /// public static string SystemFolderConfigDialog_DeletedFolderHeader => Resources.GetTranslatedString(@"SystemFolderConfigDialog_DeletedFolderHeader"); - /// /// New mails/replies will be crafted in here. /// public static string SystemFolderConfigDialog_DraftFolderDescription => Resources.GetTranslatedString(@"SystemFolderConfigDialog_DraftFolderDescription"); - /// /// Draft Folder /// public static string SystemFolderConfigDialog_DraftFolderHeader => Resources.GetTranslatedString(@"SystemFolderConfigDialog_DraftFolderHeader"); - /// /// All spam/junk mails will be here. /// public static string SystemFolderConfigDialog_JunkFolderDescription => Resources.GetTranslatedString(@"SystemFolderConfigDialog_JunkFolderDescription"); - /// /// Junk/Spam Folder /// public static string SystemFolderConfigDialog_JunkFolderHeader => Resources.GetTranslatedString(@"SystemFolderConfigDialog_JunkFolderHeader"); - /// /// This IMAP server doesn't support SPECIAL-USE extension hence Wino couldn't setup the system folders properly. /// public static string SystemFolderConfigDialog_MessageFirstLine => Resources.GetTranslatedString(@"SystemFolderConfigDialog_MessageFirstLine"); - /// /// Please select the appropriate folders for specific functionalities. /// public static string SystemFolderConfigDialog_MessageSecondLine => Resources.GetTranslatedString(@"SystemFolderConfigDialog_MessageSecondLine"); - /// /// Folder that sent messages will be stored. /// public static string SystemFolderConfigDialog_SentFolderDescription => Resources.GetTranslatedString(@"SystemFolderConfigDialog_SentFolderDescription"); - /// /// Sent Folder /// public static string SystemFolderConfigDialog_SentFolderHeader => Resources.GetTranslatedString(@"SystemFolderConfigDialog_SentFolderHeader"); - /// /// Configure System Folders /// public static string SystemFolderConfigDialog_Title => Resources.GetTranslatedString(@"SystemFolderConfigDialog_Title"); - /// /// You can't assign Inbox folder to any other system folder. /// public static string SystemFolderConfigDialogValidation_InboxSelected => Resources.GetTranslatedString(@"SystemFolderConfigDialogValidation_InboxSelected"); - /// /// Some of the system folders are used more than once in the configuration. /// public static string SystemFolderConfigDialogValidation_DuplicateSystemFolders => Resources.GetTranslatedString(@"SystemFolderConfigDialogValidation_DuplicateSystemFolders"); - /// /// System Folders Setup /// public static string SystemFolderConfigSetupSuccess_Title => Resources.GetTranslatedString(@"SystemFolderConfigSetupSuccess_Title"); - /// /// System folders are successfully configured. /// public static string SystemFolderConfigSetupSuccess_Message => Resources.GetTranslatedString(@"SystemFolderConfigSetupSuccess_Message"); - /// /// Testing server connection... /// public static string TestingImapConnectionMessage => Resources.GetTranslatedString(@"TestingImapConnectionMessage"); - /// /// Today /// public static string Today => Resources.GetTranslatedString(@"Today"); - /// /// unknown address /// public static string UnknownAddress => Resources.GetTranslatedString(@"UnknownAddress"); - /// /// Unknown Date /// public static string UnknownDateHeader => Resources.GetTranslatedString(@"UnknownDateHeader"); - /// /// unknown Mail Group Address /// public static string UnknownGroupAddress => Resources.GetTranslatedString(@"UnknownGroupAddress"); - /// /// Unknown Sender /// public static string UnknownSender => Resources.GetTranslatedString(@"UnknownSender"); - /// /// Unsubscribe /// public static string Unsubscribe => Resources.GetTranslatedString(@"Unsubscribe"); - /// /// View Details /// public static string ViewContactDetails => Resources.GetTranslatedString(@"ViewContactDetails"); - /// /// Wino offers 3 accounts to start with for free. If you need more than 3 accounts, please upgrade /// public static string WinoUpgradeDescription => Resources.GetTranslatedString(@"WinoUpgradeDescription"); - /// /// Upgrade to Unlimited Accounts /// public static string WinoUpgradeMessage => Resources.GetTranslatedString(@"WinoUpgradeMessage"); - /// /// {0} out of {1} free accounts used. /// public static string WinoUpgradeRemainingAccountsMessage => Resources.GetTranslatedString(@"WinoUpgradeRemainingAccountsMessage"); - /// /// Yesterday /// public static string Yesterday => Resources.GetTranslatedString(@"Yesterday"); - /// /// Signature Editor /// public static string SignatureEditorDialog_Title => Resources.GetTranslatedString(@"SignatureEditorDialog_Title"); - /// /// Name your signature /// public static string SignatureEditorDialog_SignatureName_Placeholder => Resources.GetTranslatedString(@"SignatureEditorDialog_SignatureName_Placeholder"); - /// /// Signature name /// public static string SignatureEditorDialog_SignatureName_TitleNew => Resources.GetTranslatedString(@"SignatureEditorDialog_SignatureName_TitleNew"); - /// /// Current signature name: {0} /// public static string SignatureEditorDialog_SignatureName_TitleEdit => Resources.GetTranslatedString(@"SignatureEditorDialog_SignatureName_TitleEdit"); - /// /// Delete signature /// public static string SignatureDeleteDialog_Title => Resources.GetTranslatedString(@"SignatureDeleteDialog_Title"); - /// /// Are you sure you want to delete "{0}" signature? /// public static string SignatureDeleteDialog_Message => Resources.GetTranslatedString(@"SignatureDeleteDialog_Message"); - /// /// For New Messages /// public static string SettingsSignature_ForNewMessages_Title => Resources.GetTranslatedString(@"SettingsSignature_ForNewMessages_Title"); - /// /// For Replies/Forwards /// public static string SettingsSignature_ForFollowingMessages_Title => Resources.GetTranslatedString(@"SettingsSignature_ForFollowingMessages_Title"); - /// /// Signature defaults /// public static string SettingsSignature_SignatureDefaults => Resources.GetTranslatedString(@"SettingsSignature_SignatureDefaults"); - /// /// Signatures /// public static string SettingsSignature_Signatures => Resources.GetTranslatedString(@"SettingsSignature_Signatures"); - /// /// Add custom signature /// public static string SettingsSignature_AddCustomSignature_Title => Resources.GetTranslatedString(@"SettingsSignature_AddCustomSignature_Title"); - /// /// Add signature /// public static string SettingsSignature_AddCustomSignature_Button => Resources.GetTranslatedString(@"SettingsSignature_AddCustomSignature_Button"); - /// /// Edit signature /// public static string SettingsSignature_EditSignature_Title => Resources.GetTranslatedString(@"SettingsSignature_EditSignature_Title"); - /// /// Delete signature /// public static string SettingsSignature_DeleteSignature_Title => Resources.GetTranslatedString(@"SettingsSignature_DeleteSignature_Title"); - /// /// None /// public static string SettingsSignature_NoneSignatureName => Resources.GetTranslatedString(@"SettingsSignature_NoneSignatureName"); - -} + } } diff --git a/Wino.Core.UWP/Services/NativeAppService.cs b/Wino.Core.UWP/Services/NativeAppService.cs index 54ac5bff..27d4b3cc 100644 --- a/Wino.Core.UWP/Services/NativeAppService.cs +++ b/Wino.Core.UWP/Services/NativeAppService.cs @@ -77,11 +77,11 @@ namespace Wino.Services return new GoogleAuthorizationRequest(state, code_verifier, code_challenge); } - public async Task GetQuillEditorBundlePathAsync() + public async Task GetEditorBundlePathAsync() { if (string.IsNullOrEmpty(_editorBundlePath)) { - var editorFileFromBundle = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///JS/Quill/full.html")) + var editorFileFromBundle = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///JS/editor.html")) .AsTask() .ConfigureAwait(false); diff --git a/Wino.Core/Services/MailService.cs b/Wino.Core/Services/MailService.cs index 8c1a8305..b53198b3 100644 --- a/Wino.Core/Services/MailService.cs +++ b/Wino.Core/Services/MailService.cs @@ -670,16 +670,13 @@ namespace Wino.Core.Services } message.Headers.Add("Thread-Topic", referenceMessage.Subject); - } - var previewer = new HtmlTextPreviewer(); + builder.HtmlBody = CreateHtmlForReferencingMessage(referenceMessage); + } if (reason == DraftCreationReason.Forward) { - var visitor = _mimeFileService.CreateHTMLPreviewVisitor(referenceMessage, string.Empty); - visitor.Visit(referenceMessage); - - builder.HtmlBody = visitor.HtmlBody; + builder.HtmlBody = CreateHtmlForReferencingMessage(referenceMessage); } // Append signatures if needed. @@ -695,11 +692,11 @@ namespace Wino.Core.Services if (string.IsNullOrWhiteSpace(builder.HtmlBody)) { - builder.HtmlBody = @$"

{signature.HtmlBody}"; + builder.HtmlBody = $"


{signature.HtmlBody}"; } else { - builder.HtmlBody += @$"{signature.HtmlBody}"; + builder.HtmlBody = $"


{signature.HtmlBody}" + builder.HtmlBody; } } } @@ -772,6 +769,37 @@ namespace Wino.Core.Services } return message; + + // Generates html representation of To/Cc/From/Time and so on from referenced message. + string CreateHtmlForReferencingMessage(MimeMessage referenceMessage) + { + var htmlMimeInfo = string.Empty; + // Separation Line + htmlMimeInfo += "


"; + + var visitor = _mimeFileService.CreateHTMLPreviewVisitor(referenceMessage, string.Empty); + visitor.Visit(referenceMessage); + + htmlMimeInfo += $""" +
+ + From: {ParticipantsToHtml(referenceMessage.From)}
+ Sent: {referenceMessage.Date.ToLocalTime()}
+ To: {ParticipantsToHtml(referenceMessage.To)}
+ {(referenceMessage.Cc.Count > 0 ? $"Cc: {ParticipantsToHtml(referenceMessage.Cc)}
" : string.Empty)} + Subject: {referenceMessage.Subject} +
+
 
+ {visitor.HtmlBody} +
+ """; + + return htmlMimeInfo; + } + + static string ParticipantsToHtml(InternetAddressList internetAddresses) => + string.Join("; ", internetAddresses.Mailboxes + .Select(x => $"{x.Name ?? Translator.UnknownSender} <{x.Address ?? Translator.UnknownAddress}>")); } public async Task MapLocalDraftAsync(Guid accountId, Guid localDraftCopyUniqueId, string newMailCopyId, string newDraftId, string newThreadId) diff --git a/Wino.Mail.ViewModels/ComposePageViewModel.cs b/Wino.Mail.ViewModels/ComposePageViewModel.cs index 5b1613f9..be582c1f 100644 --- a/Wino.Mail.ViewModels/ComposePageViewModel.cs +++ b/Wino.Mail.ViewModels/ComposePageViewModel.cs @@ -72,7 +72,10 @@ namespace Wino.Mail.ViewModels private bool isDraggingOverComposerGrid; [ObservableProperty] - private bool isDraggingOverDropZone; + private bool isDraggingOverFilesDropZone; + + [ObservableProperty] + private bool isDraggingOverImagesDropZone; public ObservableCollection IncludedAttachments { get; set; } = new ObservableCollection(); diff --git a/Wino.Mail/Dialogs/SignatureEditorDialog.xaml b/Wino.Mail/Dialogs/SignatureEditorDialog.xaml index c250b2c0..3326191c 100644 --- a/Wino.Mail/Dialogs/SignatureEditorDialog.xaml +++ b/Wino.Mail/Dialogs/SignatureEditorDialog.xaml @@ -137,6 +137,9 @@ + + + - - - - - - - - - + + @@ -238,43 +233,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Sent from Wino Mail for Windows -
- - - - - - - - - - - - - - - diff --git a/Wino.Mail/JS/Quill/full.html b/Wino.Mail/JS/Quill/full.html deleted file mode 100644 index 1433d772..00000000 --- a/Wino.Mail/JS/Quill/full.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - - - - - - - - - - -
- - -
- - -
- -
- - - - - - - - - - - - - - - - diff --git a/Wino.Mail/JS/Quill/highlight.min.js b/Wino.Mail/JS/Quill/highlight.min.js deleted file mode 100644 index f30a334c..00000000 --- a/Wino.Mail/JS/Quill/highlight.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! highlight.js v9.12.0 | BSD3 License | git.io/hljslicense */ -!function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs}))}(function(e){function t(e){return e.replace(/&/g,"&").replace(//g,">")}function r(e){return e.nodeName.toLowerCase()}function a(e,t){var r=e&&e.exec(t);return r&&0===r.index}function n(e){return E.test(e)}function i(e){var t,r,a,i,s=e.className+" ";if(s+=e.parentNode?e.parentNode.className:"",r=M.exec(s))return w(r[1])?r[1]:"no-highlight";for(s=s.split(/\s+/),t=0,a=s.length;a>t;t++)if(i=s[t],n(i)||w(i))return i}function s(e){var t,r={},a=Array.prototype.slice.call(arguments,1);for(t in e)r[t]=e[t];return a.forEach(function(e){for(t in e)r[t]=e[t]}),r}function c(e){var t=[];return function a(e,n){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?n+=i.nodeValue.length:1===i.nodeType&&(t.push({event:"start",offset:n,node:i}),n=a(i,n),r(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:n,node:i}));return n}(e,0),t}function o(e,a,n){function i(){return e.length&&a.length?e[0].offset!==a[0].offset?e[0].offset"}function c(e){u+=""}function o(e){("start"===e.event?s:c)(e.node)}for(var l=0,u="",d=[];e.length||a.length;){var b=i();if(u+=t(n.substring(l,b[0].offset)),l=b[0].offset,b===e){d.reverse().forEach(c);do o(b.splice(0,1)[0]),b=i();while(b===e&&b.length&&b[0].offset===l);d.reverse().forEach(s)}else"start"===b[0].event?d.push(b[0].node):d.pop(),o(b.splice(0,1)[0])}return u+t(n.substr(l))}function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(t){return s(e,{v:null},t)})),e.cached_variants||e.eW&&[s(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function r(r,a){return new RegExp(t(r),"m"+(e.cI?"i":"")+(a?"g":""))}function a(n,i){if(!n.compiled){if(n.compiled=!0,n.k=n.k||n.bK,n.k){var s={},c=function(t,r){e.cI&&(r=r.toLowerCase()),r.split(" ").forEach(function(e){var r=e.split("|");s[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof n.k?c("keyword",n.k):k(n.k).forEach(function(e){c(e,n.k[e])}),n.k=s}n.lR=r(n.l||/\w+/,!0),i&&(n.bK&&(n.b="\\b("+n.bK.split(" ").join("|")+")\\b"),n.b||(n.b=/\B|\b/),n.bR=r(n.b),n.e||n.eW||(n.e=/\B|\b/),n.e&&(n.eR=r(n.e)),n.tE=t(n.e)||"",n.eW&&i.tE&&(n.tE+=(n.e?"|":"")+i.tE)),n.i&&(n.iR=r(n.i)),null==n.r&&(n.r=1),n.c||(n.c=[]),n.c=Array.prototype.concat.apply([],n.c.map(function(e){return l("self"===e?n:e)})),n.c.forEach(function(e){a(e,n)}),n.starts&&a(n.starts,i);var o=n.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([n.tE,n.i]).map(t).filter(Boolean);n.t=o.length?r(o.join("|"),!0):{exec:function(){return null}}}}a(e)}function d(e,r,n,i){function s(e,t){var r,n;for(r=0,n=t.c.length;n>r;r++)if(a(t.c[r].bR,e))return t.c[r]}function c(e,t){if(a(e.eR,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?c(e.parent,t):void 0}function o(e,t){return!n&&a(t.iR,e)}function l(e,t){var r=v.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(r)&&e.k[r]}function p(e,t,r,a){var n=a?"":L.classPrefix,i='',i+t+s}function m(){var e,r,a,n;if(!N.k)return t(E);for(n="",r=0,N.lR.lastIndex=0,a=N.lR.exec(E);a;)n+=t(E.substring(r,a.index)),e=l(N,a),e?(M+=e[1],n+=p(e[0],t(a[0]))):n+=t(a[0]),r=N.lR.lastIndex,a=N.lR.exec(E);return n+t(E.substr(r))}function f(){var e="string"==typeof N.sL;if(e&&!x[N.sL])return t(E);var r=e?d(N.sL,E,!0,k[N.sL]):b(E,N.sL.length?N.sL:void 0);return N.r>0&&(M+=r.r),e&&(k[N.sL]=r.top),p(r.language,r.value,!1,!0)}function g(){C+=null!=N.sL?f():m(),E=""}function _(e){C+=e.cN?p(e.cN,"",!0):"",N=Object.create(e,{parent:{value:N}})}function h(e,t){if(E+=e,null==t)return g(),0;var r=s(t,N);if(r)return r.skip?E+=t:(r.eB&&(E+=t),g(),r.rB||r.eB||(E=t)),_(r,t),r.rB?0:t.length;var a=c(N,t);if(a){var n=N;n.skip?E+=t:(n.rE||n.eE||(E+=t),g(),n.eE&&(E=t));do N.cN&&(C+=R),N.skip||(M+=N.r),N=N.parent;while(N!==a.parent);return a.starts&&_(a.starts,""),n.rE?0:t.length}if(o(t,N))throw new Error('Illegal lexeme "'+t+'" for mode "'+(N.cN||"")+'"');return E+=t,t.length||1}var v=w(e);if(!v)throw new Error('Unknown language: "'+e+'"');u(v);var y,N=i||v,k={},C="";for(y=N;y!==v;y=y.parent)y.cN&&(C=p(y.cN,"",!0)+C);var E="",M=0;try{for(var B,S,$=0;;){if(N.t.lastIndex=$,B=N.t.exec(r),!B)break;S=h(r.substring($,B.index),B[0]),$=B.index+S}for(h(r.substr($)),y=N;y.parent;y=y.parent)y.cN&&(C+=R);return{r:M,value:C,language:e,top:N}}catch(A){if(A.message&&-1!==A.message.indexOf("Illegal"))return{r:0,value:t(r)};throw A}}function b(e,r){r=r||L.languages||k(x);var a={r:0,value:t(e)},n=a;return r.filter(w).forEach(function(t){var r=d(t,e,!1);r.language=t,r.r>n.r&&(n=r),r.r>a.r&&(n=a,a=r)}),n.language&&(a.second_best=n),a}function p(e){return L.tabReplace||L.useBR?e.replace(B,function(e,t){return L.useBR&&"\n"===e?"
":L.tabReplace?t.replace(/\t/g,L.tabReplace):""}):e}function m(e,t,r){var a=t?C[t]:r,n=[e.trim()];return e.match(/\bhljs\b/)||n.push("hljs"),-1===e.indexOf(a)&&n.push(a),n.join(" ").trim()}function f(e){var t,r,a,s,l,u=i(e);n(u)||(L.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,l=t.textContent,a=u?d(u,l,!0):b(l),r=c(t),r.length&&(s=document.createElementNS("http://www.w3.org/1999/xhtml","div"),s.innerHTML=a.value,a.value=o(r,c(s),l)),a.value=p(a.value),e.innerHTML=a.value,e.className=m(e.className,u,a.language),e.result={language:a.language,re:a.r},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.r}))}function g(e){L=s(L,e)}function _(){if(!_.called){_.called=!0;var e=document.querySelectorAll("pre code");N.forEach.call(e,f)}}function h(){addEventListener("DOMContentLoaded",_,!1),addEventListener("load",_,!1)}function v(t,r){var a=x[t]=r(e);a.aliases&&a.aliases.forEach(function(e){C[e]=t})}function y(){return k(x)}function w(e){return e=(e||"").toLowerCase(),x[e]||x[C[e]]}var N=[],k=Object.keys,x={},C={},E=/^(no-?highlight|plain|text)$/i,M=/\blang(?:uage)?-([\w-]+)\b/i,B=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,R="
",L={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=b,e.fixMarkup=p,e.highlightBlock=f,e.configure=g,e.initHighlighting=_,e.initHighlightingOnLoad=h,e.registerLanguage=v,e.listLanguages=y,e.getLanguage=w,e.inherit=s,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.C=function(t,r,a){var n=e.inherit({cN:"comment",b:t,e:r,c:[]},a||{});return n.c.push(e.PWM),n.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),n},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),e.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,r,a,t]}}),e.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},r="[A-Za-z$_][0-9A-Za-z$_]*",a={cN:"subst",b:/#\{/,e:/}/,k:t},n=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,a]},{b:/"/,e:/"/,c:[e.BE,a]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[a,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+r},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];a.c=n;var i=e.inherit(e.TM,{b:r}),s="(\\(.*\\))?\\s*\\B[-=]>",c={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(n)}]};return{aliases:["coffee","cson","iced"],k:t,i:/\/\*/,c:n.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,c]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[c]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{b:r+":",e:":",rB:!0,rE:!0,r:0}])}}),e.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U)?L?"',e:'"',i:"\\n",c:[e.BE]},{b:'(u8?|U)?R"',e:'"',c:[e.BE]},{b:"'\\\\?.",e:"'",i:"."}]},a={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},n={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},e.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},e.CLCM,e.CBCM]},i=e.IR+"\\s*\\(",s={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},c=[t,e.CLCM,e.CBCM,a,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:s,i:"",k:s,c:["self",t]},{b:e.IR+"::",k:s},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:s,c:c.concat([{b:/\(/,e:/\)/,k:s,c:c.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+i,rB:!0,e:/[{;=]/,eE:!0,k:s,i:/[^\w\s\*&]/,c:[{b:i,rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:s,r:0,c:[e.CLCM,e.CBCM,r,a,t]},e.CLCM,e.CBCM,n]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b://,c:["self"]},e.TM]}]),exports:{preprocessor:n,strings:r,k:s}}}),e.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},r={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},a=e.inherit(r,{i:/\n/}),n={cN:"subst",b:"{",e:"}",k:t},i=e.inherit(n,{i:/\n/}),s={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,i]},c={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},n]},o=e.inherit(c,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},i]});n.c=[c,s,r,e.ASM,e.QSM,e.CNM,e.CBCM],i.c=[o,s,a,e.ASM,e.QSM,e.CNM,e.inherit(e.CBCM,{i:/\n/})];var l={v:[c,s,r,e.ASM,e.QSM]},u=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},l,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",r:0},{cN:"function",b:"("+u+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,r:0,c:[l,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}}),e.registerLanguage("css",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",r={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:t,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}}),e.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}}),e.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),e.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}}),e.registerLanguage("java",function(e){var t="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",r=t+"(<"+t+"(\\s*,\\s*"+t+")*>)?",a="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",i={cN:"number",b:n,r:0};return{aliases:["jsp"],k:a,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+r+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:a,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:a,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},i,{cN:"meta",b:"@[A-Za-z]+"}]}}),e.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",r={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:r,c:[]},i={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,i,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:r,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:t+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:t,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+t+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:t},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}}),e.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:r,k:t},n={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(a,{b:/:/})],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return r.splice(r.length,0,n,i),{c:r,k:t,i:"\\S"}}),e.registerLanguage("makefile",function(e){var t={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[r],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[r],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},r]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}}),e.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),e.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},r={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:r,l:a,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:a,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}}),e.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,a.c=s,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:s}}),e.registerLanguage("php",function(e){var t={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"meta",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[r]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},r,{cN:"keyword",b:/\$this\b/},t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),e.registerLanguage("python",function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},r={cN:"meta",b:/^(>>>|\.\.\.) /},a={cN:"subst",b:/\{/,e:/\}/,k:t,i:/#/},n={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[r],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[r,a]},{b:/(fr|rf|f)"""/,e:/"""/,c:[r,a]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[a]},{b:/(fr|rf|f)"/,e:/"/,c:[a]},e.ASM,e.QSM]},i={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},s={cN:"params",b:/\(/,e:/\)/,c:["self",r,i,n]};return a.c=[n,i,r],{aliases:["py","gyp"],k:t,i:/(<\/|->|\?)|=>/,c:[r,i,n,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,s,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),e.registerLanguage("ruby",function(e){ -var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},a={cN:"doctag",b:"@[A-Za-z]+"},n={b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},o={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:t}),o].concat(i)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l,o.c=l;var u="[>?]>",d="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",p=[{b:/^\s*=>/,starts:{e:"$",c:l}},{cN:"meta",b:"^("+u+"|"+d+"|"+b+")",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:i.concat(p).concat(l)}}),e.registerLanguage("shell",function(e){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}}),e.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*#]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}}),e}); \ No newline at end of file diff --git a/Wino.Mail/JS/Quill/image-resize.min.js b/Wino.Mail/JS/Quill/image-resize.min.js deleted file mode 100644 index 804145d5..00000000 --- a/Wino.Mail/JS/Quill/image-resize.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ImageResize=e():t.ImageResize=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=38)}([function(t,e){function n(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}t.exports=n},function(t,e,n){var o=n(22),r="object"==typeof self&&self&&self.Object===Object&&self,i=o||r||Function("return this")();t.exports=i},function(t,e){function n(t){return null!=t&&"object"==typeof t}t.exports=n},function(t,e,n){function o(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t-1&&t%1==0&&t<=o}var o=9007199254740991;t.exports=n},function(t,e,n){var o=n(49),r=n(54),i=n(86),a=i&&i.isTypedArray,s=a?r(a):o;t.exports=s},function(t,e,n){function o(t){return a(t)?r(t,!0):i(t)}var r=n(43),i=n(50),a=n(12);t.exports=o},function(t,e,n){"use strict";e.a={modules:["DisplaySize","Toolbar","Resize"],overlayStyles:{position:"absolute",boxSizing:"border-box",border:"1px dashed #444"},handleStyles:{position:"absolute",height:"12px",width:"12px",backgroundColor:"white",border:"1px solid #777",boxSizing:"border-box",opacity:"0.80"},displayStyles:{position:"absolute",font:"12px/1.0 Arial, Helvetica, sans-serif",padding:"4px 8px",textAlign:"center",backgroundColor:"white",color:"#333",border:"1px solid #777",boxSizing:"border-box",opacity:"0.80",cursor:"default"},toolbarStyles:{position:"absolute",top:"-12px",right:"0",left:"0",height:"0",minWidth:"100px",font:"12px/1.0 Arial, Helvetica, sans-serif",textAlign:"center",color:"#333",boxSizing:"border-box",cursor:"default"},toolbarButtonStyles:{display:"inline-block",width:"24px",height:"24px",background:"white",border:"1px solid #999",verticalAlign:"middle"},toolbarButtonSvgStyles:{fill:"#444",stroke:"#444",strokeWidth:"2"}}},function(t,e,n){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=n(9);n.d(e,"a",function(){return s});var s=function(t){function e(){var t,n,i,a;o(this,e);for(var s=arguments.length,u=Array(s),c=0;c120&&t[1]>30)Object.assign(i.display.style,{right:"4px",bottom:"4px",left:"auto"});else if("right"==i.img.style.float){var e=i.display.getBoundingClientRect();Object.assign(i.display.style,{right:"auto",bottom:"-"+(e.height+4)+"px",left:"-"+(e.width+4)+"px"})}else{var n=i.display.getBoundingClientRect();Object.assign(i.display.style,{right:"-"+(n.width+4)+"px",bottom:"-"+(n.height+4)+"px",left:"auto"})}}},i.getCurrentSize=function(){return[i.img.width,Math.round(i.img.width/i.img.naturalWidth*i.img.naturalHeight)]},a=n,r(i,a)}return i(e,t),e}(a.a)},function(t,e,n){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=n(9);n.d(e,"a",function(){return s});var s=function(t){function e(){var t,n,i,a;o(this,e);for(var s=arguments.length,u=Array(s),c=0;c0&&(o.style.borderLeftWidth="0"),Object.assign(o.children[0].style,i.options.toolbarButtonSvgStyles),e.isApplied()&&i._selectButton(o),i.toolbar.appendChild(o)})},i._selectButton=function(t){t.style.filter="invert(20%)"},a=n,r(i,a)}return i(e,t),e}(p.a)},function(t,e,n){var o=n(17),r=n(20),i=n(63),a=n(101),s=r(function(t){return t.push(void 0,i),o(a,void 0,t)});t.exports=s},function(t,e,n){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=n(37),i=n.n(r),a=n(33),s=n(34),u=n(36),c=n(35),l={DisplaySize:s.a,Toolbar:u.a,Resize:c.a},f=function t(e){var n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};o(this,t),this.initializeModules=function(){n.removeModules(),n.modules=n.moduleClasses.map(function(t){return new(l[t]||t)(n)}),n.modules.forEach(function(t){t.onCreate()}),n.onUpdate()},this.onUpdate=function(){n.repositionElements(),n.modules.forEach(function(t){t.onUpdate()})},this.removeModules=function(){n.modules.forEach(function(t){t.onDestroy()}),n.modules=[]},this.handleClick=function(t){if(t.target&&t.target.tagName&&"IMG"===t.target.tagName.toUpperCase()){if(n.img===t.target)return;n.img&&n.hide(),n.show(t.target)}else n.img&&n.hide()},this.show=function(t){n.img=t,n.showOverlay(),n.initializeModules()},this.showOverlay=function(){n.overlay&&n.hideOverlay(),n.quill.setSelection(null),n.setUserSelect("none"),document.addEventListener("keyup",n.checkImage,!0),n.quill.root.addEventListener("input",n.checkImage,!0),n.overlay=document.createElement("div"),Object.assign(n.overlay.style,n.options.overlayStyles),n.quill.root.parentNode.appendChild(n.overlay),n.repositionElements()},this.hideOverlay=function(){n.overlay&&(n.quill.root.parentNode.removeChild(n.overlay),n.overlay=void 0,document.removeEventListener("keyup",n.checkImage),n.quill.root.removeEventListener("input",n.checkImage),n.setUserSelect(""))},this.repositionElements=function(){if(n.overlay&&n.img){var t=n.quill.root.parentNode,e=n.img.getBoundingClientRect(),o=t.getBoundingClientRect();Object.assign(n.overlay.style,{left:e.left-o.left-1+t.scrollLeft+"px",top:e.top-o.top+t.scrollTop+"px",width:e.width+"px",height:e.height+"px"})}},this.hide=function(){n.hideOverlay(),n.removeModules(),n.img=void 0},this.setUserSelect=function(t){["userSelect","mozUserSelect","webkitUserSelect","msUserSelect"].forEach(function(e){n.quill.root.style[e]=t,document.documentElement.style[e]=t})},this.checkImage=function(t){n.img&&(46!=t.keyCode&&8!=t.keyCode||window.Quill.find(n.img).deleteAt(0),n.hide())},this.quill=e;var s=!1;r.modules&&(s=r.modules.slice()),this.options=i()({},r,a.a),s!==!1&&(this.options.modules=s),document.execCommand("enableObjectResizing",!1,"false"),this.quill.root.addEventListener("click",this.handleClick,!1),this.quill.root.parentNode.style.position=this.quill.root.parentNode.style.position||"relative",this.moduleClasses=this.options.modules,console.log("this.options.modules",this.options.modules),this.modules=[]};e.default=f,window.Quill&&window.Quill.register("modules/imageResize",f)},function(t,e,n){function o(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e1?n[r-1]:void 0,s=r>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(r--,a):void 0,s&&i(n[0],n[1],s)&&(a=r<3?void 0:a,r=1),e=Object(e);++o-1}var r=n(4);t.exports=o},function(t,e,n){function o(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}var r=n(4);t.exports=o},function(t,e,n){function o(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}var r=n(39),i=n(3),a=n(15);t.exports=o},function(t,e,n){function o(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}var r=n(6);t.exports=o},function(t,e,n){function o(t){return r(this,t).get(t)}var r=n(6);t.exports=o},function(t,e,n){function o(t){return r(this,t).has(t)}var r=n(6);t.exports=o},function(t,e,n){function o(t,e){var n=r(this,t),o=n.size;return n.set(t,e),this.size+=n.size==o?0:1,this}var r=n(6);t.exports=o},function(t,e){function n(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}t.exports=n},function(t,e,n){(function(t){var o=n(22),r="object"==typeof e&&e&&!e.nodeType&&e,i=r&&"object"==typeof t&&t&&!t.nodeType&&t,a=i&&i.exports===r,s=a&&o.process,u=function(){try{return s&&s.binding&&s.binding("util")}catch(t){}}();t.exports=u}).call(e,n(14)(t))},function(t,e){function n(t){return r.call(t)}var o=Object.prototype,r=o.toString;t.exports=n},function(t,e){function n(t,e){return function(n){return t(e(n))}}t.exports=n},function(t,e,n){function o(t,e,n){return e=i(void 0===e?t.length-1:e,0),function(){for(var o=arguments,a=-1,s=i(o.length-e,0),u=Array(s);++a0){if(++e>=o)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var o=800,r=16,i=Date.now;t.exports=n},function(t,e,n){function o(){this.__data__=new r,this.size=0}var r=n(3);t.exports=o},function(t,e){function n(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}t.exports=n},function(t,e){function n(t){return this.__data__.get(t)}t.exports=n},function(t,e){function n(t){return this.__data__.has(t)}t.exports=n},function(t,e,n){function o(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length\n \n \n \n'},function(t,e){t.exports='\n \n \n \n'},function(t,e){t.exports='\n \n \n \n'},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n}])}); \ No newline at end of file diff --git a/Wino.Mail/JS/Quill/katex.min.css b/Wino.Mail/JS/Quill/katex.min.css deleted file mode 100644 index d6fb8374..00000000 --- a/Wino.Mail/JS/Quill/katex.min.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right} \ No newline at end of file diff --git a/Wino.Mail/JS/Quill/katex.min.js b/Wino.Mail/JS/Quill/katex.min.js deleted file mode 100644 index 66c08216..00000000 --- a/Wino.Mail/JS/Quill/katex.min.js +++ /dev/null @@ -1,4 +0,0 @@ -(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function a(e,t,r){function i(s,l){if(!t[s]){if(!e[s]){var o=typeof require=="function"&&require;if(!l&&o)return o(s,!0);if(n)return n(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var p=t[s]={exports:{}};e[s][0].call(p.exports,function(t){var r=e[s][1][t];return i(r?r:t)},p,p.exports,a,e,t,r)}return t[s].exports}var n=typeof require=="function"&&require;for(var s=0;s15){o="\u2026"+s.slice(i-15,i)}else{o=s.slice(0,i)}var u;if(n+15v){return this.parseFunction(i)}else{throw new p("Got function '"+i.result+"' with no arguments "+"as "+e,t)}}else{return i.result}};h.prototype.handleUnsupportedCmd=function(){var e=this.nextToken.text;var t=[];for(var r=0;ri){c=this.parseFunction(h)}else{throw new p("Got function '"+h.result+"' as "+"argument to '"+e+"'",o)}}else{c=h.result}s.push(c);n.push(this.pos)}s.push(n);return s};h.prototype.parseGroupOfType=function(e,t){var r=this.mode;if(e==="original"){e=r}if(e==="color"){return this.parseColorGroup(t)}if(e==="size"){return this.parseSizeGroup(t)}this.switchMode(e);if(e==="text"){while(this.nextToken.text===" "){this.consume()}}var a=this.parseGroup(t);this.switchMode(r);return a};h.prototype.parseStringGroup=function(e,t){if(t&&this.nextToken.text!=="["){return null}var r=this.mode;this.mode="text";this.expect(t?"[":"{");var a="";var i=this.nextToken;var n=i;while(this.nextToken.text!==(t?"]":"}")){if(this.nextToken.text==="EOF"){throw new p("Unexpected end of input in "+e,i.range(this.nextToken,a))}n=this.nextToken;a+=n.text;this.consume()}this.mode=r;this.expect(t?"]":"}");return i.range(n,a)};h.prototype.parseRegexGroup=function(e,t){var r=this.mode;this.mode="text";var a=this.nextToken;var i=a;var n="";while(this.nextToken.text!=="EOF"&&e.test(n+this.nextToken.text)){i=this.nextToken;n+=i.text;this.consume()}if(n===""){throw new p("Invalid "+t+": '"+a.text+"'",a)}this.mode=r;return a.range(i,n)};h.prototype.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(!t){return null}var r=/^(#[a-z0-9]+|[a-z]+)$/i.exec(t.text);if(!r){throw new p("Invalid color: '"+t.text+"'",t)}return new m(new c("color",r[0],this.mode),false)};h.prototype.parseSizeGroup=function(e){var t;if(!e&&this.nextToken.text!=="{"){t=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2}$/,"size")}else{t=this.parseStringGroup("size",e)}if(!t){return null}var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r){throw new p("Invalid size: '"+t.text+"'",t)}var a={number:+(r[1]+r[2]),unit:r[3]};if(a.unit!=="em"&&a.unit!=="ex"&&a.unit!=="mu"){throw new p("Invalid unit: '"+a.unit+"'",t)}return new m(new c("color",a,this.mode),false)};h.prototype.parseGroup=function(e){var t=this.nextToken;if(this.nextToken.text===(e?"[":"{")){this.consume();var r=this.parseExpression(false,e?"]":null);var a=this.nextToken;this.expect(e?"]":"}");if(this.mode==="text"){this.formLigatures(r)}return new m(new c("ordgroup",r,this.mode,t,a),false)}else{return e?null:this.parseSymbol()}};h.prototype.formLigatures=function(e){var t;var r=e.length-1;for(t=0;t0?t-1:0]}l.prototype.sup=function(){return y[x[this.id]]};l.prototype.sub=function(){return y[b[this.id]]};l.prototype.fracNum=function(){return y[w[this.id]]};l.prototype.fracDen=function(){return y[k[this.id]]};l.prototype.cramp=function(){return y[z[this.id]]};l.prototype.cls=function(){return d[this.size]+(this.cramped?" cramped":" uncramped")};l.prototype.reset=function(){return g[this.size]};l.prototype.isTight=function(){return this.size>=2};var o=0;var u=1;var p=2;var h=3;var c=4;var m=5;var f=6;var v=7;var d=["displaystyle textstyle","textstyle","scriptstyle","scriptscriptstyle"];var g=["reset-textstyle","reset-textstyle","reset-scriptstyle","reset-scriptscriptstyle"];var y=[new l(o,0,1,false),new l(u,0,1,true),new l(p,1,1,false),new l(h,1,1,true),new l(c,2,.7,false),new l(m,2,.7,true),new l(f,3,.5,false),new l(v,3,.5,true)];var x=[c,m,c,m,f,v,f,v];var b=[m,m,m,m,v,v,v,v];var w=[p,h,c,m,f,v,f,v];var k=[h,h,m,m,v,v,v,v];var z=[u,u,h,h,m,m,v,v];t.exports={DISPLAY:y[o],TEXT:y[p],SCRIPT:y[c],SCRIPTSCRIPT:y[f]}},{"./fontMetrics.js":17}],10:[function(e,t,r){var a=e("./domTree");var i=e("./fontMetrics");var n=e("./symbols");var s=e("./utils");var l=["\\Gamma","\\Delta","\\Theta","\\Lambda","\\Xi","\\Pi","\\Sigma","\\Upsilon","\\Phi","\\Psi","\\Omega"];var o=["\u0131","\u0237","\xa3"];var u=function(e,t,r,s,l){if(n[r][e]&&n[r][e].replace){e=n[r][e].replace}var o=i.getCharacterMetrics(e,t);var u;if(o){var p=o.italic;if(r==="text"){p=0}u=new a.symbolNode(e,o.height,o.depth,p,o.skew,l)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+e+"' in style '"+t+"'");u=new a.symbolNode(e,0,0,0,0,l)}if(s){if(s.style.isTight()){u.classes.push("mtight")}if(s.getColor()){u.style.color=s.getColor()}}return u};var p=function(e,t,r,a){if(e==="\\"||n[t][e].font==="main"){return u(e,"Main-Regular",t,r,a)}else{return u(e,"AMS-Regular",t,r,a.concat(["amsrm"]))}};var h=function(e,t,r,a,i){if(i==="mathord"){return c(e,t,r,a)}else if(i==="textord"){return u(e,"Main-Regular",t,r,a.concat(["mathrm"]))}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var c=function(e,t,r,a){if(/[0-9]/.test(e.charAt(0))||s.contains(o,e)||s.contains(l,e)){return u(e,"Main-Italic",t,r,a.concat(["mainit"]))}else{return u(e,"Math-Italic",t,r,a.concat(["mathit"]))}};var m=function(e,t,r){var a=e.mode;var l=e.value;if(n[a][l]&&n[a][l].replace){l=n[a][l].replace}var p=["mord"];var m=t.font;if(m){if(m==="mathit"||s.contains(o,l)){return c(l,a,t,p)}else{var f=k[m].fontName;if(i.getCharacterMetrics(l,f)){return u(l,f,a,t,p.concat([m]))}else{return h(l,a,t,p,r)}}}else{return h(l,a,t,p,r)}};var f=function(e){var t=0;var r=0;var a=0;if(e.children){for(var i=0;it){t=e.children[i].height}if(e.children[i].depth>r){r=e.children[i].depth}if(e.children[i].maxFontSize>a){a=e.children[i].maxFontSize}}}e.height=t;e.depth=r;e.maxFontSize=a};var v=function(e,t,r){var i=new a.span(e,t,r);f(i);return i};var d=function(e,t){e.children=t.concat(e.children);f(e)};var g=function(e){var t=new a.documentFragment(e);f(t);return t};var y=function(e,t){var r=v([],[new a.symbolNode("\u200b")]);r.style.fontSize=t/e.style.sizeMultiplier+"em";var i=v(["fontsize-ensurer","reset-"+e.size,"size5"],[r]);return i};var x=function(e,t,r,i){var n;var s;var l;if(t==="individualShift"){var o=e;e=[o[0]];n=-o[0].shift-o[0].elem.depth;s=n;for(l=1;l0){f+=T;v-=T}}S=n.makeVList([{type:"elem",elem:s,shift:v},{type:"elem",elem:a,shift:-f}],"individualShift",null,t);if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+"em"}S.children[0].style.marginRight=k;S.children[1].style.marginRight=k}var A=d(r)||"mord";return p([A],[r,p(["msupsub"],[S])],t)};w.genfrac=function(e,t){var r=t.style;if(e.value.size==="display"){r=i.DISPLAY}else if(e.value.size==="text"){r=i.TEXT}var a=r.fracNum();var l=r.fracDen();var u;u=t.withStyle(a);var h=z(e.value.numer,u);var c=p([r.reset(),a.cls()],[h],u);u=t.withStyle(l);var m=z(e.value.denom,u);var f=p([r.reset(),l.cls()],[m],u);var v;if(e.value.hasBarLine){v=o.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{v=0}var d;var g;var y;if(r.size===i.DISPLAY.size){d=r.metrics.num1;if(v>0){g=3*v}else{g=7*o.metrics.defaultRuleThickness}y=r.metrics.denom1}else{if(v>0){d=r.metrics.num2;g=v}else{d=r.metrics.num3;g=3*o.metrics.defaultRuleThickness}y=r.metrics.denom2}var x;if(v===0){var w=d-h.depth-(m.height-y);if(w0){N+=x;if(M=l){continue}var I;if(i>0||e.value.hskipBeforeAndAfter){I=u.deflt(O.pregap,f);if(I!==0){C=p(["arraycolsep"],[]);C.style.width=I+"em";E.push(C)}}var L=[];for(r=0;ra.height+a.depth+c){c=(c+d-a.height-a.depth)/2}var g=-(a.height+c+l)+v.height;v.style.top=g+"em";v.height-=g;v.depth+=g;var y;if(a.height===0&&a.depth===0){y=p()}else{y=n.makeVList([{type:"elem",elem:a},{type:"kern",size:c},{type:"elem",elem:u},{type:"kern",size:l}],"firstBaseline",null,t)}if(!e.value.index){return p(["mord","sqrt"],[v,y],t)}else{var x=t.withStyle(i.SCRIPTSCRIPT);var b=z(e.value.index,x);var w=p([r.reset(),i.SCRIPTSCRIPT.cls()],[b],x);var k=Math.max(v.height,y.height);var S=Math.max(v.depth,y.depth);var M=.6*(k-S);var T=n.makeVList([{type:"elem",elem:w}],"shift",-M,t);var A=p(["root"],[T]);return p(["mord","sqrt"],[A,v,y],t)}};w.sizing=function(e,t){var r=v(e.value.value,t.withSize(e.value.size),false);var a=t.style;var i=n.sizingMultiplier[e.value.size];i=i*a.sizeMultiplier;for(var s=0;s","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var b=[0,1.2,1.8,2.4,3];var w=function(e,t,r,i,n){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}if(o.contains(g,e)||o.contains(x,e)){return f(e,t,false,r,i,n)}else if(o.contains(y,e)){return d(e,b[t],false,r,i,n)}else{throw new a("Illegal delimiter: '"+e+"'")}};var k=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var z=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"stack"}];var S=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var M=function(e){if(e.type==="small"){return"Main-Regular"}else if(e.type==="large"){return"Size"+e.size+"-Regular"}else if(e.type==="stack"){return"Size4-Regular"}};var T=function(e,t,r,a){var i=Math.min(2,3-a.style.size);for(var n=i;nt){return r[n]}}return r[r.length-1]};var A=function(e,t,r,a,i,n){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}var s;if(o.contains(x,e)){s=k}else if(o.contains(g,e)){s=S}else{s=z}var l=T(e,t,s,a);if(l.type==="small"){return m(e,l.style,r,a,i,n)}else if(l.type==="large"){return f(e,l.size,r,a,i,n)}else if(l.type==="stack"){return d(e,t,r,a,i,n)}};var N=function(e,t,r,a,i,n){var l=a.style.metrics.axisHeight*a.style.sizeMultiplier;var o=901;var u=5/s.metrics.ptPerEm;var p=Math.max(t-l,r+l);var h=Math.max(p/500*o,2*p-u);return A(e,h,true,a,i,n)};t.exports={sizedDelim:w,customSizedDelim:A,leftRightDelim:N}},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./fontMetrics":17,"./symbols":23,"./utils":25}],15:[function(e,t,r){var a=e("./unicodeRegexes");var i=e("./utils");var n=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(" ")};function s(e,t,r){this.classes=e||[];this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(r){if(r.style.isTight()){this.classes.push("mtight")}if(r.getColor()){this.style.color=r.getColor()}}}s.prototype.setAttribute=function(e,t){this.attributes[e]=t};s.prototype.tryCombine=function(e){return false};s.prototype.toNode=function(){var e=document.createElement("span");e.className=n(this.classes);for(var t in this.style){if(Object.prototype.hasOwnProperty.call(this.style,t)){e.style[t]=this.style[t]}}for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){e.setAttribute(r,this.attributes[r])}}for(var a=0;a";return e};function l(e){this.children=e||[];this.height=0;this.depth=0;this.maxFontSize=0}l.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t0||n(this.classes)!==n(e.classes)||this.skew!==e.skew||this.maxFontSize!==e.maxFontSize){return false}for(var t in this.style){if(this.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}for(t in e.style){if(e.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}this.value+=e.value;this.height=Math.max(this.height,e.height);this.depth=Math.max(this.depth,e.depth);this.italic=e.italic;return true};u.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement("span");t.style.marginRight=this.italic+"em"}if(this.classes.length>0){t=t||document.createElement("span");t.className=n(this.classes)}for(var r in this.style){if(this.style.hasOwnProperty(r)){t=t||document.createElement("span");t.style[r]=this.style[r]}}if(t){t.appendChild(e);return t}else{return e}};u.prototype.toMarkup=function(){var e=false;var t="0){r+="margin-right:"+this.italic+"em;"}for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=i.hyphenate(a)+":"+this.style[a]+";"}}if(r){e=true;t+=' style="'+i.escape(r)+'"'}var s=i.escape(this.value);if(e){t+=">";t+=s;t+="";return t}else{return s}};t.exports={span:s,documentFragment:l,symbolNode:u}},{"./unicodeRegexes":24,"./utils":25}],16:[function(e,t,r){var a=e("./parseData");var i=e("./ParseError");var n=e("./Style");var s=a.ParseNode;function l(e,t){var r=[];var a=[r];var n=[];while(true){var l=e.parseExpression(false,null);r.push(new s("ordgroup",l,e.mode));var o=e.nextToken.text;if(o==="&"){e.consume()}else if(o==="\\end"){break}else if(o==="\\\\"||o==="\\cr"){var u=e.parseFunction();n.push(u.value.size);r=[];a.push(r)}else{throw new i("Expected & or \\\\ or \\end",e.nextToken)}}t.body=a;t.rowGaps=n;return new s(t.type,t,e.mode)}function o(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs||0,argTypes:r.argTypes,greediness:1,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var n=0;n0){o=2}t.value.cols[i]={type:"align",align:n,pregap:o,postgap:0}}return t})},{"./ParseError":6,"./Style":9,"./parseData":21}],17:[function(e,t,r){var a=e("./Style");var i=e("./unicodeRegexes").cjkRegex;var n={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25]};var s=0;var l=0;var o=0;var u=0;var p=.431;var h=1;var c=0;var m=.04;var f=.111;var v=.166;var d=.2;var g=.6;var y=.1;var x=10;var b=2/x;var w={defaultRuleThickness:m,bigOpSpacing1:f,bigOpSpacing2:v,bigOpSpacing3:d,bigOpSpacing4:g,bigOpSpacing5:y,ptPerEm:x,doubleRuleSep:b};var k=e("./fontMetricsData");var z={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xc6":"A","\xc7":"C","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xd0":"D","\xd1":"N","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xdd":"Y","\xde":"o","\xdf":"B","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xe6":"a","\xe7":"c","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xf0":"d","\xf1":"n","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xfd":"y","\xfe":"o","\xff":"y","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};var S=function(e,t){var r=e.charCodeAt(0);if(e[0]in z){r=z[e[0]].charCodeAt(0)}else if(i.test(e[0])){r="M".charCodeAt(0)}var a=k[t][r];if(a){return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}};t.exports={metrics:w,sigmas:n,getCharacterMetrics:S}},{"./Style":9,"./fontMetricsData":18,"./unicodeRegexes":24}],18:[function(e,t,r){t.exports={"AMS-Regular":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0], -8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},"Caligraphic-Regular":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},"Fraktur-Regular":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},"Main-Bold":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},"Main-Italic":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},"Main-Regular":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0],8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},"Math-BoldItalic":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},"Math-Italic":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"Math-Regular":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"SansSerif-Regular":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},"Script-Regular":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},"Size1-Regular":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},"Size2-Regular":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0], -10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},"Size3-Regular":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},"Size4-Regular":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},"Typewriter-Regular":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8242:[0,.61111,0,0]}}},{}],19:[function(e,t,r){var a=e("./utils");var i=e("./ParseError");var n=e("./parseData");var s=n.ParseNode;function l(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs,argTypes:r.argTypes,greediness:r.greediness===undefined?1:r.greediness,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a};for(var n=0;n","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];var c={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};l(["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:o(r)}});l(["\\arcsin","\\arccos","\\arctan","\\arg","\\cos","\\cosh","\\cot","\\coth","\\csc","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\tan","\\tanh"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});l(["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});l(["\\int","\\iint","\\iiint","\\oint"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:true,body:e.funcName}});l(["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:true,body:e.funcName}});l("\\mathop",{numArgs:1},function(e,t){var r=t[0];return{type:"op",limits:false,symbol:false,value:o(r)}});l(["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],{numArgs:2,greediness:2},function(e,t){var r=t[0];var a=t[1];var i;var n=null;var s=null;var l="auto";switch(e.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\\\atopfrac":i=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;n="(";s=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e.funcName){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text";break}return{type:"genfrac",numer:r,denom:a,hasBarLine:i,leftDelim:n,rightDelim:s,size:l}});l(["\\llap","\\rlap"],{numArgs:1,allowedInText:true},function(e,t){var r=t[0];return{type:e.funcName.slice(1),body:r}});var m=function(e,t){if(a.contains(h,e.value)){return e}else{throw new i("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}};l(["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"delimsizing",size:p[e.funcName].size,mclass:p[e.funcName].mclass,value:r.value}});l(["\\left","\\right"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"leftright",value:r.value}});l("\\middle",{numArgs:1},function(e,t){var r=m(t[0],e);if(!e.parser.leftrightDepth){throw new i("\\middle without preceding \\left",r)}return{type:"middle",value:r.value}});l(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],0,null);l(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],0,null);l(["\\mathrm","\\mathit","\\mathbf","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in c){a=c[a]}return{type:"font",font:a.slice(1),body:r}});l(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],{numArgs:1},function(e,t){var r=t[0];return{type:"accent",accent:e.funcName,base:r}});l(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});l(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t){var r=t[0];return{type:"cr",size:r}});l(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new i("Invalid environment name",r)}var a="";for(var n=0;n";return e};function n(e){this.text=e}n.prototype.toNode=function(){return document.createTextNode(this.text)};n.prototype.toMarkup=function(){return a.escape(this.text)};t.exports={MathNode:i,TextNode:n}},{"./utils":25}],21:[function(e,t,r){function a(e,t,r,a,i){this.type=e;this.value=t;this.mode=r;if(a&&(!i||i.lexer===a.lexer)){this.lexer=a.lexer;this.start=a.start;this.end=(i||a).end}}t.exports={ParseNode:a}},{}],22:[function(e,t,r){var a=e("./Parser");var i=function(e,t){if(!(typeof e==="string"||e instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var r=new a(e,t);return r.parse()};t.exports=i},{"./Parser":7}],23:[function(e,t,r){t.exports={math:{},text:{}};function a(e,r,a,i,n){t.exports[e][n]={font:r,group:a,replace:i}}var i="math";var n="text";var s="main";var l="ams";var o="accent";var u="bin";var p="close";var h="inner";var c="mathord";var m="op";var f="open";var v="punct";var d="rel";var g="spacing";var y="textord";a(i,s,d,"\u2261","\\equiv");a(i,s,d,"\u227a","\\prec");a(i,s,d,"\u227b","\\succ");a(i,s,d,"\u223c","\\sim");a(i,s,d,"\u22a5","\\perp");a(i,s,d,"\u2aaf","\\preceq");a(i,s,d,"\u2ab0","\\succeq");a(i,s,d,"\u2243","\\simeq");a(i,s,d,"\u2223","\\mid");a(i,s,d,"\u226a","\\ll");a(i,s,d,"\u226b","\\gg");a(i,s,d,"\u224d","\\asymp");a(i,s,d,"\u2225","\\parallel");a(i,s,d,"\u22c8","\\bowtie");a(i,s,d,"\u2323","\\smile");a(i,s,d,"\u2291","\\sqsubseteq");a(i,s,d,"\u2292","\\sqsupseteq");a(i,s,d,"\u2250","\\doteq");a(i,s,d,"\u2322","\\frown");a(i,s,d,"\u220b","\\ni");a(i,s,d,"\u221d","\\propto");a(i,s,d,"\u22a2","\\vdash");a(i,s,d,"\u22a3","\\dashv");a(i,s,d,"\u220b","\\owns");a(i,s,v,".","\\ldotp");a(i,s,v,"\u22c5","\\cdotp");a(i,s,y,"#","\\#");a(n,s,y,"#","\\#");a(i,s,y,"&","\\&");a(n,s,y,"&","\\&");a(i,s,y,"\u2135","\\aleph");a(i,s,y,"\u2200","\\forall");a(i,s,y,"\u210f","\\hbar");a(i,s,y,"\u2203","\\exists");a(i,s,y,"\u2207","\\nabla");a(i,s,y,"\u266d","\\flat");a(i,s,y,"\u2113","\\ell");a(i,s,y,"\u266e","\\natural");a(i,s,y,"\u2663","\\clubsuit");a(i,s,y,"\u2118","\\wp");a(i,s,y,"\u266f","\\sharp");a(i,s,y,"\u2662","\\diamondsuit");a(i,s,y,"\u211c","\\Re");a(i,s,y,"\u2661","\\heartsuit");a(i,s,y,"\u2111","\\Im");a(i,s,y,"\u2660","\\spadesuit");a(i,s,y,"\u2020","\\dag");a(i,s,y,"\u2021","\\ddag");a(i,s,p,"\u23b1","\\rmoustache");a(i,s,f,"\u23b0","\\lmoustache");a(i,s,p,"\u27ef","\\rgroup");a(i,s,f,"\u27ee","\\lgroup");a(i,s,u,"\u2213","\\mp");a(i,s,u,"\u2296","\\ominus");a(i,s,u,"\u228e","\\uplus");a(i,s,u,"\u2293","\\sqcap");a(i,s,u,"\u2217","\\ast");a(i,s,u,"\u2294","\\sqcup");a(i,s,u,"\u25ef","\\bigcirc");a(i,s,u,"\u2219","\\bullet");a(i,s,u,"\u2021","\\ddagger");a(i,s,u,"\u2240","\\wr");a(i,s,u,"\u2a3f","\\amalg");a(i,s,d,"\u27f5","\\longleftarrow");a(i,s,d,"\u21d0","\\Leftarrow");a(i,s,d,"\u27f8","\\Longleftarrow");a(i,s,d,"\u27f6","\\longrightarrow");a(i,s,d,"\u21d2","\\Rightarrow");a(i,s,d,"\u27f9","\\Longrightarrow");a(i,s,d,"\u2194","\\leftrightarrow");a(i,s,d,"\u27f7","\\longleftrightarrow");a(i,s,d,"\u21d4","\\Leftrightarrow");a(i,s,d,"\u27fa","\\Longleftrightarrow");a(i,s,d,"\u21a6","\\mapsto");a(i,s,d,"\u27fc","\\longmapsto");a(i,s,d,"\u2197","\\nearrow");a(i,s,d,"\u21a9","\\hookleftarrow");a(i,s,d,"\u21aa","\\hookrightarrow");a(i,s,d,"\u2198","\\searrow");a(i,s,d,"\u21bc","\\leftharpoonup");a(i,s,d,"\u21c0","\\rightharpoonup");a(i,s,d,"\u2199","\\swarrow");a(i,s,d,"\u21bd","\\leftharpoondown");a(i,s,d,"\u21c1","\\rightharpoondown");a(i,s,d,"\u2196","\\nwarrow");a(i,s,d,"\u21cc","\\rightleftharpoons");a(i,l,d,"\u226e","\\nless");a(i,l,d,"\ue010","\\nleqslant");a(i,l,d,"\ue011","\\nleqq");a(i,l,d,"\u2a87","\\lneq");a(i,l,d,"\u2268","\\lneqq");a(i,l,d,"\ue00c","\\lvertneqq");a(i,l,d,"\u22e6","\\lnsim");a(i,l,d,"\u2a89","\\lnapprox");a(i,l,d,"\u2280","\\nprec");a(i,l,d,"\u22e0","\\npreceq");a(i,l,d,"\u22e8","\\precnsim");a(i,l,d,"\u2ab9","\\precnapprox");a(i,l,d,"\u2241","\\nsim");a(i,l,d,"\ue006","\\nshortmid");a(i,l,d,"\u2224","\\nmid");a(i,l,d,"\u22ac","\\nvdash");a(i,l,d,"\u22ad","\\nvDash");a(i,l,d,"\u22ea","\\ntriangleleft");a(i,l,d,"\u22ec","\\ntrianglelefteq");a(i,l,d,"\u228a","\\subsetneq");a(i,l,d,"\ue01a","\\varsubsetneq");a(i,l,d,"\u2acb","\\subsetneqq");a(i,l,d,"\ue017","\\varsubsetneqq");a(i,l,d,"\u226f","\\ngtr");a(i,l,d,"\ue00f","\\ngeqslant");a(i,l,d,"\ue00e","\\ngeqq");a(i,l,d,"\u2a88","\\gneq");a(i,l,d,"\u2269","\\gneqq");a(i,l,d,"\ue00d","\\gvertneqq");a(i,l,d,"\u22e7","\\gnsim");a(i,l,d,"\u2a8a","\\gnapprox");a(i,l,d,"\u2281","\\nsucc");a(i,l,d,"\u22e1","\\nsucceq");a(i,l,d,"\u22e9","\\succnsim");a(i,l,d,"\u2aba","\\succnapprox");a(i,l,d,"\u2246","\\ncong");a(i,l,d,"\ue007","\\nshortparallel");a(i,l,d,"\u2226","\\nparallel");a(i,l,d,"\u22af","\\nVDash");a(i,l,d,"\u22eb","\\ntriangleright");a(i,l,d,"\u22ed","\\ntrianglerighteq");a(i,l,d,"\ue018","\\nsupseteqq");a(i,l,d,"\u228b","\\supsetneq");a(i,l,d,"\ue01b","\\varsupsetneq");a(i,l,d,"\u2acc","\\supsetneqq");a(i,l,d,"\ue019","\\varsupsetneqq");a(i,l,d,"\u22ae","\\nVdash");a(i,l,d,"\u2ab5","\\precneqq");a(i,l,d,"\u2ab6","\\succneqq");a(i,l,d,"\ue016","\\nsubseteqq");a(i,l,u,"\u22b4","\\unlhd");a(i,l,u,"\u22b5","\\unrhd");a(i,l,d,"\u219a","\\nleftarrow");a(i,l,d,"\u219b","\\nrightarrow");a(i,l,d,"\u21cd","\\nLeftarrow");a(i,l,d,"\u21cf","\\nRightarrow");a(i,l,d,"\u21ae","\\nleftrightarrow");a(i,l,d,"\u21ce","\\nLeftrightarrow");a(i,l,d,"\u25b3","\\vartriangle");a(i,l,y,"\u210f","\\hslash");a(i,l,y,"\u25bd","\\triangledown");a(i,l,y,"\u25ca","\\lozenge");a(i,l,y,"\u24c8","\\circledS");a(i,l,y,"\xae","\\circledR");a(i,l,y,"\u2221","\\measuredangle");a(i,l,y,"\u2204","\\nexists");a(i,l,y,"\u2127","\\mho");a(i,l,y,"\u2132","\\Finv");a(i,l,y,"\u2141","\\Game");a(i,l,y,"k","\\Bbbk");a(i,l,y,"\u2035","\\backprime");a(i,l,y,"\u25b2","\\blacktriangle");a(i,l,y,"\u25bc","\\blacktriangledown");a(i,l,y,"\u25a0","\\blacksquare");a(i,l,y,"\u29eb","\\blacklozenge");a(i,l,y,"\u2605","\\bigstar");a(i,l,y,"\u2222","\\sphericalangle");a(i,l,y,"\u2201","\\complement");a(i,l,y,"\xf0","\\eth");a(i,l,y,"\u2571","\\diagup");a(i,l,y,"\u2572","\\diagdown");a(i,l,y,"\u25a1","\\square");a(i,l,y,"\u25a1","\\Box");a(i,l,y,"\u25ca","\\Diamond");a(i,l,y,"\xa5","\\yen");a(i,l,y,"\u2713","\\checkmark");a(i,l,y,"\u2136","\\beth");a(i,l,y,"\u2138","\\daleth");a(i,l,y,"\u2137","\\gimel");a(i,l,y,"\u03dd","\\digamma");a(i,l,y,"\u03f0","\\varkappa");a(i,l,f,"\u250c","\\ulcorner");a(i,l,p,"\u2510","\\urcorner");a(i,l,f,"\u2514","\\llcorner");a(i,l,p,"\u2518","\\lrcorner");a(i,l,d,"\u2266","\\leqq");a(i,l,d,"\u2a7d","\\leqslant");a(i,l,d,"\u2a95","\\eqslantless");a(i,l,d,"\u2272","\\lesssim");a(i,l,d,"\u2a85","\\lessapprox");a(i,l,d,"\u224a","\\approxeq");a(i,l,u,"\u22d6","\\lessdot");a(i,l,d,"\u22d8","\\lll");a(i,l,d,"\u2276","\\lessgtr");a(i,l,d,"\u22da","\\lesseqgtr");a(i,l,d,"\u2a8b","\\lesseqqgtr");a(i,l,d,"\u2251","\\doteqdot");a(i,l,d,"\u2253","\\risingdotseq");a(i,l,d,"\u2252","\\fallingdotseq");a(i,l,d,"\u223d","\\backsim");a(i,l,d,"\u22cd","\\backsimeq");a(i,l,d,"\u2ac5","\\subseteqq");a(i,l,d,"\u22d0","\\Subset");a(i,l,d,"\u228f","\\sqsubset");a(i,l,d,"\u227c","\\preccurlyeq");a(i,l,d,"\u22de","\\curlyeqprec");a(i,l,d,"\u227e","\\precsim");a(i,l,d,"\u2ab7","\\precapprox");a(i,l,d,"\u22b2","\\vartriangleleft");a(i,l,d,"\u22b4","\\trianglelefteq");a(i,l,d,"\u22a8","\\vDash");a(i,l,d,"\u22aa","\\Vvdash");a(i,l,d,"\u2323","\\smallsmile");a(i,l,d,"\u2322","\\smallfrown");a(i,l,d,"\u224f","\\bumpeq");a(i,l,d,"\u224e","\\Bumpeq");a(i,l,d,"\u2267","\\geqq");a(i,l,d,"\u2a7e","\\geqslant");a(i,l,d,"\u2a96","\\eqslantgtr");a(i,l,d,"\u2273","\\gtrsim");a(i,l,d,"\u2a86","\\gtrapprox");a(i,l,u,"\u22d7","\\gtrdot");a(i,l,d,"\u22d9","\\ggg");a(i,l,d,"\u2277","\\gtrless");a(i,l,d,"\u22db","\\gtreqless");a(i,l,d,"\u2a8c","\\gtreqqless");a(i,l,d,"\u2256","\\eqcirc");a(i,l,d,"\u2257","\\circeq");a(i,l,d,"\u225c","\\triangleq");a(i,l,d,"\u223c","\\thicksim");a(i,l,d,"\u2248","\\thickapprox");a(i,l,d,"\u2ac6","\\supseteqq");a(i,l,d,"\u22d1","\\Supset");a(i,l,d,"\u2290","\\sqsupset");a(i,l,d,"\u227d","\\succcurlyeq");a(i,l,d,"\u22df","\\curlyeqsucc");a(i,l,d,"\u227f","\\succsim");a(i,l,d,"\u2ab8","\\succapprox");a(i,l,d,"\u22b3","\\vartriangleright");a(i,l,d,"\u22b5","\\trianglerighteq");a(i,l,d,"\u22a9","\\Vdash");a(i,l,d,"\u2223","\\shortmid");a(i,l,d,"\u2225","\\shortparallel");a(i,l,d,"\u226c","\\between");a(i,l,d,"\u22d4","\\pitchfork");a(i,l,d,"\u221d","\\varpropto");a(i,l,d,"\u25c0","\\blacktriangleleft");a(i,l,d,"\u2234","\\therefore");a(i,l,d,"\u220d","\\backepsilon");a(i,l,d,"\u25b6","\\blacktriangleright");a(i,l,d,"\u2235","\\because");a(i,l,d,"\u22d8","\\llless");a(i,l,d,"\u22d9","\\gggtr");a(i,l,u,"\u22b2","\\lhd");a(i,l,u,"\u22b3","\\rhd");a(i,l,d,"\u2242","\\eqsim");a(i,s,d,"\u22c8","\\Join");a(i,l,d,"\u2251","\\Doteq");a(i,l,u,"\u2214","\\dotplus");a(i,l,u,"\u2216","\\smallsetminus");a(i,l,u,"\u22d2","\\Cap");a(i,l,u,"\u22d3","\\Cup");a(i,l,u,"\u2a5e","\\doublebarwedge");a(i,l,u,"\u229f","\\boxminus");a(i,l,u,"\u229e","\\boxplus");a(i,l,u,"\u22c7","\\divideontimes");a(i,l,u,"\u22c9","\\ltimes");a(i,l,u,"\u22ca","\\rtimes");a(i,l,u,"\u22cb","\\leftthreetimes");a(i,l,u,"\u22cc","\\rightthreetimes");a(i,l,u,"\u22cf","\\curlywedge");a(i,l,u,"\u22ce","\\curlyvee");a(i,l,u,"\u229d","\\circleddash");a(i,l,u,"\u229b","\\circledast");a(i,l,u,"\u22c5","\\centerdot");a(i,l,u,"\u22ba","\\intercal");a(i,l,u,"\u22d2","\\doublecap");a(i,l,u,"\u22d3","\\doublecup");a(i,l,u,"\u22a0","\\boxtimes");a(i,l,d,"\u21e2","\\dashrightarrow");a(i,l,d,"\u21e0","\\dashleftarrow");a(i,l,d,"\u21c7","\\leftleftarrows");a(i,l,d,"\u21c6","\\leftrightarrows");a(i,l,d,"\u21da","\\Lleftarrow");a(i,l,d,"\u219e","\\twoheadleftarrow");a(i,l,d,"\u21a2","\\leftarrowtail");a(i,l,d,"\u21ab","\\looparrowleft");a(i,l,d,"\u21cb","\\leftrightharpoons");a(i,l,d,"\u21b6","\\curvearrowleft");a(i,l,d,"\u21ba","\\circlearrowleft");a(i,l,d,"\u21b0","\\Lsh");a(i,l,d,"\u21c8","\\upuparrows");a(i,l,d,"\u21bf","\\upharpoonleft");a(i,l,d,"\u21c3","\\downharpoonleft");a(i,l,d,"\u22b8","\\multimap");a(i,l,d,"\u21ad","\\leftrightsquigarrow");a(i,l,d,"\u21c9","\\rightrightarrows");a(i,l,d,"\u21c4","\\rightleftarrows");a(i,l,d,"\u21a0","\\twoheadrightarrow");a(i,l,d,"\u21a3","\\rightarrowtail");a(i,l,d,"\u21ac","\\looparrowright");a(i,l,d,"\u21b7","\\curvearrowright");a(i,l,d,"\u21bb","\\circlearrowright");a(i,l,d,"\u21b1","\\Rsh");a(i,l,d,"\u21ca","\\downdownarrows");a(i,l,d,"\u21be","\\upharpoonright");a(i,l,d,"\u21c2","\\downharpoonright");a(i,l,d,"\u21dd","\\rightsquigarrow");a(i,l,d,"\u21dd","\\leadsto");a(i,l,d,"\u21db","\\Rrightarrow");a(i,l,d,"\u21be","\\restriction");a(i,s,y,"\u2018","`");a(i,s,y,"$","\\$");a(n,s,y,"$","\\$");a(i,s,y,"%","\\%");a(n,s,y,"%","\\%");a(i,s,y,"_","\\_");a(n,s,y,"_","\\_");a(i,s,y,"\u2220","\\angle");a(i,s,y,"\u221e","\\infty");a(i,s,y,"\u2032","\\prime");a(i,s,y,"\u25b3","\\triangle");a(i,s,y,"\u0393","\\Gamma");a(i,s,y,"\u0394","\\Delta");a(i,s,y,"\u0398","\\Theta");a(i,s,y,"\u039b","\\Lambda");a(i,s,y,"\u039e","\\Xi");a(i,s,y,"\u03a0","\\Pi");a(i,s,y,"\u03a3","\\Sigma");a(i,s,y,"\u03a5","\\Upsilon");a(i,s,y,"\u03a6","\\Phi");a(i,s,y,"\u03a8","\\Psi");a(i,s,y,"\u03a9","\\Omega");a(i,s,y,"\xac","\\neg");a(i,s,y,"\xac","\\lnot");a(i,s,y,"\u22a4","\\top");a(i,s,y,"\u22a5","\\bot");a(i,s,y,"\u2205","\\emptyset");a(i,l,y,"\u2205","\\varnothing");a(i,s,c,"\u03b1","\\alpha");a(i,s,c,"\u03b2","\\beta");a(i,s,c,"\u03b3","\\gamma");a(i,s,c,"\u03b4","\\delta");a(i,s,c,"\u03f5","\\epsilon");a(i,s,c,"\u03b6","\\zeta");a(i,s,c,"\u03b7","\\eta");a(i,s,c,"\u03b8","\\theta");a(i,s,c,"\u03b9","\\iota");a(i,s,c,"\u03ba","\\kappa");a(i,s,c,"\u03bb","\\lambda");a(i,s,c,"\u03bc","\\mu");a(i,s,c,"\u03bd","\\nu");a(i,s,c,"\u03be","\\xi");a(i,s,c,"o","\\omicron");a(i,s,c,"\u03c0","\\pi");a(i,s,c,"\u03c1","\\rho");a(i,s,c,"\u03c3","\\sigma");a(i,s,c,"\u03c4","\\tau");a(i,s,c,"\u03c5","\\upsilon");a(i,s,c,"\u03d5","\\phi");a(i,s,c,"\u03c7","\\chi");a(i,s,c,"\u03c8","\\psi");a(i,s,c,"\u03c9","\\omega");a(i,s,c,"\u03b5","\\varepsilon");a(i,s,c,"\u03d1","\\vartheta");a(i,s,c,"\u03d6","\\varpi");a(i,s,c,"\u03f1","\\varrho");a(i,s,c,"\u03c2","\\varsigma");a(i,s,c,"\u03c6","\\varphi");a(i,s,u,"\u2217","*");a(i,s,u,"+","+");a(i,s,u,"\u2212","-");a(i,s,u,"\u22c5","\\cdot");a(i,s,u,"\u2218","\\circ");a(i,s,u,"\xf7","\\div");a(i,s,u,"\xb1","\\pm");a(i,s,u,"\xd7","\\times");a(i,s,u,"\u2229","\\cap");a(i,s,u,"\u222a","\\cup");a(i,s,u,"\u2216","\\setminus");a(i,s,u,"\u2227","\\land");a(i,s,u,"\u2228","\\lor");a(i,s,u,"\u2227","\\wedge");a(i,s,u,"\u2228","\\vee");a(i,s,y,"\u221a","\\surd");a(i,s,f,"(","(");a(i,s,f,"[","[");a(i,s,f,"\u27e8","\\langle");a(i,s,f,"\u2223","\\lvert");a(i,s,f,"\u2225","\\lVert");a(i,s,p,")",")");a(i,s,p,"]","]");a(i,s,p,"?","?");a(i,s,p,"!","!");a(i,s,p,"\u27e9","\\rangle");a(i,s,p,"\u2223","\\rvert");a(i,s,p,"\u2225","\\rVert");a(i,s,d,"=","=");a(i,s,d,"<","<");a(i,s,d,">",">");a(i,s,d,":",":");a(i,s,d,"\u2248","\\approx");a(i,s,d,"\u2245","\\cong");a(i,s,d,"\u2265","\\ge");a(i,s,d,"\u2265","\\geq");a(i,s,d,"\u2190","\\gets");a(i,s,d,">","\\gt");a(i,s,d,"\u2208","\\in");a(i,s,d,"\u2209","\\notin");a(i,s,d,"\u2282","\\subset");a(i,s,d,"\u2283","\\supset");a(i,s,d,"\u2286","\\subseteq");a(i,s,d,"\u2287","\\supseteq");a(i,l,d,"\u2288","\\nsubseteq");a(i,l,d,"\u2289","\\nsupseteq");a(i,s,d,"\u22a8","\\models");a(i,s,d,"\u2190","\\leftarrow");a(i,s,d,"\u2264","\\le");a(i,s,d,"\u2264","\\leq");a(i,s,d,"<","\\lt");a(i,s,d,"\u2260","\\ne");a(i,s,d,"\u2260","\\neq");a(i,s,d,"\u2192","\\rightarrow");a(i,s,d,"\u2192","\\to");a(i,l,d,"\u2271","\\ngeq");a(i,l,d,"\u2270","\\nleq");a(i,s,g,null,"\\!");a(i,s,g,"\xa0","\\ ");a(i,s,g,"\xa0","~");a(i,s,g,null,"\\,");a(i,s,g,null,"\\:");a(i,s,g,null,"\\;");a(i,s,g,null,"\\enspace");a(i,s,g,null,"\\qquad");a(i,s,g,null,"\\quad");a(i,s,g,"\xa0","\\space");a(i,s,v,",",",");a(i,s,v,";",";");a(i,s,v,":","\\colon");a(i,l,u,"\u22bc","\\barwedge");a(i,l,u,"\u22bb","\\veebar");a(i,s,u,"\u2299","\\odot");a(i,s,u,"\u2295","\\oplus");a(i,s,u,"\u2297","\\otimes");a(i,s,y,"\u2202","\\partial");a(i,s,u,"\u2298","\\oslash");a(i,l,u,"\u229a","\\circledcirc");a(i,l,u,"\u22a1","\\boxdot");a(i,s,u,"\u25b3","\\bigtriangleup");a(i,s,u,"\u25bd","\\bigtriangledown");a(i,s,u,"\u2020","\\dagger");a(i,s,u,"\u22c4","\\diamond");a(i,s,u,"\u22c6","\\star");a(i,s,u,"\u25c3","\\triangleleft");a(i,s,u,"\u25b9","\\triangleright");a(i,s,f,"{","\\{");a(n,s,y,"{","\\{");a(i,s,p,"}","\\}");a(n,s,y,"}","\\}");a(i,s,f,"{","\\lbrace");a(i,s,p,"}","\\rbrace");a(i,s,f,"[","\\lbrack");a(i,s,p,"]","\\rbrack");a(i,s,f,"\u230a","\\lfloor");a(i,s,p,"\u230b","\\rfloor");a(i,s,f,"\u2308","\\lceil");a(i,s,p,"\u2309","\\rceil");a(i,s,y,"\\","\\backslash");a(i,s,y,"\u2223","|");a(i,s,y,"\u2223","\\vert");a(i,s,y,"\u2225","\\|");a(i,s,y,"\u2225","\\Vert");a(i,s,d,"\u2191","\\uparrow");a(i,s,d,"\u21d1","\\Uparrow");a(i,s,d,"\u2193","\\downarrow");a(i,s,d,"\u21d3","\\Downarrow");a(i,s,d,"\u2195","\\updownarrow");a(i,s,d,"\u21d5","\\Updownarrow");a(i,i,m,"\u2210","\\coprod");a(i,i,m,"\u22c1","\\bigvee");a(i,i,m,"\u22c0","\\bigwedge");a(i,i,m,"\u2a04","\\biguplus");a(i,i,m,"\u22c2","\\bigcap");a(i,i,m,"\u22c3","\\bigcup");a(i,i,m,"\u222b","\\int");a(i,i,m,"\u222b","\\intop");a(i,i,m,"\u222c","\\iint");a(i,i,m,"\u222d","\\iiint");a(i,i,m,"\u220f","\\prod");a(i,i,m,"\u2211","\\sum");a(i,i,m,"\u2a02","\\bigotimes");a(i,i,m,"\u2a01","\\bigoplus");a(i,i,m,"\u2a00","\\bigodot");a(i,i,m,"\u222e","\\oint");a(i,i,m,"\u2a06","\\bigsqcup");a(i,i,m,"\u222b","\\smallint");a(n,s,h,"\u2026","\\textellipsis");a(i,s,h,"\u2026","\\mathellipsis");a(n,s,h,"\u2026","\\ldots");a(i,s,h,"\u2026","\\ldots");a(i,s,h,"\u22ef","\\cdots");a(i,s,h,"\u22f1","\\ddots");a(i,s,y,"\u22ee","\\vdots");a(i,s,o,"\xb4","\\acute");a(i,s,o,"`","\\grave");a(i,s,o,"\xa8","\\ddot");a(i,s,o,"~","\\tilde");a(i,s,o,"\xaf","\\bar");a(i,s,o,"\u02d8","\\breve");a(i,s,o,"\u02c7","\\check");a(i,s,o,"^","\\hat");a(i,s,o,"\u20d7","\\vec");a(i,s,o,"\u02d9","\\dot");a(i,s,c,"\u0131","\\imath");a(i,s,c,"\u0237","\\jmath");a(n,s,y,"\u2013","--");a(n,s,y,"\u2014","---");a(n,s,y,"\u2018","`");a(n,s,y,"\u2019","'");a(n,s,y,"\u201c","``");a(n,s,y,"\u201d","''");a(i,s,y,"\xb0","\\degree");a(n,s,y,"\xb0","\\degree");a(i,s,c,"\xa3","\\pounds");a(i,l,y,"\u2720","\\maltese");a(n,l,y,"\u2720","\\maltese");a(n,s,g,"\xa0","\\ ");a(n,s,g,"\xa0"," ");a(n,s,g,"\xa0","~");var x;var b;var w='0123456789/@."';for(x=0;x":">","<":"<",'"':""","'":"'"};var p=/[&><"']/g;function h(e){return u[e]}function c(e){return(""+e).replace(p,h)}var m;if(typeof document!=="undefined"){var f=document.createElement("span");if("textContent"in f){m=function(e,t){e.textContent=t}}else{m=function(e,t){e.innerText=t}}}function v(e){m(e,"")}t.exports={contains:n,deflt:s,escape:c,hyphenate:o,indexOf:i,setTextContent:m,clearNode:v}},{}]},{},[1])(1)}); diff --git a/Wino.Mail/JS/Quill/monokai-sublime.min.css b/Wino.Mail/JS/Quill/monokai-sublime.min.css deleted file mode 100644 index 589eff91..00000000 --- a/Wino.Mail/JS/Quill/monokai-sublime.min.css +++ /dev/null @@ -1 +0,0 @@ -.hljs{display:block;overflow-x:auto;padding:0.5em;background:#23241f}.hljs,.hljs-tag,.hljs-subst{color:#f8f8f2}.hljs-strong,.hljs-emphasis{color:#a8a8a2}.hljs-bullet,.hljs-quote,.hljs-number,.hljs-regexp,.hljs-literal,.hljs-link{color:#ae81ff}.hljs-code,.hljs-title,.hljs-section,.hljs-selector-class{color:#a6e22e}.hljs-strong{font-weight:bold}.hljs-emphasis{font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-name,.hljs-attr{color:#f92672}.hljs-symbol,.hljs-attribute{color:#66d9ef}.hljs-params,.hljs-class .hljs-title{color:#f8f8f2}.hljs-string,.hljs-type,.hljs-built_in,.hljs-builtin-name,.hljs-selector-id,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-addition,.hljs-variable,.hljs-template-variable{color:#e6db74}.hljs-comment,.hljs-deletion,.hljs-meta{color:#75715e} \ No newline at end of file diff --git a/Wino.Mail/JS/Quill/quill.core.css b/Wino.Mail/JS/Quill/quill.core.css deleted file mode 100644 index 4217e4e5..00000000 --- a/Wino.Mail/JS/Quill/quill.core.css +++ /dev/null @@ -1,397 +0,0 @@ -/*! - * Quill Editor v1.3.6 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */ -.ql-container { - box-sizing: border-box; - font-family: Helvetica, Arial, sans-serif; - font-size: 13px; - height: 100%; - margin: 0px; - position: relative; -} -.ql-container.ql-disabled .ql-tooltip { - visibility: hidden; -} -.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before { - pointer-events: none; -} -.ql-clipboard { - left: -100000px; - height: 1px; - overflow-y: hidden; - position: absolute; - top: 50%; -} -.ql-clipboard p { - margin: 0; - padding: 0; -} -.ql-editor { - box-sizing: border-box; - line-height: 1.42; - height: 100%; - outline: none; - overflow-y: auto; - padding: 12px 15px; - tab-size: 4; - -moz-tab-size: 4; - text-align: left; - white-space: pre-wrap; - word-wrap: break-word; -} -.ql-editor > * { - cursor: text; -} -.ql-editor p, -.ql-editor ol, -.ql-editor ul, -.ql-editor pre, -.ql-editor blockquote, -.ql-editor h1, -.ql-editor h2, -.ql-editor h3, -.ql-editor h4, -.ql-editor h5, -.ql-editor h6 { - margin: 0; - padding: 0; - counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol, -.ql-editor ul { - padding-left: 1.5em; -} -.ql-editor ol > li, -.ql-editor ul > li { - list-style-type: none; -} -.ql-editor ul > li::before { - content: '\2022'; -} -.ql-editor ul[data-checked=true], -.ql-editor ul[data-checked=false] { - pointer-events: none; -} -.ql-editor ul[data-checked=true] > li *, -.ql-editor ul[data-checked=false] > li * { - pointer-events: all; -} -.ql-editor ul[data-checked=true] > li::before, -.ql-editor ul[data-checked=false] > li::before { - color: #777; - cursor: pointer; - pointer-events: all; -} -.ql-editor ul[data-checked=true] > li::before { - content: '\2611'; -} -.ql-editor ul[data-checked=false] > li::before { - content: '\2610'; -} -.ql-editor li::before { - display: inline-block; - white-space: nowrap; - width: 1.2em; -} -.ql-editor li:not(.ql-direction-rtl)::before { - margin-left: -1.5em; - margin-right: 0.3em; - text-align: right; -} -.ql-editor li.ql-direction-rtl::before { - margin-left: 0.3em; - margin-right: -1.5em; -} -.ql-editor ol li:not(.ql-direction-rtl), -.ql-editor ul li:not(.ql-direction-rtl) { - padding-left: 1.5em; -} -.ql-editor ol li.ql-direction-rtl, -.ql-editor ul li.ql-direction-rtl { - padding-right: 1.5em; -} -.ql-editor ol li { - counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; - counter-increment: list-0; -} -.ql-editor ol li:before { - content: counter(list-0, decimal) '. '; -} -.ql-editor ol li.ql-indent-1 { - counter-increment: list-1; -} -.ql-editor ol li.ql-indent-1:before { - content: counter(list-1, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-1 { - counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-2 { - counter-increment: list-2; -} -.ql-editor ol li.ql-indent-2:before { - content: counter(list-2, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-2 { - counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-3 { - counter-increment: list-3; -} -.ql-editor ol li.ql-indent-3:before { - content: counter(list-3, decimal) '. '; -} -.ql-editor ol li.ql-indent-3 { - counter-reset: list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-4 { - counter-increment: list-4; -} -.ql-editor ol li.ql-indent-4:before { - content: counter(list-4, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-4 { - counter-reset: list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-5 { - counter-increment: list-5; -} -.ql-editor ol li.ql-indent-5:before { - content: counter(list-5, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-5 { - counter-reset: list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-6 { - counter-increment: list-6; -} -.ql-editor ol li.ql-indent-6:before { - content: counter(list-6, decimal) '. '; -} -.ql-editor ol li.ql-indent-6 { - counter-reset: list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-7 { - counter-increment: list-7; -} -.ql-editor ol li.ql-indent-7:before { - content: counter(list-7, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-7 { - counter-reset: list-8 list-9; -} -.ql-editor ol li.ql-indent-8 { - counter-increment: list-8; -} -.ql-editor ol li.ql-indent-8:before { - content: counter(list-8, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-8 { - counter-reset: list-9; -} -.ql-editor ol li.ql-indent-9 { - counter-increment: list-9; -} -.ql-editor ol li.ql-indent-9:before { - content: counter(list-9, decimal) '. '; -} -.ql-editor .ql-indent-1:not(.ql-direction-rtl) { - padding-left: 3em; -} -.ql-editor li.ql-indent-1:not(.ql-direction-rtl) { - padding-left: 4.5em; -} -.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right { - padding-right: 3em; -} -.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right { - padding-right: 4.5em; -} -.ql-editor .ql-indent-2:not(.ql-direction-rtl) { - padding-left: 6em; -} -.ql-editor li.ql-indent-2:not(.ql-direction-rtl) { - padding-left: 7.5em; -} -.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right { - padding-right: 6em; -} -.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right { - padding-right: 7.5em; -} -.ql-editor .ql-indent-3:not(.ql-direction-rtl) { - padding-left: 9em; -} -.ql-editor li.ql-indent-3:not(.ql-direction-rtl) { - padding-left: 10.5em; -} -.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right { - padding-right: 9em; -} -.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right { - padding-right: 10.5em; -} -.ql-editor .ql-indent-4:not(.ql-direction-rtl) { - padding-left: 12em; -} -.ql-editor li.ql-indent-4:not(.ql-direction-rtl) { - padding-left: 13.5em; -} -.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right { - padding-right: 12em; -} -.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right { - padding-right: 13.5em; -} -.ql-editor .ql-indent-5:not(.ql-direction-rtl) { - padding-left: 15em; -} -.ql-editor li.ql-indent-5:not(.ql-direction-rtl) { - padding-left: 16.5em; -} -.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right { - padding-right: 15em; -} -.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right { - padding-right: 16.5em; -} -.ql-editor .ql-indent-6:not(.ql-direction-rtl) { - padding-left: 18em; -} -.ql-editor li.ql-indent-6:not(.ql-direction-rtl) { - padding-left: 19.5em; -} -.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right { - padding-right: 18em; -} -.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right { - padding-right: 19.5em; -} -.ql-editor .ql-indent-7:not(.ql-direction-rtl) { - padding-left: 21em; -} -.ql-editor li.ql-indent-7:not(.ql-direction-rtl) { - padding-left: 22.5em; -} -.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right { - padding-right: 21em; -} -.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right { - padding-right: 22.5em; -} -.ql-editor .ql-indent-8:not(.ql-direction-rtl) { - padding-left: 24em; -} -.ql-editor li.ql-indent-8:not(.ql-direction-rtl) { - padding-left: 25.5em; -} -.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right { - padding-right: 24em; -} -.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right { - padding-right: 25.5em; -} -.ql-editor .ql-indent-9:not(.ql-direction-rtl) { - padding-left: 27em; -} -.ql-editor li.ql-indent-9:not(.ql-direction-rtl) { - padding-left: 28.5em; -} -.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right { - padding-right: 27em; -} -.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right { - padding-right: 28.5em; -} -.ql-editor .ql-video { - display: block; - max-width: 100%; -} -.ql-editor .ql-video.ql-align-center { - margin: 0 auto; -} -.ql-editor .ql-video.ql-align-right { - margin: 0 0 0 auto; -} -.ql-editor .ql-bg-black { - background-color: #000; -} -.ql-editor .ql-bg-red { - background-color: #e60000; -} -.ql-editor .ql-bg-orange { - background-color: #f90; -} -.ql-editor .ql-bg-yellow { - background-color: #ff0; -} -.ql-editor .ql-bg-green { - background-color: #008a00; -} -.ql-editor .ql-bg-blue { - background-color: #06c; -} -.ql-editor .ql-bg-purple { - background-color: #93f; -} -.ql-editor .ql-color-white { - color: #fff; -} -.ql-editor .ql-color-red { - color: #e60000; -} -.ql-editor .ql-color-orange { - color: #f90; -} -.ql-editor .ql-color-yellow { - color: #ff0; -} -.ql-editor .ql-color-green { - color: #008a00; -} -.ql-editor .ql-color-blue { - color: #06c; -} -.ql-editor .ql-color-purple { - color: #93f; -} -.ql-editor .ql-font-serif { - font-family: Georgia, Times New Roman, serif; -} -.ql-editor .ql-font-monospace { - font-family: Monaco, Courier New, monospace; -} -.ql-editor .ql-size-small { - font-size: 0.75em; -} -.ql-editor .ql-size-large { - font-size: 1.5em; -} -.ql-editor .ql-size-huge { - font-size: 2.5em; -} -.ql-editor .ql-direction-rtl { - direction: rtl; - text-align: inherit; -} -.ql-editor .ql-align-center { - text-align: center; -} -.ql-editor .ql-align-justify { - text-align: justify; -} -.ql-editor .ql-align-right { - text-align: right; -} -.ql-editor.ql-blank::before { - color: rgba(0,0,0,0.6); - content: attr(data-placeholder); - font-style: italic; - left: 15px; - pointer-events: none; - position: absolute; - right: 15px; -} diff --git a/Wino.Mail/JS/Quill/quill.core.js b/Wino.Mail/JS/Quill/quill.core.js deleted file mode 100644 index a51d15c8..00000000 --- a/Wino.Mail/JS/Quill/quill.core.js +++ /dev/null @@ -1,8522 +0,0 @@ -/*! - * Quill Editor v1.3.6 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["Quill"] = factory(); - else - root["Quill"] = factory(); -})(typeof self !== 'undefined' ? self : this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 110); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var container_1 = __webpack_require__(17); -var format_1 = __webpack_require__(18); -var leaf_1 = __webpack_require__(19); -var scroll_1 = __webpack_require__(45); -var inline_1 = __webpack_require__(46); -var block_1 = __webpack_require__(47); -var embed_1 = __webpack_require__(48); -var text_1 = __webpack_require__(49); -var attributor_1 = __webpack_require__(12); -var class_1 = __webpack_require__(32); -var style_1 = __webpack_require__(33); -var store_1 = __webpack_require__(31); -var Registry = __webpack_require__(1); -var Parchment = { - Scope: Registry.Scope, - create: Registry.create, - find: Registry.find, - query: Registry.query, - register: Registry.register, - Container: container_1.default, - Format: format_1.default, - Leaf: leaf_1.default, - Embed: embed_1.default, - Scroll: scroll_1.default, - Block: block_1.default, - Inline: inline_1.default, - Text: text_1.default, - Attributor: { - Attribute: attributor_1.default, - Class: class_1.default, - Style: style_1.default, - Store: store_1.default, - }, -}; -exports.default = Parchment; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var ParchmentError = /** @class */ (function (_super) { - __extends(ParchmentError, _super); - function ParchmentError(message) { - var _this = this; - message = '[Parchment] ' + message; - _this = _super.call(this, message) || this; - _this.message = message; - _this.name = _this.constructor.name; - return _this; - } - return ParchmentError; -}(Error)); -exports.ParchmentError = ParchmentError; -var attributes = {}; -var classes = {}; -var tags = {}; -var types = {}; -exports.DATA_KEY = '__blot'; -var Scope; -(function (Scope) { - Scope[Scope["TYPE"] = 3] = "TYPE"; - Scope[Scope["LEVEL"] = 12] = "LEVEL"; - Scope[Scope["ATTRIBUTE"] = 13] = "ATTRIBUTE"; - Scope[Scope["BLOT"] = 14] = "BLOT"; - Scope[Scope["INLINE"] = 7] = "INLINE"; - Scope[Scope["BLOCK"] = 11] = "BLOCK"; - Scope[Scope["BLOCK_BLOT"] = 10] = "BLOCK_BLOT"; - Scope[Scope["INLINE_BLOT"] = 6] = "INLINE_BLOT"; - Scope[Scope["BLOCK_ATTRIBUTE"] = 9] = "BLOCK_ATTRIBUTE"; - Scope[Scope["INLINE_ATTRIBUTE"] = 5] = "INLINE_ATTRIBUTE"; - Scope[Scope["ANY"] = 15] = "ANY"; -})(Scope = exports.Scope || (exports.Scope = {})); -function create(input, value) { - var match = query(input); - if (match == null) { - throw new ParchmentError("Unable to create " + input + " blot"); - } - var BlotClass = match; - var node = - // @ts-ignore - input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value); - return new BlotClass(node, value); -} -exports.create = create; -function find(node, bubble) { - if (bubble === void 0) { bubble = false; } - if (node == null) - return null; - // @ts-ignore - if (node[exports.DATA_KEY] != null) - return node[exports.DATA_KEY].blot; - if (bubble) - return find(node.parentNode, bubble); - return null; -} -exports.find = find; -function query(query, scope) { - if (scope === void 0) { scope = Scope.ANY; } - var match; - if (typeof query === 'string') { - match = types[query] || attributes[query]; - // @ts-ignore - } - else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) { - match = types['text']; - } - else if (typeof query === 'number') { - if (query & Scope.LEVEL & Scope.BLOCK) { - match = types['block']; - } - else if (query & Scope.LEVEL & Scope.INLINE) { - match = types['inline']; - } - } - else if (query instanceof HTMLElement) { - var names = (query.getAttribute('class') || '').split(/\s+/); - for (var i in names) { - match = classes[names[i]]; - if (match) - break; - } - match = match || tags[query.tagName]; - } - if (match == null) - return null; - // @ts-ignore - if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope) - return match; - return null; -} -exports.query = query; -function register() { - var Definitions = []; - for (var _i = 0; _i < arguments.length; _i++) { - Definitions[_i] = arguments[_i]; - } - if (Definitions.length > 1) { - return Definitions.map(function (d) { - return register(d); - }); - } - var Definition = Definitions[0]; - if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') { - throw new ParchmentError('Invalid definition'); - } - else if (Definition.blotName === 'abstract') { - throw new ParchmentError('Cannot register abstract class'); - } - types[Definition.blotName || Definition.attrName] = Definition; - if (typeof Definition.keyName === 'string') { - attributes[Definition.keyName] = Definition; - } - else { - if (Definition.className != null) { - classes[Definition.className] = Definition; - } - if (Definition.tagName != null) { - if (Array.isArray(Definition.tagName)) { - Definition.tagName = Definition.tagName.map(function (tagName) { - return tagName.toUpperCase(); - }); - } - else { - Definition.tagName = Definition.tagName.toUpperCase(); - } - var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName]; - tagNames.forEach(function (tag) { - if (tags[tag] == null || Definition.className == null) { - tags[tag] = Definition; - } - }); - } - } - return Definition; -} -exports.register = register; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -var diff = __webpack_require__(51); -var equal = __webpack_require__(11); -var extend = __webpack_require__(3); -var op = __webpack_require__(20); - - -var NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff() - - -var Delta = function (ops) { - // Assume we are given a well formed ops - if (Array.isArray(ops)) { - this.ops = ops; - } else if (ops != null && Array.isArray(ops.ops)) { - this.ops = ops.ops; - } else { - this.ops = []; - } -}; - - -Delta.prototype.insert = function (text, attributes) { - var newOp = {}; - if (text.length === 0) return this; - newOp.insert = text; - if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) { - newOp.attributes = attributes; - } - return this.push(newOp); -}; - -Delta.prototype['delete'] = function (length) { - if (length <= 0) return this; - return this.push({ 'delete': length }); -}; - -Delta.prototype.retain = function (length, attributes) { - if (length <= 0) return this; - var newOp = { retain: length }; - if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) { - newOp.attributes = attributes; - } - return this.push(newOp); -}; - -Delta.prototype.push = function (newOp) { - var index = this.ops.length; - var lastOp = this.ops[index - 1]; - newOp = extend(true, {}, newOp); - if (typeof lastOp === 'object') { - if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') { - this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] }; - return this; - } - // Since it does not matter if we insert before or after deleting at the same index, - // always prefer to insert first - if (typeof lastOp['delete'] === 'number' && newOp.insert != null) { - index -= 1; - lastOp = this.ops[index - 1]; - if (typeof lastOp !== 'object') { - this.ops.unshift(newOp); - return this; - } - } - if (equal(newOp.attributes, lastOp.attributes)) { - if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') { - this.ops[index - 1] = { insert: lastOp.insert + newOp.insert }; - if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes - return this; - } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') { - this.ops[index - 1] = { retain: lastOp.retain + newOp.retain }; - if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes - return this; - } - } - } - if (index === this.ops.length) { - this.ops.push(newOp); - } else { - this.ops.splice(index, 0, newOp); - } - return this; -}; - -Delta.prototype.chop = function () { - var lastOp = this.ops[this.ops.length - 1]; - if (lastOp && lastOp.retain && !lastOp.attributes) { - this.ops.pop(); - } - return this; -}; - -Delta.prototype.filter = function (predicate) { - return this.ops.filter(predicate); -}; - -Delta.prototype.forEach = function (predicate) { - this.ops.forEach(predicate); -}; - -Delta.prototype.map = function (predicate) { - return this.ops.map(predicate); -}; - -Delta.prototype.partition = function (predicate) { - var passed = [], failed = []; - this.forEach(function(op) { - var target = predicate(op) ? passed : failed; - target.push(op); - }); - return [passed, failed]; -}; - -Delta.prototype.reduce = function (predicate, initial) { - return this.ops.reduce(predicate, initial); -}; - -Delta.prototype.changeLength = function () { - return this.reduce(function (length, elem) { - if (elem.insert) { - return length + op.length(elem); - } else if (elem.delete) { - return length - elem.delete; - } - return length; - }, 0); -}; - -Delta.prototype.length = function () { - return this.reduce(function (length, elem) { - return length + op.length(elem); - }, 0); -}; - -Delta.prototype.slice = function (start, end) { - start = start || 0; - if (typeof end !== 'number') end = Infinity; - var ops = []; - var iter = op.iterator(this.ops); - var index = 0; - while (index < end && iter.hasNext()) { - var nextOp; - if (index < start) { - nextOp = iter.next(start - index); - } else { - nextOp = iter.next(end - index); - ops.push(nextOp); - } - index += op.length(nextOp); - } - return new Delta(ops); -}; - - -Delta.prototype.compose = function (other) { - var thisIter = op.iterator(this.ops); - var otherIter = op.iterator(other.ops); - var delta = new Delta(); - while (thisIter.hasNext() || otherIter.hasNext()) { - if (otherIter.peekType() === 'insert') { - delta.push(otherIter.next()); - } else if (thisIter.peekType() === 'delete') { - delta.push(thisIter.next()); - } else { - var length = Math.min(thisIter.peekLength(), otherIter.peekLength()); - var thisOp = thisIter.next(length); - var otherOp = otherIter.next(length); - if (typeof otherOp.retain === 'number') { - var newOp = {}; - if (typeof thisOp.retain === 'number') { - newOp.retain = length; - } else { - newOp.insert = thisOp.insert; - } - // Preserve null when composing with a retain, otherwise remove it for inserts - var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number'); - if (attributes) newOp.attributes = attributes; - delta.push(newOp); - // Other op should be delete, we could be an insert or retain - // Insert + delete cancels out - } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') { - delta.push(otherOp); - } - } - } - return delta.chop(); -}; - -Delta.prototype.concat = function (other) { - var delta = new Delta(this.ops.slice()); - if (other.ops.length > 0) { - delta.push(other.ops[0]); - delta.ops = delta.ops.concat(other.ops.slice(1)); - } - return delta; -}; - -Delta.prototype.diff = function (other, index) { - if (this.ops === other.ops) { - return new Delta(); - } - var strings = [this, other].map(function (delta) { - return delta.map(function (op) { - if (op.insert != null) { - return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER; - } - var prep = (delta === other) ? 'on' : 'with'; - throw new Error('diff() called ' + prep + ' non-document'); - }).join(''); - }); - var delta = new Delta(); - var diffResult = diff(strings[0], strings[1], index); - var thisIter = op.iterator(this.ops); - var otherIter = op.iterator(other.ops); - diffResult.forEach(function (component) { - var length = component[1].length; - while (length > 0) { - var opLength = 0; - switch (component[0]) { - case diff.INSERT: - opLength = Math.min(otherIter.peekLength(), length); - delta.push(otherIter.next(opLength)); - break; - case diff.DELETE: - opLength = Math.min(length, thisIter.peekLength()); - thisIter.next(opLength); - delta['delete'](opLength); - break; - case diff.EQUAL: - opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length); - var thisOp = thisIter.next(opLength); - var otherOp = otherIter.next(opLength); - if (equal(thisOp.insert, otherOp.insert)) { - delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes)); - } else { - delta.push(otherOp)['delete'](opLength); - } - break; - } - length -= opLength; - } - }); - return delta.chop(); -}; - -Delta.prototype.eachLine = function (predicate, newline) { - newline = newline || '\n'; - var iter = op.iterator(this.ops); - var line = new Delta(); - var i = 0; - while (iter.hasNext()) { - if (iter.peekType() !== 'insert') return; - var thisOp = iter.peek(); - var start = op.length(thisOp) - iter.peekLength(); - var index = typeof thisOp.insert === 'string' ? - thisOp.insert.indexOf(newline, start) - start : -1; - if (index < 0) { - line.push(iter.next()); - } else if (index > 0) { - line.push(iter.next(index)); - } else { - if (predicate(line, iter.next(1).attributes || {}, i) === false) { - return; - } - i += 1; - line = new Delta(); - } - } - if (line.length() > 0) { - predicate(line, {}, i); - } -}; - -Delta.prototype.transform = function (other, priority) { - priority = !!priority; - if (typeof other === 'number') { - return this.transformPosition(other, priority); - } - var thisIter = op.iterator(this.ops); - var otherIter = op.iterator(other.ops); - var delta = new Delta(); - while (thisIter.hasNext() || otherIter.hasNext()) { - if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) { - delta.retain(op.length(thisIter.next())); - } else if (otherIter.peekType() === 'insert') { - delta.push(otherIter.next()); - } else { - var length = Math.min(thisIter.peekLength(), otherIter.peekLength()); - var thisOp = thisIter.next(length); - var otherOp = otherIter.next(length); - if (thisOp['delete']) { - // Our delete either makes their delete redundant or removes their retain - continue; - } else if (otherOp['delete']) { - delta.push(otherOp); - } else { - // We retain either their retain or insert - delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority)); - } - } - } - return delta.chop(); -}; - -Delta.prototype.transformPosition = function (index, priority) { - priority = !!priority; - var thisIter = op.iterator(this.ops); - var offset = 0; - while (thisIter.hasNext() && offset <= index) { - var length = thisIter.peekLength(); - var nextType = thisIter.peekType(); - thisIter.next(); - if (nextType === 'delete') { - index -= Math.min(length, index - offset); - continue; - } else if (nextType === 'insert' && (offset < index || !priority)) { - index += length; - } - offset += length; - } - return index; -}; - - -module.exports = Delta; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - -'use strict'; - -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; - -var isArray = function isArray(arr) { - if (typeof Array.isArray === 'function') { - return Array.isArray(arr); - } - - return toStr.call(arr) === '[object Array]'; -}; - -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { /**/ } - - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; - -module.exports = function extend() { - var options, name, src, copy, copyIsArray, clone; - var target = arguments[0]; - var i = 1; - var length = arguments.length; - var deep = false; - - // Handle a deep copy situation - if (typeof target === 'boolean') { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { - target = {}; - } - - for (; i < length; ++i) { - options = arguments[i]; - // Only deal with non-null/undefined values - if (options != null) { - // Extend the base object - for (name in options) { - src = target[name]; - copy = options[name]; - - // Prevent never-ending loop - if (target !== copy) { - // Recurse if we're merging plain objects or arrays - if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && isArray(src) ? src : []; - } else { - clone = src && isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[name] = extend(deep, clone, copy); - - // Don't bring in undefined values - } else if (typeof copy !== 'undefined') { - target[name] = copy; - } - } - } - } - } - - // Return the modified object - return target; -}; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.BlockEmbed = exports.bubbleFormats = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _break = __webpack_require__(16); - -var _break2 = _interopRequireDefault(_break); - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var NEWLINE_LENGTH = 1; - -var BlockEmbed = function (_Parchment$Embed) { - _inherits(BlockEmbed, _Parchment$Embed); - - function BlockEmbed() { - _classCallCheck(this, BlockEmbed); - - return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments)); - } - - _createClass(BlockEmbed, [{ - key: 'attach', - value: function attach() { - _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this); - this.attributes = new _parchment2.default.Attributor.Store(this.domNode); - } - }, { - key: 'delta', - value: function delta() { - return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values())); - } - }, { - key: 'format', - value: function format(name, value) { - var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE); - if (attribute != null) { - this.attributes.attribute(attribute, value); - } - } - }, { - key: 'formatAt', - value: function formatAt(index, length, name, value) { - this.format(name, value); - } - }, { - key: 'insertAt', - value: function insertAt(index, value, def) { - if (typeof value === 'string' && value.endsWith('\n')) { - var block = _parchment2.default.create(Block.blotName); - this.parent.insertBefore(block, index === 0 ? this : this.next); - block.insertAt(0, value.slice(0, -1)); - } else { - _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def); - } - } - }]); - - return BlockEmbed; -}(_parchment2.default.Embed); - -BlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT; -// It is important for cursor behavior BlockEmbeds use tags that are block level elements - - -var Block = function (_Parchment$Block) { - _inherits(Block, _Parchment$Block); - - function Block(domNode) { - _classCallCheck(this, Block); - - var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode)); - - _this2.cache = {}; - return _this2; - } - - _createClass(Block, [{ - key: 'delta', - value: function delta() { - if (this.cache.delta == null) { - this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) { - if (leaf.length() === 0) { - return delta; - } else { - return delta.insert(leaf.value(), bubbleFormats(leaf)); - } - }, new _quillDelta2.default()).insert('\n', bubbleFormats(this)); - } - return this.cache.delta; - } - }, { - key: 'deleteAt', - value: function deleteAt(index, length) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length); - this.cache = {}; - } - }, { - key: 'formatAt', - value: function formatAt(index, length, name, value) { - if (length <= 0) return; - if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) { - if (index + length === this.length()) { - this.format(name, value); - } - } else { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value); - } - this.cache = {}; - } - }, { - key: 'insertAt', - value: function insertAt(index, value, def) { - if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def); - if (value.length === 0) return; - var lines = value.split('\n'); - var text = lines.shift(); - if (text.length > 0) { - if (index < this.length() - 1 || this.children.tail == null) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text); - } else { - this.children.tail.insertAt(this.children.tail.length(), text); - } - this.cache = {}; - } - var block = this; - lines.reduce(function (index, line) { - block = block.split(index, true); - block.insertAt(0, line); - return line.length; - }, index + text.length); - } - }, { - key: 'insertBefore', - value: function insertBefore(blot, ref) { - var head = this.children.head; - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref); - if (head instanceof _break2.default) { - head.remove(); - } - this.cache = {}; - } - }, { - key: 'length', - value: function length() { - if (this.cache.length == null) { - this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH; - } - return this.cache.length; - } - }, { - key: 'moveChildren', - value: function moveChildren(target, ref) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref); - this.cache = {}; - } - }, { - key: 'optimize', - value: function optimize(context) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context); - this.cache = {}; - } - }, { - key: 'path', - value: function path(index) { - return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true); - } - }, { - key: 'removeChild', - value: function removeChild(child) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child); - this.cache = {}; - } - }, { - key: 'split', - value: function split(index) { - var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) { - var clone = this.clone(); - if (index === 0) { - this.parent.insertBefore(clone, this); - return this; - } else { - this.parent.insertBefore(clone, this.next); - return clone; - } - } else { - var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force); - this.cache = {}; - return next; - } - } - }]); - - return Block; -}(_parchment2.default.Block); - -Block.blotName = 'block'; -Block.tagName = 'P'; -Block.defaultChild = 'break'; -Block.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default]; - -function bubbleFormats(blot) { - var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (blot == null) return formats; - if (typeof blot.formats === 'function') { - formats = (0, _extend2.default)(formats, blot.formats()); - } - if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) { - return formats; - } - return bubbleFormats(blot.parent, formats); -} - -exports.bubbleFormats = bubbleFormats; -exports.BlockEmbed = BlockEmbed; -exports.default = Block; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.overload = exports.expandConfig = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -__webpack_require__(50); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _editor = __webpack_require__(14); - -var _editor2 = _interopRequireDefault(_editor); - -var _emitter3 = __webpack_require__(8); - -var _emitter4 = _interopRequireDefault(_emitter3); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _selection = __webpack_require__(15); - -var _selection2 = _interopRequireDefault(_selection); - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -var _theme = __webpack_require__(34); - -var _theme2 = _interopRequireDefault(_theme); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var debug = (0, _logger2.default)('quill'); - -var Quill = function () { - _createClass(Quill, null, [{ - key: 'debug', - value: function debug(limit) { - if (limit === true) { - limit = 'log'; - } - _logger2.default.level(limit); - } - }, { - key: 'find', - value: function find(node) { - return node.__quill || _parchment2.default.find(node); - } - }, { - key: 'import', - value: function _import(name) { - if (this.imports[name] == null) { - debug.error('Cannot import ' + name + '. Are you sure it was registered?'); - } - return this.imports[name]; - } - }, { - key: 'register', - value: function register(path, target) { - var _this = this; - - var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (typeof path !== 'string') { - var name = path.attrName || path.blotName; - if (typeof name === 'string') { - // register(Blot | Attributor, overwrite) - this.register('formats/' + name, path, target); - } else { - Object.keys(path).forEach(function (key) { - _this.register(key, path[key], target); - }); - } - } else { - if (this.imports[path] != null && !overwrite) { - debug.warn('Overwriting ' + path + ' with', target); - } - this.imports[path] = target; - if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') { - _parchment2.default.register(target); - } else if (path.startsWith('modules') && typeof target.register === 'function') { - target.register(); - } - } - } - }]); - - function Quill(container) { - var _this2 = this; - - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - _classCallCheck(this, Quill); - - this.options = expandConfig(container, options); - this.container = this.options.container; - if (this.container == null) { - return debug.error('Invalid Quill container', container); - } - if (this.options.debug) { - Quill.debug(this.options.debug); - } - var html = this.container.innerHTML.trim(); - this.container.classList.add('ql-container'); - this.container.innerHTML = ''; - this.container.__quill = this; - this.root = this.addContainer('ql-editor'); - this.root.classList.add('ql-blank'); - this.root.setAttribute('data-gramm', false); - this.scrollingContainer = this.options.scrollingContainer || this.root; - this.emitter = new _emitter4.default(); - this.scroll = _parchment2.default.create(this.root, { - emitter: this.emitter, - whitelist: this.options.formats - }); - this.editor = new _editor2.default(this.scroll); - this.selection = new _selection2.default(this.scroll, this.emitter); - this.theme = new this.options.theme(this, this.options); - this.keyboard = this.theme.addModule('keyboard'); - this.clipboard = this.theme.addModule('clipboard'); - this.history = this.theme.addModule('history'); - this.theme.init(); - this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) { - if (type === _emitter4.default.events.TEXT_CHANGE) { - _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank()); - } - }); - this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) { - var range = _this2.selection.lastRange; - var index = range && range.length === 0 ? range.index : undefined; - modify.call(_this2, function () { - return _this2.editor.update(null, mutations, index); - }, source); - }); - var contents = this.clipboard.convert('
' + html + '


'); - this.setContents(contents); - this.history.clear(); - if (this.options.placeholder) { - this.root.setAttribute('data-placeholder', this.options.placeholder); - } - if (this.options.readOnly) { - this.disable(); - } - } - - _createClass(Quill, [{ - key: 'addContainer', - value: function addContainer(container) { - var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - if (typeof container === 'string') { - var className = container; - container = document.createElement('div'); - container.classList.add(className); - } - this.container.insertBefore(container, refNode); - return container; - } - }, { - key: 'blur', - value: function blur() { - this.selection.setRange(null); - } - }, { - key: 'deleteText', - value: function deleteText(index, length, source) { - var _this3 = this; - - var _overload = overload(index, length, source); - - var _overload2 = _slicedToArray(_overload, 4); - - index = _overload2[0]; - length = _overload2[1]; - source = _overload2[3]; - - return modify.call(this, function () { - return _this3.editor.deleteText(index, length); - }, source, index, -1 * length); - } - }, { - key: 'disable', - value: function disable() { - this.enable(false); - } - }, { - key: 'enable', - value: function enable() { - var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - - this.scroll.enable(enabled); - this.container.classList.toggle('ql-disabled', !enabled); - } - }, { - key: 'focus', - value: function focus() { - var scrollTop = this.scrollingContainer.scrollTop; - this.selection.focus(); - this.scrollingContainer.scrollTop = scrollTop; - this.scrollIntoView(); - } - }, { - key: 'format', - value: function format(name, value) { - var _this4 = this; - - var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API; - - return modify.call(this, function () { - var range = _this4.getSelection(true); - var change = new _quillDelta2.default(); - if (range == null) { - return change; - } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) { - change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value)); - } else if (range.length === 0) { - _this4.selection.format(name, value); - return change; - } else { - change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value)); - } - _this4.setSelection(range, _emitter4.default.sources.SILENT); - return change; - }, source); - } - }, { - key: 'formatLine', - value: function formatLine(index, length, name, value, source) { - var _this5 = this; - - var formats = void 0; - - var _overload3 = overload(index, length, name, value, source); - - var _overload4 = _slicedToArray(_overload3, 4); - - index = _overload4[0]; - length = _overload4[1]; - formats = _overload4[2]; - source = _overload4[3]; - - return modify.call(this, function () { - return _this5.editor.formatLine(index, length, formats); - }, source, index, 0); - } - }, { - key: 'formatText', - value: function formatText(index, length, name, value, source) { - var _this6 = this; - - var formats = void 0; - - var _overload5 = overload(index, length, name, value, source); - - var _overload6 = _slicedToArray(_overload5, 4); - - index = _overload6[0]; - length = _overload6[1]; - formats = _overload6[2]; - source = _overload6[3]; - - return modify.call(this, function () { - return _this6.editor.formatText(index, length, formats); - }, source, index, 0); - } - }, { - key: 'getBounds', - value: function getBounds(index) { - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - var bounds = void 0; - if (typeof index === 'number') { - bounds = this.selection.getBounds(index, length); - } else { - bounds = this.selection.getBounds(index.index, index.length); - } - var containerBounds = this.container.getBoundingClientRect(); - return { - bottom: bounds.bottom - containerBounds.top, - height: bounds.height, - left: bounds.left - containerBounds.left, - right: bounds.right - containerBounds.left, - top: bounds.top - containerBounds.top, - width: bounds.width - }; - } - }, { - key: 'getContents', - value: function getContents() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index; - - var _overload7 = overload(index, length); - - var _overload8 = _slicedToArray(_overload7, 2); - - index = _overload8[0]; - length = _overload8[1]; - - return this.editor.getContents(index, length); - } - }, { - key: 'getFormat', - value: function getFormat() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true); - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - if (typeof index === 'number') { - return this.editor.getFormat(index, length); - } else { - return this.editor.getFormat(index.index, index.length); - } - } - }, { - key: 'getIndex', - value: function getIndex(blot) { - return blot.offset(this.scroll); - } - }, { - key: 'getLength', - value: function getLength() { - return this.scroll.length(); - } - }, { - key: 'getLeaf', - value: function getLeaf(index) { - return this.scroll.leaf(index); - } - }, { - key: 'getLine', - value: function getLine(index) { - return this.scroll.line(index); - } - }, { - key: 'getLines', - value: function getLines() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE; - - if (typeof index !== 'number') { - return this.scroll.lines(index.index, index.length); - } else { - return this.scroll.lines(index, length); - } - } - }, { - key: 'getModule', - value: function getModule(name) { - return this.theme.modules[name]; - } - }, { - key: 'getSelection', - value: function getSelection() { - var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (focus) this.focus(); - this.update(); // Make sure we access getRange with editor in consistent state - return this.selection.getRange()[0]; - } - }, { - key: 'getText', - value: function getText() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index; - - var _overload9 = overload(index, length); - - var _overload10 = _slicedToArray(_overload9, 2); - - index = _overload10[0]; - length = _overload10[1]; - - return this.editor.getText(index, length); - } - }, { - key: 'hasFocus', - value: function hasFocus() { - return this.selection.hasFocus(); - } - }, { - key: 'insertEmbed', - value: function insertEmbed(index, embed, value) { - var _this7 = this; - - var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API; - - return modify.call(this, function () { - return _this7.editor.insertEmbed(index, embed, value); - }, source, index); - } - }, { - key: 'insertText', - value: function insertText(index, text, name, value, source) { - var _this8 = this; - - var formats = void 0; - - var _overload11 = overload(index, 0, name, value, source); - - var _overload12 = _slicedToArray(_overload11, 4); - - index = _overload12[0]; - formats = _overload12[2]; - source = _overload12[3]; - - return modify.call(this, function () { - return _this8.editor.insertText(index, text, formats); - }, source, index, text.length); - } - }, { - key: 'isEnabled', - value: function isEnabled() { - return !this.container.classList.contains('ql-disabled'); - } - }, { - key: 'off', - value: function off() { - return this.emitter.off.apply(this.emitter, arguments); - } - }, { - key: 'on', - value: function on() { - return this.emitter.on.apply(this.emitter, arguments); - } - }, { - key: 'once', - value: function once() { - return this.emitter.once.apply(this.emitter, arguments); - } - }, { - key: 'pasteHTML', - value: function pasteHTML(index, html, source) { - this.clipboard.dangerouslyPasteHTML(index, html, source); - } - }, { - key: 'removeFormat', - value: function removeFormat(index, length, source) { - var _this9 = this; - - var _overload13 = overload(index, length, source); - - var _overload14 = _slicedToArray(_overload13, 4); - - index = _overload14[0]; - length = _overload14[1]; - source = _overload14[3]; - - return modify.call(this, function () { - return _this9.editor.removeFormat(index, length); - }, source, index); - } - }, { - key: 'scrollIntoView', - value: function scrollIntoView() { - this.selection.scrollIntoView(this.scrollingContainer); - } - }, { - key: 'setContents', - value: function setContents(delta) { - var _this10 = this; - - var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API; - - return modify.call(this, function () { - delta = new _quillDelta2.default(delta); - var length = _this10.getLength(); - var deleted = _this10.editor.deleteText(0, length); - var applied = _this10.editor.applyDelta(delta); - var lastOp = applied.ops[applied.ops.length - 1]; - if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\n') { - _this10.editor.deleteText(_this10.getLength() - 1, 1); - applied.delete(1); - } - var ret = deleted.compose(applied); - return ret; - }, source); - } - }, { - key: 'setSelection', - value: function setSelection(index, length, source) { - if (index == null) { - this.selection.setRange(null, length || Quill.sources.API); - } else { - var _overload15 = overload(index, length, source); - - var _overload16 = _slicedToArray(_overload15, 4); - - index = _overload16[0]; - length = _overload16[1]; - source = _overload16[3]; - - this.selection.setRange(new _selection.Range(index, length), source); - if (source !== _emitter4.default.sources.SILENT) { - this.selection.scrollIntoView(this.scrollingContainer); - } - } - } - }, { - key: 'setText', - value: function setText(text) { - var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API; - - var delta = new _quillDelta2.default().insert(text); - return this.setContents(delta, source); - } - }, { - key: 'update', - value: function update() { - var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER; - - var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes - this.selection.update(source); - return change; - } - }, { - key: 'updateContents', - value: function updateContents(delta) { - var _this11 = this; - - var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API; - - return modify.call(this, function () { - delta = new _quillDelta2.default(delta); - return _this11.editor.applyDelta(delta, source); - }, source, true); - } - }]); - - return Quill; -}(); - -Quill.DEFAULTS = { - bounds: null, - formats: null, - modules: {}, - placeholder: '', - readOnly: false, - scrollingContainer: null, - strict: true, - theme: 'default' -}; -Quill.events = _emitter4.default.events; -Quill.sources = _emitter4.default.sources; -// eslint-disable-next-line no-undef -Quill.version = false ? 'dev' : "1.3.6"; - -Quill.imports = { - 'delta': _quillDelta2.default, - 'parchment': _parchment2.default, - 'core/module': _module2.default, - 'core/theme': _theme2.default -}; - -function expandConfig(container, userConfig) { - userConfig = (0, _extend2.default)(true, { - container: container, - modules: { - clipboard: true, - keyboard: true, - history: true - } - }, userConfig); - if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) { - userConfig.theme = _theme2.default; - } else { - userConfig.theme = Quill.import('themes/' + userConfig.theme); - if (userConfig.theme == null) { - throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?'); - } - } - var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS); - [themeConfig, userConfig].forEach(function (config) { - config.modules = config.modules || {}; - Object.keys(config.modules).forEach(function (module) { - if (config.modules[module] === true) { - config.modules[module] = {}; - } - }); - }); - var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules)); - var moduleConfig = moduleNames.reduce(function (config, name) { - var moduleClass = Quill.import('modules/' + name); - if (moduleClass == null) { - debug.error('Cannot load ' + name + ' module. Are you sure you registered it?'); - } else { - config[name] = moduleClass.DEFAULTS || {}; - } - return config; - }, {}); - // Special case toolbar shorthand - if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) { - userConfig.modules.toolbar = { - container: userConfig.modules.toolbar - }; - } - userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig); - ['bounds', 'container', 'scrollingContainer'].forEach(function (key) { - if (typeof userConfig[key] === 'string') { - userConfig[key] = document.querySelector(userConfig[key]); - } - }); - userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) { - if (userConfig.modules[name]) { - config[name] = userConfig.modules[name]; - } - return config; - }, {}); - return userConfig; -} - -// Handle selection preservation and TEXT_CHANGE emission -// common to modification APIs -function modify(modifier, source, index, shift) { - if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) { - return new _quillDelta2.default(); - } - var range = index == null ? null : this.getSelection(); - var oldDelta = this.editor.delta; - var change = modifier(); - if (range != null) { - if (index === true) index = range.index; - if (shift == null) { - range = shiftRange(range, change, source); - } else if (shift !== 0) { - range = shiftRange(range, index, shift, source); - } - this.setSelection(range, _emitter4.default.sources.SILENT); - } - if (change.length() > 0) { - var _emitter; - - var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source]; - (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args)); - if (source !== _emitter4.default.sources.SILENT) { - var _emitter2; - - (_emitter2 = this.emitter).emit.apply(_emitter2, args); - } - } - return change; -} - -function overload(index, length, name, value, source) { - var formats = {}; - if (typeof index.index === 'number' && typeof index.length === 'number') { - // Allow for throwaway end (used by insertText/insertEmbed) - if (typeof length !== 'number') { - source = value, value = name, name = length, length = index.length, index = index.index; - } else { - length = index.length, index = index.index; - } - } else if (typeof length !== 'number') { - source = value, value = name, name = length, length = 0; - } - // Handle format being object, two format name/value strings or excluded - if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') { - formats = name; - source = value; - } else if (typeof name === 'string') { - if (value != null) { - formats[name] = value; - } else { - source = name; - } - } - // Handle optional source - source = source || _emitter4.default.sources.API; - return [index, length, formats, source]; -} - -function shiftRange(range, index, length, source) { - if (range == null) return null; - var start = void 0, - end = void 0; - if (index instanceof _quillDelta2.default) { - var _map = [range.index, range.index + range.length].map(function (pos) { - return index.transformPosition(pos, source !== _emitter4.default.sources.USER); - }); - - var _map2 = _slicedToArray(_map, 2); - - start = _map2[0]; - end = _map2[1]; - } else { - var _map3 = [range.index, range.index + range.length].map(function (pos) { - if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos; - if (length >= 0) { - return pos + length; - } else { - return Math.max(index, pos + length); - } - }); - - var _map4 = _slicedToArray(_map3, 2); - - start = _map4[0]; - end = _map4[1]; - } - return new _selection.Range(start, end - start); -} - -exports.expandConfig = expandConfig; -exports.overload = overload; -exports.default = Quill; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Inline = function (_Parchment$Inline) { - _inherits(Inline, _Parchment$Inline); - - function Inline() { - _classCallCheck(this, Inline); - - return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments)); - } - - _createClass(Inline, [{ - key: 'formatAt', - value: function formatAt(index, length, name, value) { - if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) { - var blot = this.isolate(index, length); - if (value) { - blot.wrap(name, value); - } - } else { - _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value); - } - } - }, { - key: 'optimize', - value: function optimize(context) { - _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context); - if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) { - var parent = this.parent.isolate(this.offset(), this.length()); - this.moveChildren(parent); - parent.wrap(this); - } - } - }], [{ - key: 'compare', - value: function compare(self, other) { - var selfIndex = Inline.order.indexOf(self); - var otherIndex = Inline.order.indexOf(other); - if (selfIndex >= 0 || otherIndex >= 0) { - return selfIndex - otherIndex; - } else if (self === other) { - return 0; - } else if (self < other) { - return -1; - } else { - return 1; - } - } - }]); - - return Inline; -}(_parchment2.default.Inline); - -Inline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default]; -// Lower index means deeper in the DOM tree, since not found (-1) is for embeds -Inline.order = ['cursor', 'inline', // Must be lower -'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher -]; - -exports.default = Inline; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var TextBlot = function (_Parchment$Text) { - _inherits(TextBlot, _Parchment$Text); - - function TextBlot() { - _classCallCheck(this, TextBlot); - - return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments)); - } - - return TextBlot; -}(_parchment2.default.Text); - -exports.default = TextBlot; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _eventemitter = __webpack_require__(54); - -var _eventemitter2 = _interopRequireDefault(_eventemitter); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var debug = (0, _logger2.default)('quill:events'); - -var EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click']; - -EVENTS.forEach(function (eventName) { - document.addEventListener(eventName, function () { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) { - // TODO use WeakMap - if (node.__quill && node.__quill.emitter) { - var _node$__quill$emitter; - - (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args); - } - }); - }); -}); - -var Emitter = function (_EventEmitter) { - _inherits(Emitter, _EventEmitter); - - function Emitter() { - _classCallCheck(this, Emitter); - - var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this)); - - _this.listeners = {}; - _this.on('error', debug.error); - return _this; - } - - _createClass(Emitter, [{ - key: 'emit', - value: function emit() { - debug.log.apply(debug, arguments); - _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments); - } - }, { - key: 'handleDOM', - value: function handleDOM(event) { - for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - - (this.listeners[event.type] || []).forEach(function (_ref) { - var node = _ref.node, - handler = _ref.handler; - - if (event.target === node || node.contains(event.target)) { - handler.apply(undefined, [event].concat(args)); - } - }); - } - }, { - key: 'listenDOM', - value: function listenDOM(eventName, node, handler) { - if (!this.listeners[eventName]) { - this.listeners[eventName] = []; - } - this.listeners[eventName].push({ node: node, handler: handler }); - } - }]); - - return Emitter; -}(_eventemitter2.default); - -Emitter.events = { - EDITOR_CHANGE: 'editor-change', - SCROLL_BEFORE_UPDATE: 'scroll-before-update', - SCROLL_OPTIMIZE: 'scroll-optimize', - SCROLL_UPDATE: 'scroll-update', - SELECTION_CHANGE: 'selection-change', - TEXT_CHANGE: 'text-change' -}; -Emitter.sources = { - API: 'api', - SILENT: 'silent', - USER: 'user' -}; - -exports.default = Emitter; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Module = function Module(quill) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - _classCallCheck(this, Module); - - this.quill = quill; - this.options = options; -}; - -Module.DEFAULTS = {}; - -exports.default = Module; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var levels = ['error', 'warn', 'log', 'info']; -var level = 'warn'; - -function debug(method) { - if (levels.indexOf(method) <= levels.indexOf(level)) { - var _console; - - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - (_console = console)[method].apply(_console, args); // eslint-disable-line no-console - } -} - -function namespace(ns) { - return levels.reduce(function (logger, method) { - logger[method] = debug.bind(console, method, ns); - return logger; - }, {}); -} - -debug.level = namespace.level = function (newLevel) { - level = newLevel; -}; - -exports.default = namespace; - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -var pSlice = Array.prototype.slice; -var objectKeys = __webpack_require__(52); -var isArguments = __webpack_require__(53); - -var deepEqual = module.exports = function (actual, expected, opts) { - if (!opts) opts = {}; - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') { - return opts.strict ? actual === expected : actual == expected; - - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected, opts); - } -} - -function isUndefinedOrNull(value) { - return value === null || value === undefined; -} - -function isBuffer (x) { - if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false; - if (typeof x.copy !== 'function' || typeof x.slice !== 'function') { - return false; - } - if (x.length > 0 && typeof x[0] !== 'number') return false; - return true; -} - -function objEquiv(a, b, opts) { - var i, key; - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical 'prototype' property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return deepEqual(a, b, opts); - } - if (isBuffer(a)) { - if (!isBuffer(b)) { - return false; - } - if (a.length !== b.length) return false; - for (i = 0; i < a.length; i++) { - if (a[i] !== b[i]) return false; - } - return true; - } - try { - var ka = objectKeys(a), - kb = objectKeys(b); - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!deepEqual(a[key], b[key], opts)) return false; - } - return typeof a === typeof b; -} - - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var Registry = __webpack_require__(1); -var Attributor = /** @class */ (function () { - function Attributor(attrName, keyName, options) { - if (options === void 0) { options = {}; } - this.attrName = attrName; - this.keyName = keyName; - var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE; - if (options.scope != null) { - // Ignore type bits, force attribute bit - this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit; - } - else { - this.scope = Registry.Scope.ATTRIBUTE; - } - if (options.whitelist != null) - this.whitelist = options.whitelist; - } - Attributor.keys = function (node) { - return [].map.call(node.attributes, function (item) { - return item.name; - }); - }; - Attributor.prototype.add = function (node, value) { - if (!this.canAdd(node, value)) - return false; - node.setAttribute(this.keyName, value); - return true; - }; - Attributor.prototype.canAdd = function (node, value) { - var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE)); - if (match == null) - return false; - if (this.whitelist == null) - return true; - if (typeof value === 'string') { - return this.whitelist.indexOf(value.replace(/["']/g, '')) > -1; - } - else { - return this.whitelist.indexOf(value) > -1; - } - }; - Attributor.prototype.remove = function (node) { - node.removeAttribute(this.keyName); - }; - Attributor.prototype.value = function (node) { - var value = node.getAttribute(this.keyName); - if (this.canAdd(node, value) && value) { - return value; - } - return ''; - }; - return Attributor; -}()); -exports.default = Attributor; - - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.Code = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Code = function (_Inline) { - _inherits(Code, _Inline); - - function Code() { - _classCallCheck(this, Code); - - return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments)); - } - - return Code; -}(_inline2.default); - -Code.blotName = 'code'; -Code.tagName = 'CODE'; - -var CodeBlock = function (_Block) { - _inherits(CodeBlock, _Block); - - function CodeBlock() { - _classCallCheck(this, CodeBlock); - - return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments)); - } - - _createClass(CodeBlock, [{ - key: 'delta', - value: function delta() { - var _this3 = this; - - var text = this.domNode.textContent; - if (text.endsWith('\n')) { - // Should always be true - text = text.slice(0, -1); - } - return text.split('\n').reduce(function (delta, frag) { - return delta.insert(frag).insert('\n', _this3.formats()); - }, new _quillDelta2.default()); - } - }, { - key: 'format', - value: function format(name, value) { - if (name === this.statics.blotName && value) return; - - var _descendant = this.descendant(_text2.default, this.length() - 1), - _descendant2 = _slicedToArray(_descendant, 1), - text = _descendant2[0]; - - if (text != null) { - text.deleteAt(text.length() - 1, 1); - } - _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value); - } - }, { - key: 'formatAt', - value: function formatAt(index, length, name, value) { - if (length === 0) return; - if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) { - return; - } - var nextNewline = this.newlineIndex(index); - if (nextNewline < 0 || nextNewline >= index + length) return; - var prevNewline = this.newlineIndex(index, true) + 1; - var isolateLength = nextNewline - prevNewline + 1; - var blot = this.isolate(prevNewline, isolateLength); - var next = blot.next; - blot.format(name, value); - if (next instanceof CodeBlock) { - next.formatAt(0, index - prevNewline + length - isolateLength, name, value); - } - } - }, { - key: 'insertAt', - value: function insertAt(index, value, def) { - if (def != null) return; - - var _descendant3 = this.descendant(_text2.default, index), - _descendant4 = _slicedToArray(_descendant3, 2), - text = _descendant4[0], - offset = _descendant4[1]; - - text.insertAt(offset, value); - } - }, { - key: 'length', - value: function length() { - var length = this.domNode.textContent.length; - if (!this.domNode.textContent.endsWith('\n')) { - return length + 1; - } - return length; - } - }, { - key: 'newlineIndex', - value: function newlineIndex(searchIndex) { - var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (!reverse) { - var offset = this.domNode.textContent.slice(searchIndex).indexOf('\n'); - return offset > -1 ? searchIndex + offset : -1; - } else { - return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\n'); - } - } - }, { - key: 'optimize', - value: function optimize(context) { - if (!this.domNode.textContent.endsWith('\n')) { - this.appendChild(_parchment2.default.create('text', '\n')); - } - _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context); - var next = this.next; - if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) { - next.optimize(context); - next.moveChildren(this); - next.remove(); - } - } - }, { - key: 'replace', - value: function replace(target) { - _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target); - [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) { - var blot = _parchment2.default.find(node); - if (blot == null) { - node.parentNode.removeChild(node); - } else if (blot instanceof _parchment2.default.Embed) { - blot.remove(); - } else { - blot.unwrap(); - } - }); - } - }], [{ - key: 'create', - value: function create(value) { - var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value); - domNode.setAttribute('spellcheck', false); - return domNode; - } - }, { - key: 'formats', - value: function formats() { - return true; - } - }]); - - return CodeBlock; -}(_block2.default); - -CodeBlock.blotName = 'code-block'; -CodeBlock.tagName = 'PRE'; -CodeBlock.TAB = ' '; - -exports.Code = Code; -exports.default = CodeBlock; - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _op = __webpack_require__(20); - -var _op2 = _interopRequireDefault(_op); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _code = __webpack_require__(13); - -var _code2 = _interopRequireDefault(_code); - -var _cursor = __webpack_require__(24); - -var _cursor2 = _interopRequireDefault(_cursor); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -var _break = __webpack_require__(16); - -var _break2 = _interopRequireDefault(_break); - -var _clone = __webpack_require__(21); - -var _clone2 = _interopRequireDefault(_clone); - -var _deepEqual = __webpack_require__(11); - -var _deepEqual2 = _interopRequireDefault(_deepEqual); - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var ASCII = /^[ -~]*$/; - -var Editor = function () { - function Editor(scroll) { - _classCallCheck(this, Editor); - - this.scroll = scroll; - this.delta = this.getDelta(); - } - - _createClass(Editor, [{ - key: 'applyDelta', - value: function applyDelta(delta) { - var _this = this; - - var consumeNextNewline = false; - this.scroll.update(); - var scrollLength = this.scroll.length(); - this.scroll.batchStart(); - delta = normalizeDelta(delta); - delta.reduce(function (index, op) { - var length = op.retain || op.delete || op.insert.length || 1; - var attributes = op.attributes || {}; - if (op.insert != null) { - if (typeof op.insert === 'string') { - var text = op.insert; - if (text.endsWith('\n') && consumeNextNewline) { - consumeNextNewline = false; - text = text.slice(0, -1); - } - if (index >= scrollLength && !text.endsWith('\n')) { - consumeNextNewline = true; - } - _this.scroll.insertAt(index, text); - - var _scroll$line = _this.scroll.line(index), - _scroll$line2 = _slicedToArray(_scroll$line, 2), - line = _scroll$line2[0], - offset = _scroll$line2[1]; - - var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line)); - if (line instanceof _block2.default) { - var _line$descendant = line.descendant(_parchment2.default.Leaf, offset), - _line$descendant2 = _slicedToArray(_line$descendant, 1), - leaf = _line$descendant2[0]; - - formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf)); - } - attributes = _op2.default.attributes.diff(formats, attributes) || {}; - } else if (_typeof(op.insert) === 'object') { - var key = Object.keys(op.insert)[0]; // There should only be one key - if (key == null) return index; - _this.scroll.insertAt(index, key, op.insert[key]); - } - scrollLength += length; - } - Object.keys(attributes).forEach(function (name) { - _this.scroll.formatAt(index, length, name, attributes[name]); - }); - return index + length; - }, 0); - delta.reduce(function (index, op) { - if (typeof op.delete === 'number') { - _this.scroll.deleteAt(index, op.delete); - return index; - } - return index + (op.retain || op.insert.length || 1); - }, 0); - this.scroll.batchEnd(); - return this.update(delta); - } - }, { - key: 'deleteText', - value: function deleteText(index, length) { - this.scroll.deleteAt(index, length); - return this.update(new _quillDelta2.default().retain(index).delete(length)); - } - }, { - key: 'formatLine', - value: function formatLine(index, length) { - var _this2 = this; - - var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - this.scroll.update(); - Object.keys(formats).forEach(function (format) { - if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return; - var lines = _this2.scroll.lines(index, Math.max(length, 1)); - var lengthRemaining = length; - lines.forEach(function (line) { - var lineLength = line.length(); - if (!(line instanceof _code2.default)) { - line.format(format, formats[format]); - } else { - var codeIndex = index - line.offset(_this2.scroll); - var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1; - line.formatAt(codeIndex, codeLength, format, formats[format]); - } - lengthRemaining -= lineLength; - }); - }); - this.scroll.optimize(); - return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats))); - } - }, { - key: 'formatText', - value: function formatText(index, length) { - var _this3 = this; - - var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - Object.keys(formats).forEach(function (format) { - _this3.scroll.formatAt(index, length, format, formats[format]); - }); - return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats))); - } - }, { - key: 'getContents', - value: function getContents(index, length) { - return this.delta.slice(index, index + length); - } - }, { - key: 'getDelta', - value: function getDelta() { - return this.scroll.lines().reduce(function (delta, line) { - return delta.concat(line.delta()); - }, new _quillDelta2.default()); - } - }, { - key: 'getFormat', - value: function getFormat(index) { - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - var lines = [], - leaves = []; - if (length === 0) { - this.scroll.path(index).forEach(function (path) { - var _path = _slicedToArray(path, 1), - blot = _path[0]; - - if (blot instanceof _block2.default) { - lines.push(blot); - } else if (blot instanceof _parchment2.default.Leaf) { - leaves.push(blot); - } - }); - } else { - lines = this.scroll.lines(index, length); - leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length); - } - var formatsArr = [lines, leaves].map(function (blots) { - if (blots.length === 0) return {}; - var formats = (0, _block.bubbleFormats)(blots.shift()); - while (Object.keys(formats).length > 0) { - var blot = blots.shift(); - if (blot == null) return formats; - formats = combineFormats((0, _block.bubbleFormats)(blot), formats); - } - return formats; - }); - return _extend2.default.apply(_extend2.default, formatsArr); - } - }, { - key: 'getText', - value: function getText(index, length) { - return this.getContents(index, length).filter(function (op) { - return typeof op.insert === 'string'; - }).map(function (op) { - return op.insert; - }).join(''); - } - }, { - key: 'insertEmbed', - value: function insertEmbed(index, embed, value) { - this.scroll.insertAt(index, embed, value); - return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value))); - } - }, { - key: 'insertText', - value: function insertText(index, text) { - var _this4 = this; - - var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - text = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n'); - this.scroll.insertAt(index, text); - Object.keys(formats).forEach(function (format) { - _this4.scroll.formatAt(index, text.length, format, formats[format]); - }); - return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats))); - } - }, { - key: 'isBlank', - value: function isBlank() { - if (this.scroll.children.length == 0) return true; - if (this.scroll.children.length > 1) return false; - var block = this.scroll.children.head; - if (block.statics.blotName !== _block2.default.blotName) return false; - if (block.children.length > 1) return false; - return block.children.head instanceof _break2.default; - } - }, { - key: 'removeFormat', - value: function removeFormat(index, length) { - var text = this.getText(index, length); - - var _scroll$line3 = this.scroll.line(index + length), - _scroll$line4 = _slicedToArray(_scroll$line3, 2), - line = _scroll$line4[0], - offset = _scroll$line4[1]; - - var suffixLength = 0, - suffix = new _quillDelta2.default(); - if (line != null) { - if (!(line instanceof _code2.default)) { - suffixLength = line.length() - offset; - } else { - suffixLength = line.newlineIndex(offset) - offset + 1; - } - suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\n'); - } - var contents = this.getContents(index, length + suffixLength); - var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix)); - var delta = new _quillDelta2.default().retain(index).concat(diff); - return this.applyDelta(delta); - } - }, { - key: 'update', - value: function update(change) { - var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; - - var oldDelta = this.delta; - if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) { - // Optimization for character changes - var textBlot = _parchment2.default.find(mutations[0].target); - var formats = (0, _block.bubbleFormats)(textBlot); - var index = textBlot.offset(this.scroll); - var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, ''); - var oldText = new _quillDelta2.default().insert(oldValue); - var newText = new _quillDelta2.default().insert(textBlot.value()); - var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex)); - change = diffDelta.reduce(function (delta, op) { - if (op.insert) { - return delta.insert(op.insert, formats); - } else { - return delta.push(op); - } - }, new _quillDelta2.default()); - this.delta = oldDelta.compose(change); - } else { - this.delta = this.getDelta(); - if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) { - change = oldDelta.diff(this.delta, cursorIndex); - } - } - return change; - } - }]); - - return Editor; -}(); - -function combineFormats(formats, combined) { - return Object.keys(combined).reduce(function (merged, name) { - if (formats[name] == null) return merged; - if (combined[name] === formats[name]) { - merged[name] = combined[name]; - } else if (Array.isArray(combined[name])) { - if (combined[name].indexOf(formats[name]) < 0) { - merged[name] = combined[name].concat([formats[name]]); - } - } else { - merged[name] = [combined[name], formats[name]]; - } - return merged; - }, {}); -} - -function normalizeDelta(delta) { - return delta.reduce(function (delta, op) { - if (op.insert === 1) { - var attributes = (0, _clone2.default)(op.attributes); - delete attributes['image']; - return delta.insert({ image: op.attributes.image }, attributes); - } - if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) { - op = (0, _clone2.default)(op); - if (op.attributes.list) { - op.attributes.list = 'ordered'; - } else { - op.attributes.list = 'bullet'; - delete op.attributes.bullet; - } - } - if (typeof op.insert === 'string') { - var text = op.insert.replace(/\r\n/g, '\n').replace(/\r/g, '\n'); - return delta.insert(text, op.attributes); - } - return delta.push(op); - }, new _quillDelta2.default()); -} - -exports.default = Editor; - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.Range = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _clone = __webpack_require__(21); - -var _clone2 = _interopRequireDefault(_clone); - -var _deepEqual = __webpack_require__(11); - -var _deepEqual2 = _interopRequireDefault(_deepEqual); - -var _emitter3 = __webpack_require__(8); - -var _emitter4 = _interopRequireDefault(_emitter3); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var debug = (0, _logger2.default)('quill:selection'); - -var Range = function Range(index) { - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - _classCallCheck(this, Range); - - this.index = index; - this.length = length; -}; - -var Selection = function () { - function Selection(scroll, emitter) { - var _this = this; - - _classCallCheck(this, Selection); - - this.emitter = emitter; - this.scroll = scroll; - this.composing = false; - this.mouseDown = false; - this.root = this.scroll.domNode; - this.cursor = _parchment2.default.create('cursor', this); - // savedRange is last non-null range - this.lastRange = this.savedRange = new Range(0, 0); - this.handleComposition(); - this.handleDragging(); - this.emitter.listenDOM('selectionchange', document, function () { - if (!_this.mouseDown) { - setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1); - } - }); - this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) { - if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) { - _this.update(_emitter4.default.sources.SILENT); - } - }); - this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () { - if (!_this.hasFocus()) return; - var native = _this.getNativeRange(); - if (native == null) return; - if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle - // TODO unclear if this has negative side effects - _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () { - try { - _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset); - } catch (ignored) {} - }); - }); - this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) { - if (context.range) { - var _context$range = context.range, - startNode = _context$range.startNode, - startOffset = _context$range.startOffset, - endNode = _context$range.endNode, - endOffset = _context$range.endOffset; - - _this.setNativeRange(startNode, startOffset, endNode, endOffset); - } - }); - this.update(_emitter4.default.sources.SILENT); - } - - _createClass(Selection, [{ - key: 'handleComposition', - value: function handleComposition() { - var _this2 = this; - - this.root.addEventListener('compositionstart', function () { - _this2.composing = true; - }); - this.root.addEventListener('compositionend', function () { - _this2.composing = false; - if (_this2.cursor.parent) { - var range = _this2.cursor.restore(); - if (!range) return; - setTimeout(function () { - _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset); - }, 1); - } - }); - } - }, { - key: 'handleDragging', - value: function handleDragging() { - var _this3 = this; - - this.emitter.listenDOM('mousedown', document.body, function () { - _this3.mouseDown = true; - }); - this.emitter.listenDOM('mouseup', document.body, function () { - _this3.mouseDown = false; - _this3.update(_emitter4.default.sources.USER); - }); - } - }, { - key: 'focus', - value: function focus() { - if (this.hasFocus()) return; - this.root.focus(); - this.setRange(this.savedRange); - } - }, { - key: 'format', - value: function format(_format, value) { - if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return; - this.scroll.update(); - var nativeRange = this.getNativeRange(); - if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return; - if (nativeRange.start.node !== this.cursor.textNode) { - var blot = _parchment2.default.find(nativeRange.start.node, false); - if (blot == null) return; - // TODO Give blot ability to not split - if (blot instanceof _parchment2.default.Leaf) { - var after = blot.split(nativeRange.start.offset); - blot.parent.insertBefore(this.cursor, after); - } else { - blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen - } - this.cursor.attach(); - } - this.cursor.format(_format, value); - this.scroll.optimize(); - this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length); - this.update(); - } - }, { - key: 'getBounds', - value: function getBounds(index) { - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - var scrollLength = this.scroll.length(); - index = Math.min(index, scrollLength - 1); - length = Math.min(index + length, scrollLength - 1) - index; - var node = void 0, - _scroll$leaf = this.scroll.leaf(index), - _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2), - leaf = _scroll$leaf2[0], - offset = _scroll$leaf2[1]; - if (leaf == null) return null; - - var _leaf$position = leaf.position(offset, true); - - var _leaf$position2 = _slicedToArray(_leaf$position, 2); - - node = _leaf$position2[0]; - offset = _leaf$position2[1]; - - var range = document.createRange(); - if (length > 0) { - range.setStart(node, offset); - - var _scroll$leaf3 = this.scroll.leaf(index + length); - - var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2); - - leaf = _scroll$leaf4[0]; - offset = _scroll$leaf4[1]; - - if (leaf == null) return null; - - var _leaf$position3 = leaf.position(offset, true); - - var _leaf$position4 = _slicedToArray(_leaf$position3, 2); - - node = _leaf$position4[0]; - offset = _leaf$position4[1]; - - range.setEnd(node, offset); - return range.getBoundingClientRect(); - } else { - var side = 'left'; - var rect = void 0; - if (node instanceof Text) { - if (offset < node.data.length) { - range.setStart(node, offset); - range.setEnd(node, offset + 1); - } else { - range.setStart(node, offset - 1); - range.setEnd(node, offset); - side = 'right'; - } - rect = range.getBoundingClientRect(); - } else { - rect = leaf.domNode.getBoundingClientRect(); - if (offset > 0) side = 'right'; - } - return { - bottom: rect.top + rect.height, - height: rect.height, - left: rect[side], - right: rect[side], - top: rect.top, - width: 0 - }; - } - } - }, { - key: 'getNativeRange', - value: function getNativeRange() { - var selection = document.getSelection(); - if (selection == null || selection.rangeCount <= 0) return null; - var nativeRange = selection.getRangeAt(0); - if (nativeRange == null) return null; - var range = this.normalizeNative(nativeRange); - debug.info('getNativeRange', range); - return range; - } - }, { - key: 'getRange', - value: function getRange() { - var normalized = this.getNativeRange(); - if (normalized == null) return [null, null]; - var range = this.normalizedToRange(normalized); - return [range, normalized]; - } - }, { - key: 'hasFocus', - value: function hasFocus() { - return document.activeElement === this.root; - } - }, { - key: 'normalizedToRange', - value: function normalizedToRange(range) { - var _this4 = this; - - var positions = [[range.start.node, range.start.offset]]; - if (!range.native.collapsed) { - positions.push([range.end.node, range.end.offset]); - } - var indexes = positions.map(function (position) { - var _position = _slicedToArray(position, 2), - node = _position[0], - offset = _position[1]; - - var blot = _parchment2.default.find(node, true); - var index = blot.offset(_this4.scroll); - if (offset === 0) { - return index; - } else if (blot instanceof _parchment2.default.Container) { - return index + blot.length(); - } else { - return index + blot.index(node, offset); - } - }); - var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1); - var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes))); - return new Range(start, end - start); - } - }, { - key: 'normalizeNative', - value: function normalizeNative(nativeRange) { - if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) { - return null; - } - var range = { - start: { node: nativeRange.startContainer, offset: nativeRange.startOffset }, - end: { node: nativeRange.endContainer, offset: nativeRange.endOffset }, - native: nativeRange - }; - [range.start, range.end].forEach(function (position) { - var node = position.node, - offset = position.offset; - while (!(node instanceof Text) && node.childNodes.length > 0) { - if (node.childNodes.length > offset) { - node = node.childNodes[offset]; - offset = 0; - } else if (node.childNodes.length === offset) { - node = node.lastChild; - offset = node instanceof Text ? node.data.length : node.childNodes.length + 1; - } else { - break; - } - } - position.node = node, position.offset = offset; - }); - return range; - } - }, { - key: 'rangeToNative', - value: function rangeToNative(range) { - var _this5 = this; - - var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length]; - var args = []; - var scrollLength = this.scroll.length(); - indexes.forEach(function (index, i) { - index = Math.min(scrollLength - 1, index); - var node = void 0, - _scroll$leaf5 = _this5.scroll.leaf(index), - _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2), - leaf = _scroll$leaf6[0], - offset = _scroll$leaf6[1]; - var _leaf$position5 = leaf.position(offset, i !== 0); - - var _leaf$position6 = _slicedToArray(_leaf$position5, 2); - - node = _leaf$position6[0]; - offset = _leaf$position6[1]; - - args.push(node, offset); - }); - if (args.length < 2) { - args = args.concat(args); - } - return args; - } - }, { - key: 'scrollIntoView', - value: function scrollIntoView(scrollingContainer) { - var range = this.lastRange; - if (range == null) return; - var bounds = this.getBounds(range.index, range.length); - if (bounds == null) return; - var limit = this.scroll.length() - 1; - - var _scroll$line = this.scroll.line(Math.min(range.index, limit)), - _scroll$line2 = _slicedToArray(_scroll$line, 1), - first = _scroll$line2[0]; - - var last = first; - if (range.length > 0) { - var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit)); - - var _scroll$line4 = _slicedToArray(_scroll$line3, 1); - - last = _scroll$line4[0]; - } - if (first == null || last == null) return; - var scrollBounds = scrollingContainer.getBoundingClientRect(); - if (bounds.top < scrollBounds.top) { - scrollingContainer.scrollTop -= scrollBounds.top - bounds.top; - } else if (bounds.bottom > scrollBounds.bottom) { - scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom; - } - } - }, { - key: 'setNativeRange', - value: function setNativeRange(startNode, startOffset) { - var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode; - var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset; - var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - - debug.info('setNativeRange', startNode, startOffset, endNode, endOffset); - if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) { - return; - } - var selection = document.getSelection(); - if (selection == null) return; - if (startNode != null) { - if (!this.hasFocus()) this.root.focus(); - var native = (this.getNativeRange() || {}).native; - if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) { - - if (startNode.tagName == "BR") { - startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode); - startNode = startNode.parentNode; - } - if (endNode.tagName == "BR") { - endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode); - endNode = endNode.parentNode; - } - var range = document.createRange(); - range.setStart(startNode, startOffset); - range.setEnd(endNode, endOffset); - selection.removeAllRanges(); - selection.addRange(range); - } - } else { - selection.removeAllRanges(); - this.root.blur(); - document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs) - } - } - }, { - key: 'setRange', - value: function setRange(range) { - var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API; - - if (typeof force === 'string') { - source = force; - force = false; - } - debug.info('setRange', range); - if (range != null) { - var args = this.rangeToNative(range); - this.setNativeRange.apply(this, _toConsumableArray(args).concat([force])); - } else { - this.setNativeRange(null); - } - this.update(source); - } - }, { - key: 'update', - value: function update() { - var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER; - - var oldRange = this.lastRange; - - var _getRange = this.getRange(), - _getRange2 = _slicedToArray(_getRange, 2), - lastRange = _getRange2[0], - nativeRange = _getRange2[1]; - - this.lastRange = lastRange; - if (this.lastRange != null) { - this.savedRange = this.lastRange; - } - if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) { - var _emitter; - - if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) { - this.cursor.restore(); - } - var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source]; - (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args)); - if (source !== _emitter4.default.sources.SILENT) { - var _emitter2; - - (_emitter2 = this.emitter).emit.apply(_emitter2, args); - } - } - } - }]); - - return Selection; -}(); - -function contains(parent, descendant) { - try { - // Firefox inserts inaccessible nodes around video elements - descendant.parentNode; - } catch (e) { - return false; - } - // IE11 has bug with Text nodes - // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect - if (descendant instanceof Text) { - descendant = descendant.parentNode; - } - return parent.contains(descendant); -} - -exports.Range = Range; -exports.default = Selection; - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Break = function (_Parchment$Embed) { - _inherits(Break, _Parchment$Embed); - - function Break() { - _classCallCheck(this, Break); - - return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments)); - } - - _createClass(Break, [{ - key: 'insertInto', - value: function insertInto(parent, ref) { - if (parent.children.length === 0) { - _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref); - } else { - this.remove(); - } - } - }, { - key: 'length', - value: function length() { - return 0; - } - }, { - key: 'value', - value: function value() { - return ''; - } - }], [{ - key: 'value', - value: function value() { - return undefined; - } - }]); - - return Break; -}(_parchment2.default.Embed); - -Break.blotName = 'break'; -Break.tagName = 'BR'; - -exports.default = Break; - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var linked_list_1 = __webpack_require__(44); -var shadow_1 = __webpack_require__(30); -var Registry = __webpack_require__(1); -var ContainerBlot = /** @class */ (function (_super) { - __extends(ContainerBlot, _super); - function ContainerBlot(domNode) { - var _this = _super.call(this, domNode) || this; - _this.build(); - return _this; - } - ContainerBlot.prototype.appendChild = function (other) { - this.insertBefore(other); - }; - ContainerBlot.prototype.attach = function () { - _super.prototype.attach.call(this); - this.children.forEach(function (child) { - child.attach(); - }); - }; - ContainerBlot.prototype.build = function () { - var _this = this; - this.children = new linked_list_1.default(); - // Need to be reversed for if DOM nodes already in order - [].slice - .call(this.domNode.childNodes) - .reverse() - .forEach(function (node) { - try { - var child = makeBlot(node); - _this.insertBefore(child, _this.children.head || undefined); - } - catch (err) { - if (err instanceof Registry.ParchmentError) - return; - else - throw err; - } - }); - }; - ContainerBlot.prototype.deleteAt = function (index, length) { - if (index === 0 && length === this.length()) { - return this.remove(); - } - this.children.forEachAt(index, length, function (child, offset, length) { - child.deleteAt(offset, length); - }); - }; - ContainerBlot.prototype.descendant = function (criteria, index) { - var _a = this.children.find(index), child = _a[0], offset = _a[1]; - if ((criteria.blotName == null && criteria(child)) || - (criteria.blotName != null && child instanceof criteria)) { - return [child, offset]; - } - else if (child instanceof ContainerBlot) { - return child.descendant(criteria, offset); - } - else { - return [null, -1]; - } - }; - ContainerBlot.prototype.descendants = function (criteria, index, length) { - if (index === void 0) { index = 0; } - if (length === void 0) { length = Number.MAX_VALUE; } - var descendants = []; - var lengthLeft = length; - this.children.forEachAt(index, length, function (child, index, length) { - if ((criteria.blotName == null && criteria(child)) || - (criteria.blotName != null && child instanceof criteria)) { - descendants.push(child); - } - if (child instanceof ContainerBlot) { - descendants = descendants.concat(child.descendants(criteria, index, lengthLeft)); - } - lengthLeft -= length; - }); - return descendants; - }; - ContainerBlot.prototype.detach = function () { - this.children.forEach(function (child) { - child.detach(); - }); - _super.prototype.detach.call(this); - }; - ContainerBlot.prototype.formatAt = function (index, length, name, value) { - this.children.forEachAt(index, length, function (child, offset, length) { - child.formatAt(offset, length, name, value); - }); - }; - ContainerBlot.prototype.insertAt = function (index, value, def) { - var _a = this.children.find(index), child = _a[0], offset = _a[1]; - if (child) { - child.insertAt(offset, value, def); - } - else { - var blot = def == null ? Registry.create('text', value) : Registry.create(value, def); - this.appendChild(blot); - } - }; - ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) { - if (this.statics.allowedChildren != null && - !this.statics.allowedChildren.some(function (child) { - return childBlot instanceof child; - })) { - throw new Registry.ParchmentError("Cannot insert " + childBlot.statics.blotName + " into " + this.statics.blotName); - } - childBlot.insertInto(this, refBlot); - }; - ContainerBlot.prototype.length = function () { - return this.children.reduce(function (memo, child) { - return memo + child.length(); - }, 0); - }; - ContainerBlot.prototype.moveChildren = function (targetParent, refNode) { - this.children.forEach(function (child) { - targetParent.insertBefore(child, refNode); - }); - }; - ContainerBlot.prototype.optimize = function (context) { - _super.prototype.optimize.call(this, context); - if (this.children.length === 0) { - if (this.statics.defaultChild != null) { - var child = Registry.create(this.statics.defaultChild); - this.appendChild(child); - child.optimize(context); - } - else { - this.remove(); - } - } - }; - ContainerBlot.prototype.path = function (index, inclusive) { - if (inclusive === void 0) { inclusive = false; } - var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1]; - var position = [[this, index]]; - if (child instanceof ContainerBlot) { - return position.concat(child.path(offset, inclusive)); - } - else if (child != null) { - position.push([child, offset]); - } - return position; - }; - ContainerBlot.prototype.removeChild = function (child) { - this.children.remove(child); - }; - ContainerBlot.prototype.replace = function (target) { - if (target instanceof ContainerBlot) { - target.moveChildren(this); - } - _super.prototype.replace.call(this, target); - }; - ContainerBlot.prototype.split = function (index, force) { - if (force === void 0) { force = false; } - if (!force) { - if (index === 0) - return this; - if (index === this.length()) - return this.next; - } - var after = this.clone(); - this.parent.insertBefore(after, this.next); - this.children.forEachAt(index, this.length(), function (child, offset, length) { - child = child.split(offset, force); - after.appendChild(child); - }); - return after; - }; - ContainerBlot.prototype.unwrap = function () { - this.moveChildren(this.parent, this.next); - this.remove(); - }; - ContainerBlot.prototype.update = function (mutations, context) { - var _this = this; - var addedNodes = []; - var removedNodes = []; - mutations.forEach(function (mutation) { - if (mutation.target === _this.domNode && mutation.type === 'childList') { - addedNodes.push.apply(addedNodes, mutation.addedNodes); - removedNodes.push.apply(removedNodes, mutation.removedNodes); - } - }); - removedNodes.forEach(function (node) { - // Check node has actually been removed - // One exception is Chrome does not immediately remove IFRAMEs - // from DOM but MutationRecord is correct in its reported removal - if (node.parentNode != null && - // @ts-ignore - node.tagName !== 'IFRAME' && - document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) { - return; - } - var blot = Registry.find(node); - if (blot == null) - return; - if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) { - blot.detach(); - } - }); - addedNodes - .filter(function (node) { - return node.parentNode == _this.domNode; - }) - .sort(function (a, b) { - if (a === b) - return 0; - if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) { - return 1; - } - return -1; - }) - .forEach(function (node) { - var refBlot = null; - if (node.nextSibling != null) { - refBlot = Registry.find(node.nextSibling); - } - var blot = makeBlot(node); - if (blot.next != refBlot || blot.next == null) { - if (blot.parent != null) { - blot.parent.removeChild(_this); - } - _this.insertBefore(blot, refBlot || undefined); - } - }); - }; - return ContainerBlot; -}(shadow_1.default)); -function makeBlot(node) { - var blot = Registry.find(node); - if (blot == null) { - try { - blot = Registry.create(node); - } - catch (e) { - blot = Registry.create(Registry.Scope.INLINE); - [].slice.call(node.childNodes).forEach(function (child) { - // @ts-ignore - blot.domNode.appendChild(child); - }); - if (node.parentNode) { - node.parentNode.replaceChild(blot.domNode, node); - } - blot.attach(); - } - } - return blot; -} -exports.default = ContainerBlot; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var attributor_1 = __webpack_require__(12); -var store_1 = __webpack_require__(31); -var container_1 = __webpack_require__(17); -var Registry = __webpack_require__(1); -var FormatBlot = /** @class */ (function (_super) { - __extends(FormatBlot, _super); - function FormatBlot(domNode) { - var _this = _super.call(this, domNode) || this; - _this.attributes = new store_1.default(_this.domNode); - return _this; - } - FormatBlot.formats = function (domNode) { - if (typeof this.tagName === 'string') { - return true; - } - else if (Array.isArray(this.tagName)) { - return domNode.tagName.toLowerCase(); - } - return undefined; - }; - FormatBlot.prototype.format = function (name, value) { - var format = Registry.query(name); - if (format instanceof attributor_1.default) { - this.attributes.attribute(format, value); - } - else if (value) { - if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) { - this.replaceWith(name, value); - } - } - }; - FormatBlot.prototype.formats = function () { - var formats = this.attributes.values(); - var format = this.statics.formats(this.domNode); - if (format != null) { - formats[this.statics.blotName] = format; - } - return formats; - }; - FormatBlot.prototype.replaceWith = function (name, value) { - var replacement = _super.prototype.replaceWith.call(this, name, value); - this.attributes.copy(replacement); - return replacement; - }; - FormatBlot.prototype.update = function (mutations, context) { - var _this = this; - _super.prototype.update.call(this, mutations, context); - if (mutations.some(function (mutation) { - return mutation.target === _this.domNode && mutation.type === 'attributes'; - })) { - this.attributes.build(); - } - }; - FormatBlot.prototype.wrap = function (name, value) { - var wrapper = _super.prototype.wrap.call(this, name, value); - if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) { - this.attributes.move(wrapper); - } - return wrapper; - }; - return FormatBlot; -}(container_1.default)); -exports.default = FormatBlot; - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var shadow_1 = __webpack_require__(30); -var Registry = __webpack_require__(1); -var LeafBlot = /** @class */ (function (_super) { - __extends(LeafBlot, _super); - function LeafBlot() { - return _super !== null && _super.apply(this, arguments) || this; - } - LeafBlot.value = function (domNode) { - return true; - }; - LeafBlot.prototype.index = function (node, offset) { - if (this.domNode === node || - this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) { - return Math.min(offset, 1); - } - return -1; - }; - LeafBlot.prototype.position = function (index, inclusive) { - var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode); - if (index > 0) - offset += 1; - return [this.parent.domNode, offset]; - }; - LeafBlot.prototype.value = function () { - return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a; - var _a; - }; - LeafBlot.scope = Registry.Scope.INLINE_BLOT; - return LeafBlot; -}(shadow_1.default)); -exports.default = LeafBlot; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var equal = __webpack_require__(11); -var extend = __webpack_require__(3); - - -var lib = { - attributes: { - compose: function (a, b, keepNull) { - if (typeof a !== 'object') a = {}; - if (typeof b !== 'object') b = {}; - var attributes = extend(true, {}, b); - if (!keepNull) { - attributes = Object.keys(attributes).reduce(function (copy, key) { - if (attributes[key] != null) { - copy[key] = attributes[key]; - } - return copy; - }, {}); - } - for (var key in a) { - if (a[key] !== undefined && b[key] === undefined) { - attributes[key] = a[key]; - } - } - return Object.keys(attributes).length > 0 ? attributes : undefined; - }, - - diff: function(a, b) { - if (typeof a !== 'object') a = {}; - if (typeof b !== 'object') b = {}; - var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) { - if (!equal(a[key], b[key])) { - attributes[key] = b[key] === undefined ? null : b[key]; - } - return attributes; - }, {}); - return Object.keys(attributes).length > 0 ? attributes : undefined; - }, - - transform: function (a, b, priority) { - if (typeof a !== 'object') return b; - if (typeof b !== 'object') return undefined; - if (!priority) return b; // b simply overwrites us without priority - var attributes = Object.keys(b).reduce(function (attributes, key) { - if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value - return attributes; - }, {}); - return Object.keys(attributes).length > 0 ? attributes : undefined; - } - }, - - iterator: function (ops) { - return new Iterator(ops); - }, - - length: function (op) { - if (typeof op['delete'] === 'number') { - return op['delete']; - } else if (typeof op.retain === 'number') { - return op.retain; - } else { - return typeof op.insert === 'string' ? op.insert.length : 1; - } - } -}; - - -function Iterator(ops) { - this.ops = ops; - this.index = 0; - this.offset = 0; -}; - -Iterator.prototype.hasNext = function () { - return this.peekLength() < Infinity; -}; - -Iterator.prototype.next = function (length) { - if (!length) length = Infinity; - var nextOp = this.ops[this.index]; - if (nextOp) { - var offset = this.offset; - var opLength = lib.length(nextOp) - if (length >= opLength - offset) { - length = opLength - offset; - this.index += 1; - this.offset = 0; - } else { - this.offset += length; - } - if (typeof nextOp['delete'] === 'number') { - return { 'delete': length }; - } else { - var retOp = {}; - if (nextOp.attributes) { - retOp.attributes = nextOp.attributes; - } - if (typeof nextOp.retain === 'number') { - retOp.retain = length; - } else if (typeof nextOp.insert === 'string') { - retOp.insert = nextOp.insert.substr(offset, length); - } else { - // offset should === 0, length should === 1 - retOp.insert = nextOp.insert; - } - return retOp; - } - } else { - return { retain: Infinity }; - } -}; - -Iterator.prototype.peek = function () { - return this.ops[this.index]; -}; - -Iterator.prototype.peekLength = function () { - if (this.ops[this.index]) { - // Should never return 0 if our index is being managed correctly - return lib.length(this.ops[this.index]) - this.offset; - } else { - return Infinity; - } -}; - -Iterator.prototype.peekType = function () { - if (this.ops[this.index]) { - if (typeof this.ops[this.index]['delete'] === 'number') { - return 'delete'; - } else if (typeof this.ops[this.index].retain === 'number') { - return 'retain'; - } else { - return 'insert'; - } - } - return 'retain'; -}; - - -module.exports = lib; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports) { - -var clone = (function() { -'use strict'; - -function _instanceof(obj, type) { - return type != null && obj instanceof type; -} - -var nativeMap; -try { - nativeMap = Map; -} catch(_) { - // maybe a reference error because no `Map`. Give it a dummy value that no - // value will ever be an instanceof. - nativeMap = function() {}; -} - -var nativeSet; -try { - nativeSet = Set; -} catch(_) { - nativeSet = function() {}; -} - -var nativePromise; -try { - nativePromise = Promise; -} catch(_) { - nativePromise = function() {}; -} - -/** - * Clones (copies) an Object using deep copying. - * - * This function supports circular references by default, but if you are certain - * there are no circular references in your object, you can save some CPU time - * by calling clone(obj, false). - * - * Caution: if `circular` is false and `parent` contains circular references, - * your program may enter an infinite loop and crash. - * - * @param `parent` - the object to be cloned - * @param `circular` - set to true if the object to be cloned may contain - * circular references. (optional - true by default) - * @param `depth` - set to a number if the object is only to be cloned to - * a particular depth. (optional - defaults to Infinity) - * @param `prototype` - sets the prototype to be used when cloning an object. - * (optional - defaults to parent prototype). - * @param `includeNonEnumerable` - set to true if the non-enumerable properties - * should be cloned as well. Non-enumerable properties on the prototype - * chain will be ignored. (optional - false by default) -*/ -function clone(parent, circular, depth, prototype, includeNonEnumerable) { - if (typeof circular === 'object') { - depth = circular.depth; - prototype = circular.prototype; - includeNonEnumerable = circular.includeNonEnumerable; - circular = circular.circular; - } - // maintain two arrays for circular references, where corresponding parents - // and children have the same index - var allParents = []; - var allChildren = []; - - var useBuffer = typeof Buffer != 'undefined'; - - if (typeof circular == 'undefined') - circular = true; - - if (typeof depth == 'undefined') - depth = Infinity; - - // recurse this function so we don't reset allParents and allChildren - function _clone(parent, depth) { - // cloning null always returns null - if (parent === null) - return null; - - if (depth === 0) - return parent; - - var child; - var proto; - if (typeof parent != 'object') { - return parent; - } - - if (_instanceof(parent, nativeMap)) { - child = new nativeMap(); - } else if (_instanceof(parent, nativeSet)) { - child = new nativeSet(); - } else if (_instanceof(parent, nativePromise)) { - child = new nativePromise(function (resolve, reject) { - parent.then(function(value) { - resolve(_clone(value, depth - 1)); - }, function(err) { - reject(_clone(err, depth - 1)); - }); - }); - } else if (clone.__isArray(parent)) { - child = []; - } else if (clone.__isRegExp(parent)) { - child = new RegExp(parent.source, __getRegExpFlags(parent)); - if (parent.lastIndex) child.lastIndex = parent.lastIndex; - } else if (clone.__isDate(parent)) { - child = new Date(parent.getTime()); - } else if (useBuffer && Buffer.isBuffer(parent)) { - child = new Buffer(parent.length); - parent.copy(child); - return child; - } else if (_instanceof(parent, Error)) { - child = Object.create(parent); - } else { - if (typeof prototype == 'undefined') { - proto = Object.getPrototypeOf(parent); - child = Object.create(proto); - } - else { - child = Object.create(prototype); - proto = prototype; - } - } - - if (circular) { - var index = allParents.indexOf(parent); - - if (index != -1) { - return allChildren[index]; - } - allParents.push(parent); - allChildren.push(child); - } - - if (_instanceof(parent, nativeMap)) { - parent.forEach(function(value, key) { - var keyChild = _clone(key, depth - 1); - var valueChild = _clone(value, depth - 1); - child.set(keyChild, valueChild); - }); - } - if (_instanceof(parent, nativeSet)) { - parent.forEach(function(value) { - var entryChild = _clone(value, depth - 1); - child.add(entryChild); - }); - } - - for (var i in parent) { - var attrs; - if (proto) { - attrs = Object.getOwnPropertyDescriptor(proto, i); - } - - if (attrs && attrs.set == null) { - continue; - } - child[i] = _clone(parent[i], depth - 1); - } - - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(parent); - for (var i = 0; i < symbols.length; i++) { - // Don't need to worry about cloning a symbol because it is a primitive, - // like a number or string. - var symbol = symbols[i]; - var descriptor = Object.getOwnPropertyDescriptor(parent, symbol); - if (descriptor && !descriptor.enumerable && !includeNonEnumerable) { - continue; - } - child[symbol] = _clone(parent[symbol], depth - 1); - if (!descriptor.enumerable) { - Object.defineProperty(child, symbol, { - enumerable: false - }); - } - } - } - - if (includeNonEnumerable) { - var allPropertyNames = Object.getOwnPropertyNames(parent); - for (var i = 0; i < allPropertyNames.length; i++) { - var propertyName = allPropertyNames[i]; - var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName); - if (descriptor && descriptor.enumerable) { - continue; - } - child[propertyName] = _clone(parent[propertyName], depth - 1); - Object.defineProperty(child, propertyName, { - enumerable: false - }); - } - } - - return child; - } - - return _clone(parent, depth); -} - -/** - * Simple flat clone using prototype, accepts only objects, usefull for property - * override on FLAT configuration object (no nested props). - * - * USE WITH CAUTION! This may not behave as you wish if you do not know how this - * works. - */ -clone.clonePrototype = function clonePrototype(parent) { - if (parent === null) - return null; - - var c = function () {}; - c.prototype = parent; - return new c(); -}; - -// private utility functions - -function __objToStr(o) { - return Object.prototype.toString.call(o); -} -clone.__objToStr = __objToStr; - -function __isDate(o) { - return typeof o === 'object' && __objToStr(o) === '[object Date]'; -} -clone.__isDate = __isDate; - -function __isArray(o) { - return typeof o === 'object' && __objToStr(o) === '[object Array]'; -} -clone.__isArray = __isArray; - -function __isRegExp(o) { - return typeof o === 'object' && __objToStr(o) === '[object RegExp]'; -} -clone.__isRegExp = __isRegExp; - -function __getRegExpFlags(re) { - var flags = ''; - if (re.global) flags += 'g'; - if (re.ignoreCase) flags += 'i'; - if (re.multiline) flags += 'm'; - return flags; -} -clone.__getRegExpFlags = __getRegExpFlags; - -return clone; -})(); - -if (typeof module === 'object' && module.exports) { - module.exports = clone; -} - - -/***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _emitter = __webpack_require__(8); - -var _emitter2 = _interopRequireDefault(_emitter); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -var _break = __webpack_require__(16); - -var _break2 = _interopRequireDefault(_break); - -var _code = __webpack_require__(13); - -var _code2 = _interopRequireDefault(_code); - -var _container = __webpack_require__(25); - -var _container2 = _interopRequireDefault(_container); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -function isLine(blot) { - return blot instanceof _block2.default || blot instanceof _block.BlockEmbed; -} - -var Scroll = function (_Parchment$Scroll) { - _inherits(Scroll, _Parchment$Scroll); - - function Scroll(domNode, config) { - _classCallCheck(this, Scroll); - - var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode)); - - _this.emitter = config.emitter; - if (Array.isArray(config.whitelist)) { - _this.whitelist = config.whitelist.reduce(function (whitelist, format) { - whitelist[format] = true; - return whitelist; - }, {}); - } - // Some reason fixes composition issues with character languages in Windows/Chrome, Safari - _this.domNode.addEventListener('DOMNodeInserted', function () {}); - _this.optimize(); - _this.enable(); - return _this; - } - - _createClass(Scroll, [{ - key: 'batchStart', - value: function batchStart() { - this.batch = true; - } - }, { - key: 'batchEnd', - value: function batchEnd() { - this.batch = false; - this.optimize(); - } - }, { - key: 'deleteAt', - value: function deleteAt(index, length) { - var _line = this.line(index), - _line2 = _slicedToArray(_line, 2), - first = _line2[0], - offset = _line2[1]; - - var _line3 = this.line(index + length), - _line4 = _slicedToArray(_line3, 1), - last = _line4[0]; - - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length); - if (last != null && first !== last && offset > 0) { - if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) { - this.optimize(); - return; - } - if (first instanceof _code2.default) { - var newlineIndex = first.newlineIndex(first.length(), true); - if (newlineIndex > -1) { - first = first.split(newlineIndex + 1); - if (first === last) { - this.optimize(); - return; - } - } - } else if (last instanceof _code2.default) { - var _newlineIndex = last.newlineIndex(0); - if (_newlineIndex > -1) { - last.split(_newlineIndex + 1); - } - } - var ref = last.children.head instanceof _break2.default ? null : last.children.head; - first.moveChildren(last, ref); - first.remove(); - } - this.optimize(); - } - }, { - key: 'enable', - value: function enable() { - var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - - this.domNode.setAttribute('contenteditable', enabled); - } - }, { - key: 'formatAt', - value: function formatAt(index, length, format, value) { - if (this.whitelist != null && !this.whitelist[format]) return; - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value); - this.optimize(); - } - }, { - key: 'insertAt', - value: function insertAt(index, value, def) { - if (def != null && this.whitelist != null && !this.whitelist[value]) return; - if (index >= this.length()) { - if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) { - var blot = _parchment2.default.create(this.statics.defaultChild); - this.appendChild(blot); - if (def == null && value.endsWith('\n')) { - value = value.slice(0, -1); - } - blot.insertAt(0, value, def); - } else { - var embed = _parchment2.default.create(value, def); - this.appendChild(embed); - } - } else { - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def); - } - this.optimize(); - } - }, { - key: 'insertBefore', - value: function insertBefore(blot, ref) { - if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) { - var wrapper = _parchment2.default.create(this.statics.defaultChild); - wrapper.appendChild(blot); - blot = wrapper; - } - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref); - } - }, { - key: 'leaf', - value: function leaf(index) { - return this.path(index).pop() || [null, -1]; - } - }, { - key: 'line', - value: function line(index) { - if (index === this.length()) { - return this.line(index - 1); - } - return this.descendant(isLine, index); - } - }, { - key: 'lines', - value: function lines() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE; - - var getLines = function getLines(blot, index, length) { - var lines = [], - lengthLeft = length; - blot.children.forEachAt(index, length, function (child, index, length) { - if (isLine(child)) { - lines.push(child); - } else if (child instanceof _parchment2.default.Container) { - lines = lines.concat(getLines(child, index, lengthLeft)); - } - lengthLeft -= length; - }); - return lines; - }; - return getLines(this, index, length); - } - }, { - key: 'optimize', - value: function optimize() { - var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (this.batch === true) return; - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context); - if (mutations.length > 0) { - this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context); - } - } - }, { - key: 'path', - value: function path(index) { - return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self - } - }, { - key: 'update', - value: function update(mutations) { - if (this.batch === true) return; - var source = _emitter2.default.sources.USER; - if (typeof mutations === 'string') { - source = mutations; - } - if (!Array.isArray(mutations)) { - mutations = this.observer.takeRecords(); - } - if (mutations.length > 0) { - this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations); - } - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy - if (mutations.length > 0) { - this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations); - } - } - }]); - - return Scroll; -}(_parchment2.default.Scroll); - -Scroll.blotName = 'scroll'; -Scroll.className = 'ql-editor'; -Scroll.tagName = 'DIV'; -Scroll.defaultChild = 'block'; -Scroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default]; - -exports.default = Scroll; - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SHORTKEY = exports.default = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _clone = __webpack_require__(21); - -var _clone2 = _interopRequireDefault(_clone); - -var _deepEqual = __webpack_require__(11); - -var _deepEqual2 = _interopRequireDefault(_deepEqual); - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _op = __webpack_require__(20); - -var _op2 = _interopRequireDefault(_op); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var debug = (0, _logger2.default)('quill:keyboard'); - -var SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey'; - -var Keyboard = function (_Module) { - _inherits(Keyboard, _Module); - - _createClass(Keyboard, null, [{ - key: 'match', - value: function match(evt, binding) { - binding = normalize(binding); - if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) { - return !!binding[key] !== evt[key] && binding[key] !== null; - })) { - return false; - } - return binding.key === (evt.which || evt.keyCode); - } - }]); - - function Keyboard(quill, options) { - _classCallCheck(this, Keyboard); - - var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options)); - - _this.bindings = {}; - Object.keys(_this.options.bindings).forEach(function (name) { - if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) { - return; - } - if (_this.options.bindings[name]) { - _this.addBinding(_this.options.bindings[name]); - } - }); - _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter); - _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {}); - if (/Firefox/i.test(navigator.userAgent)) { - // Need to handle delete and backspace for Firefox in the general case #1171 - _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace); - _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete); - } else { - _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace); - _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete); - } - _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange); - _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange); - _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace); - _this.listen(); - return _this; - } - - _createClass(Keyboard, [{ - key: 'addBinding', - value: function addBinding(key) { - var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - var binding = normalize(key); - if (binding == null || binding.key == null) { - return debug.warn('Attempted to add invalid keyboard binding', binding); - } - if (typeof context === 'function') { - context = { handler: context }; - } - if (typeof handler === 'function') { - handler = { handler: handler }; - } - binding = (0, _extend2.default)(binding, context, handler); - this.bindings[binding.key] = this.bindings[binding.key] || []; - this.bindings[binding.key].push(binding); - } - }, { - key: 'listen', - value: function listen() { - var _this2 = this; - - this.quill.root.addEventListener('keydown', function (evt) { - if (evt.defaultPrevented) return; - var which = evt.which || evt.keyCode; - var bindings = (_this2.bindings[which] || []).filter(function (binding) { - return Keyboard.match(evt, binding); - }); - if (bindings.length === 0) return; - var range = _this2.quill.getSelection(); - if (range == null || !_this2.quill.hasFocus()) return; - - var _quill$getLine = _this2.quill.getLine(range.index), - _quill$getLine2 = _slicedToArray(_quill$getLine, 2), - line = _quill$getLine2[0], - offset = _quill$getLine2[1]; - - var _quill$getLeaf = _this2.quill.getLeaf(range.index), - _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2), - leafStart = _quill$getLeaf2[0], - offsetStart = _quill$getLeaf2[1]; - - var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length), - _ref2 = _slicedToArray(_ref, 2), - leafEnd = _ref2[0], - offsetEnd = _ref2[1]; - - var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : ''; - var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : ''; - var curContext = { - collapsed: range.length === 0, - empty: range.length === 0 && line.length() <= 1, - format: _this2.quill.getFormat(range), - offset: offset, - prefix: prefixText, - suffix: suffixText - }; - var prevented = bindings.some(function (binding) { - if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false; - if (binding.empty != null && binding.empty !== curContext.empty) return false; - if (binding.offset != null && binding.offset !== curContext.offset) return false; - if (Array.isArray(binding.format)) { - // any format is present - if (binding.format.every(function (name) { - return curContext.format[name] == null; - })) { - return false; - } - } else if (_typeof(binding.format) === 'object') { - // all formats must match - if (!Object.keys(binding.format).every(function (name) { - if (binding.format[name] === true) return curContext.format[name] != null; - if (binding.format[name] === false) return curContext.format[name] == null; - return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]); - })) { - return false; - } - } - if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false; - if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false; - return binding.handler.call(_this2, range, curContext) !== true; - }); - if (prevented) { - evt.preventDefault(); - } - }); - } - }]); - - return Keyboard; -}(_module2.default); - -Keyboard.keys = { - BACKSPACE: 8, - TAB: 9, - ENTER: 13, - ESCAPE: 27, - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40, - DELETE: 46 -}; - -Keyboard.DEFAULTS = { - bindings: { - 'bold': makeFormatHandler('bold'), - 'italic': makeFormatHandler('italic'), - 'underline': makeFormatHandler('underline'), - 'indent': { - // highlight tab or tab at beginning of list, indent or blockquote - key: Keyboard.keys.TAB, - format: ['blockquote', 'indent', 'list'], - handler: function handler(range, context) { - if (context.collapsed && context.offset !== 0) return true; - this.quill.format('indent', '+1', _quill2.default.sources.USER); - } - }, - 'outdent': { - key: Keyboard.keys.TAB, - shiftKey: true, - format: ['blockquote', 'indent', 'list'], - // highlight tab or tab at beginning of list, indent or blockquote - handler: function handler(range, context) { - if (context.collapsed && context.offset !== 0) return true; - this.quill.format('indent', '-1', _quill2.default.sources.USER); - } - }, - 'outdent backspace': { - key: Keyboard.keys.BACKSPACE, - collapsed: true, - shiftKey: null, - metaKey: null, - ctrlKey: null, - altKey: null, - format: ['indent', 'list'], - offset: 0, - handler: function handler(range, context) { - if (context.format.indent != null) { - this.quill.format('indent', '-1', _quill2.default.sources.USER); - } else if (context.format.list != null) { - this.quill.format('list', false, _quill2.default.sources.USER); - } - } - }, - 'indent code-block': makeCodeBlockHandler(true), - 'outdent code-block': makeCodeBlockHandler(false), - 'remove tab': { - key: Keyboard.keys.TAB, - shiftKey: true, - collapsed: true, - prefix: /\t$/, - handler: function handler(range) { - this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER); - } - }, - 'tab': { - key: Keyboard.keys.TAB, - handler: function handler(range) { - this.quill.history.cutoff(); - var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\t'); - this.quill.updateContents(delta, _quill2.default.sources.USER); - this.quill.history.cutoff(); - this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); - } - }, - 'list empty enter': { - key: Keyboard.keys.ENTER, - collapsed: true, - format: ['list'], - empty: true, - handler: function handler(range, context) { - this.quill.format('list', false, _quill2.default.sources.USER); - if (context.format.indent) { - this.quill.format('indent', false, _quill2.default.sources.USER); - } - } - }, - 'checklist enter': { - key: Keyboard.keys.ENTER, - collapsed: true, - format: { list: 'checked' }, - handler: function handler(range) { - var _quill$getLine3 = this.quill.getLine(range.index), - _quill$getLine4 = _slicedToArray(_quill$getLine3, 2), - line = _quill$getLine4[0], - offset = _quill$getLine4[1]; - - var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' }); - var delta = new _quillDelta2.default().retain(range.index).insert('\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' }); - this.quill.updateContents(delta, _quill2.default.sources.USER); - this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); - this.quill.scrollIntoView(); - } - }, - 'header enter': { - key: Keyboard.keys.ENTER, - collapsed: true, - format: ['header'], - suffix: /^$/, - handler: function handler(range, context) { - var _quill$getLine5 = this.quill.getLine(range.index), - _quill$getLine6 = _slicedToArray(_quill$getLine5, 2), - line = _quill$getLine6[0], - offset = _quill$getLine6[1]; - - var delta = new _quillDelta2.default().retain(range.index).insert('\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null }); - this.quill.updateContents(delta, _quill2.default.sources.USER); - this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); - this.quill.scrollIntoView(); - } - }, - 'list autofill': { - key: ' ', - collapsed: true, - format: { list: false }, - prefix: /^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/, - handler: function handler(range, context) { - var length = context.prefix.length; - - var _quill$getLine7 = this.quill.getLine(range.index), - _quill$getLine8 = _slicedToArray(_quill$getLine7, 2), - line = _quill$getLine8[0], - offset = _quill$getLine8[1]; - - if (offset > length) return true; - var value = void 0; - switch (context.prefix.trim()) { - case '[]':case '[ ]': - value = 'unchecked'; - break; - case '[x]': - value = 'checked'; - break; - case '-':case '*': - value = 'bullet'; - break; - default: - value = 'ordered'; - } - this.quill.insertText(range.index, ' ', _quill2.default.sources.USER); - this.quill.history.cutoff(); - var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value }); - this.quill.updateContents(delta, _quill2.default.sources.USER); - this.quill.history.cutoff(); - this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT); - } - }, - 'code exit': { - key: Keyboard.keys.ENTER, - collapsed: true, - format: ['code-block'], - prefix: /\n\n$/, - suffix: /^\s+$/, - handler: function handler(range) { - var _quill$getLine9 = this.quill.getLine(range.index), - _quill$getLine10 = _slicedToArray(_quill$getLine9, 2), - line = _quill$getLine10[0], - offset = _quill$getLine10[1]; - - var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1); - this.quill.updateContents(delta, _quill2.default.sources.USER); - } - }, - 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false), - 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true), - 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false), - 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true) - } -}; - -function makeEmbedArrowHandler(key, shiftKey) { - var _ref3; - - var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix'; - return _ref3 = { - key: key, - shiftKey: shiftKey, - altKey: null - }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) { - var index = range.index; - if (key === Keyboard.keys.RIGHT) { - index += range.length + 1; - } - - var _quill$getLeaf3 = this.quill.getLeaf(index), - _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1), - leaf = _quill$getLeaf4[0]; - - if (!(leaf instanceof _parchment2.default.Embed)) return true; - if (key === Keyboard.keys.LEFT) { - if (shiftKey) { - this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER); - } else { - this.quill.setSelection(range.index - 1, _quill2.default.sources.USER); - } - } else { - if (shiftKey) { - this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER); - } else { - this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER); - } - } - return false; - }), _ref3; -} - -function handleBackspace(range, context) { - if (range.index === 0 || this.quill.getLength() <= 1) return; - - var _quill$getLine11 = this.quill.getLine(range.index), - _quill$getLine12 = _slicedToArray(_quill$getLine11, 1), - line = _quill$getLine12[0]; - - var formats = {}; - if (context.offset === 0) { - var _quill$getLine13 = this.quill.getLine(range.index - 1), - _quill$getLine14 = _slicedToArray(_quill$getLine13, 1), - prev = _quill$getLine14[0]; - - if (prev != null && prev.length() > 1) { - var curFormats = line.formats(); - var prevFormats = this.quill.getFormat(range.index - 1, 1); - formats = _op2.default.attributes.diff(curFormats, prevFormats) || {}; - } - } - // Check for astral symbols - var length = /[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(context.prefix) ? 2 : 1; - this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER); - if (Object.keys(formats).length > 0) { - this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER); - } - this.quill.focus(); -} - -function handleDelete(range, context) { - // Check for astral symbols - var length = /^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(context.suffix) ? 2 : 1; - if (range.index >= this.quill.getLength() - length) return; - var formats = {}, - nextLength = 0; - - var _quill$getLine15 = this.quill.getLine(range.index), - _quill$getLine16 = _slicedToArray(_quill$getLine15, 1), - line = _quill$getLine16[0]; - - if (context.offset >= line.length() - 1) { - var _quill$getLine17 = this.quill.getLine(range.index + 1), - _quill$getLine18 = _slicedToArray(_quill$getLine17, 1), - next = _quill$getLine18[0]; - - if (next) { - var curFormats = line.formats(); - var nextFormats = this.quill.getFormat(range.index, 1); - formats = _op2.default.attributes.diff(curFormats, nextFormats) || {}; - nextLength = next.length(); - } - } - this.quill.deleteText(range.index, length, _quill2.default.sources.USER); - if (Object.keys(formats).length > 0) { - this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER); - } -} - -function handleDeleteRange(range) { - var lines = this.quill.getLines(range); - var formats = {}; - if (lines.length > 1) { - var firstFormats = lines[0].formats(); - var lastFormats = lines[lines.length - 1].formats(); - formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {}; - } - this.quill.deleteText(range, _quill2.default.sources.USER); - if (Object.keys(formats).length > 0) { - this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER); - } - this.quill.setSelection(range.index, _quill2.default.sources.SILENT); - this.quill.focus(); -} - -function handleEnter(range, context) { - var _this3 = this; - - if (range.length > 0) { - this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change - } - var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) { - if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) { - lineFormats[format] = context.format[format]; - } - return lineFormats; - }, {}); - this.quill.insertText(range.index, '\n', lineFormats, _quill2.default.sources.USER); - // Earlier scroll.deleteAt might have messed up our selection, - // so insertText's built in selection preservation is not reliable - this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); - this.quill.focus(); - Object.keys(context.format).forEach(function (name) { - if (lineFormats[name] != null) return; - if (Array.isArray(context.format[name])) return; - if (name === 'link') return; - _this3.quill.format(name, context.format[name], _quill2.default.sources.USER); - }); -} - -function makeCodeBlockHandler(indent) { - return { - key: Keyboard.keys.TAB, - shiftKey: !indent, - format: { 'code-block': true }, - handler: function handler(range) { - var CodeBlock = _parchment2.default.query('code-block'); - var index = range.index, - length = range.length; - - var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index), - _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2), - block = _quill$scroll$descend2[0], - offset = _quill$scroll$descend2[1]; - - if (block == null) return; - var scrollIndex = this.quill.getIndex(block); - var start = block.newlineIndex(offset, true) + 1; - var end = block.newlineIndex(scrollIndex + offset + length); - var lines = block.domNode.textContent.slice(start, end).split('\n'); - offset = 0; - lines.forEach(function (line, i) { - if (indent) { - block.insertAt(start + offset, CodeBlock.TAB); - offset += CodeBlock.TAB.length; - if (i === 0) { - index += CodeBlock.TAB.length; - } else { - length += CodeBlock.TAB.length; - } - } else if (line.startsWith(CodeBlock.TAB)) { - block.deleteAt(start + offset, CodeBlock.TAB.length); - offset -= CodeBlock.TAB.length; - if (i === 0) { - index -= CodeBlock.TAB.length; - } else { - length -= CodeBlock.TAB.length; - } - } - offset += line.length + 1; - }); - this.quill.update(_quill2.default.sources.USER); - this.quill.setSelection(index, length, _quill2.default.sources.SILENT); - } - }; -} - -function makeFormatHandler(format) { - return { - key: format[0].toUpperCase(), - shortKey: true, - handler: function handler(range, context) { - this.quill.format(format, !context.format[format], _quill2.default.sources.USER); - } - }; -} - -function normalize(binding) { - if (typeof binding === 'string' || typeof binding === 'number') { - return normalize({ key: binding }); - } - if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') { - binding = (0, _clone2.default)(binding, false); - } - if (typeof binding.key === 'string') { - if (Keyboard.keys[binding.key.toUpperCase()] != null) { - binding.key = Keyboard.keys[binding.key.toUpperCase()]; - } else if (binding.key.length === 1) { - binding.key = binding.key.toUpperCase().charCodeAt(0); - } else { - return null; - } - } - if (binding.shortKey) { - binding[SHORTKEY] = binding.shortKey; - delete binding.shortKey; - } - return binding; -} - -exports.default = Keyboard; -exports.SHORTKEY = SHORTKEY; - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Cursor = function (_Parchment$Embed) { - _inherits(Cursor, _Parchment$Embed); - - _createClass(Cursor, null, [{ - key: 'value', - value: function value() { - return undefined; - } - }]); - - function Cursor(domNode, selection) { - _classCallCheck(this, Cursor); - - var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode)); - - _this.selection = selection; - _this.textNode = document.createTextNode(Cursor.CONTENTS); - _this.domNode.appendChild(_this.textNode); - _this._length = 0; - return _this; - } - - _createClass(Cursor, [{ - key: 'detach', - value: function detach() { - // super.detach() will also clear domNode.__blot - if (this.parent != null) this.parent.removeChild(this); - } - }, { - key: 'format', - value: function format(name, value) { - if (this._length !== 0) { - return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value); - } - var target = this, - index = 0; - while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) { - index += target.offset(target.parent); - target = target.parent; - } - if (target != null) { - this._length = Cursor.CONTENTS.length; - target.optimize(); - target.formatAt(index, Cursor.CONTENTS.length, name, value); - this._length = 0; - } - } - }, { - key: 'index', - value: function index(node, offset) { - if (node === this.textNode) return 0; - return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset); - } - }, { - key: 'length', - value: function length() { - return this._length; - } - }, { - key: 'position', - value: function position() { - return [this.textNode, this.textNode.data.length]; - } - }, { - key: 'remove', - value: function remove() { - _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this); - this.parent = null; - } - }, { - key: 'restore', - value: function restore() { - if (this.selection.composing || this.parent == null) return; - var textNode = this.textNode; - var range = this.selection.getNativeRange(); - var restoreText = void 0, - start = void 0, - end = void 0; - if (range != null && range.start.node === textNode && range.end.node === textNode) { - var _ref = [textNode, range.start.offset, range.end.offset]; - restoreText = _ref[0]; - start = _ref[1]; - end = _ref[2]; - } - // Link format will insert text outside of anchor tag - while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) { - this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode); - } - if (this.textNode.data !== Cursor.CONTENTS) { - var text = this.textNode.data.split(Cursor.CONTENTS).join(''); - if (this.next instanceof _text2.default) { - restoreText = this.next.domNode; - this.next.insertAt(0, text); - this.textNode.data = Cursor.CONTENTS; - } else { - this.textNode.data = text; - this.parent.insertBefore(_parchment2.default.create(this.textNode), this); - this.textNode = document.createTextNode(Cursor.CONTENTS); - this.domNode.appendChild(this.textNode); - } - } - this.remove(); - if (start != null) { - var _map = [start, end].map(function (offset) { - return Math.max(0, Math.min(restoreText.data.length, offset - 1)); - }); - - var _map2 = _slicedToArray(_map, 2); - - start = _map2[0]; - end = _map2[1]; - - return { - startNode: restoreText, - startOffset: start, - endNode: restoreText, - endOffset: end - }; - } - } - }, { - key: 'update', - value: function update(mutations, context) { - var _this2 = this; - - if (mutations.some(function (mutation) { - return mutation.type === 'characterData' && mutation.target === _this2.textNode; - })) { - var range = this.restore(); - if (range) context.range = range; - } - } - }, { - key: 'value', - value: function value() { - return ''; - } - }]); - - return Cursor; -}(_parchment2.default.Embed); - -Cursor.blotName = 'cursor'; -Cursor.className = 'ql-cursor'; -Cursor.tagName = 'span'; -Cursor.CONTENTS = '\uFEFF'; // Zero width no break space - - -exports.default = Cursor; - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Container = function (_Parchment$Container) { - _inherits(Container, _Parchment$Container); - - function Container() { - _classCallCheck(this, Container); - - return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments)); - } - - return Container; -}(_parchment2.default.Container); - -Container.allowedChildren = [_block2.default, _block.BlockEmbed, Container]; - -exports.default = Container; - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ColorAttributor = function (_Parchment$Attributor) { - _inherits(ColorAttributor, _Parchment$Attributor); - - function ColorAttributor() { - _classCallCheck(this, ColorAttributor); - - return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments)); - } - - _createClass(ColorAttributor, [{ - key: 'value', - value: function value(domNode) { - var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode); - if (!value.startsWith('rgb(')) return value; - value = value.replace(/^[^\d]+/, '').replace(/[^\d]+$/, ''); - return '#' + value.split(',').map(function (component) { - return ('00' + parseInt(component).toString(16)).slice(-2); - }).join(''); - } - }]); - - return ColorAttributor; -}(_parchment2.default.Attributor.Style); - -var ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', { - scope: _parchment2.default.Scope.INLINE -}); -var ColorStyle = new ColorAttributor('color', 'color', { - scope: _parchment2.default.Scope.INLINE -}); - -exports.ColorAttributor = ColorAttributor; -exports.ColorClass = ColorClass; -exports.ColorStyle = ColorStyle; - -/***/ }), -/* 27 */, -/* 28 */, -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -var _break = __webpack_require__(16); - -var _break2 = _interopRequireDefault(_break); - -var _container = __webpack_require__(25); - -var _container2 = _interopRequireDefault(_container); - -var _cursor = __webpack_require__(24); - -var _cursor2 = _interopRequireDefault(_cursor); - -var _embed = __webpack_require__(35); - -var _embed2 = _interopRequireDefault(_embed); - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -var _scroll = __webpack_require__(22); - -var _scroll2 = _interopRequireDefault(_scroll); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -var _clipboard = __webpack_require__(55); - -var _clipboard2 = _interopRequireDefault(_clipboard); - -var _history = __webpack_require__(42); - -var _history2 = _interopRequireDefault(_history); - -var _keyboard = __webpack_require__(23); - -var _keyboard2 = _interopRequireDefault(_keyboard); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -_quill2.default.register({ - 'blots/block': _block2.default, - 'blots/block/embed': _block.BlockEmbed, - 'blots/break': _break2.default, - 'blots/container': _container2.default, - 'blots/cursor': _cursor2.default, - 'blots/embed': _embed2.default, - 'blots/inline': _inline2.default, - 'blots/scroll': _scroll2.default, - 'blots/text': _text2.default, - - 'modules/clipboard': _clipboard2.default, - 'modules/history': _history2.default, - 'modules/keyboard': _keyboard2.default -}); - -_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default); - -exports.default = _quill2.default; - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var Registry = __webpack_require__(1); -var ShadowBlot = /** @class */ (function () { - function ShadowBlot(domNode) { - this.domNode = domNode; - // @ts-ignore - this.domNode[Registry.DATA_KEY] = { blot: this }; - } - Object.defineProperty(ShadowBlot.prototype, "statics", { - // Hack for accessing inherited static methods - get: function () { - return this.constructor; - }, - enumerable: true, - configurable: true - }); - ShadowBlot.create = function (value) { - if (this.tagName == null) { - throw new Registry.ParchmentError('Blot definition missing tagName'); - } - var node; - if (Array.isArray(this.tagName)) { - if (typeof value === 'string') { - value = value.toUpperCase(); - if (parseInt(value).toString() === value) { - value = parseInt(value); - } - } - if (typeof value === 'number') { - node = document.createElement(this.tagName[value - 1]); - } - else if (this.tagName.indexOf(value) > -1) { - node = document.createElement(value); - } - else { - node = document.createElement(this.tagName[0]); - } - } - else { - node = document.createElement(this.tagName); - } - if (this.className) { - node.classList.add(this.className); - } - return node; - }; - ShadowBlot.prototype.attach = function () { - if (this.parent != null) { - this.scroll = this.parent.scroll; - } - }; - ShadowBlot.prototype.clone = function () { - var domNode = this.domNode.cloneNode(false); - return Registry.create(domNode); - }; - ShadowBlot.prototype.detach = function () { - if (this.parent != null) - this.parent.removeChild(this); - // @ts-ignore - delete this.domNode[Registry.DATA_KEY]; - }; - ShadowBlot.prototype.deleteAt = function (index, length) { - var blot = this.isolate(index, length); - blot.remove(); - }; - ShadowBlot.prototype.formatAt = function (index, length, name, value) { - var blot = this.isolate(index, length); - if (Registry.query(name, Registry.Scope.BLOT) != null && value) { - blot.wrap(name, value); - } - else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) { - var parent = Registry.create(this.statics.scope); - blot.wrap(parent); - parent.format(name, value); - } - }; - ShadowBlot.prototype.insertAt = function (index, value, def) { - var blot = def == null ? Registry.create('text', value) : Registry.create(value, def); - var ref = this.split(index); - this.parent.insertBefore(blot, ref); - }; - ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) { - if (refBlot === void 0) { refBlot = null; } - if (this.parent != null) { - this.parent.children.remove(this); - } - var refDomNode = null; - parentBlot.children.insertBefore(this, refBlot); - if (refBlot != null) { - refDomNode = refBlot.domNode; - } - if (this.domNode.parentNode != parentBlot.domNode || - this.domNode.nextSibling != refDomNode) { - parentBlot.domNode.insertBefore(this.domNode, refDomNode); - } - this.parent = parentBlot; - this.attach(); - }; - ShadowBlot.prototype.isolate = function (index, length) { - var target = this.split(index); - target.split(length); - return target; - }; - ShadowBlot.prototype.length = function () { - return 1; - }; - ShadowBlot.prototype.offset = function (root) { - if (root === void 0) { root = this.parent; } - if (this.parent == null || this == root) - return 0; - return this.parent.children.offset(this) + this.parent.offset(root); - }; - ShadowBlot.prototype.optimize = function (context) { - // TODO clean up once we use WeakMap - // @ts-ignore - if (this.domNode[Registry.DATA_KEY] != null) { - // @ts-ignore - delete this.domNode[Registry.DATA_KEY].mutations; - } - }; - ShadowBlot.prototype.remove = function () { - if (this.domNode.parentNode != null) { - this.domNode.parentNode.removeChild(this.domNode); - } - this.detach(); - }; - ShadowBlot.prototype.replace = function (target) { - if (target.parent == null) - return; - target.parent.insertBefore(this, target.next); - target.remove(); - }; - ShadowBlot.prototype.replaceWith = function (name, value) { - var replacement = typeof name === 'string' ? Registry.create(name, value) : name; - replacement.replace(this); - return replacement; - }; - ShadowBlot.prototype.split = function (index, force) { - return index === 0 ? this : this.next; - }; - ShadowBlot.prototype.update = function (mutations, context) { - // Nothing to do by default - }; - ShadowBlot.prototype.wrap = function (name, value) { - var wrapper = typeof name === 'string' ? Registry.create(name, value) : name; - if (this.parent != null) { - this.parent.insertBefore(wrapper, this.next); - } - wrapper.appendChild(this); - return wrapper; - }; - ShadowBlot.blotName = 'abstract'; - return ShadowBlot; -}()); -exports.default = ShadowBlot; - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var attributor_1 = __webpack_require__(12); -var class_1 = __webpack_require__(32); -var style_1 = __webpack_require__(33); -var Registry = __webpack_require__(1); -var AttributorStore = /** @class */ (function () { - function AttributorStore(domNode) { - this.attributes = {}; - this.domNode = domNode; - this.build(); - } - AttributorStore.prototype.attribute = function (attribute, value) { - // verb - if (value) { - if (attribute.add(this.domNode, value)) { - if (attribute.value(this.domNode) != null) { - this.attributes[attribute.attrName] = attribute; - } - else { - delete this.attributes[attribute.attrName]; - } - } - } - else { - attribute.remove(this.domNode); - delete this.attributes[attribute.attrName]; - } - }; - AttributorStore.prototype.build = function () { - var _this = this; - this.attributes = {}; - var attributes = attributor_1.default.keys(this.domNode); - var classes = class_1.default.keys(this.domNode); - var styles = style_1.default.keys(this.domNode); - attributes - .concat(classes) - .concat(styles) - .forEach(function (name) { - var attr = Registry.query(name, Registry.Scope.ATTRIBUTE); - if (attr instanceof attributor_1.default) { - _this.attributes[attr.attrName] = attr; - } - }); - }; - AttributorStore.prototype.copy = function (target) { - var _this = this; - Object.keys(this.attributes).forEach(function (key) { - var value = _this.attributes[key].value(_this.domNode); - target.format(key, value); - }); - }; - AttributorStore.prototype.move = function (target) { - var _this = this; - this.copy(target); - Object.keys(this.attributes).forEach(function (key) { - _this.attributes[key].remove(_this.domNode); - }); - this.attributes = {}; - }; - AttributorStore.prototype.values = function () { - var _this = this; - return Object.keys(this.attributes).reduce(function (attributes, name) { - attributes[name] = _this.attributes[name].value(_this.domNode); - return attributes; - }, {}); - }; - return AttributorStore; -}()); -exports.default = AttributorStore; - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var attributor_1 = __webpack_require__(12); -function match(node, prefix) { - var className = node.getAttribute('class') || ''; - return className.split(/\s+/).filter(function (name) { - return name.indexOf(prefix + "-") === 0; - }); -} -var ClassAttributor = /** @class */ (function (_super) { - __extends(ClassAttributor, _super); - function ClassAttributor() { - return _super !== null && _super.apply(this, arguments) || this; - } - ClassAttributor.keys = function (node) { - return (node.getAttribute('class') || '').split(/\s+/).map(function (name) { - return name - .split('-') - .slice(0, -1) - .join('-'); - }); - }; - ClassAttributor.prototype.add = function (node, value) { - if (!this.canAdd(node, value)) - return false; - this.remove(node); - node.classList.add(this.keyName + "-" + value); - return true; - }; - ClassAttributor.prototype.remove = function (node) { - var matches = match(node, this.keyName); - matches.forEach(function (name) { - node.classList.remove(name); - }); - if (node.classList.length === 0) { - node.removeAttribute('class'); - } - }; - ClassAttributor.prototype.value = function (node) { - var result = match(node, this.keyName)[0] || ''; - var value = result.slice(this.keyName.length + 1); // +1 for hyphen - return this.canAdd(node, value) ? value : ''; - }; - return ClassAttributor; -}(attributor_1.default)); -exports.default = ClassAttributor; - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var attributor_1 = __webpack_require__(12); -function camelize(name) { - var parts = name.split('-'); - var rest = parts - .slice(1) - .map(function (part) { - return part[0].toUpperCase() + part.slice(1); - }) - .join(''); - return parts[0] + rest; -} -var StyleAttributor = /** @class */ (function (_super) { - __extends(StyleAttributor, _super); - function StyleAttributor() { - return _super !== null && _super.apply(this, arguments) || this; - } - StyleAttributor.keys = function (node) { - return (node.getAttribute('style') || '').split(';').map(function (value) { - var arr = value.split(':'); - return arr[0].trim(); - }); - }; - StyleAttributor.prototype.add = function (node, value) { - if (!this.canAdd(node, value)) - return false; - // @ts-ignore - node.style[camelize(this.keyName)] = value; - return true; - }; - StyleAttributor.prototype.remove = function (node) { - // @ts-ignore - node.style[camelize(this.keyName)] = ''; - if (!node.getAttribute('style')) { - node.removeAttribute('style'); - } - }; - StyleAttributor.prototype.value = function (node) { - // @ts-ignore - var value = node.style[camelize(this.keyName)]; - return this.canAdd(node, value) ? value : ''; - }; - return StyleAttributor; -}(attributor_1.default)); -exports.default = StyleAttributor; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Theme = function () { - function Theme(quill, options) { - _classCallCheck(this, Theme); - - this.quill = quill; - this.options = options; - this.modules = {}; - } - - _createClass(Theme, [{ - key: 'init', - value: function init() { - var _this = this; - - Object.keys(this.options.modules).forEach(function (name) { - if (_this.modules[name] == null) { - _this.addModule(name); - } - }); - } - }, { - key: 'addModule', - value: function addModule(name) { - var moduleClass = this.quill.constructor.import('modules/' + name); - this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {}); - return this.modules[name]; - } - }]); - - return Theme; -}(); - -Theme.DEFAULTS = { - modules: {} -}; -Theme.themes = { - 'default': Theme -}; - -exports.default = Theme; - -/***/ }), -/* 35 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var GUARD_TEXT = '\uFEFF'; - -var Embed = function (_Parchment$Embed) { - _inherits(Embed, _Parchment$Embed); - - function Embed(node) { - _classCallCheck(this, Embed); - - var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node)); - - _this.contentNode = document.createElement('span'); - _this.contentNode.setAttribute('contenteditable', false); - [].slice.call(_this.domNode.childNodes).forEach(function (childNode) { - _this.contentNode.appendChild(childNode); - }); - _this.leftGuard = document.createTextNode(GUARD_TEXT); - _this.rightGuard = document.createTextNode(GUARD_TEXT); - _this.domNode.appendChild(_this.leftGuard); - _this.domNode.appendChild(_this.contentNode); - _this.domNode.appendChild(_this.rightGuard); - return _this; - } - - _createClass(Embed, [{ - key: 'index', - value: function index(node, offset) { - if (node === this.leftGuard) return 0; - if (node === this.rightGuard) return 1; - return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset); - } - }, { - key: 'restore', - value: function restore(node) { - var range = void 0, - textNode = void 0; - var text = node.data.split(GUARD_TEXT).join(''); - if (node === this.leftGuard) { - if (this.prev instanceof _text2.default) { - var prevLength = this.prev.length(); - this.prev.insertAt(prevLength, text); - range = { - startNode: this.prev.domNode, - startOffset: prevLength + text.length - }; - } else { - textNode = document.createTextNode(text); - this.parent.insertBefore(_parchment2.default.create(textNode), this); - range = { - startNode: textNode, - startOffset: text.length - }; - } - } else if (node === this.rightGuard) { - if (this.next instanceof _text2.default) { - this.next.insertAt(0, text); - range = { - startNode: this.next.domNode, - startOffset: text.length - }; - } else { - textNode = document.createTextNode(text); - this.parent.insertBefore(_parchment2.default.create(textNode), this.next); - range = { - startNode: textNode, - startOffset: text.length - }; - } - } - node.data = GUARD_TEXT; - return range; - } - }, { - key: 'update', - value: function update(mutations, context) { - var _this2 = this; - - mutations.forEach(function (mutation) { - if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) { - var range = _this2.restore(mutation.target); - if (range) context.range = range; - } - }); - } - }]); - - return Embed; -}(_parchment2.default.Embed); - -exports.default = Embed; - -/***/ }), -/* 36 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var config = { - scope: _parchment2.default.Scope.BLOCK, - whitelist: ['right', 'center', 'justify'] -}; - -var AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config); -var AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config); -var AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config); - -exports.AlignAttribute = AlignAttribute; -exports.AlignClass = AlignClass; -exports.AlignStyle = AlignStyle; - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.BackgroundStyle = exports.BackgroundClass = undefined; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _color = __webpack_require__(26); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', { - scope: _parchment2.default.Scope.INLINE -}); -var BackgroundStyle = new _color.ColorAttributor('background', 'background-color', { - scope: _parchment2.default.Scope.INLINE -}); - -exports.BackgroundClass = BackgroundClass; -exports.BackgroundStyle = BackgroundStyle; - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var config = { - scope: _parchment2.default.Scope.BLOCK, - whitelist: ['rtl'] -}; - -var DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config); -var DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config); -var DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config); - -exports.DirectionAttribute = DirectionAttribute; -exports.DirectionClass = DirectionClass; -exports.DirectionStyle = DirectionStyle; - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.FontClass = exports.FontStyle = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var config = { - scope: _parchment2.default.Scope.INLINE, - whitelist: ['serif', 'monospace'] -}; - -var FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config); - -var FontStyleAttributor = function (_Parchment$Attributor) { - _inherits(FontStyleAttributor, _Parchment$Attributor); - - function FontStyleAttributor() { - _classCallCheck(this, FontStyleAttributor); - - return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments)); - } - - _createClass(FontStyleAttributor, [{ - key: 'value', - value: function value(node) { - return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/["']/g, ''); - } - }]); - - return FontStyleAttributor; -}(_parchment2.default.Attributor.Style); - -var FontStyle = new FontStyleAttributor('font', 'font-family', config); - -exports.FontStyle = FontStyle; -exports.FontClass = FontClass; - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SizeStyle = exports.SizeClass = undefined; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', { - scope: _parchment2.default.Scope.INLINE, - whitelist: ['small', 'large', 'huge'] -}); -var SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', { - scope: _parchment2.default.Scope.INLINE, - whitelist: ['10px', '18px', '32px'] -}); - -exports.SizeClass = SizeClass; -exports.SizeStyle = SizeStyle; - -/***/ }), -/* 41 */, -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getLastChangeIndex = exports.default = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var History = function (_Module) { - _inherits(History, _Module); - - function History(quill, options) { - _classCallCheck(this, History); - - var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options)); - - _this.lastRecorded = 0; - _this.ignoreChange = false; - _this.clear(); - _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) { - if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return; - if (!_this.options.userOnly || source === _quill2.default.sources.USER) { - _this.record(delta, oldDelta); - } else { - _this.transform(delta); - } - }); - _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this)); - _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this)); - if (/Win/i.test(navigator.platform)) { - _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this)); - } - return _this; - } - - _createClass(History, [{ - key: 'change', - value: function change(source, dest) { - if (this.stack[source].length === 0) return; - var delta = this.stack[source].pop(); - this.stack[dest].push(delta); - this.lastRecorded = 0; - this.ignoreChange = true; - this.quill.updateContents(delta[source], _quill2.default.sources.USER); - this.ignoreChange = false; - var index = getLastChangeIndex(delta[source]); - this.quill.setSelection(index); - } - }, { - key: 'clear', - value: function clear() { - this.stack = { undo: [], redo: [] }; - } - }, { - key: 'cutoff', - value: function cutoff() { - this.lastRecorded = 0; - } - }, { - key: 'record', - value: function record(changeDelta, oldDelta) { - if (changeDelta.ops.length === 0) return; - this.stack.redo = []; - var undoDelta = this.quill.getContents().diff(oldDelta); - var timestamp = Date.now(); - if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) { - var delta = this.stack.undo.pop(); - undoDelta = undoDelta.compose(delta.undo); - changeDelta = delta.redo.compose(changeDelta); - } else { - this.lastRecorded = timestamp; - } - this.stack.undo.push({ - redo: changeDelta, - undo: undoDelta - }); - if (this.stack.undo.length > this.options.maxStack) { - this.stack.undo.shift(); - } - } - }, { - key: 'redo', - value: function redo() { - this.change('redo', 'undo'); - } - }, { - key: 'transform', - value: function transform(delta) { - this.stack.undo.forEach(function (change) { - change.undo = delta.transform(change.undo, true); - change.redo = delta.transform(change.redo, true); - }); - this.stack.redo.forEach(function (change) { - change.undo = delta.transform(change.undo, true); - change.redo = delta.transform(change.redo, true); - }); - } - }, { - key: 'undo', - value: function undo() { - this.change('undo', 'redo'); - } - }]); - - return History; -}(_module2.default); - -History.DEFAULTS = { - delay: 1000, - maxStack: 100, - userOnly: false -}; - -function endsWithNewlineChange(delta) { - var lastOp = delta.ops[delta.ops.length - 1]; - if (lastOp == null) return false; - if (lastOp.insert != null) { - return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\n'); - } - if (lastOp.attributes != null) { - return Object.keys(lastOp.attributes).some(function (attr) { - return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null; - }); - } - return false; -} - -function getLastChangeIndex(delta) { - var deleteLength = delta.reduce(function (length, op) { - length += op.delete || 0; - return length; - }, 0); - var changeIndex = delta.length() - deleteLength; - if (endsWithNewlineChange(delta)) { - changeIndex -= 1; - } - return changeIndex; -} - -exports.default = History; -exports.getLastChangeIndex = getLastChangeIndex; - -/***/ }), -/* 43 */, -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var LinkedList = /** @class */ (function () { - function LinkedList() { - this.head = this.tail = null; - this.length = 0; - } - LinkedList.prototype.append = function () { - var nodes = []; - for (var _i = 0; _i < arguments.length; _i++) { - nodes[_i] = arguments[_i]; - } - this.insertBefore(nodes[0], null); - if (nodes.length > 1) { - this.append.apply(this, nodes.slice(1)); - } - }; - LinkedList.prototype.contains = function (node) { - var cur, next = this.iterator(); - while ((cur = next())) { - if (cur === node) - return true; - } - return false; - }; - LinkedList.prototype.insertBefore = function (node, refNode) { - if (!node) - return; - node.next = refNode; - if (refNode != null) { - node.prev = refNode.prev; - if (refNode.prev != null) { - refNode.prev.next = node; - } - refNode.prev = node; - if (refNode === this.head) { - this.head = node; - } - } - else if (this.tail != null) { - this.tail.next = node; - node.prev = this.tail; - this.tail = node; - } - else { - node.prev = null; - this.head = this.tail = node; - } - this.length += 1; - }; - LinkedList.prototype.offset = function (target) { - var index = 0, cur = this.head; - while (cur != null) { - if (cur === target) - return index; - index += cur.length(); - cur = cur.next; - } - return -1; - }; - LinkedList.prototype.remove = function (node) { - if (!this.contains(node)) - return; - if (node.prev != null) - node.prev.next = node.next; - if (node.next != null) - node.next.prev = node.prev; - if (node === this.head) - this.head = node.next; - if (node === this.tail) - this.tail = node.prev; - this.length -= 1; - }; - LinkedList.prototype.iterator = function (curNode) { - if (curNode === void 0) { curNode = this.head; } - // TODO use yield when we can - return function () { - var ret = curNode; - if (curNode != null) - curNode = curNode.next; - return ret; - }; - }; - LinkedList.prototype.find = function (index, inclusive) { - if (inclusive === void 0) { inclusive = false; } - var cur, next = this.iterator(); - while ((cur = next())) { - var length = cur.length(); - if (index < length || - (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) { - return [cur, index]; - } - index -= length; - } - return [null, 0]; - }; - LinkedList.prototype.forEach = function (callback) { - var cur, next = this.iterator(); - while ((cur = next())) { - callback(cur); - } - }; - LinkedList.prototype.forEachAt = function (index, length, callback) { - if (length <= 0) - return; - var _a = this.find(index), startNode = _a[0], offset = _a[1]; - var cur, curIndex = index - offset, next = this.iterator(startNode); - while ((cur = next()) && curIndex < index + length) { - var curLength = cur.length(); - if (index > curIndex) { - callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index)); - } - else { - callback(cur, 0, Math.min(curLength, index + length - curIndex)); - } - curIndex += curLength; - } - }; - LinkedList.prototype.map = function (callback) { - return this.reduce(function (memo, cur) { - memo.push(callback(cur)); - return memo; - }, []); - }; - LinkedList.prototype.reduce = function (callback, memo) { - var cur, next = this.iterator(); - while ((cur = next())) { - memo = callback(memo, cur); - } - return memo; - }; - return LinkedList; -}()); -exports.default = LinkedList; - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var container_1 = __webpack_require__(17); -var Registry = __webpack_require__(1); -var OBSERVER_CONFIG = { - attributes: true, - characterData: true, - characterDataOldValue: true, - childList: true, - subtree: true, -}; -var MAX_OPTIMIZE_ITERATIONS = 100; -var ScrollBlot = /** @class */ (function (_super) { - __extends(ScrollBlot, _super); - function ScrollBlot(node) { - var _this = _super.call(this, node) || this; - _this.scroll = _this; - _this.observer = new MutationObserver(function (mutations) { - _this.update(mutations); - }); - _this.observer.observe(_this.domNode, OBSERVER_CONFIG); - _this.attach(); - return _this; - } - ScrollBlot.prototype.detach = function () { - _super.prototype.detach.call(this); - this.observer.disconnect(); - }; - ScrollBlot.prototype.deleteAt = function (index, length) { - this.update(); - if (index === 0 && length === this.length()) { - this.children.forEach(function (child) { - child.remove(); - }); - } - else { - _super.prototype.deleteAt.call(this, index, length); - } - }; - ScrollBlot.prototype.formatAt = function (index, length, name, value) { - this.update(); - _super.prototype.formatAt.call(this, index, length, name, value); - }; - ScrollBlot.prototype.insertAt = function (index, value, def) { - this.update(); - _super.prototype.insertAt.call(this, index, value, def); - }; - ScrollBlot.prototype.optimize = function (mutations, context) { - var _this = this; - if (mutations === void 0) { mutations = []; } - if (context === void 0) { context = {}; } - _super.prototype.optimize.call(this, context); - // We must modify mutations directly, cannot make copy and then modify - var records = [].slice.call(this.observer.takeRecords()); - // Array.push currently seems to be implemented by a non-tail recursive function - // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords()); - while (records.length > 0) - mutations.push(records.pop()); - // TODO use WeakMap - var mark = function (blot, markParent) { - if (markParent === void 0) { markParent = true; } - if (blot == null || blot === _this) - return; - if (blot.domNode.parentNode == null) - return; - // @ts-ignore - if (blot.domNode[Registry.DATA_KEY].mutations == null) { - // @ts-ignore - blot.domNode[Registry.DATA_KEY].mutations = []; - } - if (markParent) - mark(blot.parent); - }; - var optimize = function (blot) { - // Post-order traversal - if ( - // @ts-ignore - blot.domNode[Registry.DATA_KEY] == null || - // @ts-ignore - blot.domNode[Registry.DATA_KEY].mutations == null) { - return; - } - if (blot instanceof container_1.default) { - blot.children.forEach(optimize); - } - blot.optimize(context); - }; - var remaining = mutations; - for (var i = 0; remaining.length > 0; i += 1) { - if (i >= MAX_OPTIMIZE_ITERATIONS) { - throw new Error('[Parchment] Maximum optimize iterations reached'); - } - remaining.forEach(function (mutation) { - var blot = Registry.find(mutation.target, true); - if (blot == null) - return; - if (blot.domNode === mutation.target) { - if (mutation.type === 'childList') { - mark(Registry.find(mutation.previousSibling, false)); - [].forEach.call(mutation.addedNodes, function (node) { - var child = Registry.find(node, false); - mark(child, false); - if (child instanceof container_1.default) { - child.children.forEach(function (grandChild) { - mark(grandChild, false); - }); - } - }); - } - else if (mutation.type === 'attributes') { - mark(blot.prev); - } - } - mark(blot); - }); - this.children.forEach(optimize); - remaining = [].slice.call(this.observer.takeRecords()); - records = remaining.slice(); - while (records.length > 0) - mutations.push(records.pop()); - } - }; - ScrollBlot.prototype.update = function (mutations, context) { - var _this = this; - if (context === void 0) { context = {}; } - mutations = mutations || this.observer.takeRecords(); - // TODO use WeakMap - mutations - .map(function (mutation) { - var blot = Registry.find(mutation.target, true); - if (blot == null) - return null; - // @ts-ignore - if (blot.domNode[Registry.DATA_KEY].mutations == null) { - // @ts-ignore - blot.domNode[Registry.DATA_KEY].mutations = [mutation]; - return blot; - } - else { - // @ts-ignore - blot.domNode[Registry.DATA_KEY].mutations.push(mutation); - return null; - } - }) - .forEach(function (blot) { - if (blot == null || - blot === _this || - //@ts-ignore - blot.domNode[Registry.DATA_KEY] == null) - return; - // @ts-ignore - blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context); - }); - // @ts-ignore - if (this.domNode[Registry.DATA_KEY].mutations != null) { - // @ts-ignore - _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context); - } - this.optimize(mutations, context); - }; - ScrollBlot.blotName = 'scroll'; - ScrollBlot.defaultChild = 'block'; - ScrollBlot.scope = Registry.Scope.BLOCK_BLOT; - ScrollBlot.tagName = 'DIV'; - return ScrollBlot; -}(container_1.default)); -exports.default = ScrollBlot; - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var format_1 = __webpack_require__(18); -var Registry = __webpack_require__(1); -// Shallow object comparison -function isEqual(obj1, obj2) { - if (Object.keys(obj1).length !== Object.keys(obj2).length) - return false; - // @ts-ignore - for (var prop in obj1) { - // @ts-ignore - if (obj1[prop] !== obj2[prop]) - return false; - } - return true; -} -var InlineBlot = /** @class */ (function (_super) { - __extends(InlineBlot, _super); - function InlineBlot() { - return _super !== null && _super.apply(this, arguments) || this; - } - InlineBlot.formats = function (domNode) { - if (domNode.tagName === InlineBlot.tagName) - return undefined; - return _super.formats.call(this, domNode); - }; - InlineBlot.prototype.format = function (name, value) { - var _this = this; - if (name === this.statics.blotName && !value) { - this.children.forEach(function (child) { - if (!(child instanceof format_1.default)) { - child = child.wrap(InlineBlot.blotName, true); - } - _this.attributes.copy(child); - }); - this.unwrap(); - } - else { - _super.prototype.format.call(this, name, value); - } - }; - InlineBlot.prototype.formatAt = function (index, length, name, value) { - if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) { - var blot = this.isolate(index, length); - blot.format(name, value); - } - else { - _super.prototype.formatAt.call(this, index, length, name, value); - } - }; - InlineBlot.prototype.optimize = function (context) { - _super.prototype.optimize.call(this, context); - var formats = this.formats(); - if (Object.keys(formats).length === 0) { - return this.unwrap(); // unformatted span - } - var next = this.next; - if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) { - next.moveChildren(this); - next.remove(); - } - }; - InlineBlot.blotName = 'inline'; - InlineBlot.scope = Registry.Scope.INLINE_BLOT; - InlineBlot.tagName = 'SPAN'; - return InlineBlot; -}(format_1.default)); -exports.default = InlineBlot; - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var format_1 = __webpack_require__(18); -var Registry = __webpack_require__(1); -var BlockBlot = /** @class */ (function (_super) { - __extends(BlockBlot, _super); - function BlockBlot() { - return _super !== null && _super.apply(this, arguments) || this; - } - BlockBlot.formats = function (domNode) { - var tagName = Registry.query(BlockBlot.blotName).tagName; - if (domNode.tagName === tagName) - return undefined; - return _super.formats.call(this, domNode); - }; - BlockBlot.prototype.format = function (name, value) { - if (Registry.query(name, Registry.Scope.BLOCK) == null) { - return; - } - else if (name === this.statics.blotName && !value) { - this.replaceWith(BlockBlot.blotName); - } - else { - _super.prototype.format.call(this, name, value); - } - }; - BlockBlot.prototype.formatAt = function (index, length, name, value) { - if (Registry.query(name, Registry.Scope.BLOCK) != null) { - this.format(name, value); - } - else { - _super.prototype.formatAt.call(this, index, length, name, value); - } - }; - BlockBlot.prototype.insertAt = function (index, value, def) { - if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) { - // Insert text or inline - _super.prototype.insertAt.call(this, index, value, def); - } - else { - var after = this.split(index); - var blot = Registry.create(value, def); - after.parent.insertBefore(blot, after); - } - }; - BlockBlot.prototype.update = function (mutations, context) { - if (navigator.userAgent.match(/Trident/)) { - this.build(); - } - else { - _super.prototype.update.call(this, mutations, context); - } - }; - BlockBlot.blotName = 'block'; - BlockBlot.scope = Registry.Scope.BLOCK_BLOT; - BlockBlot.tagName = 'P'; - return BlockBlot; -}(format_1.default)); -exports.default = BlockBlot; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var leaf_1 = __webpack_require__(19); -var EmbedBlot = /** @class */ (function (_super) { - __extends(EmbedBlot, _super); - function EmbedBlot() { - return _super !== null && _super.apply(this, arguments) || this; - } - EmbedBlot.formats = function (domNode) { - return undefined; - }; - EmbedBlot.prototype.format = function (name, value) { - // super.formatAt wraps, which is what we want in general, - // but this allows subclasses to overwrite for formats - // that just apply to particular embeds - _super.prototype.formatAt.call(this, 0, this.length(), name, value); - }; - EmbedBlot.prototype.formatAt = function (index, length, name, value) { - if (index === 0 && length === this.length()) { - this.format(name, value); - } - else { - _super.prototype.formatAt.call(this, index, length, name, value); - } - }; - EmbedBlot.prototype.formats = function () { - return this.statics.formats(this.domNode); - }; - return EmbedBlot; -}(leaf_1.default)); -exports.default = EmbedBlot; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var leaf_1 = __webpack_require__(19); -var Registry = __webpack_require__(1); -var TextBlot = /** @class */ (function (_super) { - __extends(TextBlot, _super); - function TextBlot(node) { - var _this = _super.call(this, node) || this; - _this.text = _this.statics.value(_this.domNode); - return _this; - } - TextBlot.create = function (value) { - return document.createTextNode(value); - }; - TextBlot.value = function (domNode) { - var text = domNode.data; - // @ts-ignore - if (text['normalize']) - text = text['normalize'](); - return text; - }; - TextBlot.prototype.deleteAt = function (index, length) { - this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length); - }; - TextBlot.prototype.index = function (node, offset) { - if (this.domNode === node) { - return offset; - } - return -1; - }; - TextBlot.prototype.insertAt = function (index, value, def) { - if (def == null) { - this.text = this.text.slice(0, index) + value + this.text.slice(index); - this.domNode.data = this.text; - } - else { - _super.prototype.insertAt.call(this, index, value, def); - } - }; - TextBlot.prototype.length = function () { - return this.text.length; - }; - TextBlot.prototype.optimize = function (context) { - _super.prototype.optimize.call(this, context); - this.text = this.statics.value(this.domNode); - if (this.text.length === 0) { - this.remove(); - } - else if (this.next instanceof TextBlot && this.next.prev === this) { - this.insertAt(this.length(), this.next.value()); - this.next.remove(); - } - }; - TextBlot.prototype.position = function (index, inclusive) { - if (inclusive === void 0) { inclusive = false; } - return [this.domNode, index]; - }; - TextBlot.prototype.split = function (index, force) { - if (force === void 0) { force = false; } - if (!force) { - if (index === 0) - return this; - if (index === this.length()) - return this.next; - } - var after = Registry.create(this.domNode.splitText(index)); - this.parent.insertBefore(after, this.next); - this.text = this.statics.value(this.domNode); - return after; - }; - TextBlot.prototype.update = function (mutations, context) { - var _this = this; - if (mutations.some(function (mutation) { - return mutation.type === 'characterData' && mutation.target === _this.domNode; - })) { - this.text = this.statics.value(this.domNode); - } - }; - TextBlot.prototype.value = function () { - return this.text; - }; - TextBlot.blotName = 'text'; - TextBlot.scope = Registry.Scope.INLINE_BLOT; - return TextBlot; -}(leaf_1.default)); -exports.default = TextBlot; - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var elem = document.createElement('div'); -elem.classList.toggle('test-class', false); -if (elem.classList.contains('test-class')) { - var _toggle = DOMTokenList.prototype.toggle; - DOMTokenList.prototype.toggle = function (token, force) { - if (arguments.length > 1 && !this.contains(token) === !force) { - return force; - } else { - return _toggle.call(this, token); - } - }; -} - -if (!String.prototype.startsWith) { - String.prototype.startsWith = function (searchString, position) { - position = position || 0; - return this.substr(position, searchString.length) === searchString; - }; -} - -if (!String.prototype.endsWith) { - String.prototype.endsWith = function (searchString, position) { - var subjectString = this.toString(); - if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { - position = subjectString.length; - } - position -= searchString.length; - var lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; -} - -if (!Array.prototype.find) { - Object.defineProperty(Array.prototype, "find", { - value: function value(predicate) { - if (this === null) { - throw new TypeError('Array.prototype.find called on null or undefined'); - } - if (typeof predicate !== 'function') { - throw new TypeError('predicate must be a function'); - } - var list = Object(this); - var length = list.length >>> 0; - var thisArg = arguments[1]; - var value; - - for (var i = 0; i < length; i++) { - value = list[i]; - if (predicate.call(thisArg, value, i, list)) { - return value; - } - } - return undefined; - } - }); -} - -document.addEventListener("DOMContentLoaded", function () { - // Disable resizing in Firefox - document.execCommand("enableObjectResizing", false, false); - // Disable automatic linkifying in IE11 - document.execCommand("autoUrlDetect", false, false); -}); - -/***/ }), -/* 51 */ -/***/ (function(module, exports) { - -/** - * This library modifies the diff-patch-match library by Neil Fraser - * by removing the patch and match functionality and certain advanced - * options in the diff function. The original license is as follows: - * - * === - * - * Diff Match and Patch - * - * Copyright 2006 Google Inc. - * http://code.google.com/p/google-diff-match-patch/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/** - * The data structure representing a diff is an array of tuples: - * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']] - * which means: delete 'Hello', add 'Goodbye' and keep ' world.' - */ -var DIFF_DELETE = -1; -var DIFF_INSERT = 1; -var DIFF_EQUAL = 0; - - -/** - * Find the differences between two texts. Simplifies the problem by stripping - * any common prefix or suffix off the texts before diffing. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {Int} cursor_pos Expected edit position in text1 (optional) - * @return {Array} Array of diff tuples. - */ -function diff_main(text1, text2, cursor_pos) { - // Check for equality (speedup). - if (text1 == text2) { - if (text1) { - return [[DIFF_EQUAL, text1]]; - } - return []; - } - - // Check cursor_pos within bounds - if (cursor_pos < 0 || text1.length < cursor_pos) { - cursor_pos = null; - } - - // Trim off common prefix (speedup). - var commonlength = diff_commonPrefix(text1, text2); - var commonprefix = text1.substring(0, commonlength); - text1 = text1.substring(commonlength); - text2 = text2.substring(commonlength); - - // Trim off common suffix (speedup). - commonlength = diff_commonSuffix(text1, text2); - var commonsuffix = text1.substring(text1.length - commonlength); - text1 = text1.substring(0, text1.length - commonlength); - text2 = text2.substring(0, text2.length - commonlength); - - // Compute the diff on the middle block. - var diffs = diff_compute_(text1, text2); - - // Restore the prefix and suffix. - if (commonprefix) { - diffs.unshift([DIFF_EQUAL, commonprefix]); - } - if (commonsuffix) { - diffs.push([DIFF_EQUAL, commonsuffix]); - } - diff_cleanupMerge(diffs); - if (cursor_pos != null) { - diffs = fix_cursor(diffs, cursor_pos); - } - diffs = fix_emoji(diffs); - return diffs; -}; - - -/** - * Find the differences between two texts. Assumes that the texts do not - * have any common prefix or suffix. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @return {Array} Array of diff tuples. - */ -function diff_compute_(text1, text2) { - var diffs; - - if (!text1) { - // Just add some text (speedup). - return [[DIFF_INSERT, text2]]; - } - - if (!text2) { - // Just delete some text (speedup). - return [[DIFF_DELETE, text1]]; - } - - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - var i = longtext.indexOf(shorttext); - if (i != -1) { - // Shorter text is inside the longer text (speedup). - diffs = [[DIFF_INSERT, longtext.substring(0, i)], - [DIFF_EQUAL, shorttext], - [DIFF_INSERT, longtext.substring(i + shorttext.length)]]; - // Swap insertions for deletions if diff is reversed. - if (text1.length > text2.length) { - diffs[0][0] = diffs[2][0] = DIFF_DELETE; - } - return diffs; - } - - if (shorttext.length == 1) { - // Single character string. - // After the previous speedup, the character can't be an equality. - return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; - } - - // Check to see if the problem can be split in two. - var hm = diff_halfMatch_(text1, text2); - if (hm) { - // A half-match was found, sort out the return data. - var text1_a = hm[0]; - var text1_b = hm[1]; - var text2_a = hm[2]; - var text2_b = hm[3]; - var mid_common = hm[4]; - // Send both pairs off for separate processing. - var diffs_a = diff_main(text1_a, text2_a); - var diffs_b = diff_main(text1_b, text2_b); - // Merge the results. - return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b); - } - - return diff_bisect_(text1, text2); -}; - - -/** - * Find the 'middle snake' of a diff, split the problem in two - * and return the recursively constructed diff. - * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @return {Array} Array of diff tuples. - * @private - */ -function diff_bisect_(text1, text2) { - // Cache the text lengths to prevent multiple calls. - var text1_length = text1.length; - var text2_length = text2.length; - var max_d = Math.ceil((text1_length + text2_length) / 2); - var v_offset = max_d; - var v_length = 2 * max_d; - var v1 = new Array(v_length); - var v2 = new Array(v_length); - // Setting all elements to -1 is faster in Chrome & Firefox than mixing - // integers and undefined. - for (var x = 0; x < v_length; x++) { - v1[x] = -1; - v2[x] = -1; - } - v1[v_offset + 1] = 0; - v2[v_offset + 1] = 0; - var delta = text1_length - text2_length; - // If the total number of characters is odd, then the front path will collide - // with the reverse path. - var front = (delta % 2 != 0); - // Offsets for start and end of k loop. - // Prevents mapping of space beyond the grid. - var k1start = 0; - var k1end = 0; - var k2start = 0; - var k2end = 0; - for (var d = 0; d < max_d; d++) { - // Walk the front path one step. - for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { - var k1_offset = v_offset + k1; - var x1; - if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) { - x1 = v1[k1_offset + 1]; - } else { - x1 = v1[k1_offset - 1] + 1; - } - var y1 = x1 - k1; - while (x1 < text1_length && y1 < text2_length && - text1.charAt(x1) == text2.charAt(y1)) { - x1++; - y1++; - } - v1[k1_offset] = x1; - if (x1 > text1_length) { - // Ran off the right of the graph. - k1end += 2; - } else if (y1 > text2_length) { - // Ran off the bottom of the graph. - k1start += 2; - } else if (front) { - var k2_offset = v_offset + delta - k1; - if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) { - // Mirror x2 onto top-left coordinate system. - var x2 = text1_length - v2[k2_offset]; - if (x1 >= x2) { - // Overlap detected. - return diff_bisectSplit_(text1, text2, x1, y1); - } - } - } - } - - // Walk the reverse path one step. - for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { - var k2_offset = v_offset + k2; - var x2; - if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) { - x2 = v2[k2_offset + 1]; - } else { - x2 = v2[k2_offset - 1] + 1; - } - var y2 = x2 - k2; - while (x2 < text1_length && y2 < text2_length && - text1.charAt(text1_length - x2 - 1) == - text2.charAt(text2_length - y2 - 1)) { - x2++; - y2++; - } - v2[k2_offset] = x2; - if (x2 > text1_length) { - // Ran off the left of the graph. - k2end += 2; - } else if (y2 > text2_length) { - // Ran off the top of the graph. - k2start += 2; - } else if (!front) { - var k1_offset = v_offset + delta - k2; - if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) { - var x1 = v1[k1_offset]; - var y1 = v_offset + x1 - k1_offset; - // Mirror x2 onto top-left coordinate system. - x2 = text1_length - x2; - if (x1 >= x2) { - // Overlap detected. - return diff_bisectSplit_(text1, text2, x1, y1); - } - } - } - } - } - // Diff took too long and hit the deadline or - // number of diffs equals number of characters, no commonality at all. - return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; -}; - - -/** - * Given the location of the 'middle snake', split the diff in two parts - * and recurse. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {number} x Index of split point in text1. - * @param {number} y Index of split point in text2. - * @return {Array} Array of diff tuples. - */ -function diff_bisectSplit_(text1, text2, x, y) { - var text1a = text1.substring(0, x); - var text2a = text2.substring(0, y); - var text1b = text1.substring(x); - var text2b = text2.substring(y); - - // Compute both diffs serially. - var diffs = diff_main(text1a, text2a); - var diffsb = diff_main(text1b, text2b); - - return diffs.concat(diffsb); -}; - - -/** - * Determine the common prefix of two strings. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the start of each - * string. - */ -function diff_commonPrefix(text1, text2) { - // Quick check for common null cases. - if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) { - return 0; - } - // Binary search. - // Performance analysis: http://neil.fraser.name/news/2007/10/09/ - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - var pointerstart = 0; - while (pointermin < pointermid) { - if (text1.substring(pointerstart, pointermid) == - text2.substring(pointerstart, pointermid)) { - pointermin = pointermid; - pointerstart = pointermin; - } else { - pointermax = pointermid; - } - pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); - } - return pointermid; -}; - - -/** - * Determine the common suffix of two strings. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the end of each string. - */ -function diff_commonSuffix(text1, text2) { - // Quick check for common null cases. - if (!text1 || !text2 || - text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) { - return 0; - } - // Binary search. - // Performance analysis: http://neil.fraser.name/news/2007/10/09/ - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - var pointerend = 0; - while (pointermin < pointermid) { - if (text1.substring(text1.length - pointermid, text1.length - pointerend) == - text2.substring(text2.length - pointermid, text2.length - pointerend)) { - pointermin = pointermid; - pointerend = pointermin; - } else { - pointermax = pointermid; - } - pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); - } - return pointermid; -}; - - -/** - * Do the two texts share a substring which is at least half the length of the - * longer text? - * This speedup can produce non-minimal diffs. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {Array.} Five element Array, containing the prefix of - * text1, the suffix of text1, the prefix of text2, the suffix of - * text2 and the common middle. Or null if there was no match. - */ -function diff_halfMatch_(text1, text2) { - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - if (longtext.length < 4 || shorttext.length * 2 < longtext.length) { - return null; // Pointless. - } - - /** - * Does a substring of shorttext exist within longtext such that the substring - * is at least half the length of longtext? - * Closure, but does not reference any external variables. - * @param {string} longtext Longer string. - * @param {string} shorttext Shorter string. - * @param {number} i Start index of quarter length substring within longtext. - * @return {Array.} Five element Array, containing the prefix of - * longtext, the suffix of longtext, the prefix of shorttext, the suffix - * of shorttext and the common middle. Or null if there was no match. - * @private - */ - function diff_halfMatchI_(longtext, shorttext, i) { - // Start with a 1/4 length substring at position i as a seed. - var seed = longtext.substring(i, i + Math.floor(longtext.length / 4)); - var j = -1; - var best_common = ''; - var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; - while ((j = shorttext.indexOf(seed, j + 1)) != -1) { - var prefixLength = diff_commonPrefix(longtext.substring(i), - shorttext.substring(j)); - var suffixLength = diff_commonSuffix(longtext.substring(0, i), - shorttext.substring(0, j)); - if (best_common.length < suffixLength + prefixLength) { - best_common = shorttext.substring(j - suffixLength, j) + - shorttext.substring(j, j + prefixLength); - best_longtext_a = longtext.substring(0, i - suffixLength); - best_longtext_b = longtext.substring(i + prefixLength); - best_shorttext_a = shorttext.substring(0, j - suffixLength); - best_shorttext_b = shorttext.substring(j + prefixLength); - } - } - if (best_common.length * 2 >= longtext.length) { - return [best_longtext_a, best_longtext_b, - best_shorttext_a, best_shorttext_b, best_common]; - } else { - return null; - } - } - - // First check if the second quarter is the seed for a half-match. - var hm1 = diff_halfMatchI_(longtext, shorttext, - Math.ceil(longtext.length / 4)); - // Check again based on the third quarter. - var hm2 = diff_halfMatchI_(longtext, shorttext, - Math.ceil(longtext.length / 2)); - var hm; - if (!hm1 && !hm2) { - return null; - } else if (!hm2) { - hm = hm1; - } else if (!hm1) { - hm = hm2; - } else { - // Both matched. Select the longest. - hm = hm1[4].length > hm2[4].length ? hm1 : hm2; - } - - // A half-match was found, sort out the return data. - var text1_a, text1_b, text2_a, text2_b; - if (text1.length > text2.length) { - text1_a = hm[0]; - text1_b = hm[1]; - text2_a = hm[2]; - text2_b = hm[3]; - } else { - text2_a = hm[0]; - text2_b = hm[1]; - text1_a = hm[2]; - text1_b = hm[3]; - } - var mid_common = hm[4]; - return [text1_a, text1_b, text2_a, text2_b, mid_common]; -}; - - -/** - * Reorder and merge like edit sections. Merge equalities. - * Any edit section can move as long as it doesn't cross an equality. - * @param {Array} diffs Array of diff tuples. - */ -function diff_cleanupMerge(diffs) { - diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end. - var pointer = 0; - var count_delete = 0; - var count_insert = 0; - var text_delete = ''; - var text_insert = ''; - var commonlength; - while (pointer < diffs.length) { - switch (diffs[pointer][0]) { - case DIFF_INSERT: - count_insert++; - text_insert += diffs[pointer][1]; - pointer++; - break; - case DIFF_DELETE: - count_delete++; - text_delete += diffs[pointer][1]; - pointer++; - break; - case DIFF_EQUAL: - // Upon reaching an equality, check for prior redundancies. - if (count_delete + count_insert > 1) { - if (count_delete !== 0 && count_insert !== 0) { - // Factor out any common prefixies. - commonlength = diff_commonPrefix(text_insert, text_delete); - if (commonlength !== 0) { - if ((pointer - count_delete - count_insert) > 0 && - diffs[pointer - count_delete - count_insert - 1][0] == - DIFF_EQUAL) { - diffs[pointer - count_delete - count_insert - 1][1] += - text_insert.substring(0, commonlength); - } else { - diffs.splice(0, 0, [DIFF_EQUAL, - text_insert.substring(0, commonlength)]); - pointer++; - } - text_insert = text_insert.substring(commonlength); - text_delete = text_delete.substring(commonlength); - } - // Factor out any common suffixies. - commonlength = diff_commonSuffix(text_insert, text_delete); - if (commonlength !== 0) { - diffs[pointer][1] = text_insert.substring(text_insert.length - - commonlength) + diffs[pointer][1]; - text_insert = text_insert.substring(0, text_insert.length - - commonlength); - text_delete = text_delete.substring(0, text_delete.length - - commonlength); - } - } - // Delete the offending records and add the merged ones. - if (count_delete === 0) { - diffs.splice(pointer - count_insert, - count_delete + count_insert, [DIFF_INSERT, text_insert]); - } else if (count_insert === 0) { - diffs.splice(pointer - count_delete, - count_delete + count_insert, [DIFF_DELETE, text_delete]); - } else { - diffs.splice(pointer - count_delete - count_insert, - count_delete + count_insert, [DIFF_DELETE, text_delete], - [DIFF_INSERT, text_insert]); - } - pointer = pointer - count_delete - count_insert + - (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1; - } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) { - // Merge this equality with the previous one. - diffs[pointer - 1][1] += diffs[pointer][1]; - diffs.splice(pointer, 1); - } else { - pointer++; - } - count_insert = 0; - count_delete = 0; - text_delete = ''; - text_insert = ''; - break; - } - } - if (diffs[diffs.length - 1][1] === '') { - diffs.pop(); // Remove the dummy entry at the end. - } - - // Second pass: look for single edits surrounded on both sides by equalities - // which can be shifted sideways to eliminate an equality. - // e.g: ABAC -> ABAC - var changes = false; - pointer = 1; - // Intentionally ignore the first and last element (don't need checking). - while (pointer < diffs.length - 1) { - if (diffs[pointer - 1][0] == DIFF_EQUAL && - diffs[pointer + 1][0] == DIFF_EQUAL) { - // This is a single edit surrounded by equalities. - if (diffs[pointer][1].substring(diffs[pointer][1].length - - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) { - // Shift the edit over the previous equality. - diffs[pointer][1] = diffs[pointer - 1][1] + - diffs[pointer][1].substring(0, diffs[pointer][1].length - - diffs[pointer - 1][1].length); - diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; - diffs.splice(pointer - 1, 1); - changes = true; - } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == - diffs[pointer + 1][1]) { - // Shift the edit over the next equality. - diffs[pointer - 1][1] += diffs[pointer + 1][1]; - diffs[pointer][1] = - diffs[pointer][1].substring(diffs[pointer + 1][1].length) + - diffs[pointer + 1][1]; - diffs.splice(pointer + 1, 1); - changes = true; - } - } - pointer++; - } - // If shifts were made, the diff needs reordering and another shift sweep. - if (changes) { - diff_cleanupMerge(diffs); - } -}; - - -var diff = diff_main; -diff.INSERT = DIFF_INSERT; -diff.DELETE = DIFF_DELETE; -diff.EQUAL = DIFF_EQUAL; - -module.exports = diff; - -/* - * Modify a diff such that the cursor position points to the start of a change: - * E.g. - * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1) - * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]] - * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2) - * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]] - * - * @param {Array} diffs Array of diff tuples - * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds! - * @return {Array} A tuple [cursor location in the modified diff, modified diff] - */ -function cursor_normalize_diff (diffs, cursor_pos) { - if (cursor_pos === 0) { - return [DIFF_EQUAL, diffs]; - } - for (var current_pos = 0, i = 0; i < diffs.length; i++) { - var d = diffs[i]; - if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) { - var next_pos = current_pos + d[1].length; - if (cursor_pos === next_pos) { - return [i + 1, diffs]; - } else if (cursor_pos < next_pos) { - // copy to prevent side effects - diffs = diffs.slice(); - // split d into two diff changes - var split_pos = cursor_pos - current_pos; - var d_left = [d[0], d[1].slice(0, split_pos)]; - var d_right = [d[0], d[1].slice(split_pos)]; - diffs.splice(i, 1, d_left, d_right); - return [i + 1, diffs]; - } else { - current_pos = next_pos; - } - } - } - throw new Error('cursor_pos is out of bounds!') -} - -/* - * Modify a diff such that the edit position is "shifted" to the proposed edit location (cursor_position). - * - * Case 1) - * Check if a naive shift is possible: - * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X) - * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result - * Case 2) - * Check if the following shifts are possible: - * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix'] - * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix'] - * ^ ^ - * d d_next - * - * @param {Array} diffs Array of diff tuples - * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds! - * @return {Array} Array of diff tuples - */ -function fix_cursor (diffs, cursor_pos) { - var norm = cursor_normalize_diff(diffs, cursor_pos); - var ndiffs = norm[1]; - var cursor_pointer = norm[0]; - var d = ndiffs[cursor_pointer]; - var d_next = ndiffs[cursor_pointer + 1]; - - if (d == null) { - // Text was deleted from end of original string, - // cursor is now out of bounds in new string - return diffs; - } else if (d[0] !== DIFF_EQUAL) { - // A modification happened at the cursor location. - // This is the expected outcome, so we can return the original diff. - return diffs; - } else { - if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) { - // Case 1) - // It is possible to perform a naive shift - ndiffs.splice(cursor_pointer, 2, d_next, d) - return merge_tuples(ndiffs, cursor_pointer, 2) - } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) { - // Case 2) - // d[1] is a prefix of d_next[1] - // We can assume that d_next[0] !== 0, since d[0] === 0 - // Shift edit locations.. - ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]); - var suffix = d_next[1].slice(d[1].length); - if (suffix.length > 0) { - ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]); - } - return merge_tuples(ndiffs, cursor_pointer, 3) - } else { - // Not possible to perform any modification - return diffs; - } - } -} - -/* - * Check diff did not split surrogate pairs. - * Ex. [0, '\uD83D'], [-1, '\uDC36'], [1, '\uDC2F'] -> [-1, '\uD83D\uDC36'], [1, '\uD83D\uDC2F'] - * '\uD83D\uDC36' === '🐶', '\uD83D\uDC2F' === '🐯' - * - * @param {Array} diffs Array of diff tuples - * @return {Array} Array of diff tuples - */ -function fix_emoji (diffs) { - var compact = false; - var starts_with_pair_end = function(str) { - return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF; - } - var ends_with_pair_start = function(str) { - return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF; - } - for (var i = 2; i < diffs.length; i += 1) { - if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) && - diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) && - diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) { - compact = true; - - diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1]; - diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1]; - - diffs[i-2][1] = diffs[i-2][1].slice(0, -1); - } - } - if (!compact) { - return diffs; - } - var fixed_diffs = []; - for (var i = 0; i < diffs.length; i += 1) { - if (diffs[i][1].length > 0) { - fixed_diffs.push(diffs[i]); - } - } - return fixed_diffs; -} - -/* - * Try to merge tuples with their neigbors in a given range. - * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab'] - * - * @param {Array} diffs Array of diff tuples. - * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]). - * @param {Int} length Number of consecutive elements to check. - * @return {Array} Array of merged diff tuples. - */ -function merge_tuples (diffs, start, length) { - // Check from (start-1) to (start+length). - for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) { - if (i + 1 < diffs.length) { - var left_d = diffs[i]; - var right_d = diffs[i+1]; - if (left_d[0] === right_d[1]) { - diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]); - } - } - } - return diffs; -} - - -/***/ }), -/* 52 */ -/***/ (function(module, exports) { - -exports = module.exports = typeof Object.keys === 'function' - ? Object.keys : shim; - -exports.shim = shim; -function shim (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} - - -/***/ }), -/* 53 */ -/***/ (function(module, exports) { - -var supportsArgumentsClass = (function(){ - return Object.prototype.toString.call(arguments) -})() == '[object Arguments]'; - -exports = module.exports = supportsArgumentsClass ? supported : unsupported; - -exports.supported = supported; -function supported(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -}; - -exports.unsupported = unsupported; -function unsupported(object){ - return object && - typeof object == 'object' && - typeof object.length == 'number' && - Object.prototype.hasOwnProperty.call(object, 'callee') && - !Object.prototype.propertyIsEnumerable.call(object, 'callee') || - false; -}; - - -/***/ }), -/* 54 */ -/***/ (function(module, exports) { - -'use strict'; - -var has = Object.prototype.hasOwnProperty - , prefix = '~'; - -/** - * Constructor to create a storage for our `EE` objects. - * An `Events` instance is a plain object whose properties are event names. - * - * @constructor - * @api private - */ -function Events() {} - -// -// We try to not inherit from `Object.prototype`. In some engines creating an -// instance in this way is faster than calling `Object.create(null)` directly. -// If `Object.create(null)` is not supported we prefix the event names with a -// character to make sure that the built-in object properties are not -// overridden or used as an attack vector. -// -if (Object.create) { - Events.prototype = Object.create(null); - - // - // This hack is needed because the `__proto__` property is still inherited in - // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5. - // - if (!new Events().__proto__) prefix = false; -} - -/** - * Representation of a single event listener. - * - * @param {Function} fn The listener function. - * @param {Mixed} context The context to invoke the listener with. - * @param {Boolean} [once=false] Specify if the listener is a one-time listener. - * @constructor - * @api private - */ -function EE(fn, context, once) { - this.fn = fn; - this.context = context; - this.once = once || false; -} - -/** - * Minimal `EventEmitter` interface that is molded against the Node.js - * `EventEmitter` interface. - * - * @constructor - * @api public - */ -function EventEmitter() { - this._events = new Events(); - this._eventsCount = 0; -} - -/** - * Return an array listing the events for which the emitter has registered - * listeners. - * - * @returns {Array} - * @api public - */ -EventEmitter.prototype.eventNames = function eventNames() { - var names = [] - , events - , name; - - if (this._eventsCount === 0) return names; - - for (name in (events = this._events)) { - if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); - } - - if (Object.getOwnPropertySymbols) { - return names.concat(Object.getOwnPropertySymbols(events)); - } - - return names; -}; - -/** - * Return the listeners registered for a given event. - * - * @param {String|Symbol} event The event name. - * @param {Boolean} exists Only check if there are listeners. - * @returns {Array|Boolean} - * @api public - */ -EventEmitter.prototype.listeners = function listeners(event, exists) { - var evt = prefix ? prefix + event : event - , available = this._events[evt]; - - if (exists) return !!available; - if (!available) return []; - if (available.fn) return [available.fn]; - - for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) { - ee[i] = available[i].fn; - } - - return ee; -}; - -/** - * Calls each of the listeners registered for a given event. - * - * @param {String|Symbol} event The event name. - * @returns {Boolean} `true` if the event had listeners, else `false`. - * @api public - */ -EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return false; - - var listeners = this._events[evt] - , len = arguments.length - , args - , i; - - if (listeners.fn) { - if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); - - switch (len) { - case 1: return listeners.fn.call(listeners.context), true; - case 2: return listeners.fn.call(listeners.context, a1), true; - case 3: return listeners.fn.call(listeners.context, a1, a2), true; - case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; - case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; - case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; - } - - for (i = 1, args = new Array(len -1); i < len; i++) { - args[i - 1] = arguments[i]; - } - - listeners.fn.apply(listeners.context, args); - } else { - var length = listeners.length - , j; - - for (i = 0; i < length; i++) { - if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); - - switch (len) { - case 1: listeners[i].fn.call(listeners[i].context); break; - case 2: listeners[i].fn.call(listeners[i].context, a1); break; - case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; - case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; - default: - if (!args) for (j = 1, args = new Array(len -1); j < len; j++) { - args[j - 1] = arguments[j]; - } - - listeners[i].fn.apply(listeners[i].context, args); - } - } - } - - return true; -}; - -/** - * Add a listener for a given event. - * - * @param {String|Symbol} event The event name. - * @param {Function} fn The listener function. - * @param {Mixed} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @api public - */ -EventEmitter.prototype.on = function on(event, fn, context) { - var listener = new EE(fn, context || this) - , evt = prefix ? prefix + event : event; - - if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++; - else if (!this._events[evt].fn) this._events[evt].push(listener); - else this._events[evt] = [this._events[evt], listener]; - - return this; -}; - -/** - * Add a one-time listener for a given event. - * - * @param {String|Symbol} event The event name. - * @param {Function} fn The listener function. - * @param {Mixed} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @api public - */ -EventEmitter.prototype.once = function once(event, fn, context) { - var listener = new EE(fn, context || this, true) - , evt = prefix ? prefix + event : event; - - if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++; - else if (!this._events[evt].fn) this._events[evt].push(listener); - else this._events[evt] = [this._events[evt], listener]; - - return this; -}; - -/** - * Remove the listeners of a given event. - * - * @param {String|Symbol} event The event name. - * @param {Function} fn Only remove the listeners that match this function. - * @param {Mixed} context Only remove the listeners that have this context. - * @param {Boolean} once Only remove one-time listeners. - * @returns {EventEmitter} `this`. - * @api public - */ -EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return this; - if (!fn) { - if (--this._eventsCount === 0) this._events = new Events(); - else delete this._events[evt]; - return this; - } - - var listeners = this._events[evt]; - - if (listeners.fn) { - if ( - listeners.fn === fn - && (!once || listeners.once) - && (!context || listeners.context === context) - ) { - if (--this._eventsCount === 0) this._events = new Events(); - else delete this._events[evt]; - } - } else { - for (var i = 0, events = [], length = listeners.length; i < length; i++) { - if ( - listeners[i].fn !== fn - || (once && !listeners[i].once) - || (context && listeners[i].context !== context) - ) { - events.push(listeners[i]); - } - } - - // - // Reset the array, or remove it completely if we have no more listeners. - // - if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; - else if (--this._eventsCount === 0) this._events = new Events(); - else delete this._events[evt]; - } - - return this; -}; - -/** - * Remove all listeners, or those of the specified event. - * - * @param {String|Symbol} [event] The event name. - * @returns {EventEmitter} `this`. - * @api public - */ -EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { - var evt; - - if (event) { - evt = prefix ? prefix + event : event; - if (this._events[evt]) { - if (--this._eventsCount === 0) this._events = new Events(); - else delete this._events[evt]; - } - } else { - this._events = new Events(); - this._eventsCount = 0; - } - - return this; -}; - -// -// Alias methods names because people roll like that. -// -EventEmitter.prototype.off = EventEmitter.prototype.removeListener; -EventEmitter.prototype.addListener = EventEmitter.prototype.on; - -// -// This function doesn't apply anymore. -// -EventEmitter.prototype.setMaxListeners = function setMaxListeners() { - return this; -}; - -// -// Expose the prefix. -// -EventEmitter.prefixed = prefix; - -// -// Allow `EventEmitter` to be imported as module namespace. -// -EventEmitter.EventEmitter = EventEmitter; - -// -// Expose the module. -// -if ('undefined' !== typeof module) { - module.exports = EventEmitter; -} - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _extend2 = __webpack_require__(3); - -var _extend3 = _interopRequireDefault(_extend2); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -var _align = __webpack_require__(36); - -var _background = __webpack_require__(37); - -var _code = __webpack_require__(13); - -var _code2 = _interopRequireDefault(_code); - -var _color = __webpack_require__(26); - -var _direction = __webpack_require__(38); - -var _font = __webpack_require__(39); - -var _size = __webpack_require__(40); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var debug = (0, _logger2.default)('quill:clipboard'); - -var DOM_KEY = '__ql-matcher'; - -var CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]]; - -var ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) { - memo[attr.keyName] = attr; - return memo; -}, {}); - -var STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) { - memo[attr.keyName] = attr; - return memo; -}, {}); - -var Clipboard = function (_Module) { - _inherits(Clipboard, _Module); - - function Clipboard(quill, options) { - _classCallCheck(this, Clipboard); - - var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options)); - - _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this)); - _this.container = _this.quill.addContainer('ql-clipboard'); - _this.container.setAttribute('contenteditable', true); - _this.container.setAttribute('tabindex', -1); - _this.matchers = []; - CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - selector = _ref2[0], - matcher = _ref2[1]; - - if (!options.matchVisual && matcher === matchSpacing) return; - _this.addMatcher(selector, matcher); - }); - return _this; - } - - _createClass(Clipboard, [{ - key: 'addMatcher', - value: function addMatcher(selector, matcher) { - this.matchers.push([selector, matcher]); - } - }, { - key: 'convert', - value: function convert(html) { - if (typeof html === 'string') { - this.container.innerHTML = html.replace(/\>\r?\n +\<'); // Remove spaces between tags - return this.convert(); - } - var formats = this.quill.getFormat(this.quill.selection.savedRange.index); - if (formats[_code2.default.blotName]) { - var text = this.container.innerText; - this.container.innerHTML = ''; - return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName])); - } - - var _prepareMatching = this.prepareMatching(), - _prepareMatching2 = _slicedToArray(_prepareMatching, 2), - elementMatchers = _prepareMatching2[0], - textMatchers = _prepareMatching2[1]; - - var delta = traverse(this.container, elementMatchers, textMatchers); - // Remove trailing newline - if (deltaEndsWith(delta, '\n') && delta.ops[delta.ops.length - 1].attributes == null) { - delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1)); - } - debug.log('convert', this.container.innerHTML, delta); - this.container.innerHTML = ''; - return delta; - } - }, { - key: 'dangerouslyPasteHTML', - value: function dangerouslyPasteHTML(index, html) { - var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API; - - if (typeof index === 'string') { - this.quill.setContents(this.convert(index), html); - this.quill.setSelection(0, _quill2.default.sources.SILENT); - } else { - var paste = this.convert(html); - this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source); - this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT); - } - } - }, { - key: 'onPaste', - value: function onPaste(e) { - var _this2 = this; - - if (e.defaultPrevented || !this.quill.isEnabled()) return; - var range = this.quill.getSelection(); - var delta = new _quillDelta2.default().retain(range.index); - var scrollTop = this.quill.scrollingContainer.scrollTop; - this.container.focus(); - this.quill.selection.update(_quill2.default.sources.SILENT); - setTimeout(function () { - delta = delta.concat(_this2.convert()).delete(range.length); - _this2.quill.updateContents(delta, _quill2.default.sources.USER); - // range.length contributes to delta.length() - _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT); - _this2.quill.scrollingContainer.scrollTop = scrollTop; - _this2.quill.focus(); - }, 1); - } - }, { - key: 'prepareMatching', - value: function prepareMatching() { - var _this3 = this; - - var elementMatchers = [], - textMatchers = []; - this.matchers.forEach(function (pair) { - var _pair = _slicedToArray(pair, 2), - selector = _pair[0], - matcher = _pair[1]; - - switch (selector) { - case Node.TEXT_NODE: - textMatchers.push(matcher); - break; - case Node.ELEMENT_NODE: - elementMatchers.push(matcher); - break; - default: - [].forEach.call(_this3.container.querySelectorAll(selector), function (node) { - // TODO use weakmap - node[DOM_KEY] = node[DOM_KEY] || []; - node[DOM_KEY].push(matcher); - }); - break; - } - }); - return [elementMatchers, textMatchers]; - } - }]); - - return Clipboard; -}(_module2.default); - -Clipboard.DEFAULTS = { - matchers: [], - matchVisual: true -}; - -function applyFormat(delta, format, value) { - if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') { - return Object.keys(format).reduce(function (delta, key) { - return applyFormat(delta, key, format[key]); - }, delta); - } else { - return delta.reduce(function (delta, op) { - if (op.attributes && op.attributes[format]) { - return delta.push(op); - } else { - return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes)); - } - }, new _quillDelta2.default()); - } -} - -function computeStyle(node) { - if (node.nodeType !== Node.ELEMENT_NODE) return {}; - var DOM_KEY = '__ql-computed-style'; - return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node)); -} - -function deltaEndsWith(delta, text) { - var endText = ""; - for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) { - var op = delta.ops[i]; - if (typeof op.insert !== 'string') break; - endText = op.insert + endText; - } - return endText.slice(-1 * text.length) === text; -} - -function isLine(node) { - if (node.childNodes.length === 0) return false; // Exclude embed blocks - var style = computeStyle(node); - return ['block', 'list-item'].indexOf(style.display) > -1; -} - -function traverse(node, elementMatchers, textMatchers) { - // Post-order - if (node.nodeType === node.TEXT_NODE) { - return textMatchers.reduce(function (delta, matcher) { - return matcher(node, delta); - }, new _quillDelta2.default()); - } else if (node.nodeType === node.ELEMENT_NODE) { - return [].reduce.call(node.childNodes || [], function (delta, childNode) { - var childrenDelta = traverse(childNode, elementMatchers, textMatchers); - if (childNode.nodeType === node.ELEMENT_NODE) { - childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) { - return matcher(childNode, childrenDelta); - }, childrenDelta); - childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) { - return matcher(childNode, childrenDelta); - }, childrenDelta); - } - return delta.concat(childrenDelta); - }, new _quillDelta2.default()); - } else { - return new _quillDelta2.default(); - } -} - -function matchAlias(format, node, delta) { - return applyFormat(delta, format, true); -} - -function matchAttributor(node, delta) { - var attributes = _parchment2.default.Attributor.Attribute.keys(node); - var classes = _parchment2.default.Attributor.Class.keys(node); - var styles = _parchment2.default.Attributor.Style.keys(node); - var formats = {}; - attributes.concat(classes).concat(styles).forEach(function (name) { - var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE); - if (attr != null) { - formats[attr.attrName] = attr.value(node); - if (formats[attr.attrName]) return; - } - attr = ATTRIBUTE_ATTRIBUTORS[name]; - if (attr != null && (attr.attrName === name || attr.keyName === name)) { - formats[attr.attrName] = attr.value(node) || undefined; - } - attr = STYLE_ATTRIBUTORS[name]; - if (attr != null && (attr.attrName === name || attr.keyName === name)) { - attr = STYLE_ATTRIBUTORS[name]; - formats[attr.attrName] = attr.value(node) || undefined; - } - }); - if (Object.keys(formats).length > 0) { - delta = applyFormat(delta, formats); - } - return delta; -} - -function matchBlot(node, delta) { - var match = _parchment2.default.query(node); - if (match == null) return delta; - if (match.prototype instanceof _parchment2.default.Embed) { - var embed = {}; - var value = match.value(node); - if (value != null) { - embed[match.blotName] = value; - delta = new _quillDelta2.default().insert(embed, match.formats(node)); - } - } else if (typeof match.formats === 'function') { - delta = applyFormat(delta, match.blotName, match.formats(node)); - } - return delta; -} - -function matchBreak(node, delta) { - if (!deltaEndsWith(delta, '\n')) { - delta.insert('\n'); - } - return delta; -} - -function matchIgnore() { - return new _quillDelta2.default(); -} - -function matchIndent(node, delta) { - var match = _parchment2.default.query(node); - if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\n')) { - return delta; - } - var indent = -1, - parent = node.parentNode; - while (!parent.classList.contains('ql-clipboard')) { - if ((_parchment2.default.query(parent) || {}).blotName === 'list') { - indent += 1; - } - parent = parent.parentNode; - } - if (indent <= 0) return delta; - return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent })); -} - -function matchNewline(node, delta) { - if (!deltaEndsWith(delta, '\n')) { - if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) { - delta.insert('\n'); - } - } - return delta; -} - -function matchSpacing(node, delta) { - if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\n\n')) { - var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom); - if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) { - delta.insert('\n'); - } - } - return delta; -} - -function matchStyles(node, delta) { - var formats = {}; - var style = node.style || {}; - if (style.fontStyle && computeStyle(node).fontStyle === 'italic') { - formats.italic = true; - } - if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) { - formats.bold = true; - } - if (Object.keys(formats).length > 0) { - delta = applyFormat(delta, formats); - } - if (parseFloat(style.textIndent || 0) > 0) { - // Could be 0.5in - delta = new _quillDelta2.default().insert('\t').concat(delta); - } - return delta; -} - -function matchText(node, delta) { - var text = node.data; - // Word represents empty line with   - if (node.parentNode.tagName === 'O:P') { - return delta.insert(text.trim()); - } - if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) { - return delta; - } - if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) { - // eslint-disable-next-line func-style - var replacer = function replacer(collapse, match) { - match = match.replace(/[^\u00a0]/g, ''); // \u00a0 is nbsp; - return match.length < 1 && collapse ? ' ' : match; - }; - text = text.replace(/\r\n/g, ' ').replace(/\n/g, ' '); - text = text.replace(/\s\s+/g, replacer.bind(replacer, true)); // collapse whitespace - if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) { - text = text.replace(/^\s+/, replacer.bind(replacer, false)); - } - if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) { - text = text.replace(/\s+$/, replacer.bind(replacer, false)); - } - } - return delta.insert(text); -} - -exports.default = Clipboard; -exports.matchAttributor = matchAttributor; -exports.matchBlot = matchBlot; -exports.matchNewline = matchNewline; -exports.matchSpacing = matchSpacing; -exports.matchText = matchText; - -/***/ }), -/* 56 */, -/* 57 */, -/* 58 */, -/* 59 */, -/* 60 */, -/* 61 */, -/* 62 */, -/* 63 */, -/* 64 */, -/* 65 */, -/* 66 */, -/* 67 */, -/* 68 */, -/* 69 */, -/* 70 */, -/* 71 */, -/* 72 */, -/* 73 */, -/* 74 */, -/* 75 */, -/* 76 */, -/* 77 */, -/* 78 */, -/* 79 */, -/* 80 */, -/* 81 */, -/* 82 */, -/* 83 */, -/* 84 */, -/* 85 */, -/* 86 */, -/* 87 */, -/* 88 */, -/* 89 */, -/* 90 */, -/* 91 */, -/* 92 */, -/* 93 */, -/* 94 */, -/* 95 */, -/* 96 */, -/* 97 */, -/* 98 */, -/* 99 */, -/* 100 */, -/* 101 */, -/* 102 */, -/* 103 */, -/* 104 */, -/* 105 */, -/* 106 */, -/* 107 */, -/* 108 */, -/* 109 */, -/* 110 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(29); - - -/***/ }) -/******/ ])["default"]; -}); \ No newline at end of file diff --git a/Wino.Mail/JS/Quill/quill.js b/Wino.Mail/JS/Quill/quill.js deleted file mode 100644 index 5dc8fbe3..00000000 --- a/Wino.Mail/JS/Quill/quill.js +++ /dev/null @@ -1,11489 +0,0 @@ -/*! - * Quill Editor v1.3.6 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["Quill"] = factory(); - else - root["Quill"] = factory(); -})(typeof self !== 'undefined' ? self : this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 109); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var container_1 = __webpack_require__(17); -var format_1 = __webpack_require__(18); -var leaf_1 = __webpack_require__(19); -var scroll_1 = __webpack_require__(45); -var inline_1 = __webpack_require__(46); -var block_1 = __webpack_require__(47); -var embed_1 = __webpack_require__(48); -var text_1 = __webpack_require__(49); -var attributor_1 = __webpack_require__(12); -var class_1 = __webpack_require__(32); -var style_1 = __webpack_require__(33); -var store_1 = __webpack_require__(31); -var Registry = __webpack_require__(1); -var Parchment = { - Scope: Registry.Scope, - create: Registry.create, - find: Registry.find, - query: Registry.query, - register: Registry.register, - Container: container_1.default, - Format: format_1.default, - Leaf: leaf_1.default, - Embed: embed_1.default, - Scroll: scroll_1.default, - Block: block_1.default, - Inline: inline_1.default, - Text: text_1.default, - Attributor: { - Attribute: attributor_1.default, - Class: class_1.default, - Style: style_1.default, - Store: store_1.default, - }, -}; -exports.default = Parchment; - - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var ParchmentError = /** @class */ (function (_super) { - __extends(ParchmentError, _super); - function ParchmentError(message) { - var _this = this; - message = '[Parchment] ' + message; - _this = _super.call(this, message) || this; - _this.message = message; - _this.name = _this.constructor.name; - return _this; - } - return ParchmentError; -}(Error)); -exports.ParchmentError = ParchmentError; -var attributes = {}; -var classes = {}; -var tags = {}; -var types = {}; -exports.DATA_KEY = '__blot'; -var Scope; -(function (Scope) { - Scope[Scope["TYPE"] = 3] = "TYPE"; - Scope[Scope["LEVEL"] = 12] = "LEVEL"; - Scope[Scope["ATTRIBUTE"] = 13] = "ATTRIBUTE"; - Scope[Scope["BLOT"] = 14] = "BLOT"; - Scope[Scope["INLINE"] = 7] = "INLINE"; - Scope[Scope["BLOCK"] = 11] = "BLOCK"; - Scope[Scope["BLOCK_BLOT"] = 10] = "BLOCK_BLOT"; - Scope[Scope["INLINE_BLOT"] = 6] = "INLINE_BLOT"; - Scope[Scope["BLOCK_ATTRIBUTE"] = 9] = "BLOCK_ATTRIBUTE"; - Scope[Scope["INLINE_ATTRIBUTE"] = 5] = "INLINE_ATTRIBUTE"; - Scope[Scope["ANY"] = 15] = "ANY"; -})(Scope = exports.Scope || (exports.Scope = {})); -function create(input, value) { - var match = query(input); - if (match == null) { - throw new ParchmentError("Unable to create " + input + " blot"); - } - var BlotClass = match; - var node = - // @ts-ignore - input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value); - return new BlotClass(node, value); -} -exports.create = create; -function find(node, bubble) { - if (bubble === void 0) { bubble = false; } - if (node == null) - return null; - // @ts-ignore - if (node[exports.DATA_KEY] != null) - return node[exports.DATA_KEY].blot; - if (bubble) - return find(node.parentNode, bubble); - return null; -} -exports.find = find; -function query(query, scope) { - if (scope === void 0) { scope = Scope.ANY; } - var match; - if (typeof query === 'string') { - match = types[query] || attributes[query]; - // @ts-ignore - } - else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) { - match = types['text']; - } - else if (typeof query === 'number') { - if (query & Scope.LEVEL & Scope.BLOCK) { - match = types['block']; - } - else if (query & Scope.LEVEL & Scope.INLINE) { - match = types['inline']; - } - } - else if (query instanceof HTMLElement) { - var names = (query.getAttribute('class') || '').split(/\s+/); - for (var i in names) { - match = classes[names[i]]; - if (match) - break; - } - match = match || tags[query.tagName]; - } - if (match == null) - return null; - // @ts-ignore - if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope) - return match; - return null; -} -exports.query = query; -function register() { - var Definitions = []; - for (var _i = 0; _i < arguments.length; _i++) { - Definitions[_i] = arguments[_i]; - } - if (Definitions.length > 1) { - return Definitions.map(function (d) { - return register(d); - }); - } - var Definition = Definitions[0]; - if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') { - throw new ParchmentError('Invalid definition'); - } - else if (Definition.blotName === 'abstract') { - throw new ParchmentError('Cannot register abstract class'); - } - types[Definition.blotName || Definition.attrName] = Definition; - if (typeof Definition.keyName === 'string') { - attributes[Definition.keyName] = Definition; - } - else { - if (Definition.className != null) { - classes[Definition.className] = Definition; - } - if (Definition.tagName != null) { - if (Array.isArray(Definition.tagName)) { - Definition.tagName = Definition.tagName.map(function (tagName) { - return tagName.toUpperCase(); - }); - } - else { - Definition.tagName = Definition.tagName.toUpperCase(); - } - var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName]; - tagNames.forEach(function (tag) { - if (tags[tag] == null || Definition.className == null) { - tags[tag] = Definition; - } - }); - } - } - return Definition; -} -exports.register = register; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -var diff = __webpack_require__(51); -var equal = __webpack_require__(11); -var extend = __webpack_require__(3); -var op = __webpack_require__(20); - - -var NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff() - - -var Delta = function (ops) { - // Assume we are given a well formed ops - if (Array.isArray(ops)) { - this.ops = ops; - } else if (ops != null && Array.isArray(ops.ops)) { - this.ops = ops.ops; - } else { - this.ops = []; - } -}; - - -Delta.prototype.insert = function (text, attributes) { - var newOp = {}; - if (text.length === 0) return this; - newOp.insert = text; - if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) { - newOp.attributes = attributes; - } - return this.push(newOp); -}; - -Delta.prototype['delete'] = function (length) { - if (length <= 0) return this; - return this.push({ 'delete': length }); -}; - -Delta.prototype.retain = function (length, attributes) { - if (length <= 0) return this; - var newOp = { retain: length }; - if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) { - newOp.attributes = attributes; - } - return this.push(newOp); -}; - -Delta.prototype.push = function (newOp) { - var index = this.ops.length; - var lastOp = this.ops[index - 1]; - newOp = extend(true, {}, newOp); - if (typeof lastOp === 'object') { - if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') { - this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] }; - return this; - } - // Since it does not matter if we insert before or after deleting at the same index, - // always prefer to insert first - if (typeof lastOp['delete'] === 'number' && newOp.insert != null) { - index -= 1; - lastOp = this.ops[index - 1]; - if (typeof lastOp !== 'object') { - this.ops.unshift(newOp); - return this; - } - } - if (equal(newOp.attributes, lastOp.attributes)) { - if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') { - this.ops[index - 1] = { insert: lastOp.insert + newOp.insert }; - if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes - return this; - } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') { - this.ops[index - 1] = { retain: lastOp.retain + newOp.retain }; - if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes - return this; - } - } - } - if (index === this.ops.length) { - this.ops.push(newOp); - } else { - this.ops.splice(index, 0, newOp); - } - return this; -}; - -Delta.prototype.chop = function () { - var lastOp = this.ops[this.ops.length - 1]; - if (lastOp && lastOp.retain && !lastOp.attributes) { - this.ops.pop(); - } - return this; -}; - -Delta.prototype.filter = function (predicate) { - return this.ops.filter(predicate); -}; - -Delta.prototype.forEach = function (predicate) { - this.ops.forEach(predicate); -}; - -Delta.prototype.map = function (predicate) { - return this.ops.map(predicate); -}; - -Delta.prototype.partition = function (predicate) { - var passed = [], failed = []; - this.forEach(function(op) { - var target = predicate(op) ? passed : failed; - target.push(op); - }); - return [passed, failed]; -}; - -Delta.prototype.reduce = function (predicate, initial) { - return this.ops.reduce(predicate, initial); -}; - -Delta.prototype.changeLength = function () { - return this.reduce(function (length, elem) { - if (elem.insert) { - return length + op.length(elem); - } else if (elem.delete) { - return length - elem.delete; - } - return length; - }, 0); -}; - -Delta.prototype.length = function () { - return this.reduce(function (length, elem) { - return length + op.length(elem); - }, 0); -}; - -Delta.prototype.slice = function (start, end) { - start = start || 0; - if (typeof end !== 'number') end = Infinity; - var ops = []; - var iter = op.iterator(this.ops); - var index = 0; - while (index < end && iter.hasNext()) { - var nextOp; - if (index < start) { - nextOp = iter.next(start - index); - } else { - nextOp = iter.next(end - index); - ops.push(nextOp); - } - index += op.length(nextOp); - } - return new Delta(ops); -}; - - -Delta.prototype.compose = function (other) { - var thisIter = op.iterator(this.ops); - var otherIter = op.iterator(other.ops); - var delta = new Delta(); - while (thisIter.hasNext() || otherIter.hasNext()) { - if (otherIter.peekType() === 'insert') { - delta.push(otherIter.next()); - } else if (thisIter.peekType() === 'delete') { - delta.push(thisIter.next()); - } else { - var length = Math.min(thisIter.peekLength(), otherIter.peekLength()); - var thisOp = thisIter.next(length); - var otherOp = otherIter.next(length); - if (typeof otherOp.retain === 'number') { - var newOp = {}; - if (typeof thisOp.retain === 'number') { - newOp.retain = length; - } else { - newOp.insert = thisOp.insert; - } - // Preserve null when composing with a retain, otherwise remove it for inserts - var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number'); - if (attributes) newOp.attributes = attributes; - delta.push(newOp); - // Other op should be delete, we could be an insert or retain - // Insert + delete cancels out - } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') { - delta.push(otherOp); - } - } - } - return delta.chop(); -}; - -Delta.prototype.concat = function (other) { - var delta = new Delta(this.ops.slice()); - if (other.ops.length > 0) { - delta.push(other.ops[0]); - delta.ops = delta.ops.concat(other.ops.slice(1)); - } - return delta; -}; - -Delta.prototype.diff = function (other, index) { - if (this.ops === other.ops) { - return new Delta(); - } - var strings = [this, other].map(function (delta) { - return delta.map(function (op) { - if (op.insert != null) { - return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER; - } - var prep = (delta === other) ? 'on' : 'with'; - throw new Error('diff() called ' + prep + ' non-document'); - }).join(''); - }); - var delta = new Delta(); - var diffResult = diff(strings[0], strings[1], index); - var thisIter = op.iterator(this.ops); - var otherIter = op.iterator(other.ops); - diffResult.forEach(function (component) { - var length = component[1].length; - while (length > 0) { - var opLength = 0; - switch (component[0]) { - case diff.INSERT: - opLength = Math.min(otherIter.peekLength(), length); - delta.push(otherIter.next(opLength)); - break; - case diff.DELETE: - opLength = Math.min(length, thisIter.peekLength()); - thisIter.next(opLength); - delta['delete'](opLength); - break; - case diff.EQUAL: - opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length); - var thisOp = thisIter.next(opLength); - var otherOp = otherIter.next(opLength); - if (equal(thisOp.insert, otherOp.insert)) { - delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes)); - } else { - delta.push(otherOp)['delete'](opLength); - } - break; - } - length -= opLength; - } - }); - return delta.chop(); -}; - -Delta.prototype.eachLine = function (predicate, newline) { - newline = newline || '\n'; - var iter = op.iterator(this.ops); - var line = new Delta(); - var i = 0; - while (iter.hasNext()) { - if (iter.peekType() !== 'insert') return; - var thisOp = iter.peek(); - var start = op.length(thisOp) - iter.peekLength(); - var index = typeof thisOp.insert === 'string' ? - thisOp.insert.indexOf(newline, start) - start : -1; - if (index < 0) { - line.push(iter.next()); - } else if (index > 0) { - line.push(iter.next(index)); - } else { - if (predicate(line, iter.next(1).attributes || {}, i) === false) { - return; - } - i += 1; - line = new Delta(); - } - } - if (line.length() > 0) { - predicate(line, {}, i); - } -}; - -Delta.prototype.transform = function (other, priority) { - priority = !!priority; - if (typeof other === 'number') { - return this.transformPosition(other, priority); - } - var thisIter = op.iterator(this.ops); - var otherIter = op.iterator(other.ops); - var delta = new Delta(); - while (thisIter.hasNext() || otherIter.hasNext()) { - if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) { - delta.retain(op.length(thisIter.next())); - } else if (otherIter.peekType() === 'insert') { - delta.push(otherIter.next()); - } else { - var length = Math.min(thisIter.peekLength(), otherIter.peekLength()); - var thisOp = thisIter.next(length); - var otherOp = otherIter.next(length); - if (thisOp['delete']) { - // Our delete either makes their delete redundant or removes their retain - continue; - } else if (otherOp['delete']) { - delta.push(otherOp); - } else { - // We retain either their retain or insert - delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority)); - } - } - } - return delta.chop(); -}; - -Delta.prototype.transformPosition = function (index, priority) { - priority = !!priority; - var thisIter = op.iterator(this.ops); - var offset = 0; - while (thisIter.hasNext() && offset <= index) { - var length = thisIter.peekLength(); - var nextType = thisIter.peekType(); - thisIter.next(); - if (nextType === 'delete') { - index -= Math.min(length, index - offset); - continue; - } else if (nextType === 'insert' && (offset < index || !priority)) { - index += length; - } - offset += length; - } - return index; -}; - - -module.exports = Delta; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - -'use strict'; - -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; - -var isArray = function isArray(arr) { - if (typeof Array.isArray === 'function') { - return Array.isArray(arr); - } - - return toStr.call(arr) === '[object Array]'; -}; - -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) { /**/ } - - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; - -module.exports = function extend() { - var options, name, src, copy, copyIsArray, clone; - var target = arguments[0]; - var i = 1; - var length = arguments.length; - var deep = false; - - // Handle a deep copy situation - if (typeof target === 'boolean') { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { - target = {}; - } - - for (; i < length; ++i) { - options = arguments[i]; - // Only deal with non-null/undefined values - if (options != null) { - // Extend the base object - for (name in options) { - src = target[name]; - copy = options[name]; - - // Prevent never-ending loop - if (target !== copy) { - // Recurse if we're merging plain objects or arrays - if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && isArray(src) ? src : []; - } else { - clone = src && isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[name] = extend(deep, clone, copy); - - // Don't bring in undefined values - } else if (typeof copy !== 'undefined') { - target[name] = copy; - } - } - } - } - } - - // Return the modified object - return target; -}; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.BlockEmbed = exports.bubbleFormats = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _break = __webpack_require__(16); - -var _break2 = _interopRequireDefault(_break); - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var NEWLINE_LENGTH = 1; - -var BlockEmbed = function (_Parchment$Embed) { - _inherits(BlockEmbed, _Parchment$Embed); - - function BlockEmbed() { - _classCallCheck(this, BlockEmbed); - - return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments)); - } - - _createClass(BlockEmbed, [{ - key: 'attach', - value: function attach() { - _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this); - this.attributes = new _parchment2.default.Attributor.Store(this.domNode); - } - }, { - key: 'delta', - value: function delta() { - return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values())); - } - }, { - key: 'format', - value: function format(name, value) { - var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE); - if (attribute != null) { - this.attributes.attribute(attribute, value); - } - } - }, { - key: 'formatAt', - value: function formatAt(index, length, name, value) { - this.format(name, value); - } - }, { - key: 'insertAt', - value: function insertAt(index, value, def) { - if (typeof value === 'string' && value.endsWith('\n')) { - var block = _parchment2.default.create(Block.blotName); - this.parent.insertBefore(block, index === 0 ? this : this.next); - block.insertAt(0, value.slice(0, -1)); - } else { - _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def); - } - } - }]); - - return BlockEmbed; -}(_parchment2.default.Embed); - -BlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT; -// It is important for cursor behavior BlockEmbeds use tags that are block level elements - - -var Block = function (_Parchment$Block) { - _inherits(Block, _Parchment$Block); - - function Block(domNode) { - _classCallCheck(this, Block); - - var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode)); - - _this2.cache = {}; - return _this2; - } - - _createClass(Block, [{ - key: 'delta', - value: function delta() { - if (this.cache.delta == null) { - this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) { - if (leaf.length() === 0) { - return delta; - } else { - return delta.insert(leaf.value(), bubbleFormats(leaf)); - } - }, new _quillDelta2.default()).insert('\n', bubbleFormats(this)); - } - return this.cache.delta; - } - }, { - key: 'deleteAt', - value: function deleteAt(index, length) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length); - this.cache = {}; - } - }, { - key: 'formatAt', - value: function formatAt(index, length, name, value) { - if (length <= 0) return; - if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) { - if (index + length === this.length()) { - this.format(name, value); - } - } else { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value); - } - this.cache = {}; - } - }, { - key: 'insertAt', - value: function insertAt(index, value, def) { - if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def); - if (value.length === 0) return; - var lines = value.split('\n'); - var text = lines.shift(); - if (text.length > 0) { - if (index < this.length() - 1 || this.children.tail == null) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text); - } else { - this.children.tail.insertAt(this.children.tail.length(), text); - } - this.cache = {}; - } - var block = this; - lines.reduce(function (index, line) { - block = block.split(index, true); - block.insertAt(0, line); - return line.length; - }, index + text.length); - } - }, { - key: 'insertBefore', - value: function insertBefore(blot, ref) { - var head = this.children.head; - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref); - if (head instanceof _break2.default) { - head.remove(); - } - this.cache = {}; - } - }, { - key: 'length', - value: function length() { - if (this.cache.length == null) { - this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH; - } - return this.cache.length; - } - }, { - key: 'moveChildren', - value: function moveChildren(target, ref) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref); - this.cache = {}; - } - }, { - key: 'optimize', - value: function optimize(context) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context); - this.cache = {}; - } - }, { - key: 'path', - value: function path(index) { - return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true); - } - }, { - key: 'removeChild', - value: function removeChild(child) { - _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child); - this.cache = {}; - } - }, { - key: 'split', - value: function split(index) { - var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) { - var clone = this.clone(); - if (index === 0) { - this.parent.insertBefore(clone, this); - return this; - } else { - this.parent.insertBefore(clone, this.next); - return clone; - } - } else { - var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force); - this.cache = {}; - return next; - } - } - }]); - - return Block; -}(_parchment2.default.Block); - -Block.blotName = 'block'; -Block.tagName = 'P'; -Block.defaultChild = 'break'; -Block.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default]; - -function bubbleFormats(blot) { - var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (blot == null) return formats; - if (typeof blot.formats === 'function') { - formats = (0, _extend2.default)(formats, blot.formats()); - } - if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) { - return formats; - } - return bubbleFormats(blot.parent, formats); -} - -exports.bubbleFormats = bubbleFormats; -exports.BlockEmbed = BlockEmbed; -exports.default = Block; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.overload = exports.expandConfig = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -__webpack_require__(50); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _editor = __webpack_require__(14); - -var _editor2 = _interopRequireDefault(_editor); - -var _emitter3 = __webpack_require__(8); - -var _emitter4 = _interopRequireDefault(_emitter3); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _selection = __webpack_require__(15); - -var _selection2 = _interopRequireDefault(_selection); - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -var _theme = __webpack_require__(34); - -var _theme2 = _interopRequireDefault(_theme); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var debug = (0, _logger2.default)('quill'); - -var Quill = function () { - _createClass(Quill, null, [{ - key: 'debug', - value: function debug(limit) { - if (limit === true) { - limit = 'log'; - } - _logger2.default.level(limit); - } - }, { - key: 'find', - value: function find(node) { - return node.__quill || _parchment2.default.find(node); - } - }, { - key: 'import', - value: function _import(name) { - if (this.imports[name] == null) { - debug.error('Cannot import ' + name + '. Are you sure it was registered?'); - } - return this.imports[name]; - } - }, { - key: 'register', - value: function register(path, target) { - var _this = this; - - var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (typeof path !== 'string') { - var name = path.attrName || path.blotName; - if (typeof name === 'string') { - // register(Blot | Attributor, overwrite) - this.register('formats/' + name, path, target); - } else { - Object.keys(path).forEach(function (key) { - _this.register(key, path[key], target); - }); - } - } else { - if (this.imports[path] != null && !overwrite) { - debug.warn('Overwriting ' + path + ' with', target); - } - this.imports[path] = target; - if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') { - _parchment2.default.register(target); - } else if (path.startsWith('modules') && typeof target.register === 'function') { - target.register(); - } - } - } - }]); - - function Quill(container) { - var _this2 = this; - - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - _classCallCheck(this, Quill); - - this.options = expandConfig(container, options); - this.container = this.options.container; - if (this.container == null) { - return debug.error('Invalid Quill container', container); - } - if (this.options.debug) { - Quill.debug(this.options.debug); - } - var html = this.container.innerHTML.trim(); - this.container.classList.add('ql-container'); - this.container.innerHTML = ''; - this.container.__quill = this; - this.root = this.addContainer('ql-editor'); - this.root.classList.add('ql-blank'); - this.root.setAttribute('data-gramm', false); - this.scrollingContainer = this.options.scrollingContainer || this.root; - this.emitter = new _emitter4.default(); - this.scroll = _parchment2.default.create(this.root, { - emitter: this.emitter, - whitelist: this.options.formats - }); - this.editor = new _editor2.default(this.scroll); - this.selection = new _selection2.default(this.scroll, this.emitter); - this.theme = new this.options.theme(this, this.options); - this.keyboard = this.theme.addModule('keyboard'); - this.clipboard = this.theme.addModule('clipboard'); - this.history = this.theme.addModule('history'); - this.theme.init(); - this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) { - if (type === _emitter4.default.events.TEXT_CHANGE) { - _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank()); - } - }); - this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) { - var range = _this2.selection.lastRange; - var index = range && range.length === 0 ? range.index : undefined; - modify.call(_this2, function () { - return _this2.editor.update(null, mutations, index); - }, source); - }); - var contents = this.clipboard.convert('
' + html + '


'); - this.setContents(contents); - this.history.clear(); - if (this.options.placeholder) { - this.root.setAttribute('data-placeholder', this.options.placeholder); - } - if (this.options.readOnly) { - this.disable(); - } - } - - _createClass(Quill, [{ - key: 'addContainer', - value: function addContainer(container) { - var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - if (typeof container === 'string') { - var className = container; - container = document.createElement('div'); - container.classList.add(className); - } - this.container.insertBefore(container, refNode); - return container; - } - }, { - key: 'blur', - value: function blur() { - this.selection.setRange(null); - } - }, { - key: 'deleteText', - value: function deleteText(index, length, source) { - var _this3 = this; - - var _overload = overload(index, length, source); - - var _overload2 = _slicedToArray(_overload, 4); - - index = _overload2[0]; - length = _overload2[1]; - source = _overload2[3]; - - return modify.call(this, function () { - return _this3.editor.deleteText(index, length); - }, source, index, -1 * length); - } - }, { - key: 'disable', - value: function disable() { - this.enable(false); - } - }, { - key: 'enable', - value: function enable() { - var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - - this.scroll.enable(enabled); - this.container.classList.toggle('ql-disabled', !enabled); - } - }, { - key: 'focus', - value: function focus() { - var scrollTop = this.scrollingContainer.scrollTop; - this.selection.focus(); - this.scrollingContainer.scrollTop = scrollTop; - this.scrollIntoView(); - } - }, { - key: 'format', - value: function format(name, value) { - var _this4 = this; - - var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API; - - return modify.call(this, function () { - var range = _this4.getSelection(true); - var change = new _quillDelta2.default(); - if (range == null) { - return change; - } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) { - change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value)); - } else if (range.length === 0) { - _this4.selection.format(name, value); - return change; - } else { - change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value)); - } - _this4.setSelection(range, _emitter4.default.sources.SILENT); - return change; - }, source); - } - }, { - key: 'formatLine', - value: function formatLine(index, length, name, value, source) { - var _this5 = this; - - var formats = void 0; - - var _overload3 = overload(index, length, name, value, source); - - var _overload4 = _slicedToArray(_overload3, 4); - - index = _overload4[0]; - length = _overload4[1]; - formats = _overload4[2]; - source = _overload4[3]; - - return modify.call(this, function () { - return _this5.editor.formatLine(index, length, formats); - }, source, index, 0); - } - }, { - key: 'formatText', - value: function formatText(index, length, name, value, source) { - var _this6 = this; - - var formats = void 0; - - var _overload5 = overload(index, length, name, value, source); - - var _overload6 = _slicedToArray(_overload5, 4); - - index = _overload6[0]; - length = _overload6[1]; - formats = _overload6[2]; - source = _overload6[3]; - - return modify.call(this, function () { - return _this6.editor.formatText(index, length, formats); - }, source, index, 0); - } - }, { - key: 'getBounds', - value: function getBounds(index) { - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - var bounds = void 0; - if (typeof index === 'number') { - bounds = this.selection.getBounds(index, length); - } else { - bounds = this.selection.getBounds(index.index, index.length); - } - var containerBounds = this.container.getBoundingClientRect(); - return { - bottom: bounds.bottom - containerBounds.top, - height: bounds.height, - left: bounds.left - containerBounds.left, - right: bounds.right - containerBounds.left, - top: bounds.top - containerBounds.top, - width: bounds.width - }; - } - }, { - key: 'getContents', - value: function getContents() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index; - - var _overload7 = overload(index, length); - - var _overload8 = _slicedToArray(_overload7, 2); - - index = _overload8[0]; - length = _overload8[1]; - - return this.editor.getContents(index, length); - } - }, { - key: 'getFormat', - value: function getFormat() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true); - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - if (typeof index === 'number') { - return this.editor.getFormat(index, length); - } else { - return this.editor.getFormat(index.index, index.length); - } - } - }, { - key: 'getIndex', - value: function getIndex(blot) { - return blot.offset(this.scroll); - } - }, { - key: 'getLength', - value: function getLength() { - return this.scroll.length(); - } - }, { - key: 'getLeaf', - value: function getLeaf(index) { - return this.scroll.leaf(index); - } - }, { - key: 'getLine', - value: function getLine(index) { - return this.scroll.line(index); - } - }, { - key: 'getLines', - value: function getLines() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE; - - if (typeof index !== 'number') { - return this.scroll.lines(index.index, index.length); - } else { - return this.scroll.lines(index, length); - } - } - }, { - key: 'getModule', - value: function getModule(name) { - return this.theme.modules[name]; - } - }, { - key: 'getSelection', - value: function getSelection() { - var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - if (focus) this.focus(); - this.update(); // Make sure we access getRange with editor in consistent state - return this.selection.getRange()[0]; - } - }, { - key: 'getText', - value: function getText() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index; - - var _overload9 = overload(index, length); - - var _overload10 = _slicedToArray(_overload9, 2); - - index = _overload10[0]; - length = _overload10[1]; - - return this.editor.getText(index, length); - } - }, { - key: 'hasFocus', - value: function hasFocus() { - return this.selection.hasFocus(); - } - }, { - key: 'insertEmbed', - value: function insertEmbed(index, embed, value) { - var _this7 = this; - - var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API; - - return modify.call(this, function () { - return _this7.editor.insertEmbed(index, embed, value); - }, source, index); - } - }, { - key: 'insertText', - value: function insertText(index, text, name, value, source) { - var _this8 = this; - - var formats = void 0; - - var _overload11 = overload(index, 0, name, value, source); - - var _overload12 = _slicedToArray(_overload11, 4); - - index = _overload12[0]; - formats = _overload12[2]; - source = _overload12[3]; - - return modify.call(this, function () { - return _this8.editor.insertText(index, text, formats); - }, source, index, text.length); - } - }, { - key: 'isEnabled', - value: function isEnabled() { - return !this.container.classList.contains('ql-disabled'); - } - }, { - key: 'off', - value: function off() { - return this.emitter.off.apply(this.emitter, arguments); - } - }, { - key: 'on', - value: function on() { - return this.emitter.on.apply(this.emitter, arguments); - } - }, { - key: 'once', - value: function once() { - return this.emitter.once.apply(this.emitter, arguments); - } - }, { - key: 'pasteHTML', - value: function pasteHTML(index, html, source) { - this.clipboard.dangerouslyPasteHTML(index, html, source); - } - }, { - key: 'removeFormat', - value: function removeFormat(index, length, source) { - var _this9 = this; - - var _overload13 = overload(index, length, source); - - var _overload14 = _slicedToArray(_overload13, 4); - - index = _overload14[0]; - length = _overload14[1]; - source = _overload14[3]; - - return modify.call(this, function () { - return _this9.editor.removeFormat(index, length); - }, source, index); - } - }, { - key: 'scrollIntoView', - value: function scrollIntoView() { - this.selection.scrollIntoView(this.scrollingContainer); - } - }, { - key: 'setContents', - value: function setContents(delta) { - var _this10 = this; - - var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API; - - return modify.call(this, function () { - delta = new _quillDelta2.default(delta); - var length = _this10.getLength(); - var deleted = _this10.editor.deleteText(0, length); - var applied = _this10.editor.applyDelta(delta); - var lastOp = applied.ops[applied.ops.length - 1]; - if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\n') { - _this10.editor.deleteText(_this10.getLength() - 1, 1); - applied.delete(1); - } - var ret = deleted.compose(applied); - return ret; - }, source); - } - }, { - key: 'setSelection', - value: function setSelection(index, length, source) { - if (index == null) { - this.selection.setRange(null, length || Quill.sources.API); - } else { - var _overload15 = overload(index, length, source); - - var _overload16 = _slicedToArray(_overload15, 4); - - index = _overload16[0]; - length = _overload16[1]; - source = _overload16[3]; - - this.selection.setRange(new _selection.Range(index, length), source); - if (source !== _emitter4.default.sources.SILENT) { - this.selection.scrollIntoView(this.scrollingContainer); - } - } - } - }, { - key: 'setText', - value: function setText(text) { - var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API; - - var delta = new _quillDelta2.default().insert(text); - return this.setContents(delta, source); - } - }, { - key: 'update', - value: function update() { - var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER; - - var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes - this.selection.update(source); - return change; - } - }, { - key: 'updateContents', - value: function updateContents(delta) { - var _this11 = this; - - var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API; - - return modify.call(this, function () { - delta = new _quillDelta2.default(delta); - return _this11.editor.applyDelta(delta, source); - }, source, true); - } - }]); - - return Quill; -}(); - -Quill.DEFAULTS = { - bounds: null, - formats: null, - modules: {}, - placeholder: '', - readOnly: false, - scrollingContainer: null, - strict: true, - theme: 'default' -}; -Quill.events = _emitter4.default.events; -Quill.sources = _emitter4.default.sources; -// eslint-disable-next-line no-undef -Quill.version = false ? 'dev' : "1.3.6"; - -Quill.imports = { - 'delta': _quillDelta2.default, - 'parchment': _parchment2.default, - 'core/module': _module2.default, - 'core/theme': _theme2.default -}; - -function expandConfig(container, userConfig) { - userConfig = (0, _extend2.default)(true, { - container: container, - modules: { - clipboard: true, - keyboard: true, - history: true - } - }, userConfig); - if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) { - userConfig.theme = _theme2.default; - } else { - userConfig.theme = Quill.import('themes/' + userConfig.theme); - if (userConfig.theme == null) { - throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?'); - } - } - var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS); - [themeConfig, userConfig].forEach(function (config) { - config.modules = config.modules || {}; - Object.keys(config.modules).forEach(function (module) { - if (config.modules[module] === true) { - config.modules[module] = {}; - } - }); - }); - var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules)); - var moduleConfig = moduleNames.reduce(function (config, name) { - var moduleClass = Quill.import('modules/' + name); - if (moduleClass == null) { - debug.error('Cannot load ' + name + ' module. Are you sure you registered it?'); - } else { - config[name] = moduleClass.DEFAULTS || {}; - } - return config; - }, {}); - // Special case toolbar shorthand - if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) { - userConfig.modules.toolbar = { - container: userConfig.modules.toolbar - }; - } - userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig); - ['bounds', 'container', 'scrollingContainer'].forEach(function (key) { - if (typeof userConfig[key] === 'string') { - userConfig[key] = document.querySelector(userConfig[key]); - } - }); - userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) { - if (userConfig.modules[name]) { - config[name] = userConfig.modules[name]; - } - return config; - }, {}); - return userConfig; -} - -// Handle selection preservation and TEXT_CHANGE emission -// common to modification APIs -function modify(modifier, source, index, shift) { - if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) { - return new _quillDelta2.default(); - } - var range = index == null ? null : this.getSelection(); - var oldDelta = this.editor.delta; - var change = modifier(); - if (range != null) { - if (index === true) index = range.index; - if (shift == null) { - range = shiftRange(range, change, source); - } else if (shift !== 0) { - range = shiftRange(range, index, shift, source); - } - this.setSelection(range, _emitter4.default.sources.SILENT); - } - if (change.length() > 0) { - var _emitter; - - var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source]; - (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args)); - if (source !== _emitter4.default.sources.SILENT) { - var _emitter2; - - (_emitter2 = this.emitter).emit.apply(_emitter2, args); - } - } - return change; -} - -function overload(index, length, name, value, source) { - var formats = {}; - if (typeof index.index === 'number' && typeof index.length === 'number') { - // Allow for throwaway end (used by insertText/insertEmbed) - if (typeof length !== 'number') { - source = value, value = name, name = length, length = index.length, index = index.index; - } else { - length = index.length, index = index.index; - } - } else if (typeof length !== 'number') { - source = value, value = name, name = length, length = 0; - } - // Handle format being object, two format name/value strings or excluded - if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') { - formats = name; - source = value; - } else if (typeof name === 'string') { - if (value != null) { - formats[name] = value; - } else { - source = name; - } - } - // Handle optional source - source = source || _emitter4.default.sources.API; - return [index, length, formats, source]; -} - -function shiftRange(range, index, length, source) { - if (range == null) return null; - var start = void 0, - end = void 0; - if (index instanceof _quillDelta2.default) { - var _map = [range.index, range.index + range.length].map(function (pos) { - return index.transformPosition(pos, source !== _emitter4.default.sources.USER); - }); - - var _map2 = _slicedToArray(_map, 2); - - start = _map2[0]; - end = _map2[1]; - } else { - var _map3 = [range.index, range.index + range.length].map(function (pos) { - if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos; - if (length >= 0) { - return pos + length; - } else { - return Math.max(index, pos + length); - } - }); - - var _map4 = _slicedToArray(_map3, 2); - - start = _map4[0]; - end = _map4[1]; - } - return new _selection.Range(start, end - start); -} - -exports.expandConfig = expandConfig; -exports.overload = overload; -exports.default = Quill; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Inline = function (_Parchment$Inline) { - _inherits(Inline, _Parchment$Inline); - - function Inline() { - _classCallCheck(this, Inline); - - return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments)); - } - - _createClass(Inline, [{ - key: 'formatAt', - value: function formatAt(index, length, name, value) { - if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) { - var blot = this.isolate(index, length); - if (value) { - blot.wrap(name, value); - } - } else { - _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value); - } - } - }, { - key: 'optimize', - value: function optimize(context) { - _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context); - if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) { - var parent = this.parent.isolate(this.offset(), this.length()); - this.moveChildren(parent); - parent.wrap(this); - } - } - }], [{ - key: 'compare', - value: function compare(self, other) { - var selfIndex = Inline.order.indexOf(self); - var otherIndex = Inline.order.indexOf(other); - if (selfIndex >= 0 || otherIndex >= 0) { - return selfIndex - otherIndex; - } else if (self === other) { - return 0; - } else if (self < other) { - return -1; - } else { - return 1; - } - } - }]); - - return Inline; -}(_parchment2.default.Inline); - -Inline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default]; -// Lower index means deeper in the DOM tree, since not found (-1) is for embeds -Inline.order = ['cursor', 'inline', // Must be lower -'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher -]; - -exports.default = Inline; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var TextBlot = function (_Parchment$Text) { - _inherits(TextBlot, _Parchment$Text); - - function TextBlot() { - _classCallCheck(this, TextBlot); - - return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments)); - } - - return TextBlot; -}(_parchment2.default.Text); - -exports.default = TextBlot; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _eventemitter = __webpack_require__(54); - -var _eventemitter2 = _interopRequireDefault(_eventemitter); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var debug = (0, _logger2.default)('quill:events'); - -var EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click']; - -EVENTS.forEach(function (eventName) { - document.addEventListener(eventName, function () { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) { - // TODO use WeakMap - if (node.__quill && node.__quill.emitter) { - var _node$__quill$emitter; - - (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args); - } - }); - }); -}); - -var Emitter = function (_EventEmitter) { - _inherits(Emitter, _EventEmitter); - - function Emitter() { - _classCallCheck(this, Emitter); - - var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this)); - - _this.listeners = {}; - _this.on('error', debug.error); - return _this; - } - - _createClass(Emitter, [{ - key: 'emit', - value: function emit() { - debug.log.apply(debug, arguments); - _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments); - } - }, { - key: 'handleDOM', - value: function handleDOM(event) { - for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - args[_key2 - 1] = arguments[_key2]; - } - - (this.listeners[event.type] || []).forEach(function (_ref) { - var node = _ref.node, - handler = _ref.handler; - - if (event.target === node || node.contains(event.target)) { - handler.apply(undefined, [event].concat(args)); - } - }); - } - }, { - key: 'listenDOM', - value: function listenDOM(eventName, node, handler) { - if (!this.listeners[eventName]) { - this.listeners[eventName] = []; - } - this.listeners[eventName].push({ node: node, handler: handler }); - } - }]); - - return Emitter; -}(_eventemitter2.default); - -Emitter.events = { - EDITOR_CHANGE: 'editor-change', - SCROLL_BEFORE_UPDATE: 'scroll-before-update', - SCROLL_OPTIMIZE: 'scroll-optimize', - SCROLL_UPDATE: 'scroll-update', - SELECTION_CHANGE: 'selection-change', - TEXT_CHANGE: 'text-change' -}; -Emitter.sources = { - API: 'api', - SILENT: 'silent', - USER: 'user' -}; - -exports.default = Emitter; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Module = function Module(quill) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - _classCallCheck(this, Module); - - this.quill = quill; - this.options = options; -}; - -Module.DEFAULTS = {}; - -exports.default = Module; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var levels = ['error', 'warn', 'log', 'info']; -var level = 'warn'; - -function debug(method) { - if (levels.indexOf(method) <= levels.indexOf(level)) { - var _console; - - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - (_console = console)[method].apply(_console, args); // eslint-disable-line no-console - } -} - -function namespace(ns) { - return levels.reduce(function (logger, method) { - logger[method] = debug.bind(console, method, ns); - return logger; - }, {}); -} - -debug.level = namespace.level = function (newLevel) { - level = newLevel; -}; - -exports.default = namespace; - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -var pSlice = Array.prototype.slice; -var objectKeys = __webpack_require__(52); -var isArguments = __webpack_require__(53); - -var deepEqual = module.exports = function (actual, expected, opts) { - if (!opts) opts = {}; - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') { - return opts.strict ? actual === expected : actual == expected; - - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected, opts); - } -} - -function isUndefinedOrNull(value) { - return value === null || value === undefined; -} - -function isBuffer (x) { - if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false; - if (typeof x.copy !== 'function' || typeof x.slice !== 'function') { - return false; - } - if (x.length > 0 && typeof x[0] !== 'number') return false; - return true; -} - -function objEquiv(a, b, opts) { - var i, key; - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical 'prototype' property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return deepEqual(a, b, opts); - } - if (isBuffer(a)) { - if (!isBuffer(b)) { - return false; - } - if (a.length !== b.length) return false; - for (i = 0; i < a.length; i++) { - if (a[i] !== b[i]) return false; - } - return true; - } - try { - var ka = objectKeys(a), - kb = objectKeys(b); - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!deepEqual(a[key], b[key], opts)) return false; - } - return typeof a === typeof b; -} - - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var Registry = __webpack_require__(1); -var Attributor = /** @class */ (function () { - function Attributor(attrName, keyName, options) { - if (options === void 0) { options = {}; } - this.attrName = attrName; - this.keyName = keyName; - var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE; - if (options.scope != null) { - // Ignore type bits, force attribute bit - this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit; - } - else { - this.scope = Registry.Scope.ATTRIBUTE; - } - if (options.whitelist != null) - this.whitelist = options.whitelist; - } - Attributor.keys = function (node) { - return [].map.call(node.attributes, function (item) { - return item.name; - }); - }; - Attributor.prototype.add = function (node, value) { - if (!this.canAdd(node, value)) - return false; - node.setAttribute(this.keyName, value); - return true; - }; - Attributor.prototype.canAdd = function (node, value) { - var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE)); - if (match == null) - return false; - if (this.whitelist == null) - return true; - if (typeof value === 'string') { - return this.whitelist.indexOf(value.replace(/["']/g, '')) > -1; - } - else { - return this.whitelist.indexOf(value) > -1; - } - }; - Attributor.prototype.remove = function (node) { - node.removeAttribute(this.keyName); - }; - Attributor.prototype.value = function (node) { - var value = node.getAttribute(this.keyName); - if (this.canAdd(node, value) && value) { - return value; - } - return ''; - }; - return Attributor; -}()); -exports.default = Attributor; - - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.Code = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Code = function (_Inline) { - _inherits(Code, _Inline); - - function Code() { - _classCallCheck(this, Code); - - return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments)); - } - - return Code; -}(_inline2.default); - -Code.blotName = 'code'; -Code.tagName = 'CODE'; - -var CodeBlock = function (_Block) { - _inherits(CodeBlock, _Block); - - function CodeBlock() { - _classCallCheck(this, CodeBlock); - - return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments)); - } - - _createClass(CodeBlock, [{ - key: 'delta', - value: function delta() { - var _this3 = this; - - var text = this.domNode.textContent; - if (text.endsWith('\n')) { - // Should always be true - text = text.slice(0, -1); - } - return text.split('\n').reduce(function (delta, frag) { - return delta.insert(frag).insert('\n', _this3.formats()); - }, new _quillDelta2.default()); - } - }, { - key: 'format', - value: function format(name, value) { - if (name === this.statics.blotName && value) return; - - var _descendant = this.descendant(_text2.default, this.length() - 1), - _descendant2 = _slicedToArray(_descendant, 1), - text = _descendant2[0]; - - if (text != null) { - text.deleteAt(text.length() - 1, 1); - } - _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value); - } - }, { - key: 'formatAt', - value: function formatAt(index, length, name, value) { - if (length === 0) return; - if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) { - return; - } - var nextNewline = this.newlineIndex(index); - if (nextNewline < 0 || nextNewline >= index + length) return; - var prevNewline = this.newlineIndex(index, true) + 1; - var isolateLength = nextNewline - prevNewline + 1; - var blot = this.isolate(prevNewline, isolateLength); - var next = blot.next; - blot.format(name, value); - if (next instanceof CodeBlock) { - next.formatAt(0, index - prevNewline + length - isolateLength, name, value); - } - } - }, { - key: 'insertAt', - value: function insertAt(index, value, def) { - if (def != null) return; - - var _descendant3 = this.descendant(_text2.default, index), - _descendant4 = _slicedToArray(_descendant3, 2), - text = _descendant4[0], - offset = _descendant4[1]; - - text.insertAt(offset, value); - } - }, { - key: 'length', - value: function length() { - var length = this.domNode.textContent.length; - if (!this.domNode.textContent.endsWith('\n')) { - return length + 1; - } - return length; - } - }, { - key: 'newlineIndex', - value: function newlineIndex(searchIndex) { - var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (!reverse) { - var offset = this.domNode.textContent.slice(searchIndex).indexOf('\n'); - return offset > -1 ? searchIndex + offset : -1; - } else { - return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\n'); - } - } - }, { - key: 'optimize', - value: function optimize(context) { - if (!this.domNode.textContent.endsWith('\n')) { - this.appendChild(_parchment2.default.create('text', '\n')); - } - _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context); - var next = this.next; - if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) { - next.optimize(context); - next.moveChildren(this); - next.remove(); - } - } - }, { - key: 'replace', - value: function replace(target) { - _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target); - [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) { - var blot = _parchment2.default.find(node); - if (blot == null) { - node.parentNode.removeChild(node); - } else if (blot instanceof _parchment2.default.Embed) { - blot.remove(); - } else { - blot.unwrap(); - } - }); - } - }], [{ - key: 'create', - value: function create(value) { - var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value); - domNode.setAttribute('spellcheck', false); - return domNode; - } - }, { - key: 'formats', - value: function formats() { - return true; - } - }]); - - return CodeBlock; -}(_block2.default); - -CodeBlock.blotName = 'code-block'; -CodeBlock.tagName = 'PRE'; -CodeBlock.TAB = ' '; - -exports.Code = Code; -exports.default = CodeBlock; - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _op = __webpack_require__(20); - -var _op2 = _interopRequireDefault(_op); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _code = __webpack_require__(13); - -var _code2 = _interopRequireDefault(_code); - -var _cursor = __webpack_require__(24); - -var _cursor2 = _interopRequireDefault(_cursor); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -var _break = __webpack_require__(16); - -var _break2 = _interopRequireDefault(_break); - -var _clone = __webpack_require__(21); - -var _clone2 = _interopRequireDefault(_clone); - -var _deepEqual = __webpack_require__(11); - -var _deepEqual2 = _interopRequireDefault(_deepEqual); - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var ASCII = /^[ -~]*$/; - -var Editor = function () { - function Editor(scroll) { - _classCallCheck(this, Editor); - - this.scroll = scroll; - this.delta = this.getDelta(); - } - - _createClass(Editor, [{ - key: 'applyDelta', - value: function applyDelta(delta) { - var _this = this; - - var consumeNextNewline = false; - this.scroll.update(); - var scrollLength = this.scroll.length(); - this.scroll.batchStart(); - delta = normalizeDelta(delta); - delta.reduce(function (index, op) { - var length = op.retain || op.delete || op.insert.length || 1; - var attributes = op.attributes || {}; - if (op.insert != null) { - if (typeof op.insert === 'string') { - var text = op.insert; - if (text.endsWith('\n') && consumeNextNewline) { - consumeNextNewline = false; - text = text.slice(0, -1); - } - if (index >= scrollLength && !text.endsWith('\n')) { - consumeNextNewline = true; - } - _this.scroll.insertAt(index, text); - - var _scroll$line = _this.scroll.line(index), - _scroll$line2 = _slicedToArray(_scroll$line, 2), - line = _scroll$line2[0], - offset = _scroll$line2[1]; - - var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line)); - if (line instanceof _block2.default) { - var _line$descendant = line.descendant(_parchment2.default.Leaf, offset), - _line$descendant2 = _slicedToArray(_line$descendant, 1), - leaf = _line$descendant2[0]; - - formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf)); - } - attributes = _op2.default.attributes.diff(formats, attributes) || {}; - } else if (_typeof(op.insert) === 'object') { - var key = Object.keys(op.insert)[0]; // There should only be one key - if (key == null) return index; - _this.scroll.insertAt(index, key, op.insert[key]); - } - scrollLength += length; - } - Object.keys(attributes).forEach(function (name) { - _this.scroll.formatAt(index, length, name, attributes[name]); - }); - return index + length; - }, 0); - delta.reduce(function (index, op) { - if (typeof op.delete === 'number') { - _this.scroll.deleteAt(index, op.delete); - return index; - } - return index + (op.retain || op.insert.length || 1); - }, 0); - this.scroll.batchEnd(); - return this.update(delta); - } - }, { - key: 'deleteText', - value: function deleteText(index, length) { - this.scroll.deleteAt(index, length); - return this.update(new _quillDelta2.default().retain(index).delete(length)); - } - }, { - key: 'formatLine', - value: function formatLine(index, length) { - var _this2 = this; - - var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - this.scroll.update(); - Object.keys(formats).forEach(function (format) { - if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return; - var lines = _this2.scroll.lines(index, Math.max(length, 1)); - var lengthRemaining = length; - lines.forEach(function (line) { - var lineLength = line.length(); - if (!(line instanceof _code2.default)) { - line.format(format, formats[format]); - } else { - var codeIndex = index - line.offset(_this2.scroll); - var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1; - line.formatAt(codeIndex, codeLength, format, formats[format]); - } - lengthRemaining -= lineLength; - }); - }); - this.scroll.optimize(); - return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats))); - } - }, { - key: 'formatText', - value: function formatText(index, length) { - var _this3 = this; - - var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - Object.keys(formats).forEach(function (format) { - _this3.scroll.formatAt(index, length, format, formats[format]); - }); - return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats))); - } - }, { - key: 'getContents', - value: function getContents(index, length) { - return this.delta.slice(index, index + length); - } - }, { - key: 'getDelta', - value: function getDelta() { - return this.scroll.lines().reduce(function (delta, line) { - return delta.concat(line.delta()); - }, new _quillDelta2.default()); - } - }, { - key: 'getFormat', - value: function getFormat(index) { - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - var lines = [], - leaves = []; - if (length === 0) { - this.scroll.path(index).forEach(function (path) { - var _path = _slicedToArray(path, 1), - blot = _path[0]; - - if (blot instanceof _block2.default) { - lines.push(blot); - } else if (blot instanceof _parchment2.default.Leaf) { - leaves.push(blot); - } - }); - } else { - lines = this.scroll.lines(index, length); - leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length); - } - var formatsArr = [lines, leaves].map(function (blots) { - if (blots.length === 0) return {}; - var formats = (0, _block.bubbleFormats)(blots.shift()); - while (Object.keys(formats).length > 0) { - var blot = blots.shift(); - if (blot == null) return formats; - formats = combineFormats((0, _block.bubbleFormats)(blot), formats); - } - return formats; - }); - return _extend2.default.apply(_extend2.default, formatsArr); - } - }, { - key: 'getText', - value: function getText(index, length) { - return this.getContents(index, length).filter(function (op) { - return typeof op.insert === 'string'; - }).map(function (op) { - return op.insert; - }).join(''); - } - }, { - key: 'insertEmbed', - value: function insertEmbed(index, embed, value) { - this.scroll.insertAt(index, embed, value); - return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value))); - } - }, { - key: 'insertText', - value: function insertText(index, text) { - var _this4 = this; - - var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - text = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n'); - this.scroll.insertAt(index, text); - Object.keys(formats).forEach(function (format) { - _this4.scroll.formatAt(index, text.length, format, formats[format]); - }); - return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats))); - } - }, { - key: 'isBlank', - value: function isBlank() { - if (this.scroll.children.length == 0) return true; - if (this.scroll.children.length > 1) return false; - var block = this.scroll.children.head; - if (block.statics.blotName !== _block2.default.blotName) return false; - if (block.children.length > 1) return false; - return block.children.head instanceof _break2.default; - } - }, { - key: 'removeFormat', - value: function removeFormat(index, length) { - var text = this.getText(index, length); - - var _scroll$line3 = this.scroll.line(index + length), - _scroll$line4 = _slicedToArray(_scroll$line3, 2), - line = _scroll$line4[0], - offset = _scroll$line4[1]; - - var suffixLength = 0, - suffix = new _quillDelta2.default(); - if (line != null) { - if (!(line instanceof _code2.default)) { - suffixLength = line.length() - offset; - } else { - suffixLength = line.newlineIndex(offset) - offset + 1; - } - suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\n'); - } - var contents = this.getContents(index, length + suffixLength); - var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix)); - var delta = new _quillDelta2.default().retain(index).concat(diff); - return this.applyDelta(delta); - } - }, { - key: 'update', - value: function update(change) { - var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; - var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; - - var oldDelta = this.delta; - if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) { - // Optimization for character changes - var textBlot = _parchment2.default.find(mutations[0].target); - var formats = (0, _block.bubbleFormats)(textBlot); - var index = textBlot.offset(this.scroll); - var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, ''); - var oldText = new _quillDelta2.default().insert(oldValue); - var newText = new _quillDelta2.default().insert(textBlot.value()); - var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex)); - change = diffDelta.reduce(function (delta, op) { - if (op.insert) { - return delta.insert(op.insert, formats); - } else { - return delta.push(op); - } - }, new _quillDelta2.default()); - this.delta = oldDelta.compose(change); - } else { - this.delta = this.getDelta(); - if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) { - change = oldDelta.diff(this.delta, cursorIndex); - } - } - return change; - } - }]); - - return Editor; -}(); - -function combineFormats(formats, combined) { - return Object.keys(combined).reduce(function (merged, name) { - if (formats[name] == null) return merged; - if (combined[name] === formats[name]) { - merged[name] = combined[name]; - } else if (Array.isArray(combined[name])) { - if (combined[name].indexOf(formats[name]) < 0) { - merged[name] = combined[name].concat([formats[name]]); - } - } else { - merged[name] = [combined[name], formats[name]]; - } - return merged; - }, {}); -} - -function normalizeDelta(delta) { - return delta.reduce(function (delta, op) { - if (op.insert === 1) { - var attributes = (0, _clone2.default)(op.attributes); - delete attributes['image']; - return delta.insert({ image: op.attributes.image }, attributes); - } - if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) { - op = (0, _clone2.default)(op); - if (op.attributes.list) { - op.attributes.list = 'ordered'; - } else { - op.attributes.list = 'bullet'; - delete op.attributes.bullet; - } - } - if (typeof op.insert === 'string') { - var text = op.insert.replace(/\r\n/g, '\n').replace(/\r/g, '\n'); - return delta.insert(text, op.attributes); - } - return delta.push(op); - }, new _quillDelta2.default()); -} - -exports.default = Editor; - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.Range = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _clone = __webpack_require__(21); - -var _clone2 = _interopRequireDefault(_clone); - -var _deepEqual = __webpack_require__(11); - -var _deepEqual2 = _interopRequireDefault(_deepEqual); - -var _emitter3 = __webpack_require__(8); - -var _emitter4 = _interopRequireDefault(_emitter3); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var debug = (0, _logger2.default)('quill:selection'); - -var Range = function Range(index) { - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - _classCallCheck(this, Range); - - this.index = index; - this.length = length; -}; - -var Selection = function () { - function Selection(scroll, emitter) { - var _this = this; - - _classCallCheck(this, Selection); - - this.emitter = emitter; - this.scroll = scroll; - this.composing = false; - this.mouseDown = false; - this.root = this.scroll.domNode; - this.cursor = _parchment2.default.create('cursor', this); - // savedRange is last non-null range - this.lastRange = this.savedRange = new Range(0, 0); - this.handleComposition(); - this.handleDragging(); - this.emitter.listenDOM('selectionchange', document, function () { - if (!_this.mouseDown) { - setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1); - } - }); - this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) { - if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) { - _this.update(_emitter4.default.sources.SILENT); - } - }); - this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () { - if (!_this.hasFocus()) return; - var native = _this.getNativeRange(); - if (native == null) return; - if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle - // TODO unclear if this has negative side effects - _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () { - try { - _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset); - } catch (ignored) {} - }); - }); - this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) { - if (context.range) { - var _context$range = context.range, - startNode = _context$range.startNode, - startOffset = _context$range.startOffset, - endNode = _context$range.endNode, - endOffset = _context$range.endOffset; - - _this.setNativeRange(startNode, startOffset, endNode, endOffset); - } - }); - this.update(_emitter4.default.sources.SILENT); - } - - _createClass(Selection, [{ - key: 'handleComposition', - value: function handleComposition() { - var _this2 = this; - - this.root.addEventListener('compositionstart', function () { - _this2.composing = true; - }); - this.root.addEventListener('compositionend', function () { - _this2.composing = false; - if (_this2.cursor.parent) { - var range = _this2.cursor.restore(); - if (!range) return; - setTimeout(function () { - _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset); - }, 1); - } - }); - } - }, { - key: 'handleDragging', - value: function handleDragging() { - var _this3 = this; - - this.emitter.listenDOM('mousedown', document.body, function () { - _this3.mouseDown = true; - }); - this.emitter.listenDOM('mouseup', document.body, function () { - _this3.mouseDown = false; - _this3.update(_emitter4.default.sources.USER); - }); - } - }, { - key: 'focus', - value: function focus() { - if (this.hasFocus()) return; - this.root.focus(); - this.setRange(this.savedRange); - } - }, { - key: 'format', - value: function format(_format, value) { - if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return; - this.scroll.update(); - var nativeRange = this.getNativeRange(); - if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return; - if (nativeRange.start.node !== this.cursor.textNode) { - var blot = _parchment2.default.find(nativeRange.start.node, false); - if (blot == null) return; - // TODO Give blot ability to not split - if (blot instanceof _parchment2.default.Leaf) { - var after = blot.split(nativeRange.start.offset); - blot.parent.insertBefore(this.cursor, after); - } else { - blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen - } - this.cursor.attach(); - } - this.cursor.format(_format, value); - this.scroll.optimize(); - this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length); - this.update(); - } - }, { - key: 'getBounds', - value: function getBounds(index) { - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - - var scrollLength = this.scroll.length(); - index = Math.min(index, scrollLength - 1); - length = Math.min(index + length, scrollLength - 1) - index; - var node = void 0, - _scroll$leaf = this.scroll.leaf(index), - _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2), - leaf = _scroll$leaf2[0], - offset = _scroll$leaf2[1]; - if (leaf == null) return null; - - var _leaf$position = leaf.position(offset, true); - - var _leaf$position2 = _slicedToArray(_leaf$position, 2); - - node = _leaf$position2[0]; - offset = _leaf$position2[1]; - - var range = document.createRange(); - if (length > 0) { - range.setStart(node, offset); - - var _scroll$leaf3 = this.scroll.leaf(index + length); - - var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2); - - leaf = _scroll$leaf4[0]; - offset = _scroll$leaf4[1]; - - if (leaf == null) return null; - - var _leaf$position3 = leaf.position(offset, true); - - var _leaf$position4 = _slicedToArray(_leaf$position3, 2); - - node = _leaf$position4[0]; - offset = _leaf$position4[1]; - - range.setEnd(node, offset); - return range.getBoundingClientRect(); - } else { - var side = 'left'; - var rect = void 0; - if (node instanceof Text) { - if (offset < node.data.length) { - range.setStart(node, offset); - range.setEnd(node, offset + 1); - } else { - range.setStart(node, offset - 1); - range.setEnd(node, offset); - side = 'right'; - } - rect = range.getBoundingClientRect(); - } else { - rect = leaf.domNode.getBoundingClientRect(); - if (offset > 0) side = 'right'; - } - return { - bottom: rect.top + rect.height, - height: rect.height, - left: rect[side], - right: rect[side], - top: rect.top, - width: 0 - }; - } - } - }, { - key: 'getNativeRange', - value: function getNativeRange() { - var selection = document.getSelection(); - if (selection == null || selection.rangeCount <= 0) return null; - var nativeRange = selection.getRangeAt(0); - if (nativeRange == null) return null; - var range = this.normalizeNative(nativeRange); - debug.info('getNativeRange', range); - return range; - } - }, { - key: 'getRange', - value: function getRange() { - var normalized = this.getNativeRange(); - if (normalized == null) return [null, null]; - var range = this.normalizedToRange(normalized); - return [range, normalized]; - } - }, { - key: 'hasFocus', - value: function hasFocus() { - return document.activeElement === this.root; - } - }, { - key: 'normalizedToRange', - value: function normalizedToRange(range) { - var _this4 = this; - - var positions = [[range.start.node, range.start.offset]]; - if (!range.native.collapsed) { - positions.push([range.end.node, range.end.offset]); - } - var indexes = positions.map(function (position) { - var _position = _slicedToArray(position, 2), - node = _position[0], - offset = _position[1]; - - var blot = _parchment2.default.find(node, true); - var index = blot.offset(_this4.scroll); - if (offset === 0) { - return index; - } else if (blot instanceof _parchment2.default.Container) { - return index + blot.length(); - } else { - return index + blot.index(node, offset); - } - }); - var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1); - var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes))); - return new Range(start, end - start); - } - }, { - key: 'normalizeNative', - value: function normalizeNative(nativeRange) { - if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) { - return null; - } - var range = { - start: { node: nativeRange.startContainer, offset: nativeRange.startOffset }, - end: { node: nativeRange.endContainer, offset: nativeRange.endOffset }, - native: nativeRange - }; - [range.start, range.end].forEach(function (position) { - var node = position.node, - offset = position.offset; - while (!(node instanceof Text) && node.childNodes.length > 0) { - if (node.childNodes.length > offset) { - node = node.childNodes[offset]; - offset = 0; - } else if (node.childNodes.length === offset) { - node = node.lastChild; - offset = node instanceof Text ? node.data.length : node.childNodes.length + 1; - } else { - break; - } - } - position.node = node, position.offset = offset; - }); - return range; - } - }, { - key: 'rangeToNative', - value: function rangeToNative(range) { - var _this5 = this; - - var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length]; - var args = []; - var scrollLength = this.scroll.length(); - indexes.forEach(function (index, i) { - index = Math.min(scrollLength - 1, index); - var node = void 0, - _scroll$leaf5 = _this5.scroll.leaf(index), - _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2), - leaf = _scroll$leaf6[0], - offset = _scroll$leaf6[1]; - var _leaf$position5 = leaf.position(offset, i !== 0); - - var _leaf$position6 = _slicedToArray(_leaf$position5, 2); - - node = _leaf$position6[0]; - offset = _leaf$position6[1]; - - args.push(node, offset); - }); - if (args.length < 2) { - args = args.concat(args); - } - return args; - } - }, { - key: 'scrollIntoView', - value: function scrollIntoView(scrollingContainer) { - var range = this.lastRange; - if (range == null) return; - var bounds = this.getBounds(range.index, range.length); - if (bounds == null) return; - var limit = this.scroll.length() - 1; - - var _scroll$line = this.scroll.line(Math.min(range.index, limit)), - _scroll$line2 = _slicedToArray(_scroll$line, 1), - first = _scroll$line2[0]; - - var last = first; - if (range.length > 0) { - var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit)); - - var _scroll$line4 = _slicedToArray(_scroll$line3, 1); - - last = _scroll$line4[0]; - } - if (first == null || last == null) return; - var scrollBounds = scrollingContainer.getBoundingClientRect(); - if (bounds.top < scrollBounds.top) { - scrollingContainer.scrollTop -= scrollBounds.top - bounds.top; - } else if (bounds.bottom > scrollBounds.bottom) { - scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom; - } - } - }, { - key: 'setNativeRange', - value: function setNativeRange(startNode, startOffset) { - var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode; - var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset; - var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - - debug.info('setNativeRange', startNode, startOffset, endNode, endOffset); - if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) { - return; - } - var selection = document.getSelection(); - if (selection == null) return; - if (startNode != null) { - if (!this.hasFocus()) this.root.focus(); - var native = (this.getNativeRange() || {}).native; - if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) { - - if (startNode.tagName == "BR") { - startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode); - startNode = startNode.parentNode; - } - if (endNode.tagName == "BR") { - endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode); - endNode = endNode.parentNode; - } - var range = document.createRange(); - range.setStart(startNode, startOffset); - range.setEnd(endNode, endOffset); - selection.removeAllRanges(); - selection.addRange(range); - } - } else { - selection.removeAllRanges(); - this.root.blur(); - document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs) - } - } - }, { - key: 'setRange', - value: function setRange(range) { - var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API; - - if (typeof force === 'string') { - source = force; - force = false; - } - debug.info('setRange', range); - if (range != null) { - var args = this.rangeToNative(range); - this.setNativeRange.apply(this, _toConsumableArray(args).concat([force])); - } else { - this.setNativeRange(null); - } - this.update(source); - } - }, { - key: 'update', - value: function update() { - var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER; - - var oldRange = this.lastRange; - - var _getRange = this.getRange(), - _getRange2 = _slicedToArray(_getRange, 2), - lastRange = _getRange2[0], - nativeRange = _getRange2[1]; - - this.lastRange = lastRange; - if (this.lastRange != null) { - this.savedRange = this.lastRange; - } - if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) { - var _emitter; - - if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) { - this.cursor.restore(); - } - var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source]; - (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args)); - if (source !== _emitter4.default.sources.SILENT) { - var _emitter2; - - (_emitter2 = this.emitter).emit.apply(_emitter2, args); - } - } - } - }]); - - return Selection; -}(); - -function contains(parent, descendant) { - try { - // Firefox inserts inaccessible nodes around video elements - descendant.parentNode; - } catch (e) { - return false; - } - // IE11 has bug with Text nodes - // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect - if (descendant instanceof Text) { - descendant = descendant.parentNode; - } - return parent.contains(descendant); -} - -exports.Range = Range; -exports.default = Selection; - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Break = function (_Parchment$Embed) { - _inherits(Break, _Parchment$Embed); - - function Break() { - _classCallCheck(this, Break); - - return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments)); - } - - _createClass(Break, [{ - key: 'insertInto', - value: function insertInto(parent, ref) { - if (parent.children.length === 0) { - _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref); - } else { - this.remove(); - } - } - }, { - key: 'length', - value: function length() { - return 0; - } - }, { - key: 'value', - value: function value() { - return ''; - } - }], [{ - key: 'value', - value: function value() { - return undefined; - } - }]); - - return Break; -}(_parchment2.default.Embed); - -Break.blotName = 'break'; -Break.tagName = 'BR'; - -exports.default = Break; - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var linked_list_1 = __webpack_require__(44); -var shadow_1 = __webpack_require__(30); -var Registry = __webpack_require__(1); -var ContainerBlot = /** @class */ (function (_super) { - __extends(ContainerBlot, _super); - function ContainerBlot(domNode) { - var _this = _super.call(this, domNode) || this; - _this.build(); - return _this; - } - ContainerBlot.prototype.appendChild = function (other) { - this.insertBefore(other); - }; - ContainerBlot.prototype.attach = function () { - _super.prototype.attach.call(this); - this.children.forEach(function (child) { - child.attach(); - }); - }; - ContainerBlot.prototype.build = function () { - var _this = this; - this.children = new linked_list_1.default(); - // Need to be reversed for if DOM nodes already in order - [].slice - .call(this.domNode.childNodes) - .reverse() - .forEach(function (node) { - try { - var child = makeBlot(node); - _this.insertBefore(child, _this.children.head || undefined); - } - catch (err) { - if (err instanceof Registry.ParchmentError) - return; - else - throw err; - } - }); - }; - ContainerBlot.prototype.deleteAt = function (index, length) { - if (index === 0 && length === this.length()) { - return this.remove(); - } - this.children.forEachAt(index, length, function (child, offset, length) { - child.deleteAt(offset, length); - }); - }; - ContainerBlot.prototype.descendant = function (criteria, index) { - var _a = this.children.find(index), child = _a[0], offset = _a[1]; - if ((criteria.blotName == null && criteria(child)) || - (criteria.blotName != null && child instanceof criteria)) { - return [child, offset]; - } - else if (child instanceof ContainerBlot) { - return child.descendant(criteria, offset); - } - else { - return [null, -1]; - } - }; - ContainerBlot.prototype.descendants = function (criteria, index, length) { - if (index === void 0) { index = 0; } - if (length === void 0) { length = Number.MAX_VALUE; } - var descendants = []; - var lengthLeft = length; - this.children.forEachAt(index, length, function (child, index, length) { - if ((criteria.blotName == null && criteria(child)) || - (criteria.blotName != null && child instanceof criteria)) { - descendants.push(child); - } - if (child instanceof ContainerBlot) { - descendants = descendants.concat(child.descendants(criteria, index, lengthLeft)); - } - lengthLeft -= length; - }); - return descendants; - }; - ContainerBlot.prototype.detach = function () { - this.children.forEach(function (child) { - child.detach(); - }); - _super.prototype.detach.call(this); - }; - ContainerBlot.prototype.formatAt = function (index, length, name, value) { - this.children.forEachAt(index, length, function (child, offset, length) { - child.formatAt(offset, length, name, value); - }); - }; - ContainerBlot.prototype.insertAt = function (index, value, def) { - var _a = this.children.find(index), child = _a[0], offset = _a[1]; - if (child) { - child.insertAt(offset, value, def); - } - else { - var blot = def == null ? Registry.create('text', value) : Registry.create(value, def); - this.appendChild(blot); - } - }; - ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) { - if (this.statics.allowedChildren != null && - !this.statics.allowedChildren.some(function (child) { - return childBlot instanceof child; - })) { - throw new Registry.ParchmentError("Cannot insert " + childBlot.statics.blotName + " into " + this.statics.blotName); - } - childBlot.insertInto(this, refBlot); - }; - ContainerBlot.prototype.length = function () { - return this.children.reduce(function (memo, child) { - return memo + child.length(); - }, 0); - }; - ContainerBlot.prototype.moveChildren = function (targetParent, refNode) { - this.children.forEach(function (child) { - targetParent.insertBefore(child, refNode); - }); - }; - ContainerBlot.prototype.optimize = function (context) { - _super.prototype.optimize.call(this, context); - if (this.children.length === 0) { - if (this.statics.defaultChild != null) { - var child = Registry.create(this.statics.defaultChild); - this.appendChild(child); - child.optimize(context); - } - else { - this.remove(); - } - } - }; - ContainerBlot.prototype.path = function (index, inclusive) { - if (inclusive === void 0) { inclusive = false; } - var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1]; - var position = [[this, index]]; - if (child instanceof ContainerBlot) { - return position.concat(child.path(offset, inclusive)); - } - else if (child != null) { - position.push([child, offset]); - } - return position; - }; - ContainerBlot.prototype.removeChild = function (child) { - this.children.remove(child); - }; - ContainerBlot.prototype.replace = function (target) { - if (target instanceof ContainerBlot) { - target.moveChildren(this); - } - _super.prototype.replace.call(this, target); - }; - ContainerBlot.prototype.split = function (index, force) { - if (force === void 0) { force = false; } - if (!force) { - if (index === 0) - return this; - if (index === this.length()) - return this.next; - } - var after = this.clone(); - this.parent.insertBefore(after, this.next); - this.children.forEachAt(index, this.length(), function (child, offset, length) { - child = child.split(offset, force); - after.appendChild(child); - }); - return after; - }; - ContainerBlot.prototype.unwrap = function () { - this.moveChildren(this.parent, this.next); - this.remove(); - }; - ContainerBlot.prototype.update = function (mutations, context) { - var _this = this; - var addedNodes = []; - var removedNodes = []; - mutations.forEach(function (mutation) { - if (mutation.target === _this.domNode && mutation.type === 'childList') { - addedNodes.push.apply(addedNodes, mutation.addedNodes); - removedNodes.push.apply(removedNodes, mutation.removedNodes); - } - }); - removedNodes.forEach(function (node) { - // Check node has actually been removed - // One exception is Chrome does not immediately remove IFRAMEs - // from DOM but MutationRecord is correct in its reported removal - if (node.parentNode != null && - // @ts-ignore - node.tagName !== 'IFRAME' && - document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) { - return; - } - var blot = Registry.find(node); - if (blot == null) - return; - if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) { - blot.detach(); - } - }); - addedNodes - .filter(function (node) { - return node.parentNode == _this.domNode; - }) - .sort(function (a, b) { - if (a === b) - return 0; - if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) { - return 1; - } - return -1; - }) - .forEach(function (node) { - var refBlot = null; - if (node.nextSibling != null) { - refBlot = Registry.find(node.nextSibling); - } - var blot = makeBlot(node); - if (blot.next != refBlot || blot.next == null) { - if (blot.parent != null) { - blot.parent.removeChild(_this); - } - _this.insertBefore(blot, refBlot || undefined); - } - }); - }; - return ContainerBlot; -}(shadow_1.default)); -function makeBlot(node) { - var blot = Registry.find(node); - if (blot == null) { - try { - blot = Registry.create(node); - } - catch (e) { - blot = Registry.create(Registry.Scope.INLINE); - [].slice.call(node.childNodes).forEach(function (child) { - // @ts-ignore - blot.domNode.appendChild(child); - }); - if (node.parentNode) { - node.parentNode.replaceChild(blot.domNode, node); - } - blot.attach(); - } - } - return blot; -} -exports.default = ContainerBlot; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var attributor_1 = __webpack_require__(12); -var store_1 = __webpack_require__(31); -var container_1 = __webpack_require__(17); -var Registry = __webpack_require__(1); -var FormatBlot = /** @class */ (function (_super) { - __extends(FormatBlot, _super); - function FormatBlot(domNode) { - var _this = _super.call(this, domNode) || this; - _this.attributes = new store_1.default(_this.domNode); - return _this; - } - FormatBlot.formats = function (domNode) { - if (typeof this.tagName === 'string') { - return true; - } - else if (Array.isArray(this.tagName)) { - return domNode.tagName.toLowerCase(); - } - return undefined; - }; - FormatBlot.prototype.format = function (name, value) { - var format = Registry.query(name); - if (format instanceof attributor_1.default) { - this.attributes.attribute(format, value); - } - else if (value) { - if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) { - this.replaceWith(name, value); - } - } - }; - FormatBlot.prototype.formats = function () { - var formats = this.attributes.values(); - var format = this.statics.formats(this.domNode); - if (format != null) { - formats[this.statics.blotName] = format; - } - return formats; - }; - FormatBlot.prototype.replaceWith = function (name, value) { - var replacement = _super.prototype.replaceWith.call(this, name, value); - this.attributes.copy(replacement); - return replacement; - }; - FormatBlot.prototype.update = function (mutations, context) { - var _this = this; - _super.prototype.update.call(this, mutations, context); - if (mutations.some(function (mutation) { - return mutation.target === _this.domNode && mutation.type === 'attributes'; - })) { - this.attributes.build(); - } - }; - FormatBlot.prototype.wrap = function (name, value) { - var wrapper = _super.prototype.wrap.call(this, name, value); - if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) { - this.attributes.move(wrapper); - } - return wrapper; - }; - return FormatBlot; -}(container_1.default)); -exports.default = FormatBlot; - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var shadow_1 = __webpack_require__(30); -var Registry = __webpack_require__(1); -var LeafBlot = /** @class */ (function (_super) { - __extends(LeafBlot, _super); - function LeafBlot() { - return _super !== null && _super.apply(this, arguments) || this; - } - LeafBlot.value = function (domNode) { - return true; - }; - LeafBlot.prototype.index = function (node, offset) { - if (this.domNode === node || - this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) { - return Math.min(offset, 1); - } - return -1; - }; - LeafBlot.prototype.position = function (index, inclusive) { - var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode); - if (index > 0) - offset += 1; - return [this.parent.domNode, offset]; - }; - LeafBlot.prototype.value = function () { - return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a; - var _a; - }; - LeafBlot.scope = Registry.Scope.INLINE_BLOT; - return LeafBlot; -}(shadow_1.default)); -exports.default = LeafBlot; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var equal = __webpack_require__(11); -var extend = __webpack_require__(3); - - -var lib = { - attributes: { - compose: function (a, b, keepNull) { - if (typeof a !== 'object') a = {}; - if (typeof b !== 'object') b = {}; - var attributes = extend(true, {}, b); - if (!keepNull) { - attributes = Object.keys(attributes).reduce(function (copy, key) { - if (attributes[key] != null) { - copy[key] = attributes[key]; - } - return copy; - }, {}); - } - for (var key in a) { - if (a[key] !== undefined && b[key] === undefined) { - attributes[key] = a[key]; - } - } - return Object.keys(attributes).length > 0 ? attributes : undefined; - }, - - diff: function(a, b) { - if (typeof a !== 'object') a = {}; - if (typeof b !== 'object') b = {}; - var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) { - if (!equal(a[key], b[key])) { - attributes[key] = b[key] === undefined ? null : b[key]; - } - return attributes; - }, {}); - return Object.keys(attributes).length > 0 ? attributes : undefined; - }, - - transform: function (a, b, priority) { - if (typeof a !== 'object') return b; - if (typeof b !== 'object') return undefined; - if (!priority) return b; // b simply overwrites us without priority - var attributes = Object.keys(b).reduce(function (attributes, key) { - if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value - return attributes; - }, {}); - return Object.keys(attributes).length > 0 ? attributes : undefined; - } - }, - - iterator: function (ops) { - return new Iterator(ops); - }, - - length: function (op) { - if (typeof op['delete'] === 'number') { - return op['delete']; - } else if (typeof op.retain === 'number') { - return op.retain; - } else { - return typeof op.insert === 'string' ? op.insert.length : 1; - } - } -}; - - -function Iterator(ops) { - this.ops = ops; - this.index = 0; - this.offset = 0; -}; - -Iterator.prototype.hasNext = function () { - return this.peekLength() < Infinity; -}; - -Iterator.prototype.next = function (length) { - if (!length) length = Infinity; - var nextOp = this.ops[this.index]; - if (nextOp) { - var offset = this.offset; - var opLength = lib.length(nextOp) - if (length >= opLength - offset) { - length = opLength - offset; - this.index += 1; - this.offset = 0; - } else { - this.offset += length; - } - if (typeof nextOp['delete'] === 'number') { - return { 'delete': length }; - } else { - var retOp = {}; - if (nextOp.attributes) { - retOp.attributes = nextOp.attributes; - } - if (typeof nextOp.retain === 'number') { - retOp.retain = length; - } else if (typeof nextOp.insert === 'string') { - retOp.insert = nextOp.insert.substr(offset, length); - } else { - // offset should === 0, length should === 1 - retOp.insert = nextOp.insert; - } - return retOp; - } - } else { - return { retain: Infinity }; - } -}; - -Iterator.prototype.peek = function () { - return this.ops[this.index]; -}; - -Iterator.prototype.peekLength = function () { - if (this.ops[this.index]) { - // Should never return 0 if our index is being managed correctly - return lib.length(this.ops[this.index]) - this.offset; - } else { - return Infinity; - } -}; - -Iterator.prototype.peekType = function () { - if (this.ops[this.index]) { - if (typeof this.ops[this.index]['delete'] === 'number') { - return 'delete'; - } else if (typeof this.ops[this.index].retain === 'number') { - return 'retain'; - } else { - return 'insert'; - } - } - return 'retain'; -}; - - -module.exports = lib; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports) { - -var clone = (function() { -'use strict'; - -function _instanceof(obj, type) { - return type != null && obj instanceof type; -} - -var nativeMap; -try { - nativeMap = Map; -} catch(_) { - // maybe a reference error because no `Map`. Give it a dummy value that no - // value will ever be an instanceof. - nativeMap = function() {}; -} - -var nativeSet; -try { - nativeSet = Set; -} catch(_) { - nativeSet = function() {}; -} - -var nativePromise; -try { - nativePromise = Promise; -} catch(_) { - nativePromise = function() {}; -} - -/** - * Clones (copies) an Object using deep copying. - * - * This function supports circular references by default, but if you are certain - * there are no circular references in your object, you can save some CPU time - * by calling clone(obj, false). - * - * Caution: if `circular` is false and `parent` contains circular references, - * your program may enter an infinite loop and crash. - * - * @param `parent` - the object to be cloned - * @param `circular` - set to true if the object to be cloned may contain - * circular references. (optional - true by default) - * @param `depth` - set to a number if the object is only to be cloned to - * a particular depth. (optional - defaults to Infinity) - * @param `prototype` - sets the prototype to be used when cloning an object. - * (optional - defaults to parent prototype). - * @param `includeNonEnumerable` - set to true if the non-enumerable properties - * should be cloned as well. Non-enumerable properties on the prototype - * chain will be ignored. (optional - false by default) -*/ -function clone(parent, circular, depth, prototype, includeNonEnumerable) { - if (typeof circular === 'object') { - depth = circular.depth; - prototype = circular.prototype; - includeNonEnumerable = circular.includeNonEnumerable; - circular = circular.circular; - } - // maintain two arrays for circular references, where corresponding parents - // and children have the same index - var allParents = []; - var allChildren = []; - - var useBuffer = typeof Buffer != 'undefined'; - - if (typeof circular == 'undefined') - circular = true; - - if (typeof depth == 'undefined') - depth = Infinity; - - // recurse this function so we don't reset allParents and allChildren - function _clone(parent, depth) { - // cloning null always returns null - if (parent === null) - return null; - - if (depth === 0) - return parent; - - var child; - var proto; - if (typeof parent != 'object') { - return parent; - } - - if (_instanceof(parent, nativeMap)) { - child = new nativeMap(); - } else if (_instanceof(parent, nativeSet)) { - child = new nativeSet(); - } else if (_instanceof(parent, nativePromise)) { - child = new nativePromise(function (resolve, reject) { - parent.then(function(value) { - resolve(_clone(value, depth - 1)); - }, function(err) { - reject(_clone(err, depth - 1)); - }); - }); - } else if (clone.__isArray(parent)) { - child = []; - } else if (clone.__isRegExp(parent)) { - child = new RegExp(parent.source, __getRegExpFlags(parent)); - if (parent.lastIndex) child.lastIndex = parent.lastIndex; - } else if (clone.__isDate(parent)) { - child = new Date(parent.getTime()); - } else if (useBuffer && Buffer.isBuffer(parent)) { - child = new Buffer(parent.length); - parent.copy(child); - return child; - } else if (_instanceof(parent, Error)) { - child = Object.create(parent); - } else { - if (typeof prototype == 'undefined') { - proto = Object.getPrototypeOf(parent); - child = Object.create(proto); - } - else { - child = Object.create(prototype); - proto = prototype; - } - } - - if (circular) { - var index = allParents.indexOf(parent); - - if (index != -1) { - return allChildren[index]; - } - allParents.push(parent); - allChildren.push(child); - } - - if (_instanceof(parent, nativeMap)) { - parent.forEach(function(value, key) { - var keyChild = _clone(key, depth - 1); - var valueChild = _clone(value, depth - 1); - child.set(keyChild, valueChild); - }); - } - if (_instanceof(parent, nativeSet)) { - parent.forEach(function(value) { - var entryChild = _clone(value, depth - 1); - child.add(entryChild); - }); - } - - for (var i in parent) { - var attrs; - if (proto) { - attrs = Object.getOwnPropertyDescriptor(proto, i); - } - - if (attrs && attrs.set == null) { - continue; - } - child[i] = _clone(parent[i], depth - 1); - } - - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(parent); - for (var i = 0; i < symbols.length; i++) { - // Don't need to worry about cloning a symbol because it is a primitive, - // like a number or string. - var symbol = symbols[i]; - var descriptor = Object.getOwnPropertyDescriptor(parent, symbol); - if (descriptor && !descriptor.enumerable && !includeNonEnumerable) { - continue; - } - child[symbol] = _clone(parent[symbol], depth - 1); - if (!descriptor.enumerable) { - Object.defineProperty(child, symbol, { - enumerable: false - }); - } - } - } - - if (includeNonEnumerable) { - var allPropertyNames = Object.getOwnPropertyNames(parent); - for (var i = 0; i < allPropertyNames.length; i++) { - var propertyName = allPropertyNames[i]; - var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName); - if (descriptor && descriptor.enumerable) { - continue; - } - child[propertyName] = _clone(parent[propertyName], depth - 1); - Object.defineProperty(child, propertyName, { - enumerable: false - }); - } - } - - return child; - } - - return _clone(parent, depth); -} - -/** - * Simple flat clone using prototype, accepts only objects, usefull for property - * override on FLAT configuration object (no nested props). - * - * USE WITH CAUTION! This may not behave as you wish if you do not know how this - * works. - */ -clone.clonePrototype = function clonePrototype(parent) { - if (parent === null) - return null; - - var c = function () {}; - c.prototype = parent; - return new c(); -}; - -// private utility functions - -function __objToStr(o) { - return Object.prototype.toString.call(o); -} -clone.__objToStr = __objToStr; - -function __isDate(o) { - return typeof o === 'object' && __objToStr(o) === '[object Date]'; -} -clone.__isDate = __isDate; - -function __isArray(o) { - return typeof o === 'object' && __objToStr(o) === '[object Array]'; -} -clone.__isArray = __isArray; - -function __isRegExp(o) { - return typeof o === 'object' && __objToStr(o) === '[object RegExp]'; -} -clone.__isRegExp = __isRegExp; - -function __getRegExpFlags(re) { - var flags = ''; - if (re.global) flags += 'g'; - if (re.ignoreCase) flags += 'i'; - if (re.multiline) flags += 'm'; - return flags; -} -clone.__getRegExpFlags = __getRegExpFlags; - -return clone; -})(); - -if (typeof module === 'object' && module.exports) { - module.exports = clone; -} - - -/***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _emitter = __webpack_require__(8); - -var _emitter2 = _interopRequireDefault(_emitter); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -var _break = __webpack_require__(16); - -var _break2 = _interopRequireDefault(_break); - -var _code = __webpack_require__(13); - -var _code2 = _interopRequireDefault(_code); - -var _container = __webpack_require__(25); - -var _container2 = _interopRequireDefault(_container); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -function isLine(blot) { - return blot instanceof _block2.default || blot instanceof _block.BlockEmbed; -} - -var Scroll = function (_Parchment$Scroll) { - _inherits(Scroll, _Parchment$Scroll); - - function Scroll(domNode, config) { - _classCallCheck(this, Scroll); - - var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode)); - - _this.emitter = config.emitter; - if (Array.isArray(config.whitelist)) { - _this.whitelist = config.whitelist.reduce(function (whitelist, format) { - whitelist[format] = true; - return whitelist; - }, {}); - } - // Some reason fixes composition issues with character languages in Windows/Chrome, Safari - _this.domNode.addEventListener('DOMNodeInserted', function () {}); - _this.optimize(); - _this.enable(); - return _this; - } - - _createClass(Scroll, [{ - key: 'batchStart', - value: function batchStart() { - this.batch = true; - } - }, { - key: 'batchEnd', - value: function batchEnd() { - this.batch = false; - this.optimize(); - } - }, { - key: 'deleteAt', - value: function deleteAt(index, length) { - var _line = this.line(index), - _line2 = _slicedToArray(_line, 2), - first = _line2[0], - offset = _line2[1]; - - var _line3 = this.line(index + length), - _line4 = _slicedToArray(_line3, 1), - last = _line4[0]; - - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length); - if (last != null && first !== last && offset > 0) { - if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) { - this.optimize(); - return; - } - if (first instanceof _code2.default) { - var newlineIndex = first.newlineIndex(first.length(), true); - if (newlineIndex > -1) { - first = first.split(newlineIndex + 1); - if (first === last) { - this.optimize(); - return; - } - } - } else if (last instanceof _code2.default) { - var _newlineIndex = last.newlineIndex(0); - if (_newlineIndex > -1) { - last.split(_newlineIndex + 1); - } - } - var ref = last.children.head instanceof _break2.default ? null : last.children.head; - first.moveChildren(last, ref); - first.remove(); - } - this.optimize(); - } - }, { - key: 'enable', - value: function enable() { - var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - - this.domNode.setAttribute('contenteditable', enabled); - } - }, { - key: 'formatAt', - value: function formatAt(index, length, format, value) { - if (this.whitelist != null && !this.whitelist[format]) return; - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value); - this.optimize(); - } - }, { - key: 'insertAt', - value: function insertAt(index, value, def) { - if (def != null && this.whitelist != null && !this.whitelist[value]) return; - if (index >= this.length()) { - if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) { - var blot = _parchment2.default.create(this.statics.defaultChild); - this.appendChild(blot); - if (def == null && value.endsWith('\n')) { - value = value.slice(0, -1); - } - blot.insertAt(0, value, def); - } else { - var embed = _parchment2.default.create(value, def); - this.appendChild(embed); - } - } else { - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def); - } - this.optimize(); - } - }, { - key: 'insertBefore', - value: function insertBefore(blot, ref) { - if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) { - var wrapper = _parchment2.default.create(this.statics.defaultChild); - wrapper.appendChild(blot); - blot = wrapper; - } - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref); - } - }, { - key: 'leaf', - value: function leaf(index) { - return this.path(index).pop() || [null, -1]; - } - }, { - key: 'line', - value: function line(index) { - if (index === this.length()) { - return this.line(index - 1); - } - return this.descendant(isLine, index); - } - }, { - key: 'lines', - value: function lines() { - var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; - var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE; - - var getLines = function getLines(blot, index, length) { - var lines = [], - lengthLeft = length; - blot.children.forEachAt(index, length, function (child, index, length) { - if (isLine(child)) { - lines.push(child); - } else if (child instanceof _parchment2.default.Container) { - lines = lines.concat(getLines(child, index, lengthLeft)); - } - lengthLeft -= length; - }); - return lines; - }; - return getLines(this, index, length); - } - }, { - key: 'optimize', - value: function optimize() { - var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; - var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (this.batch === true) return; - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context); - if (mutations.length > 0) { - this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context); - } - } - }, { - key: 'path', - value: function path(index) { - return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self - } - }, { - key: 'update', - value: function update(mutations) { - if (this.batch === true) return; - var source = _emitter2.default.sources.USER; - if (typeof mutations === 'string') { - source = mutations; - } - if (!Array.isArray(mutations)) { - mutations = this.observer.takeRecords(); - } - if (mutations.length > 0) { - this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations); - } - _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy - if (mutations.length > 0) { - this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations); - } - } - }]); - - return Scroll; -}(_parchment2.default.Scroll); - -Scroll.blotName = 'scroll'; -Scroll.className = 'ql-editor'; -Scroll.tagName = 'DIV'; -Scroll.defaultChild = 'block'; -Scroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default]; - -exports.default = Scroll; - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SHORTKEY = exports.default = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _clone = __webpack_require__(21); - -var _clone2 = _interopRequireDefault(_clone); - -var _deepEqual = __webpack_require__(11); - -var _deepEqual2 = _interopRequireDefault(_deepEqual); - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _op = __webpack_require__(20); - -var _op2 = _interopRequireDefault(_op); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var debug = (0, _logger2.default)('quill:keyboard'); - -var SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey'; - -var Keyboard = function (_Module) { - _inherits(Keyboard, _Module); - - _createClass(Keyboard, null, [{ - key: 'match', - value: function match(evt, binding) { - binding = normalize(binding); - if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) { - return !!binding[key] !== evt[key] && binding[key] !== null; - })) { - return false; - } - return binding.key === (evt.which || evt.keyCode); - } - }]); - - function Keyboard(quill, options) { - _classCallCheck(this, Keyboard); - - var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options)); - - _this.bindings = {}; - Object.keys(_this.options.bindings).forEach(function (name) { - if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) { - return; - } - if (_this.options.bindings[name]) { - _this.addBinding(_this.options.bindings[name]); - } - }); - _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter); - _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {}); - if (/Firefox/i.test(navigator.userAgent)) { - // Need to handle delete and backspace for Firefox in the general case #1171 - _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace); - _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete); - } else { - _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace); - _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete); - } - _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange); - _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange); - _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace); - _this.listen(); - return _this; - } - - _createClass(Keyboard, [{ - key: 'addBinding', - value: function addBinding(key) { - var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - var binding = normalize(key); - if (binding == null || binding.key == null) { - return debug.warn('Attempted to add invalid keyboard binding', binding); - } - if (typeof context === 'function') { - context = { handler: context }; - } - if (typeof handler === 'function') { - handler = { handler: handler }; - } - binding = (0, _extend2.default)(binding, context, handler); - this.bindings[binding.key] = this.bindings[binding.key] || []; - this.bindings[binding.key].push(binding); - } - }, { - key: 'listen', - value: function listen() { - var _this2 = this; - - this.quill.root.addEventListener('keydown', function (evt) { - if (evt.defaultPrevented) return; - var which = evt.which || evt.keyCode; - var bindings = (_this2.bindings[which] || []).filter(function (binding) { - return Keyboard.match(evt, binding); - }); - if (bindings.length === 0) return; - var range = _this2.quill.getSelection(); - if (range == null || !_this2.quill.hasFocus()) return; - - var _quill$getLine = _this2.quill.getLine(range.index), - _quill$getLine2 = _slicedToArray(_quill$getLine, 2), - line = _quill$getLine2[0], - offset = _quill$getLine2[1]; - - var _quill$getLeaf = _this2.quill.getLeaf(range.index), - _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2), - leafStart = _quill$getLeaf2[0], - offsetStart = _quill$getLeaf2[1]; - - var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length), - _ref2 = _slicedToArray(_ref, 2), - leafEnd = _ref2[0], - offsetEnd = _ref2[1]; - - var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : ''; - var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : ''; - var curContext = { - collapsed: range.length === 0, - empty: range.length === 0 && line.length() <= 1, - format: _this2.quill.getFormat(range), - offset: offset, - prefix: prefixText, - suffix: suffixText - }; - var prevented = bindings.some(function (binding) { - if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false; - if (binding.empty != null && binding.empty !== curContext.empty) return false; - if (binding.offset != null && binding.offset !== curContext.offset) return false; - if (Array.isArray(binding.format)) { - // any format is present - if (binding.format.every(function (name) { - return curContext.format[name] == null; - })) { - return false; - } - } else if (_typeof(binding.format) === 'object') { - // all formats must match - if (!Object.keys(binding.format).every(function (name) { - if (binding.format[name] === true) return curContext.format[name] != null; - if (binding.format[name] === false) return curContext.format[name] == null; - return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]); - })) { - return false; - } - } - if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false; - if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false; - return binding.handler.call(_this2, range, curContext) !== true; - }); - if (prevented) { - evt.preventDefault(); - } - }); - } - }]); - - return Keyboard; -}(_module2.default); - -Keyboard.keys = { - BACKSPACE: 8, - TAB: 9, - ENTER: 13, - ESCAPE: 27, - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40, - DELETE: 46 -}; - -Keyboard.DEFAULTS = { - bindings: { - 'bold': makeFormatHandler('bold'), - 'italic': makeFormatHandler('italic'), - 'underline': makeFormatHandler('underline'), - 'indent': { - // highlight tab or tab at beginning of list, indent or blockquote - key: Keyboard.keys.TAB, - format: ['blockquote', 'indent', 'list'], - handler: function handler(range, context) { - if (context.collapsed && context.offset !== 0) return true; - this.quill.format('indent', '+1', _quill2.default.sources.USER); - } - }, - 'outdent': { - key: Keyboard.keys.TAB, - shiftKey: true, - format: ['blockquote', 'indent', 'list'], - // highlight tab or tab at beginning of list, indent or blockquote - handler: function handler(range, context) { - if (context.collapsed && context.offset !== 0) return true; - this.quill.format('indent', '-1', _quill2.default.sources.USER); - } - }, - 'outdent backspace': { - key: Keyboard.keys.BACKSPACE, - collapsed: true, - shiftKey: null, - metaKey: null, - ctrlKey: null, - altKey: null, - format: ['indent', 'list'], - offset: 0, - handler: function handler(range, context) { - if (context.format.indent != null) { - this.quill.format('indent', '-1', _quill2.default.sources.USER); - } else if (context.format.list != null) { - this.quill.format('list', false, _quill2.default.sources.USER); - } - } - }, - 'indent code-block': makeCodeBlockHandler(true), - 'outdent code-block': makeCodeBlockHandler(false), - 'remove tab': { - key: Keyboard.keys.TAB, - shiftKey: true, - collapsed: true, - prefix: /\t$/, - handler: function handler(range) { - this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER); - } - }, - 'tab': { - key: Keyboard.keys.TAB, - handler: function handler(range) { - this.quill.history.cutoff(); - var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\t'); - this.quill.updateContents(delta, _quill2.default.sources.USER); - this.quill.history.cutoff(); - this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); - } - }, - 'list empty enter': { - key: Keyboard.keys.ENTER, - collapsed: true, - format: ['list'], - empty: true, - handler: function handler(range, context) { - this.quill.format('list', false, _quill2.default.sources.USER); - if (context.format.indent) { - this.quill.format('indent', false, _quill2.default.sources.USER); - } - } - }, - 'checklist enter': { - key: Keyboard.keys.ENTER, - collapsed: true, - format: { list: 'checked' }, - handler: function handler(range) { - var _quill$getLine3 = this.quill.getLine(range.index), - _quill$getLine4 = _slicedToArray(_quill$getLine3, 2), - line = _quill$getLine4[0], - offset = _quill$getLine4[1]; - - var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' }); - var delta = new _quillDelta2.default().retain(range.index).insert('\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' }); - this.quill.updateContents(delta, _quill2.default.sources.USER); - this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); - this.quill.scrollIntoView(); - } - }, - 'header enter': { - key: Keyboard.keys.ENTER, - collapsed: true, - format: ['header'], - suffix: /^$/, - handler: function handler(range, context) { - var _quill$getLine5 = this.quill.getLine(range.index), - _quill$getLine6 = _slicedToArray(_quill$getLine5, 2), - line = _quill$getLine6[0], - offset = _quill$getLine6[1]; - - var delta = new _quillDelta2.default().retain(range.index).insert('\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null }); - this.quill.updateContents(delta, _quill2.default.sources.USER); - this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); - this.quill.scrollIntoView(); - } - }, - 'list autofill': { - key: ' ', - collapsed: true, - format: { list: false }, - prefix: /^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/, - handler: function handler(range, context) { - var length = context.prefix.length; - - var _quill$getLine7 = this.quill.getLine(range.index), - _quill$getLine8 = _slicedToArray(_quill$getLine7, 2), - line = _quill$getLine8[0], - offset = _quill$getLine8[1]; - - if (offset > length) return true; - var value = void 0; - switch (context.prefix.trim()) { - case '[]':case '[ ]': - value = 'unchecked'; - break; - case '[x]': - value = 'checked'; - break; - case '-':case '*': - value = 'bullet'; - break; - default: - value = 'ordered'; - } - this.quill.insertText(range.index, ' ', _quill2.default.sources.USER); - this.quill.history.cutoff(); - var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value }); - this.quill.updateContents(delta, _quill2.default.sources.USER); - this.quill.history.cutoff(); - this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT); - } - }, - 'code exit': { - key: Keyboard.keys.ENTER, - collapsed: true, - format: ['code-block'], - prefix: /\n\n$/, - suffix: /^\s+$/, - handler: function handler(range) { - var _quill$getLine9 = this.quill.getLine(range.index), - _quill$getLine10 = _slicedToArray(_quill$getLine9, 2), - line = _quill$getLine10[0], - offset = _quill$getLine10[1]; - - var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1); - this.quill.updateContents(delta, _quill2.default.sources.USER); - } - }, - 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false), - 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true), - 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false), - 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true) - } -}; - -function makeEmbedArrowHandler(key, shiftKey) { - var _ref3; - - var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix'; - return _ref3 = { - key: key, - shiftKey: shiftKey, - altKey: null - }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) { - var index = range.index; - if (key === Keyboard.keys.RIGHT) { - index += range.length + 1; - } - - var _quill$getLeaf3 = this.quill.getLeaf(index), - _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1), - leaf = _quill$getLeaf4[0]; - - if (!(leaf instanceof _parchment2.default.Embed)) return true; - if (key === Keyboard.keys.LEFT) { - if (shiftKey) { - this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER); - } else { - this.quill.setSelection(range.index - 1, _quill2.default.sources.USER); - } - } else { - if (shiftKey) { - this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER); - } else { - this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER); - } - } - return false; - }), _ref3; -} - -function handleBackspace(range, context) { - if (range.index === 0 || this.quill.getLength() <= 1) return; - - var _quill$getLine11 = this.quill.getLine(range.index), - _quill$getLine12 = _slicedToArray(_quill$getLine11, 1), - line = _quill$getLine12[0]; - - var formats = {}; - if (context.offset === 0) { - var _quill$getLine13 = this.quill.getLine(range.index - 1), - _quill$getLine14 = _slicedToArray(_quill$getLine13, 1), - prev = _quill$getLine14[0]; - - if (prev != null && prev.length() > 1) { - var curFormats = line.formats(); - var prevFormats = this.quill.getFormat(range.index - 1, 1); - formats = _op2.default.attributes.diff(curFormats, prevFormats) || {}; - } - } - // Check for astral symbols - var length = /[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(context.prefix) ? 2 : 1; - this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER); - if (Object.keys(formats).length > 0) { - this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER); - } - this.quill.focus(); -} - -function handleDelete(range, context) { - // Check for astral symbols - var length = /^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(context.suffix) ? 2 : 1; - if (range.index >= this.quill.getLength() - length) return; - var formats = {}, - nextLength = 0; - - var _quill$getLine15 = this.quill.getLine(range.index), - _quill$getLine16 = _slicedToArray(_quill$getLine15, 1), - line = _quill$getLine16[0]; - - if (context.offset >= line.length() - 1) { - var _quill$getLine17 = this.quill.getLine(range.index + 1), - _quill$getLine18 = _slicedToArray(_quill$getLine17, 1), - next = _quill$getLine18[0]; - - if (next) { - var curFormats = line.formats(); - var nextFormats = this.quill.getFormat(range.index, 1); - formats = _op2.default.attributes.diff(curFormats, nextFormats) || {}; - nextLength = next.length(); - } - } - this.quill.deleteText(range.index, length, _quill2.default.sources.USER); - if (Object.keys(formats).length > 0) { - this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER); - } -} - -function handleDeleteRange(range) { - var lines = this.quill.getLines(range); - var formats = {}; - if (lines.length > 1) { - var firstFormats = lines[0].formats(); - var lastFormats = lines[lines.length - 1].formats(); - formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {}; - } - this.quill.deleteText(range, _quill2.default.sources.USER); - if (Object.keys(formats).length > 0) { - this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER); - } - this.quill.setSelection(range.index, _quill2.default.sources.SILENT); - this.quill.focus(); -} - -function handleEnter(range, context) { - var _this3 = this; - - if (range.length > 0) { - this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change - } - var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) { - if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) { - lineFormats[format] = context.format[format]; - } - return lineFormats; - }, {}); - this.quill.insertText(range.index, '\n', lineFormats, _quill2.default.sources.USER); - // Earlier scroll.deleteAt might have messed up our selection, - // so insertText's built in selection preservation is not reliable - this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT); - this.quill.focus(); - Object.keys(context.format).forEach(function (name) { - if (lineFormats[name] != null) return; - if (Array.isArray(context.format[name])) return; - if (name === 'link') return; - _this3.quill.format(name, context.format[name], _quill2.default.sources.USER); - }); -} - -function makeCodeBlockHandler(indent) { - return { - key: Keyboard.keys.TAB, - shiftKey: !indent, - format: { 'code-block': true }, - handler: function handler(range) { - var CodeBlock = _parchment2.default.query('code-block'); - var index = range.index, - length = range.length; - - var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index), - _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2), - block = _quill$scroll$descend2[0], - offset = _quill$scroll$descend2[1]; - - if (block == null) return; - var scrollIndex = this.quill.getIndex(block); - var start = block.newlineIndex(offset, true) + 1; - var end = block.newlineIndex(scrollIndex + offset + length); - var lines = block.domNode.textContent.slice(start, end).split('\n'); - offset = 0; - lines.forEach(function (line, i) { - if (indent) { - block.insertAt(start + offset, CodeBlock.TAB); - offset += CodeBlock.TAB.length; - if (i === 0) { - index += CodeBlock.TAB.length; - } else { - length += CodeBlock.TAB.length; - } - } else if (line.startsWith(CodeBlock.TAB)) { - block.deleteAt(start + offset, CodeBlock.TAB.length); - offset -= CodeBlock.TAB.length; - if (i === 0) { - index -= CodeBlock.TAB.length; - } else { - length -= CodeBlock.TAB.length; - } - } - offset += line.length + 1; - }); - this.quill.update(_quill2.default.sources.USER); - this.quill.setSelection(index, length, _quill2.default.sources.SILENT); - } - }; -} - -function makeFormatHandler(format) { - return { - key: format[0].toUpperCase(), - shortKey: true, - handler: function handler(range, context) { - this.quill.format(format, !context.format[format], _quill2.default.sources.USER); - } - }; -} - -function normalize(binding) { - if (typeof binding === 'string' || typeof binding === 'number') { - return normalize({ key: binding }); - } - if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') { - binding = (0, _clone2.default)(binding, false); - } - if (typeof binding.key === 'string') { - if (Keyboard.keys[binding.key.toUpperCase()] != null) { - binding.key = Keyboard.keys[binding.key.toUpperCase()]; - } else if (binding.key.length === 1) { - binding.key = binding.key.toUpperCase().charCodeAt(0); - } else { - return null; - } - } - if (binding.shortKey) { - binding[SHORTKEY] = binding.shortKey; - delete binding.shortKey; - } - return binding; -} - -exports.default = Keyboard; -exports.SHORTKEY = SHORTKEY; - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Cursor = function (_Parchment$Embed) { - _inherits(Cursor, _Parchment$Embed); - - _createClass(Cursor, null, [{ - key: 'value', - value: function value() { - return undefined; - } - }]); - - function Cursor(domNode, selection) { - _classCallCheck(this, Cursor); - - var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode)); - - _this.selection = selection; - _this.textNode = document.createTextNode(Cursor.CONTENTS); - _this.domNode.appendChild(_this.textNode); - _this._length = 0; - return _this; - } - - _createClass(Cursor, [{ - key: 'detach', - value: function detach() { - // super.detach() will also clear domNode.__blot - if (this.parent != null) this.parent.removeChild(this); - } - }, { - key: 'format', - value: function format(name, value) { - if (this._length !== 0) { - return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value); - } - var target = this, - index = 0; - while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) { - index += target.offset(target.parent); - target = target.parent; - } - if (target != null) { - this._length = Cursor.CONTENTS.length; - target.optimize(); - target.formatAt(index, Cursor.CONTENTS.length, name, value); - this._length = 0; - } - } - }, { - key: 'index', - value: function index(node, offset) { - if (node === this.textNode) return 0; - return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset); - } - }, { - key: 'length', - value: function length() { - return this._length; - } - }, { - key: 'position', - value: function position() { - return [this.textNode, this.textNode.data.length]; - } - }, { - key: 'remove', - value: function remove() { - _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this); - this.parent = null; - } - }, { - key: 'restore', - value: function restore() { - if (this.selection.composing || this.parent == null) return; - var textNode = this.textNode; - var range = this.selection.getNativeRange(); - var restoreText = void 0, - start = void 0, - end = void 0; - if (range != null && range.start.node === textNode && range.end.node === textNode) { - var _ref = [textNode, range.start.offset, range.end.offset]; - restoreText = _ref[0]; - start = _ref[1]; - end = _ref[2]; - } - // Link format will insert text outside of anchor tag - while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) { - this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode); - } - if (this.textNode.data !== Cursor.CONTENTS) { - var text = this.textNode.data.split(Cursor.CONTENTS).join(''); - if (this.next instanceof _text2.default) { - restoreText = this.next.domNode; - this.next.insertAt(0, text); - this.textNode.data = Cursor.CONTENTS; - } else { - this.textNode.data = text; - this.parent.insertBefore(_parchment2.default.create(this.textNode), this); - this.textNode = document.createTextNode(Cursor.CONTENTS); - this.domNode.appendChild(this.textNode); - } - } - this.remove(); - if (start != null) { - var _map = [start, end].map(function (offset) { - return Math.max(0, Math.min(restoreText.data.length, offset - 1)); - }); - - var _map2 = _slicedToArray(_map, 2); - - start = _map2[0]; - end = _map2[1]; - - return { - startNode: restoreText, - startOffset: start, - endNode: restoreText, - endOffset: end - }; - } - } - }, { - key: 'update', - value: function update(mutations, context) { - var _this2 = this; - - if (mutations.some(function (mutation) { - return mutation.type === 'characterData' && mutation.target === _this2.textNode; - })) { - var range = this.restore(); - if (range) context.range = range; - } - } - }, { - key: 'value', - value: function value() { - return ''; - } - }]); - - return Cursor; -}(_parchment2.default.Embed); - -Cursor.blotName = 'cursor'; -Cursor.className = 'ql-cursor'; -Cursor.tagName = 'span'; -Cursor.CONTENTS = '\uFEFF'; // Zero width no break space - - -exports.default = Cursor; - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Container = function (_Parchment$Container) { - _inherits(Container, _Parchment$Container); - - function Container() { - _classCallCheck(this, Container); - - return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments)); - } - - return Container; -}(_parchment2.default.Container); - -Container.allowedChildren = [_block2.default, _block.BlockEmbed, Container]; - -exports.default = Container; - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ColorAttributor = function (_Parchment$Attributor) { - _inherits(ColorAttributor, _Parchment$Attributor); - - function ColorAttributor() { - _classCallCheck(this, ColorAttributor); - - return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments)); - } - - _createClass(ColorAttributor, [{ - key: 'value', - value: function value(domNode) { - var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode); - if (!value.startsWith('rgb(')) return value; - value = value.replace(/^[^\d]+/, '').replace(/[^\d]+$/, ''); - return '#' + value.split(',').map(function (component) { - return ('00' + parseInt(component).toString(16)).slice(-2); - }).join(''); - } - }]); - - return ColorAttributor; -}(_parchment2.default.Attributor.Style); - -var ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', { - scope: _parchment2.default.Scope.INLINE -}); -var ColorStyle = new ColorAttributor('color', 'color', { - scope: _parchment2.default.Scope.INLINE -}); - -exports.ColorAttributor = ColorAttributor; -exports.ColorClass = ColorClass; -exports.ColorStyle = ColorStyle; - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.sanitize = exports.default = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Link = function (_Inline) { - _inherits(Link, _Inline); - - function Link() { - _classCallCheck(this, Link); - - return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments)); - } - - _createClass(Link, [{ - key: 'format', - value: function format(name, value) { - if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value); - value = this.constructor.sanitize(value); - this.domNode.setAttribute('href', value); - } - }], [{ - key: 'create', - value: function create(value) { - var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value); - value = this.sanitize(value); - node.setAttribute('href', value); - node.setAttribute('target', '_blank'); - return node; - } - }, { - key: 'formats', - value: function formats(domNode) { - return domNode.getAttribute('href'); - } - }, { - key: 'sanitize', - value: function sanitize(url) { - return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL; - } - }]); - - return Link; -}(_inline2.default); - -Link.blotName = 'link'; -Link.tagName = 'A'; -Link.SANITIZED_URL = 'about:blank'; -Link.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel']; - -function _sanitize(url, protocols) { - var anchor = document.createElement('a'); - anchor.href = url; - var protocol = anchor.href.slice(0, anchor.href.indexOf(':')); - return protocols.indexOf(protocol) > -1; -} - -exports.default = Link; -exports.sanitize = _sanitize; - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _keyboard = __webpack_require__(23); - -var _keyboard2 = _interopRequireDefault(_keyboard); - -var _dropdown = __webpack_require__(107); - -var _dropdown2 = _interopRequireDefault(_dropdown); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var optionsCounter = 0; - -function toggleAriaAttribute(element, attribute) { - element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true')); -} - -var Picker = function () { - function Picker(select) { - var _this = this; - - _classCallCheck(this, Picker); - - this.select = select; - this.container = document.createElement('span'); - this.buildPicker(); - this.select.style.display = 'none'; - this.select.parentNode.insertBefore(this.container, this.select); - - this.label.addEventListener('mousedown', function () { - _this.togglePicker(); - }); - this.label.addEventListener('keydown', function (event) { - switch (event.keyCode) { - // Allows the "Enter" key to open the picker - case _keyboard2.default.keys.ENTER: - _this.togglePicker(); - break; - - // Allows the "Escape" key to close the picker - case _keyboard2.default.keys.ESCAPE: - _this.escape(); - event.preventDefault(); - break; - default: - } - }); - this.select.addEventListener('change', this.update.bind(this)); - } - - _createClass(Picker, [{ - key: 'togglePicker', - value: function togglePicker() { - this.container.classList.toggle('ql-expanded'); - // Toggle aria-expanded and aria-hidden to make the picker accessible - toggleAriaAttribute(this.label, 'aria-expanded'); - toggleAriaAttribute(this.options, 'aria-hidden'); - } - }, { - key: 'buildItem', - value: function buildItem(option) { - var _this2 = this; - - var item = document.createElement('span'); - item.tabIndex = '0'; - item.setAttribute('role', 'button'); - - item.classList.add('ql-picker-item'); - if (option.hasAttribute('value')) { - item.setAttribute('data-value', option.getAttribute('value')); - } - if (option.textContent) { - item.setAttribute('data-label', option.textContent); - } - item.addEventListener('click', function () { - _this2.selectItem(item, true); - }); - item.addEventListener('keydown', function (event) { - switch (event.keyCode) { - // Allows the "Enter" key to select an item - case _keyboard2.default.keys.ENTER: - _this2.selectItem(item, true); - event.preventDefault(); - break; - - // Allows the "Escape" key to close the picker - case _keyboard2.default.keys.ESCAPE: - _this2.escape(); - event.preventDefault(); - break; - default: - } - }); - - return item; - } - }, { - key: 'buildLabel', - value: function buildLabel() { - var label = document.createElement('span'); - label.classList.add('ql-picker-label'); - label.innerHTML = _dropdown2.default; - label.tabIndex = '0'; - label.setAttribute('role', 'button'); - label.setAttribute('aria-expanded', 'false'); - this.container.appendChild(label); - return label; - } - }, { - key: 'buildOptions', - value: function buildOptions() { - var _this3 = this; - - var options = document.createElement('span'); - options.classList.add('ql-picker-options'); - - // Don't want screen readers to read this until options are visible - options.setAttribute('aria-hidden', 'true'); - options.tabIndex = '-1'; - - // Need a unique id for aria-controls - options.id = 'ql-picker-options-' + optionsCounter; - optionsCounter += 1; - this.label.setAttribute('aria-controls', options.id); - - this.options = options; - - [].slice.call(this.select.options).forEach(function (option) { - var item = _this3.buildItem(option); - options.appendChild(item); - if (option.selected === true) { - _this3.selectItem(item); - } - }); - this.container.appendChild(options); - } - }, { - key: 'buildPicker', - value: function buildPicker() { - var _this4 = this; - - [].slice.call(this.select.attributes).forEach(function (item) { - _this4.container.setAttribute(item.name, item.value); - }); - this.container.classList.add('ql-picker'); - this.label = this.buildLabel(); - this.buildOptions(); - } - }, { - key: 'escape', - value: function escape() { - var _this5 = this; - - // Close menu and return focus to trigger label - this.close(); - // Need setTimeout for accessibility to ensure that the browser executes - // focus on the next process thread and after any DOM content changes - setTimeout(function () { - return _this5.label.focus(); - }, 1); - } - }, { - key: 'close', - value: function close() { - this.container.classList.remove('ql-expanded'); - this.label.setAttribute('aria-expanded', 'false'); - this.options.setAttribute('aria-hidden', 'true'); - } - }, { - key: 'selectItem', - value: function selectItem(item) { - var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var selected = this.container.querySelector('.ql-selected'); - if (item === selected) return; - if (selected != null) { - selected.classList.remove('ql-selected'); - } - if (item == null) return; - item.classList.add('ql-selected'); - this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item); - if (item.hasAttribute('data-value')) { - this.label.setAttribute('data-value', item.getAttribute('data-value')); - } else { - this.label.removeAttribute('data-value'); - } - if (item.hasAttribute('data-label')) { - this.label.setAttribute('data-label', item.getAttribute('data-label')); - } else { - this.label.removeAttribute('data-label'); - } - if (trigger) { - if (typeof Event === 'function') { - this.select.dispatchEvent(new Event('change')); - } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') { - // IE11 - var event = document.createEvent('Event'); - event.initEvent('change', true, true); - this.select.dispatchEvent(event); - } - this.close(); - } - } - }, { - key: 'update', - value: function update() { - var option = void 0; - if (this.select.selectedIndex > -1) { - var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex]; - option = this.select.options[this.select.selectedIndex]; - this.selectItem(item); - } else { - this.selectItem(null); - } - var isActive = option != null && option !== this.select.querySelector('option[selected]'); - this.label.classList.toggle('ql-active', isActive); - } - }]); - - return Picker; -}(); - -exports.default = Picker; - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -var _break = __webpack_require__(16); - -var _break2 = _interopRequireDefault(_break); - -var _container = __webpack_require__(25); - -var _container2 = _interopRequireDefault(_container); - -var _cursor = __webpack_require__(24); - -var _cursor2 = _interopRequireDefault(_cursor); - -var _embed = __webpack_require__(35); - -var _embed2 = _interopRequireDefault(_embed); - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -var _scroll = __webpack_require__(22); - -var _scroll2 = _interopRequireDefault(_scroll); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -var _clipboard = __webpack_require__(55); - -var _clipboard2 = _interopRequireDefault(_clipboard); - -var _history = __webpack_require__(42); - -var _history2 = _interopRequireDefault(_history); - -var _keyboard = __webpack_require__(23); - -var _keyboard2 = _interopRequireDefault(_keyboard); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -_quill2.default.register({ - 'blots/block': _block2.default, - 'blots/block/embed': _block.BlockEmbed, - 'blots/break': _break2.default, - 'blots/container': _container2.default, - 'blots/cursor': _cursor2.default, - 'blots/embed': _embed2.default, - 'blots/inline': _inline2.default, - 'blots/scroll': _scroll2.default, - 'blots/text': _text2.default, - - 'modules/clipboard': _clipboard2.default, - 'modules/history': _history2.default, - 'modules/keyboard': _keyboard2.default -}); - -_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default); - -exports.default = _quill2.default; - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var Registry = __webpack_require__(1); -var ShadowBlot = /** @class */ (function () { - function ShadowBlot(domNode) { - this.domNode = domNode; - // @ts-ignore - this.domNode[Registry.DATA_KEY] = { blot: this }; - } - Object.defineProperty(ShadowBlot.prototype, "statics", { - // Hack for accessing inherited static methods - get: function () { - return this.constructor; - }, - enumerable: true, - configurable: true - }); - ShadowBlot.create = function (value) { - if (this.tagName == null) { - throw new Registry.ParchmentError('Blot definition missing tagName'); - } - var node; - if (Array.isArray(this.tagName)) { - if (typeof value === 'string') { - value = value.toUpperCase(); - if (parseInt(value).toString() === value) { - value = parseInt(value); - } - } - if (typeof value === 'number') { - node = document.createElement(this.tagName[value - 1]); - } - else if (this.tagName.indexOf(value) > -1) { - node = document.createElement(value); - } - else { - node = document.createElement(this.tagName[0]); - } - } - else { - node = document.createElement(this.tagName); - } - if (this.className) { - node.classList.add(this.className); - } - return node; - }; - ShadowBlot.prototype.attach = function () { - if (this.parent != null) { - this.scroll = this.parent.scroll; - } - }; - ShadowBlot.prototype.clone = function () { - var domNode = this.domNode.cloneNode(false); - return Registry.create(domNode); - }; - ShadowBlot.prototype.detach = function () { - if (this.parent != null) - this.parent.removeChild(this); - // @ts-ignore - delete this.domNode[Registry.DATA_KEY]; - }; - ShadowBlot.prototype.deleteAt = function (index, length) { - var blot = this.isolate(index, length); - blot.remove(); - }; - ShadowBlot.prototype.formatAt = function (index, length, name, value) { - var blot = this.isolate(index, length); - if (Registry.query(name, Registry.Scope.BLOT) != null && value) { - blot.wrap(name, value); - } - else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) { - var parent = Registry.create(this.statics.scope); - blot.wrap(parent); - parent.format(name, value); - } - }; - ShadowBlot.prototype.insertAt = function (index, value, def) { - var blot = def == null ? Registry.create('text', value) : Registry.create(value, def); - var ref = this.split(index); - this.parent.insertBefore(blot, ref); - }; - ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) { - if (refBlot === void 0) { refBlot = null; } - if (this.parent != null) { - this.parent.children.remove(this); - } - var refDomNode = null; - parentBlot.children.insertBefore(this, refBlot); - if (refBlot != null) { - refDomNode = refBlot.domNode; - } - if (this.domNode.parentNode != parentBlot.domNode || - this.domNode.nextSibling != refDomNode) { - parentBlot.domNode.insertBefore(this.domNode, refDomNode); - } - this.parent = parentBlot; - this.attach(); - }; - ShadowBlot.prototype.isolate = function (index, length) { - var target = this.split(index); - target.split(length); - return target; - }; - ShadowBlot.prototype.length = function () { - return 1; - }; - ShadowBlot.prototype.offset = function (root) { - if (root === void 0) { root = this.parent; } - if (this.parent == null || this == root) - return 0; - return this.parent.children.offset(this) + this.parent.offset(root); - }; - ShadowBlot.prototype.optimize = function (context) { - // TODO clean up once we use WeakMap - // @ts-ignore - if (this.domNode[Registry.DATA_KEY] != null) { - // @ts-ignore - delete this.domNode[Registry.DATA_KEY].mutations; - } - }; - ShadowBlot.prototype.remove = function () { - if (this.domNode.parentNode != null) { - this.domNode.parentNode.removeChild(this.domNode); - } - this.detach(); - }; - ShadowBlot.prototype.replace = function (target) { - if (target.parent == null) - return; - target.parent.insertBefore(this, target.next); - target.remove(); - }; - ShadowBlot.prototype.replaceWith = function (name, value) { - var replacement = typeof name === 'string' ? Registry.create(name, value) : name; - replacement.replace(this); - return replacement; - }; - ShadowBlot.prototype.split = function (index, force) { - return index === 0 ? this : this.next; - }; - ShadowBlot.prototype.update = function (mutations, context) { - // Nothing to do by default - }; - ShadowBlot.prototype.wrap = function (name, value) { - var wrapper = typeof name === 'string' ? Registry.create(name, value) : name; - if (this.parent != null) { - this.parent.insertBefore(wrapper, this.next); - } - wrapper.appendChild(this); - return wrapper; - }; - ShadowBlot.blotName = 'abstract'; - return ShadowBlot; -}()); -exports.default = ShadowBlot; - - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var attributor_1 = __webpack_require__(12); -var class_1 = __webpack_require__(32); -var style_1 = __webpack_require__(33); -var Registry = __webpack_require__(1); -var AttributorStore = /** @class */ (function () { - function AttributorStore(domNode) { - this.attributes = {}; - this.domNode = domNode; - this.build(); - } - AttributorStore.prototype.attribute = function (attribute, value) { - // verb - if (value) { - if (attribute.add(this.domNode, value)) { - if (attribute.value(this.domNode) != null) { - this.attributes[attribute.attrName] = attribute; - } - else { - delete this.attributes[attribute.attrName]; - } - } - } - else { - attribute.remove(this.domNode); - delete this.attributes[attribute.attrName]; - } - }; - AttributorStore.prototype.build = function () { - var _this = this; - this.attributes = {}; - var attributes = attributor_1.default.keys(this.domNode); - var classes = class_1.default.keys(this.domNode); - var styles = style_1.default.keys(this.domNode); - attributes - .concat(classes) - .concat(styles) - .forEach(function (name) { - var attr = Registry.query(name, Registry.Scope.ATTRIBUTE); - if (attr instanceof attributor_1.default) { - _this.attributes[attr.attrName] = attr; - } - }); - }; - AttributorStore.prototype.copy = function (target) { - var _this = this; - Object.keys(this.attributes).forEach(function (key) { - var value = _this.attributes[key].value(_this.domNode); - target.format(key, value); - }); - }; - AttributorStore.prototype.move = function (target) { - var _this = this; - this.copy(target); - Object.keys(this.attributes).forEach(function (key) { - _this.attributes[key].remove(_this.domNode); - }); - this.attributes = {}; - }; - AttributorStore.prototype.values = function () { - var _this = this; - return Object.keys(this.attributes).reduce(function (attributes, name) { - attributes[name] = _this.attributes[name].value(_this.domNode); - return attributes; - }, {}); - }; - return AttributorStore; -}()); -exports.default = AttributorStore; - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var attributor_1 = __webpack_require__(12); -function match(node, prefix) { - var className = node.getAttribute('class') || ''; - return className.split(/\s+/).filter(function (name) { - return name.indexOf(prefix + "-") === 0; - }); -} -var ClassAttributor = /** @class */ (function (_super) { - __extends(ClassAttributor, _super); - function ClassAttributor() { - return _super !== null && _super.apply(this, arguments) || this; - } - ClassAttributor.keys = function (node) { - return (node.getAttribute('class') || '').split(/\s+/).map(function (name) { - return name - .split('-') - .slice(0, -1) - .join('-'); - }); - }; - ClassAttributor.prototype.add = function (node, value) { - if (!this.canAdd(node, value)) - return false; - this.remove(node); - node.classList.add(this.keyName + "-" + value); - return true; - }; - ClassAttributor.prototype.remove = function (node) { - var matches = match(node, this.keyName); - matches.forEach(function (name) { - node.classList.remove(name); - }); - if (node.classList.length === 0) { - node.removeAttribute('class'); - } - }; - ClassAttributor.prototype.value = function (node) { - var result = match(node, this.keyName)[0] || ''; - var value = result.slice(this.keyName.length + 1); // +1 for hyphen - return this.canAdd(node, value) ? value : ''; - }; - return ClassAttributor; -}(attributor_1.default)); -exports.default = ClassAttributor; - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var attributor_1 = __webpack_require__(12); -function camelize(name) { - var parts = name.split('-'); - var rest = parts - .slice(1) - .map(function (part) { - return part[0].toUpperCase() + part.slice(1); - }) - .join(''); - return parts[0] + rest; -} -var StyleAttributor = /** @class */ (function (_super) { - __extends(StyleAttributor, _super); - function StyleAttributor() { - return _super !== null && _super.apply(this, arguments) || this; - } - StyleAttributor.keys = function (node) { - return (node.getAttribute('style') || '').split(';').map(function (value) { - var arr = value.split(':'); - return arr[0].trim(); - }); - }; - StyleAttributor.prototype.add = function (node, value) { - if (!this.canAdd(node, value)) - return false; - // @ts-ignore - node.style[camelize(this.keyName)] = value; - return true; - }; - StyleAttributor.prototype.remove = function (node) { - // @ts-ignore - node.style[camelize(this.keyName)] = ''; - if (!node.getAttribute('style')) { - node.removeAttribute('style'); - } - }; - StyleAttributor.prototype.value = function (node) { - // @ts-ignore - var value = node.style[camelize(this.keyName)]; - return this.canAdd(node, value) ? value : ''; - }; - return StyleAttributor; -}(attributor_1.default)); -exports.default = StyleAttributor; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Theme = function () { - function Theme(quill, options) { - _classCallCheck(this, Theme); - - this.quill = quill; - this.options = options; - this.modules = {}; - } - - _createClass(Theme, [{ - key: 'init', - value: function init() { - var _this = this; - - Object.keys(this.options.modules).forEach(function (name) { - if (_this.modules[name] == null) { - _this.addModule(name); - } - }); - } - }, { - key: 'addModule', - value: function addModule(name) { - var moduleClass = this.quill.constructor.import('modules/' + name); - this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {}); - return this.modules[name]; - } - }]); - - return Theme; -}(); - -Theme.DEFAULTS = { - modules: {} -}; -Theme.themes = { - 'default': Theme -}; - -exports.default = Theme; - -/***/ }), -/* 35 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _text = __webpack_require__(7); - -var _text2 = _interopRequireDefault(_text); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var GUARD_TEXT = '\uFEFF'; - -var Embed = function (_Parchment$Embed) { - _inherits(Embed, _Parchment$Embed); - - function Embed(node) { - _classCallCheck(this, Embed); - - var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node)); - - _this.contentNode = document.createElement('span'); - _this.contentNode.setAttribute('contenteditable', false); - [].slice.call(_this.domNode.childNodes).forEach(function (childNode) { - _this.contentNode.appendChild(childNode); - }); - _this.leftGuard = document.createTextNode(GUARD_TEXT); - _this.rightGuard = document.createTextNode(GUARD_TEXT); - _this.domNode.appendChild(_this.leftGuard); - _this.domNode.appendChild(_this.contentNode); - _this.domNode.appendChild(_this.rightGuard); - return _this; - } - - _createClass(Embed, [{ - key: 'index', - value: function index(node, offset) { - if (node === this.leftGuard) return 0; - if (node === this.rightGuard) return 1; - return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset); - } - }, { - key: 'restore', - value: function restore(node) { - var range = void 0, - textNode = void 0; - var text = node.data.split(GUARD_TEXT).join(''); - if (node === this.leftGuard) { - if (this.prev instanceof _text2.default) { - var prevLength = this.prev.length(); - this.prev.insertAt(prevLength, text); - range = { - startNode: this.prev.domNode, - startOffset: prevLength + text.length - }; - } else { - textNode = document.createTextNode(text); - this.parent.insertBefore(_parchment2.default.create(textNode), this); - range = { - startNode: textNode, - startOffset: text.length - }; - } - } else if (node === this.rightGuard) { - if (this.next instanceof _text2.default) { - this.next.insertAt(0, text); - range = { - startNode: this.next.domNode, - startOffset: text.length - }; - } else { - textNode = document.createTextNode(text); - this.parent.insertBefore(_parchment2.default.create(textNode), this.next); - range = { - startNode: textNode, - startOffset: text.length - }; - } - } - node.data = GUARD_TEXT; - return range; - } - }, { - key: 'update', - value: function update(mutations, context) { - var _this2 = this; - - mutations.forEach(function (mutation) { - if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) { - var range = _this2.restore(mutation.target); - if (range) context.range = range; - } - }); - } - }]); - - return Embed; -}(_parchment2.default.Embed); - -exports.default = Embed; - -/***/ }), -/* 36 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var config = { - scope: _parchment2.default.Scope.BLOCK, - whitelist: ['right', 'center', 'justify'] -}; - -var AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config); -var AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config); -var AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config); - -exports.AlignAttribute = AlignAttribute; -exports.AlignClass = AlignClass; -exports.AlignStyle = AlignStyle; - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.BackgroundStyle = exports.BackgroundClass = undefined; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _color = __webpack_require__(26); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', { - scope: _parchment2.default.Scope.INLINE -}); -var BackgroundStyle = new _color.ColorAttributor('background', 'background-color', { - scope: _parchment2.default.Scope.INLINE -}); - -exports.BackgroundClass = BackgroundClass; -exports.BackgroundStyle = BackgroundStyle; - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var config = { - scope: _parchment2.default.Scope.BLOCK, - whitelist: ['rtl'] -}; - -var DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config); -var DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config); -var DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config); - -exports.DirectionAttribute = DirectionAttribute; -exports.DirectionClass = DirectionClass; -exports.DirectionStyle = DirectionStyle; - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.FontClass = exports.FontStyle = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var config = { - scope: _parchment2.default.Scope.INLINE, - whitelist: ['serif', 'monospace'] -}; - -var FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config); - -var FontStyleAttributor = function (_Parchment$Attributor) { - _inherits(FontStyleAttributor, _Parchment$Attributor); - - function FontStyleAttributor() { - _classCallCheck(this, FontStyleAttributor); - - return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments)); - } - - _createClass(FontStyleAttributor, [{ - key: 'value', - value: function value(node) { - return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/["']/g, ''); - } - }]); - - return FontStyleAttributor; -}(_parchment2.default.Attributor.Style); - -var FontStyle = new FontStyleAttributor('font', 'font-family', config); - -exports.FontStyle = FontStyle; -exports.FontClass = FontClass; - -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SizeStyle = exports.SizeClass = undefined; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', { - scope: _parchment2.default.Scope.INLINE, - whitelist: ['small', 'large', 'huge'] -}); -var SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', { - scope: _parchment2.default.Scope.INLINE, - whitelist: ['10px', '18px', '32px'] -}); - -exports.SizeClass = SizeClass; -exports.SizeStyle = SizeStyle; - -/***/ }), -/* 41 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = { - 'align': { - '': __webpack_require__(76), - 'center': __webpack_require__(77), - 'right': __webpack_require__(78), - 'justify': __webpack_require__(79) - }, - 'background': __webpack_require__(80), - 'blockquote': __webpack_require__(81), - 'bold': __webpack_require__(82), - 'clean': __webpack_require__(83), - 'code': __webpack_require__(58), - 'code-block': __webpack_require__(58), - 'color': __webpack_require__(84), - 'direction': { - '': __webpack_require__(85), - 'rtl': __webpack_require__(86) - }, - 'float': { - 'center': __webpack_require__(87), - 'full': __webpack_require__(88), - 'left': __webpack_require__(89), - 'right': __webpack_require__(90) - }, - 'formula': __webpack_require__(91), - 'header': { - '1': __webpack_require__(92), - '2': __webpack_require__(93) - }, - 'italic': __webpack_require__(94), - 'image': __webpack_require__(95), - 'indent': { - '+1': __webpack_require__(96), - '-1': __webpack_require__(97) - }, - 'link': __webpack_require__(98), - 'list': { - 'ordered': __webpack_require__(99), - 'bullet': __webpack_require__(100), - 'check': __webpack_require__(101) - }, - 'script': { - 'sub': __webpack_require__(102), - 'super': __webpack_require__(103) - }, - 'strike': __webpack_require__(104), - 'underline': __webpack_require__(105), - 'video': __webpack_require__(106) -}; - -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getLastChangeIndex = exports.default = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var History = function (_Module) { - _inherits(History, _Module); - - function History(quill, options) { - _classCallCheck(this, History); - - var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options)); - - _this.lastRecorded = 0; - _this.ignoreChange = false; - _this.clear(); - _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) { - if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return; - if (!_this.options.userOnly || source === _quill2.default.sources.USER) { - _this.record(delta, oldDelta); - } else { - _this.transform(delta); - } - }); - _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this)); - _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this)); - if (/Win/i.test(navigator.platform)) { - _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this)); - } - return _this; - } - - _createClass(History, [{ - key: 'change', - value: function change(source, dest) { - if (this.stack[source].length === 0) return; - var delta = this.stack[source].pop(); - this.stack[dest].push(delta); - this.lastRecorded = 0; - this.ignoreChange = true; - this.quill.updateContents(delta[source], _quill2.default.sources.USER); - this.ignoreChange = false; - var index = getLastChangeIndex(delta[source]); - this.quill.setSelection(index); - } - }, { - key: 'clear', - value: function clear() { - this.stack = { undo: [], redo: [] }; - } - }, { - key: 'cutoff', - value: function cutoff() { - this.lastRecorded = 0; - } - }, { - key: 'record', - value: function record(changeDelta, oldDelta) { - if (changeDelta.ops.length === 0) return; - this.stack.redo = []; - var undoDelta = this.quill.getContents().diff(oldDelta); - var timestamp = Date.now(); - if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) { - var delta = this.stack.undo.pop(); - undoDelta = undoDelta.compose(delta.undo); - changeDelta = delta.redo.compose(changeDelta); - } else { - this.lastRecorded = timestamp; - } - this.stack.undo.push({ - redo: changeDelta, - undo: undoDelta - }); - if (this.stack.undo.length > this.options.maxStack) { - this.stack.undo.shift(); - } - } - }, { - key: 'redo', - value: function redo() { - this.change('redo', 'undo'); - } - }, { - key: 'transform', - value: function transform(delta) { - this.stack.undo.forEach(function (change) { - change.undo = delta.transform(change.undo, true); - change.redo = delta.transform(change.redo, true); - }); - this.stack.redo.forEach(function (change) { - change.undo = delta.transform(change.undo, true); - change.redo = delta.transform(change.redo, true); - }); - } - }, { - key: 'undo', - value: function undo() { - this.change('undo', 'redo'); - } - }]); - - return History; -}(_module2.default); - -History.DEFAULTS = { - delay: 1000, - maxStack: 100, - userOnly: false -}; - -function endsWithNewlineChange(delta) { - var lastOp = delta.ops[delta.ops.length - 1]; - if (lastOp == null) return false; - if (lastOp.insert != null) { - return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\n'); - } - if (lastOp.attributes != null) { - return Object.keys(lastOp.attributes).some(function (attr) { - return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null; - }); - } - return false; -} - -function getLastChangeIndex(delta) { - var deleteLength = delta.reduce(function (length, op) { - length += op.delete || 0; - return length; - }, 0); - var changeIndex = delta.length() - deleteLength; - if (endsWithNewlineChange(delta)) { - changeIndex -= 1; - } - return changeIndex; -} - -exports.default = History; -exports.getLastChangeIndex = getLastChangeIndex; - -/***/ }), -/* 43 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.BaseTooltip = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _emitter = __webpack_require__(8); - -var _emitter2 = _interopRequireDefault(_emitter); - -var _keyboard = __webpack_require__(23); - -var _keyboard2 = _interopRequireDefault(_keyboard); - -var _theme = __webpack_require__(34); - -var _theme2 = _interopRequireDefault(_theme); - -var _colorPicker = __webpack_require__(59); - -var _colorPicker2 = _interopRequireDefault(_colorPicker); - -var _iconPicker = __webpack_require__(60); - -var _iconPicker2 = _interopRequireDefault(_iconPicker); - -var _picker = __webpack_require__(28); - -var _picker2 = _interopRequireDefault(_picker); - -var _tooltip = __webpack_require__(61); - -var _tooltip2 = _interopRequireDefault(_tooltip); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ALIGNS = [false, 'center', 'right', 'justify']; - -var COLORS = ["#000000", "#e60000", "#ff9900", "#ffff00", "#008a00", "#0066cc", "#9933ff", "#ffffff", "#facccc", "#ffebcc", "#ffffcc", "#cce8cc", "#cce0f5", "#ebd6ff", "#bbbbbb", "#f06666", "#ffc266", "#ffff66", "#66b966", "#66a3e0", "#c285ff", "#888888", "#a10000", "#b26b00", "#b2b200", "#006100", "#0047b2", "#6b24b2", "#444444", "#5c0000", "#663d00", "#666600", "#003700", "#002966", "#3d1466"]; - -var FONTS = [false, 'serif', 'monospace']; - -var HEADERS = ['1', '2', '3', false]; - -var SIZES = ['small', false, 'large', 'huge']; - -var BaseTheme = function (_Theme) { - _inherits(BaseTheme, _Theme); - - function BaseTheme(quill, options) { - _classCallCheck(this, BaseTheme); - - var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options)); - - var listener = function listener(e) { - if (!document.body.contains(quill.root)) { - return document.body.removeEventListener('click', listener); - } - if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) { - _this.tooltip.hide(); - } - if (_this.pickers != null) { - _this.pickers.forEach(function (picker) { - if (!picker.container.contains(e.target)) { - picker.close(); - } - }); - } - }; - quill.emitter.listenDOM('click', document.body, listener); - return _this; - } - - _createClass(BaseTheme, [{ - key: 'addModule', - value: function addModule(name) { - var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name); - if (name === 'toolbar') { - this.extendToolbar(module); - } - return module; - } - }, { - key: 'buildButtons', - value: function buildButtons(buttons, icons) { - buttons.forEach(function (button) { - var className = button.getAttribute('class') || ''; - className.split(/\s+/).forEach(function (name) { - if (!name.startsWith('ql-')) return; - name = name.slice('ql-'.length); - if (icons[name] == null) return; - if (name === 'direction') { - button.innerHTML = icons[name][''] + icons[name]['rtl']; - } else if (typeof icons[name] === 'string') { - button.innerHTML = icons[name]; - } else { - var value = button.value || ''; - if (value != null && icons[name][value]) { - button.innerHTML = icons[name][value]; - } - } - }); - }); - } - }, { - key: 'buildPickers', - value: function buildPickers(selects, icons) { - var _this2 = this; - - this.pickers = selects.map(function (select) { - if (select.classList.contains('ql-align')) { - if (select.querySelector('option') == null) { - fillSelect(select, ALIGNS); - } - return new _iconPicker2.default(select, icons.align); - } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) { - var format = select.classList.contains('ql-background') ? 'background' : 'color'; - if (select.querySelector('option') == null) { - fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000'); - } - return new _colorPicker2.default(select, icons[format]); - } else { - if (select.querySelector('option') == null) { - if (select.classList.contains('ql-font')) { - fillSelect(select, FONTS); - } else if (select.classList.contains('ql-header')) { - fillSelect(select, HEADERS); - } else if (select.classList.contains('ql-size')) { - fillSelect(select, SIZES); - } - } - return new _picker2.default(select); - } - }); - var update = function update() { - _this2.pickers.forEach(function (picker) { - picker.update(); - }); - }; - this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update); - } - }]); - - return BaseTheme; -}(_theme2.default); - -BaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, { - modules: { - toolbar: { - handlers: { - formula: function formula() { - this.quill.theme.tooltip.edit('formula'); - }, - image: function image() { - var _this3 = this; - - var fileInput = this.container.querySelector('input.ql-image[type=file]'); - if (fileInput == null) { - fileInput = document.createElement('input'); - fileInput.setAttribute('type', 'file'); - fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon'); - fileInput.classList.add('ql-image'); - fileInput.addEventListener('change', function () { - if (fileInput.files != null && fileInput.files[0] != null) { - var reader = new FileReader(); - reader.onload = function (e) { - var range = _this3.quill.getSelection(true); - _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER); - _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT); - fileInput.value = ""; - }; - reader.readAsDataURL(fileInput.files[0]); - } - }); - this.container.appendChild(fileInput); - } - fileInput.click(); - }, - video: function video() { - this.quill.theme.tooltip.edit('video'); - } - } - } - } -}); - -var BaseTooltip = function (_Tooltip) { - _inherits(BaseTooltip, _Tooltip); - - function BaseTooltip(quill, boundsContainer) { - _classCallCheck(this, BaseTooltip); - - var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer)); - - _this4.textbox = _this4.root.querySelector('input[type="text"]'); - _this4.listen(); - return _this4; - } - - _createClass(BaseTooltip, [{ - key: 'listen', - value: function listen() { - var _this5 = this; - - this.textbox.addEventListener('keydown', function (event) { - if (_keyboard2.default.match(event, 'enter')) { - _this5.save(); - event.preventDefault(); - } else if (_keyboard2.default.match(event, 'escape')) { - _this5.cancel(); - event.preventDefault(); - } - }); - } - }, { - key: 'cancel', - value: function cancel() { - this.hide(); - } - }, { - key: 'edit', - value: function edit() { - var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link'; - var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - this.root.classList.remove('ql-hidden'); - this.root.classList.add('ql-editing'); - if (preview != null) { - this.textbox.value = preview; - } else if (mode !== this.root.getAttribute('data-mode')) { - this.textbox.value = ''; - } - this.position(this.quill.getBounds(this.quill.selection.savedRange)); - this.textbox.select(); - this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || ''); - this.root.setAttribute('data-mode', mode); - } - }, { - key: 'restoreFocus', - value: function restoreFocus() { - var scrollTop = this.quill.scrollingContainer.scrollTop; - this.quill.focus(); - this.quill.scrollingContainer.scrollTop = scrollTop; - } - }, { - key: 'save', - value: function save() { - var value = this.textbox.value; - switch (this.root.getAttribute('data-mode')) { - case 'link': - { - var scrollTop = this.quill.root.scrollTop; - if (this.linkRange) { - this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER); - delete this.linkRange; - } else { - this.restoreFocus(); - this.quill.format('link', value, _emitter2.default.sources.USER); - } - this.quill.root.scrollTop = scrollTop; - break; - } - case 'video': - { - value = extractVideoUrl(value); - } // eslint-disable-next-line no-fallthrough - case 'formula': - { - if (!value) break; - var range = this.quill.getSelection(true); - if (range != null) { - var index = range.index + range.length; - this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER); - if (this.root.getAttribute('data-mode') === 'formula') { - this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER); - } - this.quill.setSelection(index + 2, _emitter2.default.sources.USER); - } - break; - } - default: - } - this.textbox.value = ''; - this.hide(); - } - }]); - - return BaseTooltip; -}(_tooltip2.default); - -function extractVideoUrl(url) { - var match = url.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/); - if (match) { - return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0'; - } - if (match = url.match(/^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/)) { - // eslint-disable-line no-cond-assign - return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/'; - } - return url; -} - -function fillSelect(select, values) { - var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - values.forEach(function (value) { - var option = document.createElement('option'); - if (value === defaultValue) { - option.setAttribute('selected', 'selected'); - } else { - option.setAttribute('value', value); - } - select.appendChild(option); - }); -} - -exports.BaseTooltip = BaseTooltip; -exports.default = BaseTheme; - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var LinkedList = /** @class */ (function () { - function LinkedList() { - this.head = this.tail = null; - this.length = 0; - } - LinkedList.prototype.append = function () { - var nodes = []; - for (var _i = 0; _i < arguments.length; _i++) { - nodes[_i] = arguments[_i]; - } - this.insertBefore(nodes[0], null); - if (nodes.length > 1) { - this.append.apply(this, nodes.slice(1)); - } - }; - LinkedList.prototype.contains = function (node) { - var cur, next = this.iterator(); - while ((cur = next())) { - if (cur === node) - return true; - } - return false; - }; - LinkedList.prototype.insertBefore = function (node, refNode) { - if (!node) - return; - node.next = refNode; - if (refNode != null) { - node.prev = refNode.prev; - if (refNode.prev != null) { - refNode.prev.next = node; - } - refNode.prev = node; - if (refNode === this.head) { - this.head = node; - } - } - else if (this.tail != null) { - this.tail.next = node; - node.prev = this.tail; - this.tail = node; - } - else { - node.prev = null; - this.head = this.tail = node; - } - this.length += 1; - }; - LinkedList.prototype.offset = function (target) { - var index = 0, cur = this.head; - while (cur != null) { - if (cur === target) - return index; - index += cur.length(); - cur = cur.next; - } - return -1; - }; - LinkedList.prototype.remove = function (node) { - if (!this.contains(node)) - return; - if (node.prev != null) - node.prev.next = node.next; - if (node.next != null) - node.next.prev = node.prev; - if (node === this.head) - this.head = node.next; - if (node === this.tail) - this.tail = node.prev; - this.length -= 1; - }; - LinkedList.prototype.iterator = function (curNode) { - if (curNode === void 0) { curNode = this.head; } - // TODO use yield when we can - return function () { - var ret = curNode; - if (curNode != null) - curNode = curNode.next; - return ret; - }; - }; - LinkedList.prototype.find = function (index, inclusive) { - if (inclusive === void 0) { inclusive = false; } - var cur, next = this.iterator(); - while ((cur = next())) { - var length = cur.length(); - if (index < length || - (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) { - return [cur, index]; - } - index -= length; - } - return [null, 0]; - }; - LinkedList.prototype.forEach = function (callback) { - var cur, next = this.iterator(); - while ((cur = next())) { - callback(cur); - } - }; - LinkedList.prototype.forEachAt = function (index, length, callback) { - if (length <= 0) - return; - var _a = this.find(index), startNode = _a[0], offset = _a[1]; - var cur, curIndex = index - offset, next = this.iterator(startNode); - while ((cur = next()) && curIndex < index + length) { - var curLength = cur.length(); - if (index > curIndex) { - callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index)); - } - else { - callback(cur, 0, Math.min(curLength, index + length - curIndex)); - } - curIndex += curLength; - } - }; - LinkedList.prototype.map = function (callback) { - return this.reduce(function (memo, cur) { - memo.push(callback(cur)); - return memo; - }, []); - }; - LinkedList.prototype.reduce = function (callback, memo) { - var cur, next = this.iterator(); - while ((cur = next())) { - memo = callback(memo, cur); - } - return memo; - }; - return LinkedList; -}()); -exports.default = LinkedList; - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var container_1 = __webpack_require__(17); -var Registry = __webpack_require__(1); -var OBSERVER_CONFIG = { - attributes: true, - characterData: true, - characterDataOldValue: true, - childList: true, - subtree: true, -}; -var MAX_OPTIMIZE_ITERATIONS = 100; -var ScrollBlot = /** @class */ (function (_super) { - __extends(ScrollBlot, _super); - function ScrollBlot(node) { - var _this = _super.call(this, node) || this; - _this.scroll = _this; - _this.observer = new MutationObserver(function (mutations) { - _this.update(mutations); - }); - _this.observer.observe(_this.domNode, OBSERVER_CONFIG); - _this.attach(); - return _this; - } - ScrollBlot.prototype.detach = function () { - _super.prototype.detach.call(this); - this.observer.disconnect(); - }; - ScrollBlot.prototype.deleteAt = function (index, length) { - this.update(); - if (index === 0 && length === this.length()) { - this.children.forEach(function (child) { - child.remove(); - }); - } - else { - _super.prototype.deleteAt.call(this, index, length); - } - }; - ScrollBlot.prototype.formatAt = function (index, length, name, value) { - this.update(); - _super.prototype.formatAt.call(this, index, length, name, value); - }; - ScrollBlot.prototype.insertAt = function (index, value, def) { - this.update(); - _super.prototype.insertAt.call(this, index, value, def); - }; - ScrollBlot.prototype.optimize = function (mutations, context) { - var _this = this; - if (mutations === void 0) { mutations = []; } - if (context === void 0) { context = {}; } - _super.prototype.optimize.call(this, context); - // We must modify mutations directly, cannot make copy and then modify - var records = [].slice.call(this.observer.takeRecords()); - // Array.push currently seems to be implemented by a non-tail recursive function - // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords()); - while (records.length > 0) - mutations.push(records.pop()); - // TODO use WeakMap - var mark = function (blot, markParent) { - if (markParent === void 0) { markParent = true; } - if (blot == null || blot === _this) - return; - if (blot.domNode.parentNode == null) - return; - // @ts-ignore - if (blot.domNode[Registry.DATA_KEY].mutations == null) { - // @ts-ignore - blot.domNode[Registry.DATA_KEY].mutations = []; - } - if (markParent) - mark(blot.parent); - }; - var optimize = function (blot) { - // Post-order traversal - if ( - // @ts-ignore - blot.domNode[Registry.DATA_KEY] == null || - // @ts-ignore - blot.domNode[Registry.DATA_KEY].mutations == null) { - return; - } - if (blot instanceof container_1.default) { - blot.children.forEach(optimize); - } - blot.optimize(context); - }; - var remaining = mutations; - for (var i = 0; remaining.length > 0; i += 1) { - if (i >= MAX_OPTIMIZE_ITERATIONS) { - throw new Error('[Parchment] Maximum optimize iterations reached'); - } - remaining.forEach(function (mutation) { - var blot = Registry.find(mutation.target, true); - if (blot == null) - return; - if (blot.domNode === mutation.target) { - if (mutation.type === 'childList') { - mark(Registry.find(mutation.previousSibling, false)); - [].forEach.call(mutation.addedNodes, function (node) { - var child = Registry.find(node, false); - mark(child, false); - if (child instanceof container_1.default) { - child.children.forEach(function (grandChild) { - mark(grandChild, false); - }); - } - }); - } - else if (mutation.type === 'attributes') { - mark(blot.prev); - } - } - mark(blot); - }); - this.children.forEach(optimize); - remaining = [].slice.call(this.observer.takeRecords()); - records = remaining.slice(); - while (records.length > 0) - mutations.push(records.pop()); - } - }; - ScrollBlot.prototype.update = function (mutations, context) { - var _this = this; - if (context === void 0) { context = {}; } - mutations = mutations || this.observer.takeRecords(); - // TODO use WeakMap - mutations - .map(function (mutation) { - var blot = Registry.find(mutation.target, true); - if (blot == null) - return null; - // @ts-ignore - if (blot.domNode[Registry.DATA_KEY].mutations == null) { - // @ts-ignore - blot.domNode[Registry.DATA_KEY].mutations = [mutation]; - return blot; - } - else { - // @ts-ignore - blot.domNode[Registry.DATA_KEY].mutations.push(mutation); - return null; - } - }) - .forEach(function (blot) { - if (blot == null || - blot === _this || - //@ts-ignore - blot.domNode[Registry.DATA_KEY] == null) - return; - // @ts-ignore - blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context); - }); - // @ts-ignore - if (this.domNode[Registry.DATA_KEY].mutations != null) { - // @ts-ignore - _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context); - } - this.optimize(mutations, context); - }; - ScrollBlot.blotName = 'scroll'; - ScrollBlot.defaultChild = 'block'; - ScrollBlot.scope = Registry.Scope.BLOCK_BLOT; - ScrollBlot.tagName = 'DIV'; - return ScrollBlot; -}(container_1.default)); -exports.default = ScrollBlot; - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var format_1 = __webpack_require__(18); -var Registry = __webpack_require__(1); -// Shallow object comparison -function isEqual(obj1, obj2) { - if (Object.keys(obj1).length !== Object.keys(obj2).length) - return false; - // @ts-ignore - for (var prop in obj1) { - // @ts-ignore - if (obj1[prop] !== obj2[prop]) - return false; - } - return true; -} -var InlineBlot = /** @class */ (function (_super) { - __extends(InlineBlot, _super); - function InlineBlot() { - return _super !== null && _super.apply(this, arguments) || this; - } - InlineBlot.formats = function (domNode) { - if (domNode.tagName === InlineBlot.tagName) - return undefined; - return _super.formats.call(this, domNode); - }; - InlineBlot.prototype.format = function (name, value) { - var _this = this; - if (name === this.statics.blotName && !value) { - this.children.forEach(function (child) { - if (!(child instanceof format_1.default)) { - child = child.wrap(InlineBlot.blotName, true); - } - _this.attributes.copy(child); - }); - this.unwrap(); - } - else { - _super.prototype.format.call(this, name, value); - } - }; - InlineBlot.prototype.formatAt = function (index, length, name, value) { - if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) { - var blot = this.isolate(index, length); - blot.format(name, value); - } - else { - _super.prototype.formatAt.call(this, index, length, name, value); - } - }; - InlineBlot.prototype.optimize = function (context) { - _super.prototype.optimize.call(this, context); - var formats = this.formats(); - if (Object.keys(formats).length === 0) { - return this.unwrap(); // unformatted span - } - var next = this.next; - if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) { - next.moveChildren(this); - next.remove(); - } - }; - InlineBlot.blotName = 'inline'; - InlineBlot.scope = Registry.Scope.INLINE_BLOT; - InlineBlot.tagName = 'SPAN'; - return InlineBlot; -}(format_1.default)); -exports.default = InlineBlot; - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var format_1 = __webpack_require__(18); -var Registry = __webpack_require__(1); -var BlockBlot = /** @class */ (function (_super) { - __extends(BlockBlot, _super); - function BlockBlot() { - return _super !== null && _super.apply(this, arguments) || this; - } - BlockBlot.formats = function (domNode) { - var tagName = Registry.query(BlockBlot.blotName).tagName; - if (domNode.tagName === tagName) - return undefined; - return _super.formats.call(this, domNode); - }; - BlockBlot.prototype.format = function (name, value) { - if (Registry.query(name, Registry.Scope.BLOCK) == null) { - return; - } - else if (name === this.statics.blotName && !value) { - this.replaceWith(BlockBlot.blotName); - } - else { - _super.prototype.format.call(this, name, value); - } - }; - BlockBlot.prototype.formatAt = function (index, length, name, value) { - if (Registry.query(name, Registry.Scope.BLOCK) != null) { - this.format(name, value); - } - else { - _super.prototype.formatAt.call(this, index, length, name, value); - } - }; - BlockBlot.prototype.insertAt = function (index, value, def) { - if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) { - // Insert text or inline - _super.prototype.insertAt.call(this, index, value, def); - } - else { - var after = this.split(index); - var blot = Registry.create(value, def); - after.parent.insertBefore(blot, after); - } - }; - BlockBlot.prototype.update = function (mutations, context) { - if (navigator.userAgent.match(/Trident/)) { - this.build(); - } - else { - _super.prototype.update.call(this, mutations, context); - } - }; - BlockBlot.blotName = 'block'; - BlockBlot.scope = Registry.Scope.BLOCK_BLOT; - BlockBlot.tagName = 'P'; - return BlockBlot; -}(format_1.default)); -exports.default = BlockBlot; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var leaf_1 = __webpack_require__(19); -var EmbedBlot = /** @class */ (function (_super) { - __extends(EmbedBlot, _super); - function EmbedBlot() { - return _super !== null && _super.apply(this, arguments) || this; - } - EmbedBlot.formats = function (domNode) { - return undefined; - }; - EmbedBlot.prototype.format = function (name, value) { - // super.formatAt wraps, which is what we want in general, - // but this allows subclasses to overwrite for formats - // that just apply to particular embeds - _super.prototype.formatAt.call(this, 0, this.length(), name, value); - }; - EmbedBlot.prototype.formatAt = function (index, length, name, value) { - if (index === 0 && length === this.length()) { - this.format(name, value); - } - else { - _super.prototype.formatAt.call(this, index, length, name, value); - } - }; - EmbedBlot.prototype.formats = function () { - return this.statics.formats(this.domNode); - }; - return EmbedBlot; -}(leaf_1.default)); -exports.default = EmbedBlot; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var leaf_1 = __webpack_require__(19); -var Registry = __webpack_require__(1); -var TextBlot = /** @class */ (function (_super) { - __extends(TextBlot, _super); - function TextBlot(node) { - var _this = _super.call(this, node) || this; - _this.text = _this.statics.value(_this.domNode); - return _this; - } - TextBlot.create = function (value) { - return document.createTextNode(value); - }; - TextBlot.value = function (domNode) { - var text = domNode.data; - // @ts-ignore - if (text['normalize']) - text = text['normalize'](); - return text; - }; - TextBlot.prototype.deleteAt = function (index, length) { - this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length); - }; - TextBlot.prototype.index = function (node, offset) { - if (this.domNode === node) { - return offset; - } - return -1; - }; - TextBlot.prototype.insertAt = function (index, value, def) { - if (def == null) { - this.text = this.text.slice(0, index) + value + this.text.slice(index); - this.domNode.data = this.text; - } - else { - _super.prototype.insertAt.call(this, index, value, def); - } - }; - TextBlot.prototype.length = function () { - return this.text.length; - }; - TextBlot.prototype.optimize = function (context) { - _super.prototype.optimize.call(this, context); - this.text = this.statics.value(this.domNode); - if (this.text.length === 0) { - this.remove(); - } - else if (this.next instanceof TextBlot && this.next.prev === this) { - this.insertAt(this.length(), this.next.value()); - this.next.remove(); - } - }; - TextBlot.prototype.position = function (index, inclusive) { - if (inclusive === void 0) { inclusive = false; } - return [this.domNode, index]; - }; - TextBlot.prototype.split = function (index, force) { - if (force === void 0) { force = false; } - if (!force) { - if (index === 0) - return this; - if (index === this.length()) - return this.next; - } - var after = Registry.create(this.domNode.splitText(index)); - this.parent.insertBefore(after, this.next); - this.text = this.statics.value(this.domNode); - return after; - }; - TextBlot.prototype.update = function (mutations, context) { - var _this = this; - if (mutations.some(function (mutation) { - return mutation.type === 'characterData' && mutation.target === _this.domNode; - })) { - this.text = this.statics.value(this.domNode); - } - }; - TextBlot.prototype.value = function () { - return this.text; - }; - TextBlot.blotName = 'text'; - TextBlot.scope = Registry.Scope.INLINE_BLOT; - return TextBlot; -}(leaf_1.default)); -exports.default = TextBlot; - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var elem = document.createElement('div'); -elem.classList.toggle('test-class', false); -if (elem.classList.contains('test-class')) { - var _toggle = DOMTokenList.prototype.toggle; - DOMTokenList.prototype.toggle = function (token, force) { - if (arguments.length > 1 && !this.contains(token) === !force) { - return force; - } else { - return _toggle.call(this, token); - } - }; -} - -if (!String.prototype.startsWith) { - String.prototype.startsWith = function (searchString, position) { - position = position || 0; - return this.substr(position, searchString.length) === searchString; - }; -} - -if (!String.prototype.endsWith) { - String.prototype.endsWith = function (searchString, position) { - var subjectString = this.toString(); - if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { - position = subjectString.length; - } - position -= searchString.length; - var lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; -} - -if (!Array.prototype.find) { - Object.defineProperty(Array.prototype, "find", { - value: function value(predicate) { - if (this === null) { - throw new TypeError('Array.prototype.find called on null or undefined'); - } - if (typeof predicate !== 'function') { - throw new TypeError('predicate must be a function'); - } - var list = Object(this); - var length = list.length >>> 0; - var thisArg = arguments[1]; - var value; - - for (var i = 0; i < length; i++) { - value = list[i]; - if (predicate.call(thisArg, value, i, list)) { - return value; - } - } - return undefined; - } - }); -} - -document.addEventListener("DOMContentLoaded", function () { - // Disable resizing in Firefox - document.execCommand("enableObjectResizing", false, false); - // Disable automatic linkifying in IE11 - document.execCommand("autoUrlDetect", false, false); -}); - -/***/ }), -/* 51 */ -/***/ (function(module, exports) { - -/** - * This library modifies the diff-patch-match library by Neil Fraser - * by removing the patch and match functionality and certain advanced - * options in the diff function. The original license is as follows: - * - * === - * - * Diff Match and Patch - * - * Copyright 2006 Google Inc. - * http://code.google.com/p/google-diff-match-patch/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/** - * The data structure representing a diff is an array of tuples: - * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']] - * which means: delete 'Hello', add 'Goodbye' and keep ' world.' - */ -var DIFF_DELETE = -1; -var DIFF_INSERT = 1; -var DIFF_EQUAL = 0; - - -/** - * Find the differences between two texts. Simplifies the problem by stripping - * any common prefix or suffix off the texts before diffing. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {Int} cursor_pos Expected edit position in text1 (optional) - * @return {Array} Array of diff tuples. - */ -function diff_main(text1, text2, cursor_pos) { - // Check for equality (speedup). - if (text1 == text2) { - if (text1) { - return [[DIFF_EQUAL, text1]]; - } - return []; - } - - // Check cursor_pos within bounds - if (cursor_pos < 0 || text1.length < cursor_pos) { - cursor_pos = null; - } - - // Trim off common prefix (speedup). - var commonlength = diff_commonPrefix(text1, text2); - var commonprefix = text1.substring(0, commonlength); - text1 = text1.substring(commonlength); - text2 = text2.substring(commonlength); - - // Trim off common suffix (speedup). - commonlength = diff_commonSuffix(text1, text2); - var commonsuffix = text1.substring(text1.length - commonlength); - text1 = text1.substring(0, text1.length - commonlength); - text2 = text2.substring(0, text2.length - commonlength); - - // Compute the diff on the middle block. - var diffs = diff_compute_(text1, text2); - - // Restore the prefix and suffix. - if (commonprefix) { - diffs.unshift([DIFF_EQUAL, commonprefix]); - } - if (commonsuffix) { - diffs.push([DIFF_EQUAL, commonsuffix]); - } - diff_cleanupMerge(diffs); - if (cursor_pos != null) { - diffs = fix_cursor(diffs, cursor_pos); - } - diffs = fix_emoji(diffs); - return diffs; -}; - - -/** - * Find the differences between two texts. Assumes that the texts do not - * have any common prefix or suffix. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @return {Array} Array of diff tuples. - */ -function diff_compute_(text1, text2) { - var diffs; - - if (!text1) { - // Just add some text (speedup). - return [[DIFF_INSERT, text2]]; - } - - if (!text2) { - // Just delete some text (speedup). - return [[DIFF_DELETE, text1]]; - } - - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - var i = longtext.indexOf(shorttext); - if (i != -1) { - // Shorter text is inside the longer text (speedup). - diffs = [[DIFF_INSERT, longtext.substring(0, i)], - [DIFF_EQUAL, shorttext], - [DIFF_INSERT, longtext.substring(i + shorttext.length)]]; - // Swap insertions for deletions if diff is reversed. - if (text1.length > text2.length) { - diffs[0][0] = diffs[2][0] = DIFF_DELETE; - } - return diffs; - } - - if (shorttext.length == 1) { - // Single character string. - // After the previous speedup, the character can't be an equality. - return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; - } - - // Check to see if the problem can be split in two. - var hm = diff_halfMatch_(text1, text2); - if (hm) { - // A half-match was found, sort out the return data. - var text1_a = hm[0]; - var text1_b = hm[1]; - var text2_a = hm[2]; - var text2_b = hm[3]; - var mid_common = hm[4]; - // Send both pairs off for separate processing. - var diffs_a = diff_main(text1_a, text2_a); - var diffs_b = diff_main(text1_b, text2_b); - // Merge the results. - return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b); - } - - return diff_bisect_(text1, text2); -}; - - -/** - * Find the 'middle snake' of a diff, split the problem in two - * and return the recursively constructed diff. - * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @return {Array} Array of diff tuples. - * @private - */ -function diff_bisect_(text1, text2) { - // Cache the text lengths to prevent multiple calls. - var text1_length = text1.length; - var text2_length = text2.length; - var max_d = Math.ceil((text1_length + text2_length) / 2); - var v_offset = max_d; - var v_length = 2 * max_d; - var v1 = new Array(v_length); - var v2 = new Array(v_length); - // Setting all elements to -1 is faster in Chrome & Firefox than mixing - // integers and undefined. - for (var x = 0; x < v_length; x++) { - v1[x] = -1; - v2[x] = -1; - } - v1[v_offset + 1] = 0; - v2[v_offset + 1] = 0; - var delta = text1_length - text2_length; - // If the total number of characters is odd, then the front path will collide - // with the reverse path. - var front = (delta % 2 != 0); - // Offsets for start and end of k loop. - // Prevents mapping of space beyond the grid. - var k1start = 0; - var k1end = 0; - var k2start = 0; - var k2end = 0; - for (var d = 0; d < max_d; d++) { - // Walk the front path one step. - for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { - var k1_offset = v_offset + k1; - var x1; - if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) { - x1 = v1[k1_offset + 1]; - } else { - x1 = v1[k1_offset - 1] + 1; - } - var y1 = x1 - k1; - while (x1 < text1_length && y1 < text2_length && - text1.charAt(x1) == text2.charAt(y1)) { - x1++; - y1++; - } - v1[k1_offset] = x1; - if (x1 > text1_length) { - // Ran off the right of the graph. - k1end += 2; - } else if (y1 > text2_length) { - // Ran off the bottom of the graph. - k1start += 2; - } else if (front) { - var k2_offset = v_offset + delta - k1; - if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) { - // Mirror x2 onto top-left coordinate system. - var x2 = text1_length - v2[k2_offset]; - if (x1 >= x2) { - // Overlap detected. - return diff_bisectSplit_(text1, text2, x1, y1); - } - } - } - } - - // Walk the reverse path one step. - for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { - var k2_offset = v_offset + k2; - var x2; - if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) { - x2 = v2[k2_offset + 1]; - } else { - x2 = v2[k2_offset - 1] + 1; - } - var y2 = x2 - k2; - while (x2 < text1_length && y2 < text2_length && - text1.charAt(text1_length - x2 - 1) == - text2.charAt(text2_length - y2 - 1)) { - x2++; - y2++; - } - v2[k2_offset] = x2; - if (x2 > text1_length) { - // Ran off the left of the graph. - k2end += 2; - } else if (y2 > text2_length) { - // Ran off the top of the graph. - k2start += 2; - } else if (!front) { - var k1_offset = v_offset + delta - k2; - if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) { - var x1 = v1[k1_offset]; - var y1 = v_offset + x1 - k1_offset; - // Mirror x2 onto top-left coordinate system. - x2 = text1_length - x2; - if (x1 >= x2) { - // Overlap detected. - return diff_bisectSplit_(text1, text2, x1, y1); - } - } - } - } - } - // Diff took too long and hit the deadline or - // number of diffs equals number of characters, no commonality at all. - return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; -}; - - -/** - * Given the location of the 'middle snake', split the diff in two parts - * and recurse. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {number} x Index of split point in text1. - * @param {number} y Index of split point in text2. - * @return {Array} Array of diff tuples. - */ -function diff_bisectSplit_(text1, text2, x, y) { - var text1a = text1.substring(0, x); - var text2a = text2.substring(0, y); - var text1b = text1.substring(x); - var text2b = text2.substring(y); - - // Compute both diffs serially. - var diffs = diff_main(text1a, text2a); - var diffsb = diff_main(text1b, text2b); - - return diffs.concat(diffsb); -}; - - -/** - * Determine the common prefix of two strings. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the start of each - * string. - */ -function diff_commonPrefix(text1, text2) { - // Quick check for common null cases. - if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) { - return 0; - } - // Binary search. - // Performance analysis: http://neil.fraser.name/news/2007/10/09/ - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - var pointerstart = 0; - while (pointermin < pointermid) { - if (text1.substring(pointerstart, pointermid) == - text2.substring(pointerstart, pointermid)) { - pointermin = pointermid; - pointerstart = pointermin; - } else { - pointermax = pointermid; - } - pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); - } - return pointermid; -}; - - -/** - * Determine the common suffix of two strings. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the end of each string. - */ -function diff_commonSuffix(text1, text2) { - // Quick check for common null cases. - if (!text1 || !text2 || - text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) { - return 0; - } - // Binary search. - // Performance analysis: http://neil.fraser.name/news/2007/10/09/ - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - var pointerend = 0; - while (pointermin < pointermid) { - if (text1.substring(text1.length - pointermid, text1.length - pointerend) == - text2.substring(text2.length - pointermid, text2.length - pointerend)) { - pointermin = pointermid; - pointerend = pointermin; - } else { - pointermax = pointermid; - } - pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); - } - return pointermid; -}; - - -/** - * Do the two texts share a substring which is at least half the length of the - * longer text? - * This speedup can produce non-minimal diffs. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {Array.} Five element Array, containing the prefix of - * text1, the suffix of text1, the prefix of text2, the suffix of - * text2 and the common middle. Or null if there was no match. - */ -function diff_halfMatch_(text1, text2) { - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - if (longtext.length < 4 || shorttext.length * 2 < longtext.length) { - return null; // Pointless. - } - - /** - * Does a substring of shorttext exist within longtext such that the substring - * is at least half the length of longtext? - * Closure, but does not reference any external variables. - * @param {string} longtext Longer string. - * @param {string} shorttext Shorter string. - * @param {number} i Start index of quarter length substring within longtext. - * @return {Array.} Five element Array, containing the prefix of - * longtext, the suffix of longtext, the prefix of shorttext, the suffix - * of shorttext and the common middle. Or null if there was no match. - * @private - */ - function diff_halfMatchI_(longtext, shorttext, i) { - // Start with a 1/4 length substring at position i as a seed. - var seed = longtext.substring(i, i + Math.floor(longtext.length / 4)); - var j = -1; - var best_common = ''; - var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; - while ((j = shorttext.indexOf(seed, j + 1)) != -1) { - var prefixLength = diff_commonPrefix(longtext.substring(i), - shorttext.substring(j)); - var suffixLength = diff_commonSuffix(longtext.substring(0, i), - shorttext.substring(0, j)); - if (best_common.length < suffixLength + prefixLength) { - best_common = shorttext.substring(j - suffixLength, j) + - shorttext.substring(j, j + prefixLength); - best_longtext_a = longtext.substring(0, i - suffixLength); - best_longtext_b = longtext.substring(i + prefixLength); - best_shorttext_a = shorttext.substring(0, j - suffixLength); - best_shorttext_b = shorttext.substring(j + prefixLength); - } - } - if (best_common.length * 2 >= longtext.length) { - return [best_longtext_a, best_longtext_b, - best_shorttext_a, best_shorttext_b, best_common]; - } else { - return null; - } - } - - // First check if the second quarter is the seed for a half-match. - var hm1 = diff_halfMatchI_(longtext, shorttext, - Math.ceil(longtext.length / 4)); - // Check again based on the third quarter. - var hm2 = diff_halfMatchI_(longtext, shorttext, - Math.ceil(longtext.length / 2)); - var hm; - if (!hm1 && !hm2) { - return null; - } else if (!hm2) { - hm = hm1; - } else if (!hm1) { - hm = hm2; - } else { - // Both matched. Select the longest. - hm = hm1[4].length > hm2[4].length ? hm1 : hm2; - } - - // A half-match was found, sort out the return data. - var text1_a, text1_b, text2_a, text2_b; - if (text1.length > text2.length) { - text1_a = hm[0]; - text1_b = hm[1]; - text2_a = hm[2]; - text2_b = hm[3]; - } else { - text2_a = hm[0]; - text2_b = hm[1]; - text1_a = hm[2]; - text1_b = hm[3]; - } - var mid_common = hm[4]; - return [text1_a, text1_b, text2_a, text2_b, mid_common]; -}; - - -/** - * Reorder and merge like edit sections. Merge equalities. - * Any edit section can move as long as it doesn't cross an equality. - * @param {Array} diffs Array of diff tuples. - */ -function diff_cleanupMerge(diffs) { - diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end. - var pointer = 0; - var count_delete = 0; - var count_insert = 0; - var text_delete = ''; - var text_insert = ''; - var commonlength; - while (pointer < diffs.length) { - switch (diffs[pointer][0]) { - case DIFF_INSERT: - count_insert++; - text_insert += diffs[pointer][1]; - pointer++; - break; - case DIFF_DELETE: - count_delete++; - text_delete += diffs[pointer][1]; - pointer++; - break; - case DIFF_EQUAL: - // Upon reaching an equality, check for prior redundancies. - if (count_delete + count_insert > 1) { - if (count_delete !== 0 && count_insert !== 0) { - // Factor out any common prefixies. - commonlength = diff_commonPrefix(text_insert, text_delete); - if (commonlength !== 0) { - if ((pointer - count_delete - count_insert) > 0 && - diffs[pointer - count_delete - count_insert - 1][0] == - DIFF_EQUAL) { - diffs[pointer - count_delete - count_insert - 1][1] += - text_insert.substring(0, commonlength); - } else { - diffs.splice(0, 0, [DIFF_EQUAL, - text_insert.substring(0, commonlength)]); - pointer++; - } - text_insert = text_insert.substring(commonlength); - text_delete = text_delete.substring(commonlength); - } - // Factor out any common suffixies. - commonlength = diff_commonSuffix(text_insert, text_delete); - if (commonlength !== 0) { - diffs[pointer][1] = text_insert.substring(text_insert.length - - commonlength) + diffs[pointer][1]; - text_insert = text_insert.substring(0, text_insert.length - - commonlength); - text_delete = text_delete.substring(0, text_delete.length - - commonlength); - } - } - // Delete the offending records and add the merged ones. - if (count_delete === 0) { - diffs.splice(pointer - count_insert, - count_delete + count_insert, [DIFF_INSERT, text_insert]); - } else if (count_insert === 0) { - diffs.splice(pointer - count_delete, - count_delete + count_insert, [DIFF_DELETE, text_delete]); - } else { - diffs.splice(pointer - count_delete - count_insert, - count_delete + count_insert, [DIFF_DELETE, text_delete], - [DIFF_INSERT, text_insert]); - } - pointer = pointer - count_delete - count_insert + - (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1; - } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) { - // Merge this equality with the previous one. - diffs[pointer - 1][1] += diffs[pointer][1]; - diffs.splice(pointer, 1); - } else { - pointer++; - } - count_insert = 0; - count_delete = 0; - text_delete = ''; - text_insert = ''; - break; - } - } - if (diffs[diffs.length - 1][1] === '') { - diffs.pop(); // Remove the dummy entry at the end. - } - - // Second pass: look for single edits surrounded on both sides by equalities - // which can be shifted sideways to eliminate an equality. - // e.g: ABAC -> ABAC - var changes = false; - pointer = 1; - // Intentionally ignore the first and last element (don't need checking). - while (pointer < diffs.length - 1) { - if (diffs[pointer - 1][0] == DIFF_EQUAL && - diffs[pointer + 1][0] == DIFF_EQUAL) { - // This is a single edit surrounded by equalities. - if (diffs[pointer][1].substring(diffs[pointer][1].length - - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) { - // Shift the edit over the previous equality. - diffs[pointer][1] = diffs[pointer - 1][1] + - diffs[pointer][1].substring(0, diffs[pointer][1].length - - diffs[pointer - 1][1].length); - diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; - diffs.splice(pointer - 1, 1); - changes = true; - } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == - diffs[pointer + 1][1]) { - // Shift the edit over the next equality. - diffs[pointer - 1][1] += diffs[pointer + 1][1]; - diffs[pointer][1] = - diffs[pointer][1].substring(diffs[pointer + 1][1].length) + - diffs[pointer + 1][1]; - diffs.splice(pointer + 1, 1); - changes = true; - } - } - pointer++; - } - // If shifts were made, the diff needs reordering and another shift sweep. - if (changes) { - diff_cleanupMerge(diffs); - } -}; - - -var diff = diff_main; -diff.INSERT = DIFF_INSERT; -diff.DELETE = DIFF_DELETE; -diff.EQUAL = DIFF_EQUAL; - -module.exports = diff; - -/* - * Modify a diff such that the cursor position points to the start of a change: - * E.g. - * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1) - * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]] - * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2) - * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]] - * - * @param {Array} diffs Array of diff tuples - * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds! - * @return {Array} A tuple [cursor location in the modified diff, modified diff] - */ -function cursor_normalize_diff (diffs, cursor_pos) { - if (cursor_pos === 0) { - return [DIFF_EQUAL, diffs]; - } - for (var current_pos = 0, i = 0; i < diffs.length; i++) { - var d = diffs[i]; - if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) { - var next_pos = current_pos + d[1].length; - if (cursor_pos === next_pos) { - return [i + 1, diffs]; - } else if (cursor_pos < next_pos) { - // copy to prevent side effects - diffs = diffs.slice(); - // split d into two diff changes - var split_pos = cursor_pos - current_pos; - var d_left = [d[0], d[1].slice(0, split_pos)]; - var d_right = [d[0], d[1].slice(split_pos)]; - diffs.splice(i, 1, d_left, d_right); - return [i + 1, diffs]; - } else { - current_pos = next_pos; - } - } - } - throw new Error('cursor_pos is out of bounds!') -} - -/* - * Modify a diff such that the edit position is "shifted" to the proposed edit location (cursor_position). - * - * Case 1) - * Check if a naive shift is possible: - * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X) - * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result - * Case 2) - * Check if the following shifts are possible: - * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix'] - * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix'] - * ^ ^ - * d d_next - * - * @param {Array} diffs Array of diff tuples - * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds! - * @return {Array} Array of diff tuples - */ -function fix_cursor (diffs, cursor_pos) { - var norm = cursor_normalize_diff(diffs, cursor_pos); - var ndiffs = norm[1]; - var cursor_pointer = norm[0]; - var d = ndiffs[cursor_pointer]; - var d_next = ndiffs[cursor_pointer + 1]; - - if (d == null) { - // Text was deleted from end of original string, - // cursor is now out of bounds in new string - return diffs; - } else if (d[0] !== DIFF_EQUAL) { - // A modification happened at the cursor location. - // This is the expected outcome, so we can return the original diff. - return diffs; - } else { - if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) { - // Case 1) - // It is possible to perform a naive shift - ndiffs.splice(cursor_pointer, 2, d_next, d) - return merge_tuples(ndiffs, cursor_pointer, 2) - } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) { - // Case 2) - // d[1] is a prefix of d_next[1] - // We can assume that d_next[0] !== 0, since d[0] === 0 - // Shift edit locations.. - ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]); - var suffix = d_next[1].slice(d[1].length); - if (suffix.length > 0) { - ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]); - } - return merge_tuples(ndiffs, cursor_pointer, 3) - } else { - // Not possible to perform any modification - return diffs; - } - } -} - -/* - * Check diff did not split surrogate pairs. - * Ex. [0, '\uD83D'], [-1, '\uDC36'], [1, '\uDC2F'] -> [-1, '\uD83D\uDC36'], [1, '\uD83D\uDC2F'] - * '\uD83D\uDC36' === '🐶', '\uD83D\uDC2F' === '🐯' - * - * @param {Array} diffs Array of diff tuples - * @return {Array} Array of diff tuples - */ -function fix_emoji (diffs) { - var compact = false; - var starts_with_pair_end = function(str) { - return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF; - } - var ends_with_pair_start = function(str) { - return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF; - } - for (var i = 2; i < diffs.length; i += 1) { - if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) && - diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) && - diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) { - compact = true; - - diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1]; - diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1]; - - diffs[i-2][1] = diffs[i-2][1].slice(0, -1); - } - } - if (!compact) { - return diffs; - } - var fixed_diffs = []; - for (var i = 0; i < diffs.length; i += 1) { - if (diffs[i][1].length > 0) { - fixed_diffs.push(diffs[i]); - } - } - return fixed_diffs; -} - -/* - * Try to merge tuples with their neigbors in a given range. - * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab'] - * - * @param {Array} diffs Array of diff tuples. - * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]). - * @param {Int} length Number of consecutive elements to check. - * @return {Array} Array of merged diff tuples. - */ -function merge_tuples (diffs, start, length) { - // Check from (start-1) to (start+length). - for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) { - if (i + 1 < diffs.length) { - var left_d = diffs[i]; - var right_d = diffs[i+1]; - if (left_d[0] === right_d[1]) { - diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]); - } - } - } - return diffs; -} - - -/***/ }), -/* 52 */ -/***/ (function(module, exports) { - -exports = module.exports = typeof Object.keys === 'function' - ? Object.keys : shim; - -exports.shim = shim; -function shim (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} - - -/***/ }), -/* 53 */ -/***/ (function(module, exports) { - -var supportsArgumentsClass = (function(){ - return Object.prototype.toString.call(arguments) -})() == '[object Arguments]'; - -exports = module.exports = supportsArgumentsClass ? supported : unsupported; - -exports.supported = supported; -function supported(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -}; - -exports.unsupported = unsupported; -function unsupported(object){ - return object && - typeof object == 'object' && - typeof object.length == 'number' && - Object.prototype.hasOwnProperty.call(object, 'callee') && - !Object.prototype.propertyIsEnumerable.call(object, 'callee') || - false; -}; - - -/***/ }), -/* 54 */ -/***/ (function(module, exports) { - -'use strict'; - -var has = Object.prototype.hasOwnProperty - , prefix = '~'; - -/** - * Constructor to create a storage for our `EE` objects. - * An `Events` instance is a plain object whose properties are event names. - * - * @constructor - * @api private - */ -function Events() {} - -// -// We try to not inherit from `Object.prototype`. In some engines creating an -// instance in this way is faster than calling `Object.create(null)` directly. -// If `Object.create(null)` is not supported we prefix the event names with a -// character to make sure that the built-in object properties are not -// overridden or used as an attack vector. -// -if (Object.create) { - Events.prototype = Object.create(null); - - // - // This hack is needed because the `__proto__` property is still inherited in - // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5. - // - if (!new Events().__proto__) prefix = false; -} - -/** - * Representation of a single event listener. - * - * @param {Function} fn The listener function. - * @param {Mixed} context The context to invoke the listener with. - * @param {Boolean} [once=false] Specify if the listener is a one-time listener. - * @constructor - * @api private - */ -function EE(fn, context, once) { - this.fn = fn; - this.context = context; - this.once = once || false; -} - -/** - * Minimal `EventEmitter` interface that is molded against the Node.js - * `EventEmitter` interface. - * - * @constructor - * @api public - */ -function EventEmitter() { - this._events = new Events(); - this._eventsCount = 0; -} - -/** - * Return an array listing the events for which the emitter has registered - * listeners. - * - * @returns {Array} - * @api public - */ -EventEmitter.prototype.eventNames = function eventNames() { - var names = [] - , events - , name; - - if (this._eventsCount === 0) return names; - - for (name in (events = this._events)) { - if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); - } - - if (Object.getOwnPropertySymbols) { - return names.concat(Object.getOwnPropertySymbols(events)); - } - - return names; -}; - -/** - * Return the listeners registered for a given event. - * - * @param {String|Symbol} event The event name. - * @param {Boolean} exists Only check if there are listeners. - * @returns {Array|Boolean} - * @api public - */ -EventEmitter.prototype.listeners = function listeners(event, exists) { - var evt = prefix ? prefix + event : event - , available = this._events[evt]; - - if (exists) return !!available; - if (!available) return []; - if (available.fn) return [available.fn]; - - for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) { - ee[i] = available[i].fn; - } - - return ee; -}; - -/** - * Calls each of the listeners registered for a given event. - * - * @param {String|Symbol} event The event name. - * @returns {Boolean} `true` if the event had listeners, else `false`. - * @api public - */ -EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return false; - - var listeners = this._events[evt] - , len = arguments.length - , args - , i; - - if (listeners.fn) { - if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); - - switch (len) { - case 1: return listeners.fn.call(listeners.context), true; - case 2: return listeners.fn.call(listeners.context, a1), true; - case 3: return listeners.fn.call(listeners.context, a1, a2), true; - case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; - case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; - case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; - } - - for (i = 1, args = new Array(len -1); i < len; i++) { - args[i - 1] = arguments[i]; - } - - listeners.fn.apply(listeners.context, args); - } else { - var length = listeners.length - , j; - - for (i = 0; i < length; i++) { - if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); - - switch (len) { - case 1: listeners[i].fn.call(listeners[i].context); break; - case 2: listeners[i].fn.call(listeners[i].context, a1); break; - case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; - case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; - default: - if (!args) for (j = 1, args = new Array(len -1); j < len; j++) { - args[j - 1] = arguments[j]; - } - - listeners[i].fn.apply(listeners[i].context, args); - } - } - } - - return true; -}; - -/** - * Add a listener for a given event. - * - * @param {String|Symbol} event The event name. - * @param {Function} fn The listener function. - * @param {Mixed} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @api public - */ -EventEmitter.prototype.on = function on(event, fn, context) { - var listener = new EE(fn, context || this) - , evt = prefix ? prefix + event : event; - - if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++; - else if (!this._events[evt].fn) this._events[evt].push(listener); - else this._events[evt] = [this._events[evt], listener]; - - return this; -}; - -/** - * Add a one-time listener for a given event. - * - * @param {String|Symbol} event The event name. - * @param {Function} fn The listener function. - * @param {Mixed} [context=this] The context to invoke the listener with. - * @returns {EventEmitter} `this`. - * @api public - */ -EventEmitter.prototype.once = function once(event, fn, context) { - var listener = new EE(fn, context || this, true) - , evt = prefix ? prefix + event : event; - - if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++; - else if (!this._events[evt].fn) this._events[evt].push(listener); - else this._events[evt] = [this._events[evt], listener]; - - return this; -}; - -/** - * Remove the listeners of a given event. - * - * @param {String|Symbol} event The event name. - * @param {Function} fn Only remove the listeners that match this function. - * @param {Mixed} context Only remove the listeners that have this context. - * @param {Boolean} once Only remove one-time listeners. - * @returns {EventEmitter} `this`. - * @api public - */ -EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { - var evt = prefix ? prefix + event : event; - - if (!this._events[evt]) return this; - if (!fn) { - if (--this._eventsCount === 0) this._events = new Events(); - else delete this._events[evt]; - return this; - } - - var listeners = this._events[evt]; - - if (listeners.fn) { - if ( - listeners.fn === fn - && (!once || listeners.once) - && (!context || listeners.context === context) - ) { - if (--this._eventsCount === 0) this._events = new Events(); - else delete this._events[evt]; - } - } else { - for (var i = 0, events = [], length = listeners.length; i < length; i++) { - if ( - listeners[i].fn !== fn - || (once && !listeners[i].once) - || (context && listeners[i].context !== context) - ) { - events.push(listeners[i]); - } - } - - // - // Reset the array, or remove it completely if we have no more listeners. - // - if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; - else if (--this._eventsCount === 0) this._events = new Events(); - else delete this._events[evt]; - } - - return this; -}; - -/** - * Remove all listeners, or those of the specified event. - * - * @param {String|Symbol} [event] The event name. - * @returns {EventEmitter} `this`. - * @api public - */ -EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { - var evt; - - if (event) { - evt = prefix ? prefix + event : event; - if (this._events[evt]) { - if (--this._eventsCount === 0) this._events = new Events(); - else delete this._events[evt]; - } - } else { - this._events = new Events(); - this._eventsCount = 0; - } - - return this; -}; - -// -// Alias methods names because people roll like that. -// -EventEmitter.prototype.off = EventEmitter.prototype.removeListener; -EventEmitter.prototype.addListener = EventEmitter.prototype.on; - -// -// This function doesn't apply anymore. -// -EventEmitter.prototype.setMaxListeners = function setMaxListeners() { - return this; -}; - -// -// Expose the prefix. -// -EventEmitter.prefixed = prefix; - -// -// Allow `EventEmitter` to be imported as module namespace. -// -EventEmitter.EventEmitter = EventEmitter; - -// -// Expose the module. -// -if ('undefined' !== typeof module) { - module.exports = EventEmitter; -} - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _extend2 = __webpack_require__(3); - -var _extend3 = _interopRequireDefault(_extend2); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -var _align = __webpack_require__(36); - -var _background = __webpack_require__(37); - -var _code = __webpack_require__(13); - -var _code2 = _interopRequireDefault(_code); - -var _color = __webpack_require__(26); - -var _direction = __webpack_require__(38); - -var _font = __webpack_require__(39); - -var _size = __webpack_require__(40); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var debug = (0, _logger2.default)('quill:clipboard'); - -var DOM_KEY = '__ql-matcher'; - -var CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]]; - -var ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) { - memo[attr.keyName] = attr; - return memo; -}, {}); - -var STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) { - memo[attr.keyName] = attr; - return memo; -}, {}); - -var Clipboard = function (_Module) { - _inherits(Clipboard, _Module); - - function Clipboard(quill, options) { - _classCallCheck(this, Clipboard); - - var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options)); - - _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this)); - _this.container = _this.quill.addContainer('ql-clipboard'); - _this.container.setAttribute('contenteditable', true); - _this.container.setAttribute('tabindex', -1); - _this.matchers = []; - CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - selector = _ref2[0], - matcher = _ref2[1]; - - if (!options.matchVisual && matcher === matchSpacing) return; - _this.addMatcher(selector, matcher); - }); - return _this; - } - - _createClass(Clipboard, [{ - key: 'addMatcher', - value: function addMatcher(selector, matcher) { - this.matchers.push([selector, matcher]); - } - }, { - key: 'convert', - value: function convert(html) { - if (typeof html === 'string') { - this.container.innerHTML = html.replace(/\>\r?\n +\<'); // Remove spaces between tags - return this.convert(); - } - var formats = this.quill.getFormat(this.quill.selection.savedRange.index); - if (formats[_code2.default.blotName]) { - var text = this.container.innerText; - this.container.innerHTML = ''; - return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName])); - } - - var _prepareMatching = this.prepareMatching(), - _prepareMatching2 = _slicedToArray(_prepareMatching, 2), - elementMatchers = _prepareMatching2[0], - textMatchers = _prepareMatching2[1]; - - var delta = traverse(this.container, elementMatchers, textMatchers); - // Remove trailing newline - if (deltaEndsWith(delta, '\n') && delta.ops[delta.ops.length - 1].attributes == null) { - delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1)); - } - debug.log('convert', this.container.innerHTML, delta); - this.container.innerHTML = ''; - return delta; - } - }, { - key: 'dangerouslyPasteHTML', - value: function dangerouslyPasteHTML(index, html) { - var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API; - - if (typeof index === 'string') { - this.quill.setContents(this.convert(index), html); - this.quill.setSelection(0, _quill2.default.sources.SILENT); - } else { - var paste = this.convert(html); - this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source); - this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT); - } - } - }, { - key: 'onPaste', - value: function onPaste(e) { - var _this2 = this; - - if (e.defaultPrevented || !this.quill.isEnabled()) return; - var range = this.quill.getSelection(); - var delta = new _quillDelta2.default().retain(range.index); - var scrollTop = this.quill.scrollingContainer.scrollTop; - this.container.focus(); - this.quill.selection.update(_quill2.default.sources.SILENT); - setTimeout(function () { - delta = delta.concat(_this2.convert()).delete(range.length); - _this2.quill.updateContents(delta, _quill2.default.sources.USER); - // range.length contributes to delta.length() - _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT); - _this2.quill.scrollingContainer.scrollTop = scrollTop; - _this2.quill.focus(); - }, 1); - } - }, { - key: 'prepareMatching', - value: function prepareMatching() { - var _this3 = this; - - var elementMatchers = [], - textMatchers = []; - this.matchers.forEach(function (pair) { - var _pair = _slicedToArray(pair, 2), - selector = _pair[0], - matcher = _pair[1]; - - switch (selector) { - case Node.TEXT_NODE: - textMatchers.push(matcher); - break; - case Node.ELEMENT_NODE: - elementMatchers.push(matcher); - break; - default: - [].forEach.call(_this3.container.querySelectorAll(selector), function (node) { - // TODO use weakmap - node[DOM_KEY] = node[DOM_KEY] || []; - node[DOM_KEY].push(matcher); - }); - break; - } - }); - return [elementMatchers, textMatchers]; - } - }]); - - return Clipboard; -}(_module2.default); - -Clipboard.DEFAULTS = { - matchers: [], - matchVisual: true -}; - -function applyFormat(delta, format, value) { - if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') { - return Object.keys(format).reduce(function (delta, key) { - return applyFormat(delta, key, format[key]); - }, delta); - } else { - return delta.reduce(function (delta, op) { - if (op.attributes && op.attributes[format]) { - return delta.push(op); - } else { - return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes)); - } - }, new _quillDelta2.default()); - } -} - -function computeStyle(node) { - if (node.nodeType !== Node.ELEMENT_NODE) return {}; - var DOM_KEY = '__ql-computed-style'; - return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node)); -} - -function deltaEndsWith(delta, text) { - var endText = ""; - for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) { - var op = delta.ops[i]; - if (typeof op.insert !== 'string') break; - endText = op.insert + endText; - } - return endText.slice(-1 * text.length) === text; -} - -function isLine(node) { - if (node.childNodes.length === 0) return false; // Exclude embed blocks - var style = computeStyle(node); - return ['block', 'list-item'].indexOf(style.display) > -1; -} - -function traverse(node, elementMatchers, textMatchers) { - // Post-order - if (node.nodeType === node.TEXT_NODE) { - return textMatchers.reduce(function (delta, matcher) { - return matcher(node, delta); - }, new _quillDelta2.default()); - } else if (node.nodeType === node.ELEMENT_NODE) { - return [].reduce.call(node.childNodes || [], function (delta, childNode) { - var childrenDelta = traverse(childNode, elementMatchers, textMatchers); - if (childNode.nodeType === node.ELEMENT_NODE) { - childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) { - return matcher(childNode, childrenDelta); - }, childrenDelta); - childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) { - return matcher(childNode, childrenDelta); - }, childrenDelta); - } - return delta.concat(childrenDelta); - }, new _quillDelta2.default()); - } else { - return new _quillDelta2.default(); - } -} - -function matchAlias(format, node, delta) { - return applyFormat(delta, format, true); -} - -function matchAttributor(node, delta) { - var attributes = _parchment2.default.Attributor.Attribute.keys(node); - var classes = _parchment2.default.Attributor.Class.keys(node); - var styles = _parchment2.default.Attributor.Style.keys(node); - var formats = {}; - attributes.concat(classes).concat(styles).forEach(function (name) { - var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE); - if (attr != null) { - formats[attr.attrName] = attr.value(node); - if (formats[attr.attrName]) return; - } - attr = ATTRIBUTE_ATTRIBUTORS[name]; - if (attr != null && (attr.attrName === name || attr.keyName === name)) { - formats[attr.attrName] = attr.value(node) || undefined; - } - attr = STYLE_ATTRIBUTORS[name]; - if (attr != null && (attr.attrName === name || attr.keyName === name)) { - attr = STYLE_ATTRIBUTORS[name]; - formats[attr.attrName] = attr.value(node) || undefined; - } - }); - if (Object.keys(formats).length > 0) { - delta = applyFormat(delta, formats); - } - return delta; -} - -function matchBlot(node, delta) { - var match = _parchment2.default.query(node); - if (match == null) return delta; - if (match.prototype instanceof _parchment2.default.Embed) { - var embed = {}; - var value = match.value(node); - if (value != null) { - embed[match.blotName] = value; - delta = new _quillDelta2.default().insert(embed, match.formats(node)); - } - } else if (typeof match.formats === 'function') { - delta = applyFormat(delta, match.blotName, match.formats(node)); - } - return delta; -} - -function matchBreak(node, delta) { - if (!deltaEndsWith(delta, '\n')) { - delta.insert('\n'); - } - return delta; -} - -function matchIgnore() { - return new _quillDelta2.default(); -} - -function matchIndent(node, delta) { - var match = _parchment2.default.query(node); - if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\n')) { - return delta; - } - var indent = -1, - parent = node.parentNode; - while (!parent.classList.contains('ql-clipboard')) { - if ((_parchment2.default.query(parent) || {}).blotName === 'list') { - indent += 1; - } - parent = parent.parentNode; - } - if (indent <= 0) return delta; - return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent })); -} - -function matchNewline(node, delta) { - if (!deltaEndsWith(delta, '\n')) { - if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) { - delta.insert('\n'); - } - } - return delta; -} - -function matchSpacing(node, delta) { - if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\n\n')) { - var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom); - if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) { - delta.insert('\n'); - } - } - return delta; -} - -function matchStyles(node, delta) { - var formats = {}; - var style = node.style || {}; - if (style.fontStyle && computeStyle(node).fontStyle === 'italic') { - formats.italic = true; - } - if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) { - formats.bold = true; - } - if (Object.keys(formats).length > 0) { - delta = applyFormat(delta, formats); - } - if (parseFloat(style.textIndent || 0) > 0) { - // Could be 0.5in - delta = new _quillDelta2.default().insert('\t').concat(delta); - } - return delta; -} - -function matchText(node, delta) { - var text = node.data; - // Word represents empty line with   - if (node.parentNode.tagName === 'O:P') { - return delta.insert(text.trim()); - } - if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) { - return delta; - } - if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) { - // eslint-disable-next-line func-style - var replacer = function replacer(collapse, match) { - match = match.replace(/[^\u00a0]/g, ''); // \u00a0 is nbsp; - return match.length < 1 && collapse ? ' ' : match; - }; - text = text.replace(/\r\n/g, ' ').replace(/\n/g, ' '); - text = text.replace(/\s\s+/g, replacer.bind(replacer, true)); // collapse whitespace - if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) { - text = text.replace(/^\s+/, replacer.bind(replacer, false)); - } - if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) { - text = text.replace(/\s+$/, replacer.bind(replacer, false)); - } - } - return delta.insert(text); -} - -exports.default = Clipboard; -exports.matchAttributor = matchAttributor; -exports.matchBlot = matchBlot; -exports.matchNewline = matchNewline; -exports.matchSpacing = matchSpacing; -exports.matchText = matchText; - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Bold = function (_Inline) { - _inherits(Bold, _Inline); - - function Bold() { - _classCallCheck(this, Bold); - - return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments)); - } - - _createClass(Bold, [{ - key: 'optimize', - value: function optimize(context) { - _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context); - if (this.domNode.tagName !== this.statics.tagName[0]) { - this.replaceWith(this.statics.blotName); - } - } - }], [{ - key: 'create', - value: function create() { - return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this); - } - }, { - key: 'formats', - value: function formats() { - return true; - } - }]); - - return Bold; -}(_inline2.default); - -Bold.blotName = 'bold'; -Bold.tagName = ['STRONG', 'B']; - -exports.default = Bold; - -/***/ }), -/* 57 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.addControls = exports.default = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _quillDelta = __webpack_require__(2); - -var _quillDelta2 = _interopRequireDefault(_quillDelta); - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _logger = __webpack_require__(10); - -var _logger2 = _interopRequireDefault(_logger); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var debug = (0, _logger2.default)('quill:toolbar'); - -var Toolbar = function (_Module) { - _inherits(Toolbar, _Module); - - function Toolbar(quill, options) { - _classCallCheck(this, Toolbar); - - var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options)); - - if (Array.isArray(_this.options.container)) { - var container = document.createElement('div'); - addControls(container, _this.options.container); - quill.container.parentNode.insertBefore(container, quill.container); - _this.container = container; - } else if (typeof _this.options.container === 'string') { - _this.container = document.querySelector(_this.options.container); - } else { - _this.container = _this.options.container; - } - if (!(_this.container instanceof HTMLElement)) { - var _ret; - - return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret); - } - _this.container.classList.add('ql-toolbar'); - _this.controls = []; - _this.handlers = {}; - Object.keys(_this.options.handlers).forEach(function (format) { - _this.addHandler(format, _this.options.handlers[format]); - }); - [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) { - _this.attach(input); - }); - _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) { - if (type === _quill2.default.events.SELECTION_CHANGE) { - _this.update(range); - } - }); - _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () { - var _this$quill$selection = _this.quill.selection.getRange(), - _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1), - range = _this$quill$selection2[0]; // quill.getSelection triggers update - - - _this.update(range); - }); - return _this; - } - - _createClass(Toolbar, [{ - key: 'addHandler', - value: function addHandler(format, handler) { - this.handlers[format] = handler; - } - }, { - key: 'attach', - value: function attach(input) { - var _this2 = this; - - var format = [].find.call(input.classList, function (className) { - return className.indexOf('ql-') === 0; - }); - if (!format) return; - format = format.slice('ql-'.length); - if (input.tagName === 'BUTTON') { - input.setAttribute('type', 'button'); - } - if (this.handlers[format] == null) { - if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) { - debug.warn('ignoring attaching to disabled format', format, input); - return; - } - if (_parchment2.default.query(format) == null) { - debug.warn('ignoring attaching to nonexistent format', format, input); - return; - } - } - var eventName = input.tagName === 'SELECT' ? 'change' : 'click'; - input.addEventListener(eventName, function (e) { - var value = void 0; - if (input.tagName === 'SELECT') { - if (input.selectedIndex < 0) return; - var selected = input.options[input.selectedIndex]; - if (selected.hasAttribute('selected')) { - value = false; - } else { - value = selected.value || false; - } - } else { - if (input.classList.contains('ql-active')) { - value = false; - } else { - value = input.value || !input.hasAttribute('value'); - } - e.preventDefault(); - } - _this2.quill.focus(); - - var _quill$selection$getR = _this2.quill.selection.getRange(), - _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1), - range = _quill$selection$getR2[0]; - - if (_this2.handlers[format] != null) { - _this2.handlers[format].call(_this2, value); - } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) { - value = prompt('Enter ' + format); - if (!value) return; - _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER); - } else { - _this2.quill.format(format, value, _quill2.default.sources.USER); - } - _this2.update(range); - }); - // TODO use weakmap - this.controls.push([format, input]); - } - }, { - key: 'update', - value: function update(range) { - var formats = range == null ? {} : this.quill.getFormat(range); - this.controls.forEach(function (pair) { - var _pair = _slicedToArray(pair, 2), - format = _pair[0], - input = _pair[1]; - - if (input.tagName === 'SELECT') { - var option = void 0; - if (range == null) { - option = null; - } else if (formats[format] == null) { - option = input.querySelector('option[selected]'); - } else if (!Array.isArray(formats[format])) { - var value = formats[format]; - if (typeof value === 'string') { - value = value.replace(/\"/g, '\\"'); - } - option = input.querySelector('option[value="' + value + '"]'); - } - if (option == null) { - input.value = ''; // TODO make configurable? - input.selectedIndex = -1; - } else { - option.selected = true; - } - } else { - if (range == null) { - input.classList.remove('ql-active'); - } else if (input.hasAttribute('value')) { - // both being null should match (default values) - // '1' should match with 1 (headers) - var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value'); - input.classList.toggle('ql-active', isActive); - } else { - input.classList.toggle('ql-active', formats[format] != null); - } - } - }); - } - }]); - - return Toolbar; -}(_module2.default); - -Toolbar.DEFAULTS = {}; - -function addButton(container, format, value) { - var input = document.createElement('button'); - input.setAttribute('type', 'button'); - input.classList.add('ql-' + format); - if (value != null) { - input.value = value; - } - container.appendChild(input); -} - -function addControls(container, groups) { - if (!Array.isArray(groups[0])) { - groups = [groups]; - } - groups.forEach(function (controls) { - var group = document.createElement('span'); - group.classList.add('ql-formats'); - controls.forEach(function (control) { - if (typeof control === 'string') { - addButton(group, control); - } else { - var format = Object.keys(control)[0]; - var value = control[format]; - if (Array.isArray(value)) { - addSelect(group, format, value); - } else { - addButton(group, format, value); - } - } - }); - container.appendChild(group); - }); -} - -function addSelect(container, format, values) { - var input = document.createElement('select'); - input.classList.add('ql-' + format); - values.forEach(function (value) { - var option = document.createElement('option'); - if (value !== false) { - option.setAttribute('value', value); - } else { - option.setAttribute('selected', 'selected'); - } - input.appendChild(option); - }); - container.appendChild(input); -} - -Toolbar.DEFAULTS = { - container: null, - handlers: { - clean: function clean() { - var _this3 = this; - - var range = this.quill.getSelection(); - if (range == null) return; - if (range.length == 0) { - var formats = this.quill.getFormat(); - Object.keys(formats).forEach(function (name) { - // Clean functionality in existing apps only clean inline formats - if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) { - _this3.quill.format(name, false); - } - }); - } else { - this.quill.removeFormat(range, _quill2.default.sources.USER); - } - }, - direction: function direction(value) { - var align = this.quill.getFormat()['align']; - if (value === 'rtl' && align == null) { - this.quill.format('align', 'right', _quill2.default.sources.USER); - } else if (!value && align === 'right') { - this.quill.format('align', false, _quill2.default.sources.USER); - } - this.quill.format('direction', value, _quill2.default.sources.USER); - }, - indent: function indent(value) { - var range = this.quill.getSelection(); - var formats = this.quill.getFormat(range); - var indent = parseInt(formats.indent || 0); - if (value === '+1' || value === '-1') { - var modifier = value === '+1' ? 1 : -1; - if (formats.direction === 'rtl') modifier *= -1; - this.quill.format('indent', indent + modifier, _quill2.default.sources.USER); - } - }, - link: function link(value) { - if (value === true) { - value = prompt('Enter link URL:'); - } - this.quill.format('link', value, _quill2.default.sources.USER); - }, - list: function list(value) { - var range = this.quill.getSelection(); - var formats = this.quill.getFormat(range); - if (value === 'check') { - if (formats['list'] === 'checked' || formats['list'] === 'unchecked') { - this.quill.format('list', false, _quill2.default.sources.USER); - } else { - this.quill.format('list', 'unchecked', _quill2.default.sources.USER); - } - } else { - this.quill.format('list', value, _quill2.default.sources.USER); - } - } - } -}; - -exports.default = Toolbar; -exports.addControls = addControls; - -/***/ }), -/* 58 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _picker = __webpack_require__(28); - -var _picker2 = _interopRequireDefault(_picker); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ColorPicker = function (_Picker) { - _inherits(ColorPicker, _Picker); - - function ColorPicker(select, label) { - _classCallCheck(this, ColorPicker); - - var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select)); - - _this.label.innerHTML = label; - _this.container.classList.add('ql-color-picker'); - [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) { - item.classList.add('ql-primary'); - }); - return _this; - } - - _createClass(ColorPicker, [{ - key: 'buildItem', - value: function buildItem(option) { - var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option); - item.style.backgroundColor = option.getAttribute('value') || ''; - return item; - } - }, { - key: 'selectItem', - value: function selectItem(item, trigger) { - _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger); - var colorLabel = this.label.querySelector('.ql-color-label'); - var value = item ? item.getAttribute('data-value') || '' : ''; - if (colorLabel) { - if (colorLabel.tagName === 'line') { - colorLabel.style.stroke = value; - } else { - colorLabel.style.fill = value; - } - } - } - }]); - - return ColorPicker; -}(_picker2.default); - -exports.default = ColorPicker; - -/***/ }), -/* 60 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _picker = __webpack_require__(28); - -var _picker2 = _interopRequireDefault(_picker); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var IconPicker = function (_Picker) { - _inherits(IconPicker, _Picker); - - function IconPicker(select, icons) { - _classCallCheck(this, IconPicker); - - var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select)); - - _this.container.classList.add('ql-icon-picker'); - [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) { - item.innerHTML = icons[item.getAttribute('data-value') || '']; - }); - _this.defaultItem = _this.container.querySelector('.ql-selected'); - _this.selectItem(_this.defaultItem); - return _this; - } - - _createClass(IconPicker, [{ - key: 'selectItem', - value: function selectItem(item, trigger) { - _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger); - item = item || this.defaultItem; - this.label.innerHTML = item.innerHTML; - } - }]); - - return IconPicker; -}(_picker2.default); - -exports.default = IconPicker; - -/***/ }), -/* 61 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Tooltip = function () { - function Tooltip(quill, boundsContainer) { - var _this = this; - - _classCallCheck(this, Tooltip); - - this.quill = quill; - this.boundsContainer = boundsContainer || document.body; - this.root = quill.addContainer('ql-tooltip'); - this.root.innerHTML = this.constructor.TEMPLATE; - if (this.quill.root === this.quill.scrollingContainer) { - this.quill.root.addEventListener('scroll', function () { - _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px'; - }); - } - this.hide(); - } - - _createClass(Tooltip, [{ - key: 'hide', - value: function hide() { - this.root.classList.add('ql-hidden'); - } - }, { - key: 'position', - value: function position(reference) { - var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2; - // root.scrollTop should be 0 if scrollContainer !== root - var top = reference.bottom + this.quill.root.scrollTop; - this.root.style.left = left + 'px'; - this.root.style.top = top + 'px'; - this.root.classList.remove('ql-flip'); - var containerBounds = this.boundsContainer.getBoundingClientRect(); - var rootBounds = this.root.getBoundingClientRect(); - var shift = 0; - if (rootBounds.right > containerBounds.right) { - shift = containerBounds.right - rootBounds.right; - this.root.style.left = left + shift + 'px'; - } - if (rootBounds.left < containerBounds.left) { - shift = containerBounds.left - rootBounds.left; - this.root.style.left = left + shift + 'px'; - } - if (rootBounds.bottom > containerBounds.bottom) { - var height = rootBounds.bottom - rootBounds.top; - var verticalShift = reference.bottom - reference.top + height; - this.root.style.top = top - verticalShift + 'px'; - this.root.classList.add('ql-flip'); - } - return shift; - } - }, { - key: 'show', - value: function show() { - this.root.classList.remove('ql-editing'); - this.root.classList.remove('ql-hidden'); - } - }]); - - return Tooltip; -}(); - -exports.default = Tooltip; - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -var _emitter = __webpack_require__(8); - -var _emitter2 = _interopRequireDefault(_emitter); - -var _base = __webpack_require__(43); - -var _base2 = _interopRequireDefault(_base); - -var _link = __webpack_require__(27); - -var _link2 = _interopRequireDefault(_link); - -var _selection = __webpack_require__(15); - -var _icons = __webpack_require__(41); - -var _icons2 = _interopRequireDefault(_icons); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']]; - -var SnowTheme = function (_BaseTheme) { - _inherits(SnowTheme, _BaseTheme); - - function SnowTheme(quill, options) { - _classCallCheck(this, SnowTheme); - - if (options.modules.toolbar != null && options.modules.toolbar.container == null) { - options.modules.toolbar.container = TOOLBAR_CONFIG; - } - - var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options)); - - _this.quill.container.classList.add('ql-snow'); - return _this; - } - - _createClass(SnowTheme, [{ - key: 'extendToolbar', - value: function extendToolbar(toolbar) { - toolbar.container.classList.add('ql-snow'); - this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default); - this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default); - this.tooltip = new SnowTooltip(this.quill, this.options.bounds); - if (toolbar.container.querySelector('.ql-link')) { - this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) { - toolbar.handlers['link'].call(toolbar, !context.format.link); - }); - } - } - }]); - - return SnowTheme; -}(_base2.default); - -SnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, { - modules: { - toolbar: { - handlers: { - link: function link(value) { - if (value) { - var range = this.quill.getSelection(); - if (range == null || range.length == 0) return; - var preview = this.quill.getText(range); - if (/^\S+@\S+\.\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) { - preview = 'mailto:' + preview; - } - var tooltip = this.quill.theme.tooltip; - tooltip.edit('link', preview); - } else { - this.quill.format('link', false); - } - } - } - } - } -}); - -var SnowTooltip = function (_BaseTooltip) { - _inherits(SnowTooltip, _BaseTooltip); - - function SnowTooltip(quill, bounds) { - _classCallCheck(this, SnowTooltip); - - var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds)); - - _this2.preview = _this2.root.querySelector('a.ql-preview'); - return _this2; - } - - _createClass(SnowTooltip, [{ - key: 'listen', - value: function listen() { - var _this3 = this; - - _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this); - this.root.querySelector('a.ql-action').addEventListener('click', function (event) { - if (_this3.root.classList.contains('ql-editing')) { - _this3.save(); - } else { - _this3.edit('link', _this3.preview.textContent); - } - event.preventDefault(); - }); - this.root.querySelector('a.ql-remove').addEventListener('click', function (event) { - if (_this3.linkRange != null) { - var range = _this3.linkRange; - _this3.restoreFocus(); - _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER); - delete _this3.linkRange; - } - event.preventDefault(); - _this3.hide(); - }); - this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) { - if (range == null) return; - if (range.length === 0 && source === _emitter2.default.sources.USER) { - var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index), - _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2), - link = _quill$scroll$descend2[0], - offset = _quill$scroll$descend2[1]; - - if (link != null) { - _this3.linkRange = new _selection.Range(range.index - offset, link.length()); - var preview = _link2.default.formats(link.domNode); - _this3.preview.textContent = preview; - _this3.preview.setAttribute('href', preview); - _this3.show(); - _this3.position(_this3.quill.getBounds(_this3.linkRange)); - return; - } - } else { - delete _this3.linkRange; - } - _this3.hide(); - }); - } - }, { - key: 'show', - value: function show() { - _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this); - this.root.removeAttribute('data-mode'); - } - }]); - - return SnowTooltip; -}(_base.BaseTooltip); - -SnowTooltip.TEMPLATE = ['', '', '', ''].join(''); - -exports.default = SnowTheme; - -/***/ }), -/* 63 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _core = __webpack_require__(29); - -var _core2 = _interopRequireDefault(_core); - -var _align = __webpack_require__(36); - -var _direction = __webpack_require__(38); - -var _indent = __webpack_require__(64); - -var _blockquote = __webpack_require__(65); - -var _blockquote2 = _interopRequireDefault(_blockquote); - -var _header = __webpack_require__(66); - -var _header2 = _interopRequireDefault(_header); - -var _list = __webpack_require__(67); - -var _list2 = _interopRequireDefault(_list); - -var _background = __webpack_require__(37); - -var _color = __webpack_require__(26); - -var _font = __webpack_require__(39); - -var _size = __webpack_require__(40); - -var _bold = __webpack_require__(56); - -var _bold2 = _interopRequireDefault(_bold); - -var _italic = __webpack_require__(68); - -var _italic2 = _interopRequireDefault(_italic); - -var _link = __webpack_require__(27); - -var _link2 = _interopRequireDefault(_link); - -var _script = __webpack_require__(69); - -var _script2 = _interopRequireDefault(_script); - -var _strike = __webpack_require__(70); - -var _strike2 = _interopRequireDefault(_strike); - -var _underline = __webpack_require__(71); - -var _underline2 = _interopRequireDefault(_underline); - -var _image = __webpack_require__(72); - -var _image2 = _interopRequireDefault(_image); - -var _video = __webpack_require__(73); - -var _video2 = _interopRequireDefault(_video); - -var _code = __webpack_require__(13); - -var _code2 = _interopRequireDefault(_code); - -var _formula = __webpack_require__(74); - -var _formula2 = _interopRequireDefault(_formula); - -var _syntax = __webpack_require__(75); - -var _syntax2 = _interopRequireDefault(_syntax); - -var _toolbar = __webpack_require__(57); - -var _toolbar2 = _interopRequireDefault(_toolbar); - -var _icons = __webpack_require__(41); - -var _icons2 = _interopRequireDefault(_icons); - -var _picker = __webpack_require__(28); - -var _picker2 = _interopRequireDefault(_picker); - -var _colorPicker = __webpack_require__(59); - -var _colorPicker2 = _interopRequireDefault(_colorPicker); - -var _iconPicker = __webpack_require__(60); - -var _iconPicker2 = _interopRequireDefault(_iconPicker); - -var _tooltip = __webpack_require__(61); - -var _tooltip2 = _interopRequireDefault(_tooltip); - -var _bubble = __webpack_require__(108); - -var _bubble2 = _interopRequireDefault(_bubble); - -var _snow = __webpack_require__(62); - -var _snow2 = _interopRequireDefault(_snow); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -_core2.default.register({ - 'attributors/attribute/direction': _direction.DirectionAttribute, - - 'attributors/class/align': _align.AlignClass, - 'attributors/class/background': _background.BackgroundClass, - 'attributors/class/color': _color.ColorClass, - 'attributors/class/direction': _direction.DirectionClass, - 'attributors/class/font': _font.FontClass, - 'attributors/class/size': _size.SizeClass, - - 'attributors/style/align': _align.AlignStyle, - 'attributors/style/background': _background.BackgroundStyle, - 'attributors/style/color': _color.ColorStyle, - 'attributors/style/direction': _direction.DirectionStyle, - 'attributors/style/font': _font.FontStyle, - 'attributors/style/size': _size.SizeStyle -}, true); - -_core2.default.register({ - 'formats/align': _align.AlignClass, - 'formats/direction': _direction.DirectionClass, - 'formats/indent': _indent.IndentClass, - - 'formats/background': _background.BackgroundStyle, - 'formats/color': _color.ColorStyle, - 'formats/font': _font.FontClass, - 'formats/size': _size.SizeClass, - - 'formats/blockquote': _blockquote2.default, - 'formats/code-block': _code2.default, - 'formats/header': _header2.default, - 'formats/list': _list2.default, - - 'formats/bold': _bold2.default, - 'formats/code': _code.Code, - 'formats/italic': _italic2.default, - 'formats/link': _link2.default, - 'formats/script': _script2.default, - 'formats/strike': _strike2.default, - 'formats/underline': _underline2.default, - - 'formats/image': _image2.default, - 'formats/video': _video2.default, - - 'formats/list/item': _list.ListItem, - - 'modules/formula': _formula2.default, - 'modules/syntax': _syntax2.default, - 'modules/toolbar': _toolbar2.default, - - 'themes/bubble': _bubble2.default, - 'themes/snow': _snow2.default, - - 'ui/icons': _icons2.default, - 'ui/picker': _picker2.default, - 'ui/icon-picker': _iconPicker2.default, - 'ui/color-picker': _colorPicker2.default, - 'ui/tooltip': _tooltip2.default -}, true); - -exports.default = _core2.default; - -/***/ }), -/* 64 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.IndentClass = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var IdentAttributor = function (_Parchment$Attributor) { - _inherits(IdentAttributor, _Parchment$Attributor); - - function IdentAttributor() { - _classCallCheck(this, IdentAttributor); - - return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments)); - } - - _createClass(IdentAttributor, [{ - key: 'add', - value: function add(node, value) { - if (value === '+1' || value === '-1') { - var indent = this.value(node) || 0; - value = value === '+1' ? indent + 1 : indent - 1; - } - if (value === 0) { - this.remove(node); - return true; - } else { - return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value); - } - } - }, { - key: 'canAdd', - value: function canAdd(node, value) { - return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value)); - } - }, { - key: 'value', - value: function value(node) { - return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN - } - }]); - - return IdentAttributor; -}(_parchment2.default.Attributor.Class); - -var IndentClass = new IdentAttributor('indent', 'ql-indent', { - scope: _parchment2.default.Scope.BLOCK, - whitelist: [1, 2, 3, 4, 5, 6, 7, 8] -}); - -exports.IndentClass = IndentClass; - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Blockquote = function (_Block) { - _inherits(Blockquote, _Block); - - function Blockquote() { - _classCallCheck(this, Blockquote); - - return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments)); - } - - return Blockquote; -}(_block2.default); - -Blockquote.blotName = 'blockquote'; -Blockquote.tagName = 'blockquote'; - -exports.default = Blockquote; - -/***/ }), -/* 66 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Header = function (_Block) { - _inherits(Header, _Block); - - function Header() { - _classCallCheck(this, Header); - - return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments)); - } - - _createClass(Header, null, [{ - key: 'formats', - value: function formats(domNode) { - return this.tagName.indexOf(domNode.tagName) + 1; - } - }]); - - return Header; -}(_block2.default); - -Header.blotName = 'header'; -Header.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6']; - -exports.default = Header; - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.ListItem = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _block = __webpack_require__(4); - -var _block2 = _interopRequireDefault(_block); - -var _container = __webpack_require__(25); - -var _container2 = _interopRequireDefault(_container); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ListItem = function (_Block) { - _inherits(ListItem, _Block); - - function ListItem() { - _classCallCheck(this, ListItem); - - return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments)); - } - - _createClass(ListItem, [{ - key: 'format', - value: function format(name, value) { - if (name === List.blotName && !value) { - this.replaceWith(_parchment2.default.create(this.statics.scope)); - } else { - _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value); - } - } - }, { - key: 'remove', - value: function remove() { - if (this.prev == null && this.next == null) { - this.parent.remove(); - } else { - _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this); - } - } - }, { - key: 'replaceWith', - value: function replaceWith(name, value) { - this.parent.isolate(this.offset(this.parent), this.length()); - if (name === this.parent.statics.blotName) { - this.parent.replaceWith(name, value); - return this; - } else { - this.parent.unwrap(); - return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value); - } - } - }], [{ - key: 'formats', - value: function formats(domNode) { - return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode); - } - }]); - - return ListItem; -}(_block2.default); - -ListItem.blotName = 'list-item'; -ListItem.tagName = 'LI'; - -var List = function (_Container) { - _inherits(List, _Container); - - _createClass(List, null, [{ - key: 'create', - value: function create(value) { - var tagName = value === 'ordered' ? 'OL' : 'UL'; - var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName); - if (value === 'checked' || value === 'unchecked') { - node.setAttribute('data-checked', value === 'checked'); - } - return node; - } - }, { - key: 'formats', - value: function formats(domNode) { - if (domNode.tagName === 'OL') return 'ordered'; - if (domNode.tagName === 'UL') { - if (domNode.hasAttribute('data-checked')) { - return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked'; - } else { - return 'bullet'; - } - } - return undefined; - } - }]); - - function List(domNode) { - _classCallCheck(this, List); - - var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode)); - - var listEventHandler = function listEventHandler(e) { - if (e.target.parentNode !== domNode) return; - var format = _this2.statics.formats(domNode); - var blot = _parchment2.default.find(e.target); - if (format === 'checked') { - blot.format('list', 'unchecked'); - } else if (format === 'unchecked') { - blot.format('list', 'checked'); - } - }; - - domNode.addEventListener('touchstart', listEventHandler); - domNode.addEventListener('mousedown', listEventHandler); - return _this2; - } - - _createClass(List, [{ - key: 'format', - value: function format(name, value) { - if (this.children.length > 0) { - this.children.tail.format(name, value); - } - } - }, { - key: 'formats', - value: function formats() { - // We don't inherit from FormatBlot - return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode)); - } - }, { - key: 'insertBefore', - value: function insertBefore(blot, ref) { - if (blot instanceof ListItem) { - _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref); - } else { - var index = ref == null ? this.length() : ref.offset(this); - var after = this.split(index); - after.parent.insertBefore(blot, after); - } - } - }, { - key: 'optimize', - value: function optimize(context) { - _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context); - var next = this.next; - if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) { - next.moveChildren(this); - next.remove(); - } - } - }, { - key: 'replace', - value: function replace(target) { - if (target.statics.blotName !== this.statics.blotName) { - var item = _parchment2.default.create(this.statics.defaultChild); - target.moveChildren(item); - this.appendChild(item); - } - _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target); - } - }]); - - return List; -}(_container2.default); - -List.blotName = 'list'; -List.scope = _parchment2.default.Scope.BLOCK_BLOT; -List.tagName = ['OL', 'UL']; -List.defaultChild = 'list-item'; -List.allowedChildren = [ListItem]; - -exports.ListItem = ListItem; -exports.default = List; - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _bold = __webpack_require__(56); - -var _bold2 = _interopRequireDefault(_bold); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Italic = function (_Bold) { - _inherits(Italic, _Bold); - - function Italic() { - _classCallCheck(this, Italic); - - return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments)); - } - - return Italic; -}(_bold2.default); - -Italic.blotName = 'italic'; -Italic.tagName = ['EM', 'I']; - -exports.default = Italic; - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Script = function (_Inline) { - _inherits(Script, _Inline); - - function Script() { - _classCallCheck(this, Script); - - return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments)); - } - - _createClass(Script, null, [{ - key: 'create', - value: function create(value) { - if (value === 'super') { - return document.createElement('sup'); - } else if (value === 'sub') { - return document.createElement('sub'); - } else { - return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value); - } - } - }, { - key: 'formats', - value: function formats(domNode) { - if (domNode.tagName === 'SUB') return 'sub'; - if (domNode.tagName === 'SUP') return 'super'; - return undefined; - } - }]); - - return Script; -}(_inline2.default); - -Script.blotName = 'script'; -Script.tagName = ['SUB', 'SUP']; - -exports.default = Script; - -/***/ }), -/* 70 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Strike = function (_Inline) { - _inherits(Strike, _Inline); - - function Strike() { - _classCallCheck(this, Strike); - - return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments)); - } - - return Strike; -}(_inline2.default); - -Strike.blotName = 'strike'; -Strike.tagName = 'S'; - -exports.default = Strike; - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _inline = __webpack_require__(6); - -var _inline2 = _interopRequireDefault(_inline); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Underline = function (_Inline) { - _inherits(Underline, _Inline); - - function Underline() { - _classCallCheck(this, Underline); - - return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments)); - } - - return Underline; -}(_inline2.default); - -Underline.blotName = 'underline'; -Underline.tagName = 'U'; - -exports.default = Underline; - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _link = __webpack_require__(27); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ATTRIBUTES = ['alt', 'height', 'width']; - -var Image = function (_Parchment$Embed) { - _inherits(Image, _Parchment$Embed); - - function Image() { - _classCallCheck(this, Image); - - return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments)); - } - - _createClass(Image, [{ - key: 'format', - value: function format(name, value) { - if (ATTRIBUTES.indexOf(name) > -1) { - if (value) { - this.domNode.setAttribute(name, value); - } else { - this.domNode.removeAttribute(name); - } - } else { - _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value); - } - } - }], [{ - key: 'create', - value: function create(value) { - var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value); - if (typeof value === 'string') { - node.setAttribute('src', this.sanitize(value)); - } - return node; - } - }, { - key: 'formats', - value: function formats(domNode) { - return ATTRIBUTES.reduce(function (formats, attribute) { - if (domNode.hasAttribute(attribute)) { - formats[attribute] = domNode.getAttribute(attribute); - } - return formats; - }, {}); - } - }, { - key: 'match', - value: function match(url) { - return (/\.(jpe?g|gif|png)$/.test(url) || /^data:image\/.+;base64/.test(url) - ); - } - }, { - key: 'sanitize', - value: function sanitize(url) { - return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0'; - } - }, { - key: 'value', - value: function value(domNode) { - return domNode.getAttribute('src'); - } - }]); - - return Image; -}(_parchment2.default.Embed); - -Image.blotName = 'image'; -Image.tagName = 'IMG'; - -exports.default = Image; - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _block = __webpack_require__(4); - -var _link = __webpack_require__(27); - -var _link2 = _interopRequireDefault(_link); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ATTRIBUTES = ['height', 'width']; - -var Video = function (_BlockEmbed) { - _inherits(Video, _BlockEmbed); - - function Video() { - _classCallCheck(this, Video); - - return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments)); - } - - _createClass(Video, [{ - key: 'format', - value: function format(name, value) { - if (ATTRIBUTES.indexOf(name) > -1) { - if (value) { - this.domNode.setAttribute(name, value); - } else { - this.domNode.removeAttribute(name); - } - } else { - _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value); - } - } - }], [{ - key: 'create', - value: function create(value) { - var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value); - node.setAttribute('frameborder', '0'); - node.setAttribute('allowfullscreen', true); - node.setAttribute('src', this.sanitize(value)); - return node; - } - }, { - key: 'formats', - value: function formats(domNode) { - return ATTRIBUTES.reduce(function (formats, attribute) { - if (domNode.hasAttribute(attribute)) { - formats[attribute] = domNode.getAttribute(attribute); - } - return formats; - }, {}); - } - }, { - key: 'sanitize', - value: function sanitize(url) { - return _link2.default.sanitize(url); - } - }, { - key: 'value', - value: function value(domNode) { - return domNode.getAttribute('src'); - } - }]); - - return Video; -}(_block.BlockEmbed); - -Video.blotName = 'video'; -Video.className = 'ql-video'; -Video.tagName = 'IFRAME'; - -exports.default = Video; - -/***/ }), -/* 74 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.FormulaBlot = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _embed = __webpack_require__(35); - -var _embed2 = _interopRequireDefault(_embed); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var FormulaBlot = function (_Embed) { - _inherits(FormulaBlot, _Embed); - - function FormulaBlot() { - _classCallCheck(this, FormulaBlot); - - return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments)); - } - - _createClass(FormulaBlot, null, [{ - key: 'create', - value: function create(value) { - var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value); - if (typeof value === 'string') { - window.katex.render(value, node, { - throwOnError: false, - errorColor: '#f00' - }); - node.setAttribute('data-value', value); - } - return node; - } - }, { - key: 'value', - value: function value(domNode) { - return domNode.getAttribute('data-value'); - } - }]); - - return FormulaBlot; -}(_embed2.default); - -FormulaBlot.blotName = 'formula'; -FormulaBlot.className = 'ql-formula'; -FormulaBlot.tagName = 'SPAN'; - -var Formula = function (_Module) { - _inherits(Formula, _Module); - - _createClass(Formula, null, [{ - key: 'register', - value: function register() { - _quill2.default.register(FormulaBlot, true); - } - }]); - - function Formula() { - _classCallCheck(this, Formula); - - var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this)); - - if (window.katex == null) { - throw new Error('Formula module requires KaTeX.'); - } - return _this2; - } - - return Formula; -}(_module2.default); - -exports.FormulaBlot = FormulaBlot; -exports.default = Formula; - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.CodeToken = exports.CodeBlock = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _parchment = __webpack_require__(0); - -var _parchment2 = _interopRequireDefault(_parchment); - -var _quill = __webpack_require__(5); - -var _quill2 = _interopRequireDefault(_quill); - -var _module = __webpack_require__(9); - -var _module2 = _interopRequireDefault(_module); - -var _code = __webpack_require__(13); - -var _code2 = _interopRequireDefault(_code); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var SyntaxCodeBlock = function (_CodeBlock) { - _inherits(SyntaxCodeBlock, _CodeBlock); - - function SyntaxCodeBlock() { - _classCallCheck(this, SyntaxCodeBlock); - - return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments)); - } - - _createClass(SyntaxCodeBlock, [{ - key: 'replaceWith', - value: function replaceWith(block) { - this.domNode.textContent = this.domNode.textContent; - this.attach(); - _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block); - } - }, { - key: 'highlight', - value: function highlight(_highlight) { - var text = this.domNode.textContent; - if (this.cachedText !== text) { - if (text.trim().length > 0 || this.cachedText == null) { - this.domNode.innerHTML = _highlight(text); - this.domNode.normalize(); - this.attach(); - } - this.cachedText = text; - } - } - }]); - - return SyntaxCodeBlock; -}(_code2.default); - -SyntaxCodeBlock.className = 'ql-syntax'; - -var CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', { - scope: _parchment2.default.Scope.INLINE -}); - -var Syntax = function (_Module) { - _inherits(Syntax, _Module); - - _createClass(Syntax, null, [{ - key: 'register', - value: function register() { - _quill2.default.register(CodeToken, true); - _quill2.default.register(SyntaxCodeBlock, true); - } - }]); - - function Syntax(quill, options) { - _classCallCheck(this, Syntax); - - var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options)); - - if (typeof _this2.options.highlight !== 'function') { - throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.'); - } - var timer = null; - _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () { - clearTimeout(timer); - timer = setTimeout(function () { - _this2.highlight(); - timer = null; - }, _this2.options.interval); - }); - _this2.highlight(); - return _this2; - } - - _createClass(Syntax, [{ - key: 'highlight', - value: function highlight() { - var _this3 = this; - - if (this.quill.selection.composing) return; - this.quill.update(_quill2.default.sources.USER); - var range = this.quill.getSelection(); - this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) { - code.highlight(_this3.options.highlight); - }); - this.quill.update(_quill2.default.sources.SILENT); - if (range != null) { - this.quill.setSelection(range, _quill2.default.sources.SILENT); - } - } - }]); - - return Syntax; -}(_module2.default); - -Syntax.DEFAULTS = { - highlight: function () { - if (window.hljs == null) return null; - return function (text) { - var result = window.hljs.highlightAuto(text); - return result.value; - }; - }(), - interval: 1000 -}; - -exports.CodeBlock = SyntaxCodeBlock; -exports.CodeToken = CodeToken; -exports.default = Syntax; - -/***/ }), -/* 76 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 77 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 78 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 79 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 80 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 81 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 82 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 83 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 84 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 85 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 86 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 87 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 88 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 89 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 90 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 91 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 92 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 93 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 94 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 95 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 96 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 97 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 98 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 99 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 100 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 101 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 102 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 103 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 104 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 105 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 106 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 107 */ -/***/ (function(module, exports) { - -module.exports = " "; - -/***/ }), -/* 108 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = exports.BubbleTooltip = undefined; - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _extend = __webpack_require__(3); - -var _extend2 = _interopRequireDefault(_extend); - -var _emitter = __webpack_require__(8); - -var _emitter2 = _interopRequireDefault(_emitter); - -var _base = __webpack_require__(43); - -var _base2 = _interopRequireDefault(_base); - -var _selection = __webpack_require__(15); - -var _icons = __webpack_require__(41); - -var _icons2 = _interopRequireDefault(_icons); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']]; - -var BubbleTheme = function (_BaseTheme) { - _inherits(BubbleTheme, _BaseTheme); - - function BubbleTheme(quill, options) { - _classCallCheck(this, BubbleTheme); - - if (options.modules.toolbar != null && options.modules.toolbar.container == null) { - options.modules.toolbar.container = TOOLBAR_CONFIG; - } - - var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options)); - - _this.quill.container.classList.add('ql-bubble'); - return _this; - } - - _createClass(BubbleTheme, [{ - key: 'extendToolbar', - value: function extendToolbar(toolbar) { - this.tooltip = new BubbleTooltip(this.quill, this.options.bounds); - this.tooltip.root.appendChild(toolbar.container); - this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default); - this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default); - } - }]); - - return BubbleTheme; -}(_base2.default); - -BubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, { - modules: { - toolbar: { - handlers: { - link: function link(value) { - if (!value) { - this.quill.format('link', false); - } else { - this.quill.theme.tooltip.edit(); - } - } - } - } - } -}); - -var BubbleTooltip = function (_BaseTooltip) { - _inherits(BubbleTooltip, _BaseTooltip); - - function BubbleTooltip(quill, bounds) { - _classCallCheck(this, BubbleTooltip); - - var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds)); - - _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) { - if (type !== _emitter2.default.events.SELECTION_CHANGE) return; - if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) { - _this2.show(); - // Lock our width so we will expand beyond our offsetParent boundaries - _this2.root.style.left = '0px'; - _this2.root.style.width = ''; - _this2.root.style.width = _this2.root.offsetWidth + 'px'; - var lines = _this2.quill.getLines(range.index, range.length); - if (lines.length === 1) { - _this2.position(_this2.quill.getBounds(range)); - } else { - var lastLine = lines[lines.length - 1]; - var index = _this2.quill.getIndex(lastLine); - var length = Math.min(lastLine.length() - 1, range.index + range.length - index); - var _bounds = _this2.quill.getBounds(new _selection.Range(index, length)); - _this2.position(_bounds); - } - } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) { - _this2.hide(); - } - }); - return _this2; - } - - _createClass(BubbleTooltip, [{ - key: 'listen', - value: function listen() { - var _this3 = this; - - _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this); - this.root.querySelector('.ql-close').addEventListener('click', function () { - _this3.root.classList.remove('ql-editing'); - }); - this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () { - // Let selection be restored by toolbar handlers before repositioning - setTimeout(function () { - if (_this3.root.classList.contains('ql-hidden')) return; - var range = _this3.quill.getSelection(); - if (range != null) { - _this3.position(_this3.quill.getBounds(range)); - } - }, 1); - }); - } - }, { - key: 'cancel', - value: function cancel() { - this.show(); - } - }, { - key: 'position', - value: function position(reference) { - var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference); - var arrow = this.root.querySelector('.ql-tooltip-arrow'); - arrow.style.marginLeft = ''; - if (shift === 0) return shift; - arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px'; - } - }]); - - return BubbleTooltip; -}(_base.BaseTooltip); - -BubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join(''); - -exports.BubbleTooltip = BubbleTooltip; -exports.default = BubbleTheme; - -/***/ }), -/* 109 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(63); - - -/***/ }) -/******/ ])["default"]; -}); \ No newline at end of file diff --git a/Wino.Mail/JS/Quill/quill.min.js b/Wino.Mail/JS/Quill/quill.min.js deleted file mode 100644 index ff30fd90..00000000 --- a/Wino.Mail/JS/Quill/quill.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * Quill Editor v1.3.6 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Quill=e():t.Quill=e()}("undefined"!=typeof self?self:this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=45)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(17),o=n(18),i=n(19),l=n(48),a=n(49),s=n(50),u=n(51),c=n(52),f=n(11),h=n(29),p=n(30),d=n(28),y=n(1),v={Scope:y.Scope,create:y.create,find:y.find,query:y.query,register:y.register,Container:r.default,Format:o.default,Leaf:i.default,Embed:u.default,Scroll:l.default,Block:s.default,Inline:a.default,Text:c.default,Attributor:{Attribute:f.default,Class:h.default,Style:p.default,Store:d.default}};e.default=v},function(t,e,n){"use strict";function r(t,e){var n=i(t);if(null==n)throw new s("Unable to create "+t+" blot");var r=n;return new r(t instanceof Node||t.nodeType===Node.TEXT_NODE?t:r.create(e),e)}function o(t,n){return void 0===n&&(n=!1),null==t?null:null!=t[e.DATA_KEY]?t[e.DATA_KEY].blot:n?o(t.parentNode,n):null}function i(t,e){void 0===e&&(e=p.ANY);var n;if("string"==typeof t)n=h[t]||u[t];else if(t instanceof Text||t.nodeType===Node.TEXT_NODE)n=h.text;else if("number"==typeof t)t&p.LEVEL&p.BLOCK?n=h.block:t&p.LEVEL&p.INLINE&&(n=h.inline);else if(t instanceof HTMLElement){var r=(t.getAttribute("class")||"").split(/\s+/);for(var o in r)if(n=c[r[o]])break;n=n||f[t.tagName]}return null==n?null:e&p.LEVEL&n.scope&&e&p.TYPE&n.scope?n:null}function l(){for(var t=[],e=0;e1)return t.map(function(t){return l(t)});var n=t[0];if("string"!=typeof n.blotName&&"string"!=typeof n.attrName)throw new s("Invalid definition");if("abstract"===n.blotName)throw new s("Cannot register abstract class");if(h[n.blotName||n.attrName]=n,"string"==typeof n.keyName)u[n.keyName]=n;else if(null!=n.className&&(c[n.className]=n),null!=n.tagName){Array.isArray(n.tagName)?n.tagName=n.tagName.map(function(t){return t.toUpperCase()}):n.tagName=n.tagName.toUpperCase();var r=Array.isArray(n.tagName)?n.tagName:[n.tagName];r.forEach(function(t){null!=f[t]&&null!=n.className||(f[t]=n)})}return n}var a=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var s=function(t){function e(e){var n=this;return e="[Parchment] "+e,n=t.call(this,e)||this,n.message=e,n.name=n.constructor.name,n}return a(e,t),e}(Error);e.ParchmentError=s;var u={},c={},f={},h={};e.DATA_KEY="__blot";var p;!function(t){t[t.TYPE=3]="TYPE",t[t.LEVEL=12]="LEVEL",t[t.ATTRIBUTE=13]="ATTRIBUTE",t[t.BLOT=14]="BLOT",t[t.INLINE=7]="INLINE",t[t.BLOCK=11]="BLOCK",t[t.BLOCK_BLOT=10]="BLOCK_BLOT",t[t.INLINE_BLOT=6]="INLINE_BLOT",t[t.BLOCK_ATTRIBUTE=9]="BLOCK_ATTRIBUTE",t[t.INLINE_ATTRIBUTE=5]="INLINE_ATTRIBUTE",t[t.ANY=15]="ANY"}(p=e.Scope||(e.Scope={})),e.create=r,e.find=o,e.query=i,e.register=l},function(t,e){"use strict";var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,o=function(t){return"function"==typeof Array.isArray?Array.isArray(t):"[object Array]"===r.call(t)},i=function(t){if(!t||"[object Object]"!==r.call(t))return!1;var e=n.call(t,"constructor"),o=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!e&&!o)return!1;var i;for(i in t);return void 0===i||n.call(t,i)};t.exports=function t(){var e,n,r,l,a,s,u=arguments[0],c=1,f=arguments.length,h=!1;for("boolean"==typeof u&&(h=u,u=arguments[1]||{},c=2),(null==u||"object"!=typeof u&&"function"!=typeof u)&&(u={});c1&&void 0!==arguments[1]?arguments[1]:{};return null==t?e:("function"==typeof t.formats&&(e=(0,f.default)(e,t.formats())),null==t.parent||"scroll"==t.parent.blotName||t.parent.statics.scope!==t.statics.scope?e:a(t.parent,e))}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BlockEmbed=e.bubbleFormats=void 0;var s=function(){function t(t,e){for(var n=0;n0&&(t1&&void 0!==arguments[1]&&arguments[1];if(n&&(0===t||t>=this.length()-1)){var r=this.clone();return 0===t?(this.parent.insertBefore(r,this),this):(this.parent.insertBefore(r,this.next),r)}var o=u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"split",this).call(this,t,n);return this.cache={},o}}]),e}(y.default.Block);x.blotName="block",x.tagName="P",x.defaultChild="break",x.allowedChildren=[m.default,y.default.Embed,O.default],e.bubbleFormats=a,e.BlockEmbed=w,e.default=x},function(t,e,n){var r=n(54),o=n(12),i=n(2),l=n(20),a=String.fromCharCode(0),s=function(t){Array.isArray(t)?this.ops=t:null!=t&&Array.isArray(t.ops)?this.ops=t.ops:this.ops=[]};s.prototype.insert=function(t,e){var n={};return 0===t.length?this:(n.insert=t,null!=e&&"object"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n))},s.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},s.prototype.retain=function(t,e){if(t<=0)return this;var n={retain:t};return null!=e&&"object"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n)},s.prototype.push=function(t){var e=this.ops.length,n=this.ops[e-1];if(t=i(!0,{},t),"object"==typeof n){if("number"==typeof t.delete&&"number"==typeof n.delete)return this.ops[e-1]={delete:n.delete+t.delete},this;if("number"==typeof n.delete&&null!=t.insert&&(e-=1,"object"!=typeof(n=this.ops[e-1])))return this.ops.unshift(t),this;if(o(t.attributes,n.attributes)){if("string"==typeof t.insert&&"string"==typeof n.insert)return this.ops[e-1]={insert:n.insert+t.insert},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if("number"==typeof t.retain&&"number"==typeof n.retain)return this.ops[e-1]={retain:n.retain+t.retain},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},s.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},s.prototype.filter=function(t){return this.ops.filter(t)},s.prototype.forEach=function(t){this.ops.forEach(t)},s.prototype.map=function(t){return this.ops.map(t)},s.prototype.partition=function(t){var e=[],n=[];return this.forEach(function(r){(t(r)?e:n).push(r)}),[e,n]},s.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},s.prototype.changeLength=function(){return this.reduce(function(t,e){return e.insert?t+l.length(e):e.delete?t-e.delete:t},0)},s.prototype.length=function(){return this.reduce(function(t,e){return t+l.length(e)},0)},s.prototype.slice=function(t,e){t=t||0,"number"!=typeof e&&(e=1/0);for(var n=[],r=l.iterator(this.ops),o=0;o0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},s.prototype.diff=function(t,e){if(this.ops===t.ops)return new s;var n=[this,t].map(function(e){return e.map(function(n){if(null!=n.insert)return"string"==typeof n.insert?n.insert:a;var r=e===t?"on":"with";throw new Error("diff() called "+r+" non-document")}).join("")}),i=new s,u=r(n[0],n[1],e),c=l.iterator(this.ops),f=l.iterator(t.ops);return u.forEach(function(t){for(var e=t[1].length;e>0;){var n=0;switch(t[0]){case r.INSERT:n=Math.min(f.peekLength(),e),i.push(f.next(n));break;case r.DELETE:n=Math.min(e,c.peekLength()),c.next(n),i.delete(n);break;case r.EQUAL:n=Math.min(c.peekLength(),f.peekLength(),e);var a=c.next(n),s=f.next(n);o(a.insert,s.insert)?i.retain(n,l.attributes.diff(a.attributes,s.attributes)):i.push(s).delete(n)}e-=n}}),i.chop()},s.prototype.eachLine=function(t,e){e=e||"\n";for(var n=l.iterator(this.ops),r=new s,o=0;n.hasNext();){if("insert"!==n.peekType())return;var i=n.peek(),a=l.length(i)-n.peekLength(),u="string"==typeof i.insert?i.insert.indexOf(e,a)-a:-1;if(u<0)r.push(n.next());else if(u>0)r.push(n.next(u));else{if(!1===t(r,n.next(1).attributes||{},o))return;o+=1,r=new s}}r.length()>0&&t(r,{},o)},s.prototype.transform=function(t,e){if(e=!!e,"number"==typeof t)return this.transformPosition(t,e);for(var n=l.iterator(this.ops),r=l.iterator(t.ops),o=new s;n.hasNext()||r.hasNext();)if("insert"!==n.peekType()||!e&&"insert"===r.peekType())if("insert"===r.peekType())o.push(r.next());else{var i=Math.min(n.peekLength(),r.peekLength()),a=n.next(i),u=r.next(i);if(a.delete)continue;u.delete?o.push(u):o.retain(i,l.attributes.transform(a.attributes,u.attributes,e))}else o.retain(l.length(n.next()));return o.chop()},s.prototype.transformPosition=function(t,e){e=!!e;for(var n=l.iterator(this.ops),r=0;n.hasNext()&&r<=t;){var o=n.peekLength(),i=n.peekType();n.next(),"delete"!==i?("insert"===i&&(r0){var n=this.parent.isolate(this.offset(),this.length());this.moveChildren(n),n.wrap(this)}}}],[{key:"compare",value:function(t,n){var r=e.order.indexOf(t),o=e.order.indexOf(n);return r>=0||o>=0?r-o:t===n?0:t0){var a,s=[g.default.events.TEXT_CHANGE,l,i,e];if((a=this.emitter).emit.apply(a,[g.default.events.EDITOR_CHANGE].concat(s)),e!==g.default.sources.SILENT){var c;(c=this.emitter).emit.apply(c,s)}}return l}function s(t,e,n,r,o){var i={};return"number"==typeof t.index&&"number"==typeof t.length?"number"!=typeof e?(o=r,r=n,n=e,e=t.length,t=t.index):(e=t.length,t=t.index):"number"!=typeof e&&(o=r,r=n,n=e,e=0),"object"===(void 0===n?"undefined":c(n))?(i=n,o=r):"string"==typeof n&&(null!=r?i[n]=r:o=n),o=o||g.default.sources.API,[t,e,i,o]}function u(t,e,n,r){if(null==t)return null;var o=void 0,i=void 0;if(e instanceof d.default){var l=[t.index,t.index+t.length].map(function(t){return e.transformPosition(t,r!==g.default.sources.USER)}),a=f(l,2);o=a[0],i=a[1]}else{var s=[t.index,t.index+t.length].map(function(t){return t=0?t+n:Math.max(e,t+n)}),u=f(s,2);o=u[0],i=u[1]}return new x.Range(o,i-o)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.overload=e.expandConfig=void 0;var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),h=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if(i(this,t),this.options=l(e,r),this.container=this.options.container,null==this.container)return P.error("Invalid Quill container",e);this.options.debug&&t.debug(this.options.debug);var o=this.container.innerHTML.trim();this.container.classList.add("ql-container"),this.container.innerHTML="",this.container.__quill=this,this.root=this.addContainer("ql-editor"),this.root.classList.add("ql-blank"),this.root.setAttribute("data-gramm",!1),this.scrollingContainer=this.options.scrollingContainer||this.root,this.emitter=new g.default,this.scroll=w.default.create(this.root,{emitter:this.emitter,whitelist:this.options.formats}),this.editor=new v.default(this.scroll),this.selection=new k.default(this.scroll,this.emitter),this.theme=new this.options.theme(this,this.options),this.keyboard=this.theme.addModule("keyboard"),this.clipboard=this.theme.addModule("clipboard"),this.history=this.theme.addModule("history"),this.theme.init(),this.emitter.on(g.default.events.EDITOR_CHANGE,function(t){t===g.default.events.TEXT_CHANGE&&n.root.classList.toggle("ql-blank",n.editor.isBlank())}),this.emitter.on(g.default.events.SCROLL_UPDATE,function(t,e){var r=n.selection.lastRange,o=r&&0===r.length?r.index:void 0;a.call(n,function(){return n.editor.update(null,e,o)},t)});var s=this.clipboard.convert("
"+o+"


");this.setContents(s),this.history.clear(),this.options.placeholder&&this.root.setAttribute("data-placeholder",this.options.placeholder),this.options.readOnly&&this.disable()}return h(t,null,[{key:"debug",value:function(t){!0===t&&(t="log"),A.default.level(t)}},{key:"find",value:function(t){return t.__quill||w.default.find(t)}},{key:"import",value:function(t){return null==this.imports[t]&&P.error("Cannot import "+t+". Are you sure it was registered?"),this.imports[t]}},{key:"register",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"!=typeof t){var o=t.attrName||t.blotName;"string"==typeof o?this.register("formats/"+o,t,e):Object.keys(t).forEach(function(r){n.register(r,t[r],e)})}else null==this.imports[t]||r||P.warn("Overwriting "+t+" with",e),this.imports[t]=e,(t.startsWith("blots/")||t.startsWith("formats/"))&&"abstract"!==e.blotName?w.default.register(e):t.startsWith("modules")&&"function"==typeof e.register&&e.register()}}]),h(t,[{key:"addContainer",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof t){var n=t;t=document.createElement("div"),t.classList.add(n)}return this.container.insertBefore(t,e),t}},{key:"blur",value:function(){this.selection.setRange(null)}},{key:"deleteText",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.deleteText(t,e)},n,t,-1*e)}},{key:"disable",value:function(){this.enable(!1)}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.scroll.enable(t),this.container.classList.toggle("ql-disabled",!t)}},{key:"focus",value:function(){var t=this.scrollingContainer.scrollTop;this.selection.focus(),this.scrollingContainer.scrollTop=t,this.scrollIntoView()}},{key:"format",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g.default.sources.API;return a.call(this,function(){var r=n.getSelection(!0),i=new d.default;if(null==r)return i;if(w.default.query(t,w.default.Scope.BLOCK))i=n.editor.formatLine(r.index,r.length,o({},t,e));else{if(0===r.length)return n.selection.format(t,e),i;i=n.editor.formatText(r.index,r.length,o({},t,e))}return n.setSelection(r,g.default.sources.SILENT),i},r)}},{key:"formatLine",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatLine(t,e,l)},o,t,0)}},{key:"formatText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatText(t,e,l)},o,t,0)}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=void 0;n="number"==typeof t?this.selection.getBounds(t,e):this.selection.getBounds(t.index,t.length);var r=this.container.getBoundingClientRect();return{bottom:n.bottom-r.top,height:n.height,left:n.left-r.left,right:n.right-r.left,top:n.top-r.top,width:n.width}}},{key:"getContents",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getContents(t,e)}},{key:"getFormat",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.getSelection(!0),e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"number"==typeof t?this.editor.getFormat(t,e):this.editor.getFormat(t.index,t.length)}},{key:"getIndex",value:function(t){return t.offset(this.scroll)}},{key:"getLength",value:function(){return this.scroll.length()}},{key:"getLeaf",value:function(t){return this.scroll.leaf(t)}},{key:"getLine",value:function(t){return this.scroll.line(t)}},{key:"getLines",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE;return"number"!=typeof t?this.scroll.lines(t.index,t.length):this.scroll.lines(t,e)}},{key:"getModule",value:function(t){return this.theme.modules[t]}},{key:"getSelection",value:function(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.focus(),this.update(),this.selection.getRange()[0]}},{key:"getText",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getText(t,e)}},{key:"hasFocus",value:function(){return this.selection.hasFocus()}},{key:"insertEmbed",value:function(e,n,r){var o=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.sources.API;return a.call(this,function(){return o.editor.insertEmbed(e,n,r)},i,e)}},{key:"insertText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,0,n,r,o),c=f(u,4);return t=c[0],l=c[2],o=c[3],a.call(this,function(){return i.editor.insertText(t,e,l)},o,t,e.length)}},{key:"isEnabled",value:function(){return!this.container.classList.contains("ql-disabled")}},{key:"off",value:function(){return this.emitter.off.apply(this.emitter,arguments)}},{key:"on",value:function(){return this.emitter.on.apply(this.emitter,arguments)}},{key:"once",value:function(){return this.emitter.once.apply(this.emitter,arguments)}},{key:"pasteHTML",value:function(t,e,n){this.clipboard.dangerouslyPasteHTML(t,e,n)}},{key:"removeFormat",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.removeFormat(t,e)},n,t)}},{key:"scrollIntoView",value:function(){this.selection.scrollIntoView(this.scrollingContainer)}},{key:"setContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){t=new d.default(t);var n=e.getLength(),r=e.editor.deleteText(0,n),o=e.editor.applyDelta(t),i=o.ops[o.ops.length-1];return null!=i&&"string"==typeof i.insert&&"\n"===i.insert[i.insert.length-1]&&(e.editor.deleteText(e.getLength()-1,1),o.delete(1)),r.compose(o)},n)}},{key:"setSelection",value:function(e,n,r){if(null==e)this.selection.setRange(null,n||t.sources.API);else{var o=s(e,n,r),i=f(o,4);e=i[0],n=i[1],r=i[3],this.selection.setRange(new x.Range(e,n),r),r!==g.default.sources.SILENT&&this.selection.scrollIntoView(this.scrollingContainer)}}},{key:"setText",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API,n=(new d.default).insert(t);return this.setContents(n,e)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.default.sources.USER,e=this.scroll.update(t);return this.selection.update(t),e}},{key:"updateContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){return t=new d.default(t),e.editor.applyDelta(t,n)},n,!0)}}]),t}();S.DEFAULTS={bounds:null,formats:null,modules:{},placeholder:"",readOnly:!1,scrollingContainer:null,strict:!0,theme:"default"},S.events=g.default.events,S.sources=g.default.sources,S.version="1.3.6",S.imports={delta:d.default,parchment:w.default,"core/module":_.default,"core/theme":T.default},e.expandConfig=l,e.overload=s,e.default=S},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r(this,t),this.quill=e,this.options=n};o.DEFAULTS={},e.default=o},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=n(0),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default.Text);e.default=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n1?e-1:0),r=1;r1?n-1:0),o=1;o-1:this.whitelist.indexOf(e)>-1))},t.prototype.remove=function(t){t.removeAttribute(this.keyName)},t.prototype.value=function(t){var e=t.getAttribute(this.keyName);return this.canAdd(t,e)&&e?e:""},t}();e.default=o},function(t,e,n){function r(t){return null===t||void 0===t}function o(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}function i(t,e,n){var i,c;if(r(t)||r(e))return!1;if(t.prototype!==e.prototype)return!1;if(s(t))return!!s(e)&&(t=l.call(t),e=l.call(e),u(t,e,n));if(o(t)){if(!o(e))return!1;if(t.length!==e.length)return!1;for(i=0;i=0;i--)if(f[i]!=h[i])return!1;for(i=f.length-1;i>=0;i--)if(c=f[i],!u(t[c],e[c],n))return!1;return typeof t==typeof e}var l=Array.prototype.slice,a=n(55),s=n(56),u=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:i(t,e,n))}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.Code=void 0;var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function t(t,e){for(var n=0;n=t+n)){var l=this.newlineIndex(t,!0)+1,a=i-l+1,s=this.isolate(l,a),u=s.next;s.format(r,o),u instanceof e&&u.formatAt(0,t-l+n-a,r,o)}}}},{key:"insertAt",value:function(t,e,n){if(null==n){var r=this.descendant(m.default,t),o=a(r,2),i=o[0],l=o[1];i.insertAt(l,e)}}},{key:"length",value:function(){var t=this.domNode.textContent.length;return this.domNode.textContent.endsWith("\n")?t:t+1}},{key:"newlineIndex",value:function(t){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1])return this.domNode.textContent.slice(0,t).lastIndexOf("\n");var e=this.domNode.textContent.slice(t).indexOf("\n");return e>-1?t+e:-1}},{key:"optimize",value:function(t){this.domNode.textContent.endsWith("\n")||this.appendChild(p.default.create("text","\n")),u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t);var n=this.next;null!=n&&n.prev===this&&n.statics.blotName===this.statics.blotName&&this.statics.formats(this.domNode)===n.statics.formats(n.domNode)&&(n.optimize(t),n.moveChildren(this),n.remove())}},{key:"replace",value:function(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t),[].slice.call(this.domNode.querySelectorAll("*")).forEach(function(t){var e=p.default.find(t);null==e?t.parentNode.removeChild(t):e instanceof p.default.Embed?e.remove():e.unwrap()})}}],[{key:"create",value:function(t){var n=u(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return n.setAttribute("spellcheck",!1),n}},{key:"formats",value:function(){return!0}}]),e}(y.default);O.blotName="code-block",O.tagName="PRE",O.TAB=" ",e.Code=_,e.default=O},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n-1}Object.defineProperty(e,"__esModule",{value:!0}),e.sanitize=e.default=void 0;var a=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]&&arguments[1],n=this.container.querySelector(".ql-selected");if(t!==n&&(null!=n&&n.classList.remove("ql-selected"),null!=t&&(t.classList.add("ql-selected"),this.select.selectedIndex=[].indexOf.call(t.parentNode.children,t),t.hasAttribute("data-value")?this.label.setAttribute("data-value",t.getAttribute("data-value")):this.label.removeAttribute("data-value"),t.hasAttribute("data-label")?this.label.setAttribute("data-label",t.getAttribute("data-label")):this.label.removeAttribute("data-label"),e))){if("function"==typeof Event)this.select.dispatchEvent(new Event("change"));else if("object"===("undefined"==typeof Event?"undefined":l(Event))){var r=document.createEvent("Event");r.initEvent("change",!0,!0),this.select.dispatchEvent(r)}this.close()}}},{key:"update",value:function(){var t=void 0;if(this.select.selectedIndex>-1){var e=this.container.querySelector(".ql-picker-options").children[this.select.selectedIndex];t=this.select.options[this.select.selectedIndex],this.selectItem(e)}else this.selectItem(null);var n=null!=t&&t!==this.select.querySelector("option[selected]");this.label.classList.toggle("ql-active",n)}}]),t}();e.default=p},function(t,e,n){"use strict";function r(t){var e=a.find(t);if(null==e)try{e=a.create(t)}catch(n){e=a.create(a.Scope.INLINE),[].slice.call(t.childNodes).forEach(function(t){e.domNode.appendChild(t)}),t.parentNode&&t.parentNode.replaceChild(e.domNode,t),e.attach()}return e}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(47),l=n(27),a=n(1),s=function(t){function e(e){var n=t.call(this,e)||this;return n.build(),n}return o(e,t),e.prototype.appendChild=function(t){this.insertBefore(t)},e.prototype.attach=function(){t.prototype.attach.call(this),this.children.forEach(function(t){t.attach()})},e.prototype.build=function(){var t=this;this.children=new i.default,[].slice.call(this.domNode.childNodes).reverse().forEach(function(e){try{var n=r(e);t.insertBefore(n,t.children.head||void 0)}catch(t){if(t instanceof a.ParchmentError)return;throw t}})},e.prototype.deleteAt=function(t,e){if(0===t&&e===this.length())return this.remove();this.children.forEachAt(t,e,function(t,e,n){t.deleteAt(e,n)})},e.prototype.descendant=function(t,n){var r=this.children.find(n),o=r[0],i=r[1];return null==t.blotName&&t(o)||null!=t.blotName&&o instanceof t?[o,i]:o instanceof e?o.descendant(t,i):[null,-1]},e.prototype.descendants=function(t,n,r){void 0===n&&(n=0),void 0===r&&(r=Number.MAX_VALUE);var o=[],i=r;return this.children.forEachAt(n,r,function(n,r,l){(null==t.blotName&&t(n)||null!=t.blotName&&n instanceof t)&&o.push(n),n instanceof e&&(o=o.concat(n.descendants(t,r,i))),i-=l}),o},e.prototype.detach=function(){this.children.forEach(function(t){t.detach()}),t.prototype.detach.call(this)},e.prototype.formatAt=function(t,e,n,r){this.children.forEachAt(t,e,function(t,e,o){t.formatAt(e,o,n,r)})},e.prototype.insertAt=function(t,e,n){var r=this.children.find(t),o=r[0],i=r[1];if(o)o.insertAt(i,e,n);else{var l=null==n?a.create("text",e):a.create(e,n);this.appendChild(l)}},e.prototype.insertBefore=function(t,e){if(null!=this.statics.allowedChildren&&!this.statics.allowedChildren.some(function(e){return t instanceof e}))throw new a.ParchmentError("Cannot insert "+t.statics.blotName+" into "+this.statics.blotName);t.insertInto(this,e)},e.prototype.length=function(){return this.children.reduce(function(t,e){return t+e.length()},0)},e.prototype.moveChildren=function(t,e){this.children.forEach(function(n){t.insertBefore(n,e)})},e.prototype.optimize=function(e){if(t.prototype.optimize.call(this,e),0===this.children.length)if(null!=this.statics.defaultChild){var n=a.create(this.statics.defaultChild);this.appendChild(n),n.optimize(e)}else this.remove()},e.prototype.path=function(t,n){void 0===n&&(n=!1);var r=this.children.find(t,n),o=r[0],i=r[1],l=[[this,t]];return o instanceof e?l.concat(o.path(i,n)):(null!=o&&l.push([o,i]),l)},e.prototype.removeChild=function(t){this.children.remove(t)},e.prototype.replace=function(n){n instanceof e&&n.moveChildren(this),t.prototype.replace.call(this,n)},e.prototype.split=function(t,e){if(void 0===e&&(e=!1),!e){if(0===t)return this;if(t===this.length())return this.next}var n=this.clone();return this.parent.insertBefore(n,this.next),this.children.forEachAt(t,this.length(),function(t,r,o){t=t.split(r,e),n.appendChild(t)}),n},e.prototype.unwrap=function(){this.moveChildren(this.parent,this.next),this.remove()},e.prototype.update=function(t,e){var n=this,o=[],i=[];t.forEach(function(t){t.target===n.domNode&&"childList"===t.type&&(o.push.apply(o,t.addedNodes),i.push.apply(i,t.removedNodes))}),i.forEach(function(t){if(!(null!=t.parentNode&&"IFRAME"!==t.tagName&&document.body.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)){var e=a.find(t);null!=e&&(null!=e.domNode.parentNode&&e.domNode.parentNode!==n.domNode||e.detach())}}),o.filter(function(t){return t.parentNode==n.domNode}).sort(function(t,e){return t===e?0:t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING?1:-1}).forEach(function(t){var e=null;null!=t.nextSibling&&(e=a.find(t.nextSibling));var o=r(t);o.next==e&&null!=o.next||(null!=o.parent&&o.parent.removeChild(n),n.insertBefore(o,e||void 0))})},e}(l.default);e.default=s},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(11),i=n(28),l=n(17),a=n(1),s=function(t){function e(e){var n=t.call(this,e)||this;return n.attributes=new i.default(n.domNode),n}return r(e,t),e.formats=function(t){return"string"==typeof this.tagName||(Array.isArray(this.tagName)?t.tagName.toLowerCase():void 0)},e.prototype.format=function(t,e){var n=a.query(t);n instanceof o.default?this.attributes.attribute(n,e):e&&(null==n||t===this.statics.blotName&&this.formats()[t]===e||this.replaceWith(t,e))},e.prototype.formats=function(){var t=this.attributes.values(),e=this.statics.formats(this.domNode);return null!=e&&(t[this.statics.blotName]=e),t},e.prototype.replaceWith=function(e,n){var r=t.prototype.replaceWith.call(this,e,n);return this.attributes.copy(r),r},e.prototype.update=function(e,n){var r=this;t.prototype.update.call(this,e,n),e.some(function(t){return t.target===r.domNode&&"attributes"===t.type})&&this.attributes.build()},e.prototype.wrap=function(n,r){var o=t.prototype.wrap.call(this,n,r);return o instanceof e&&o.statics.scope===this.statics.scope&&this.attributes.move(o),o},e}(l.default);e.default=s},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(27),i=n(1),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.value=function(t){return!0},e.prototype.index=function(t,e){return this.domNode===t||this.domNode.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY?Math.min(e,1):-1},e.prototype.position=function(t,e){var n=[].indexOf.call(this.parent.domNode.childNodes,this.domNode);return t>0&&(n+=1),[this.parent.domNode,n]},e.prototype.value=function(){return t={},t[this.statics.blotName]=this.statics.value(this.domNode)||!0,t;var t},e.scope=i.Scope.INLINE_BLOT,e}(o.default);e.default=l},function(t,e,n){function r(t){this.ops=t,this.index=0,this.offset=0}var o=n(12),i=n(2),l={attributes:{compose:function(t,e,n){"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={});var r=i(!0,{},e);n||(r=Object.keys(r).reduce(function(t,e){return null!=r[e]&&(t[e]=r[e]),t},{}));for(var o in t)void 0!==t[o]&&void 0===e[o]&&(r[o]=t[o]);return Object.keys(r).length>0?r:void 0},diff:function(t,e){"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={});var n=Object.keys(t).concat(Object.keys(e)).reduce(function(n,r){return o(t[r],e[r])||(n[r]=void 0===e[r]?null:e[r]),n},{});return Object.keys(n).length>0?n:void 0},transform:function(t,e,n){if("object"!=typeof t)return e;if("object"==typeof e){if(!n)return e;var r=Object.keys(e).reduce(function(n,r){return void 0===t[r]&&(n[r]=e[r]),n},{});return Object.keys(r).length>0?r:void 0}}},iterator:function(t){return new r(t)},length:function(t){return"number"==typeof t.delete?t.delete:"number"==typeof t.retain?t.retain:"string"==typeof t.insert?t.insert.length:1}};r.prototype.hasNext=function(){return this.peekLength()<1/0},r.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var n=this.offset,r=l.length(e);if(t>=r-n?(t=r-n,this.index+=1,this.offset=0):this.offset+=t,"number"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),"number"==typeof e.retain?o.retain=t:"string"==typeof e.insert?o.insert=e.insert.substr(n,t):o.insert=e.insert,o}return{retain:1/0}},r.prototype.peek=function(){return this.ops[this.index]},r.prototype.peekLength=function(){return this.ops[this.index]?l.length(this.ops[this.index])-this.offset:1/0},r.prototype.peekType=function(){return this.ops[this.index]?"number"==typeof this.ops[this.index].delete?"delete":"number"==typeof this.ops[this.index].retain?"retain":"insert":"retain"},t.exports=l},function(t,e){var n=function(){"use strict";function t(t,e){return null!=e&&t instanceof e}function e(n,r,o,i,c){function f(n,o){if(null===n)return null;if(0===o)return n;var y,v;if("object"!=typeof n)return n;if(t(n,a))y=new a;else if(t(n,s))y=new s;else if(t(n,u))y=new u(function(t,e){n.then(function(e){t(f(e,o-1))},function(t){e(f(t,o-1))})});else if(e.__isArray(n))y=[];else if(e.__isRegExp(n))y=new RegExp(n.source,l(n)),n.lastIndex&&(y.lastIndex=n.lastIndex);else if(e.__isDate(n))y=new Date(n.getTime());else{if(d&&Buffer.isBuffer(n))return y=new Buffer(n.length),n.copy(y),y;t(n,Error)?y=Object.create(n):void 0===i?(v=Object.getPrototypeOf(n),y=Object.create(v)):(y=Object.create(i),v=i)}if(r){var b=h.indexOf(n);if(-1!=b)return p[b];h.push(n),p.push(y)}t(n,a)&&n.forEach(function(t,e){var n=f(e,o-1),r=f(t,o-1);y.set(n,r)}),t(n,s)&&n.forEach(function(t){var e=f(t,o-1);y.add(e)});for(var g in n){var m;v&&(m=Object.getOwnPropertyDescriptor(v,g)),m&&null==m.set||(y[g]=f(n[g],o-1))}if(Object.getOwnPropertySymbols)for(var _=Object.getOwnPropertySymbols(n),g=0;g<_.length;g++){var O=_[g],w=Object.getOwnPropertyDescriptor(n,O);(!w||w.enumerable||c)&&(y[O]=f(n[O],o-1),w.enumerable||Object.defineProperty(y,O,{enumerable:!1}))}if(c)for(var x=Object.getOwnPropertyNames(n),g=0;g1&&void 0!==arguments[1]?arguments[1]:0;i(this,t),this.index=e,this.length=n},O=function(){function t(e,n){var r=this;i(this,t),this.emitter=n,this.scroll=e,this.composing=!1,this.mouseDown=!1,this.root=this.scroll.domNode,this.cursor=c.default.create("cursor",this),this.lastRange=this.savedRange=new _(0,0),this.handleComposition(),this.handleDragging(),this.emitter.listenDOM("selectionchange",document,function(){r.mouseDown||setTimeout(r.update.bind(r,v.default.sources.USER),1)}),this.emitter.on(v.default.events.EDITOR_CHANGE,function(t,e){t===v.default.events.TEXT_CHANGE&&e.length()>0&&r.update(v.default.sources.SILENT)}),this.emitter.on(v.default.events.SCROLL_BEFORE_UPDATE,function(){if(r.hasFocus()){var t=r.getNativeRange();null!=t&&t.start.node!==r.cursor.textNode&&r.emitter.once(v.default.events.SCROLL_UPDATE,function(){try{r.setNativeRange(t.start.node,t.start.offset,t.end.node,t.end.offset)}catch(t){}})}}),this.emitter.on(v.default.events.SCROLL_OPTIMIZE,function(t,e){if(e.range){var n=e.range,o=n.startNode,i=n.startOffset,l=n.endNode,a=n.endOffset;r.setNativeRange(o,i,l,a)}}),this.update(v.default.sources.SILENT)}return s(t,[{key:"handleComposition",value:function(){var t=this;this.root.addEventListener("compositionstart",function(){t.composing=!0}),this.root.addEventListener("compositionend",function(){if(t.composing=!1,t.cursor.parent){var e=t.cursor.restore();if(!e)return;setTimeout(function(){t.setNativeRange(e.startNode,e.startOffset,e.endNode,e.endOffset)},1)}})}},{key:"handleDragging",value:function(){var t=this;this.emitter.listenDOM("mousedown",document.body,function(){t.mouseDown=!0}),this.emitter.listenDOM("mouseup",document.body,function(){t.mouseDown=!1,t.update(v.default.sources.USER)})}},{key:"focus",value:function(){this.hasFocus()||(this.root.focus(),this.setRange(this.savedRange))}},{key:"format",value:function(t,e){if(null==this.scroll.whitelist||this.scroll.whitelist[t]){this.scroll.update();var n=this.getNativeRange();if(null!=n&&n.native.collapsed&&!c.default.query(t,c.default.Scope.BLOCK)){if(n.start.node!==this.cursor.textNode){var r=c.default.find(n.start.node,!1);if(null==r)return;if(r instanceof c.default.Leaf){var o=r.split(n.start.offset);r.parent.insertBefore(this.cursor,o)}else r.insertBefore(this.cursor,n.start.node);this.cursor.attach()}this.cursor.format(t,e),this.scroll.optimize(),this.setNativeRange(this.cursor.textNode,this.cursor.textNode.data.length),this.update()}}}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.scroll.length();t=Math.min(t,n-1),e=Math.min(t+e,n-1)-t;var r=void 0,o=this.scroll.leaf(t),i=a(o,2),l=i[0],s=i[1];if(null==l)return null;var u=l.position(s,!0),c=a(u,2);r=c[0],s=c[1];var f=document.createRange();if(e>0){f.setStart(r,s);var h=this.scroll.leaf(t+e),p=a(h,2);if(l=p[0],s=p[1],null==l)return null;var d=l.position(s,!0),y=a(d,2);return r=y[0],s=y[1],f.setEnd(r,s),f.getBoundingClientRect()}var v="left",b=void 0;return r instanceof Text?(s0&&(v="right")),{bottom:b.top+b.height,height:b.height,left:b[v],right:b[v],top:b.top,width:0}}},{key:"getNativeRange",value:function(){var t=document.getSelection();if(null==t||t.rangeCount<=0)return null;var e=t.getRangeAt(0);if(null==e)return null;var n=this.normalizeNative(e);return m.info("getNativeRange",n),n}},{key:"getRange",value:function(){var t=this.getNativeRange();return null==t?[null,null]:[this.normalizedToRange(t),t]}},{key:"hasFocus",value:function(){return document.activeElement===this.root}},{key:"normalizedToRange",value:function(t){var e=this,n=[[t.start.node,t.start.offset]];t.native.collapsed||n.push([t.end.node,t.end.offset]);var r=n.map(function(t){var n=a(t,2),r=n[0],o=n[1],i=c.default.find(r,!0),l=i.offset(e.scroll);return 0===o?l:i instanceof c.default.Container?l+i.length():l+i.index(r,o)}),i=Math.min(Math.max.apply(Math,o(r)),this.scroll.length()-1),l=Math.min.apply(Math,[i].concat(o(r)));return new _(l,i-l)}},{key:"normalizeNative",value:function(t){if(!l(this.root,t.startContainer)||!t.collapsed&&!l(this.root,t.endContainer))return null;var e={start:{node:t.startContainer,offset:t.startOffset},end:{node:t.endContainer,offset:t.endOffset},native:t};return[e.start,e.end].forEach(function(t){for(var e=t.node,n=t.offset;!(e instanceof Text)&&e.childNodes.length>0;)if(e.childNodes.length>n)e=e.childNodes[n],n=0;else{if(e.childNodes.length!==n)break;e=e.lastChild,n=e instanceof Text?e.data.length:e.childNodes.length+1}t.node=e,t.offset=n}),e}},{key:"rangeToNative",value:function(t){var e=this,n=t.collapsed?[t.index]:[t.index,t.index+t.length],r=[],o=this.scroll.length();return n.forEach(function(t,n){t=Math.min(o-1,t);var i=void 0,l=e.scroll.leaf(t),s=a(l,2),u=s[0],c=s[1],f=u.position(c,0!==n),h=a(f,2);i=h[0],c=h[1],r.push(i,c)}),r.length<2&&(r=r.concat(r)),r}},{key:"scrollIntoView",value:function(t){var e=this.lastRange;if(null!=e){var n=this.getBounds(e.index,e.length);if(null!=n){var r=this.scroll.length()-1,o=this.scroll.line(Math.min(e.index,r)),i=a(o,1),l=i[0],s=l;if(e.length>0){var u=this.scroll.line(Math.min(e.index+e.length,r));s=a(u,1)[0]}if(null!=l&&null!=s){var c=t.getBoundingClientRect();n.topc.bottom&&(t.scrollTop+=n.bottom-c.bottom)}}}}},{key:"setNativeRange",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(m.info("setNativeRange",t,e,n,r),null==t||null!=this.root.parentNode&&null!=t.parentNode&&null!=n.parentNode){var i=document.getSelection();if(null!=i)if(null!=t){this.hasFocus()||this.root.focus();var l=(this.getNativeRange()||{}).native;if(null==l||o||t!==l.startContainer||e!==l.startOffset||n!==l.endContainer||r!==l.endOffset){"BR"==t.tagName&&(e=[].indexOf.call(t.parentNode.childNodes,t),t=t.parentNode),"BR"==n.tagName&&(r=[].indexOf.call(n.parentNode.childNodes,n),n=n.parentNode);var a=document.createRange();a.setStart(t,e),a.setEnd(n,r),i.removeAllRanges(),i.addRange(a)}}else i.removeAllRanges(),this.root.blur(),document.body.focus()}}},{key:"setRange",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:v.default.sources.API;if("string"==typeof e&&(n=e,e=!1),m.info("setRange",t),null!=t){var r=this.rangeToNative(t);this.setNativeRange.apply(this,o(r).concat([e]))}else this.setNativeRange(null);this.update(n)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:v.default.sources.USER,e=this.lastRange,n=this.getRange(),r=a(n,2),o=r[0],i=r[1];if(this.lastRange=o,null!=this.lastRange&&(this.savedRange=this.lastRange),!(0,d.default)(e,this.lastRange)){var l;!this.composing&&null!=i&&i.native.collapsed&&i.start.node!==this.cursor.textNode&&this.cursor.restore();var s=[v.default.events.SELECTION_CHANGE,(0,h.default)(this.lastRange),(0,h.default)(e),t];if((l=this.emitter).emit.apply(l,[v.default.events.EDITOR_CHANGE].concat(s)),t!==v.default.sources.SILENT){var u;(u=this.emitter).emit.apply(u,s)}}}}]),t}();e.Range=_,e.default=O},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=n(0),s=r(a),u=n(3),c=r(u),f=function(t){function e(){return o(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return l(e,t),e}(s.default.Container);f.allowedChildren=[c.default,u.BlockEmbed,f],e.default=f},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.ColorStyle=e.ColorClass=e.ColorAttributor=void 0;var l=function(){function t(t,e){for(var n=0;n1){var u=o.formats(),c=this.quill.getFormat(t.index-1,1);i=A.default.attributes.diff(u,c)||{}}}var f=/[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(e.prefix)?2:1;this.quill.deleteText(t.index-f,f,S.default.sources.USER),Object.keys(i).length>0&&this.quill.formatLine(t.index-f,f,i,S.default.sources.USER),this.quill.focus()}}function c(t,e){var n=/^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(e.suffix)?2:1;if(!(t.index>=this.quill.getLength()-n)){var r={},o=0,i=this.quill.getLine(t.index),l=b(i,1),a=l[0];if(e.offset>=a.length()-1){var s=this.quill.getLine(t.index+1),u=b(s,1),c=u[0];if(c){var f=a.formats(),h=this.quill.getFormat(t.index,1);r=A.default.attributes.diff(f,h)||{},o=c.length()}}this.quill.deleteText(t.index,n,S.default.sources.USER),Object.keys(r).length>0&&this.quill.formatLine(t.index+o-1,n,r,S.default.sources.USER)}}function f(t){var e=this.quill.getLines(t),n={};if(e.length>1){var r=e[0].formats(),o=e[e.length-1].formats();n=A.default.attributes.diff(o,r)||{}}this.quill.deleteText(t,S.default.sources.USER),Object.keys(n).length>0&&this.quill.formatLine(t.index,1,n,S.default.sources.USER),this.quill.setSelection(t.index,S.default.sources.SILENT),this.quill.focus()}function h(t,e){var n=this;t.length>0&&this.quill.scroll.deleteAt(t.index,t.length);var r=Object.keys(e.format).reduce(function(t,n){return T.default.query(n,T.default.Scope.BLOCK)&&!Array.isArray(e.format[n])&&(t[n]=e.format[n]),t},{});this.quill.insertText(t.index,"\n",r,S.default.sources.USER),this.quill.setSelection(t.index+1,S.default.sources.SILENT),this.quill.focus(),Object.keys(e.format).forEach(function(t){null==r[t]&&(Array.isArray(e.format[t])||"link"!==t&&n.quill.format(t,e.format[t],S.default.sources.USER))})}function p(t){return{key:D.keys.TAB,shiftKey:!t,format:{"code-block":!0},handler:function(e){var n=T.default.query("code-block"),r=e.index,o=e.length,i=this.quill.scroll.descendant(n,r),l=b(i,2),a=l[0],s=l[1];if(null!=a){var u=this.quill.getIndex(a),c=a.newlineIndex(s,!0)+1,f=a.newlineIndex(u+s+o),h=a.domNode.textContent.slice(c,f).split("\n");s=0,h.forEach(function(e,i){t?(a.insertAt(c+s,n.TAB),s+=n.TAB.length,0===i?r+=n.TAB.length:o+=n.TAB.length):e.startsWith(n.TAB)&&(a.deleteAt(c+s,n.TAB.length),s-=n.TAB.length,0===i?r-=n.TAB.length:o-=n.TAB.length),s+=e.length+1}),this.quill.update(S.default.sources.USER),this.quill.setSelection(r,o,S.default.sources.SILENT)}}}}function d(t){return{key:t[0].toUpperCase(),shortKey:!0,handler:function(e,n){this.quill.format(t,!n.format[t],S.default.sources.USER)}}}function y(t){if("string"==typeof t||"number"==typeof t)return y({key:t});if("object"===(void 0===t?"undefined":v(t))&&(t=(0,_.default)(t,!1)),"string"==typeof t.key)if(null!=D.keys[t.key.toUpperCase()])t.key=D.keys[t.key.toUpperCase()];else{if(1!==t.key.length)return null;t.key=t.key.toUpperCase().charCodeAt(0)}return t.shortKey&&(t[B]=t.shortKey,delete t.shortKey),t}Object.defineProperty(e,"__esModule",{value:!0}),e.SHORTKEY=e.default=void 0;var v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},b=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),g=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=y(t);if(null==r||null==r.key)return I.warn("Attempted to add invalid keyboard binding",r);"function"==typeof e&&(e={handler:e}),"function"==typeof n&&(n={handler:n}),r=(0,k.default)(r,e,n),this.bindings[r.key]=this.bindings[r.key]||[],this.bindings[r.key].push(r)}},{key:"listen",value:function(){var t=this;this.quill.root.addEventListener("keydown",function(n){if(!n.defaultPrevented){var r=n.which||n.keyCode,o=(t.bindings[r]||[]).filter(function(t){return e.match(n,t)});if(0!==o.length){var i=t.quill.getSelection();if(null!=i&&t.quill.hasFocus()){var l=t.quill.getLine(i.index),a=b(l,2),s=a[0],u=a[1],c=t.quill.getLeaf(i.index),f=b(c,2),h=f[0],p=f[1],d=0===i.length?[h,p]:t.quill.getLeaf(i.index+i.length),y=b(d,2),g=y[0],m=y[1],_=h instanceof T.default.Text?h.value().slice(0,p):"",O=g instanceof T.default.Text?g.value().slice(m):"",x={collapsed:0===i.length,empty:0===i.length&&s.length()<=1,format:t.quill.getFormat(i),offset:u,prefix:_,suffix:O};o.some(function(e){if(null!=e.collapsed&&e.collapsed!==x.collapsed)return!1;if(null!=e.empty&&e.empty!==x.empty)return!1;if(null!=e.offset&&e.offset!==x.offset)return!1;if(Array.isArray(e.format)){if(e.format.every(function(t){return null==x.format[t]}))return!1}else if("object"===v(e.format)&&!Object.keys(e.format).every(function(t){return!0===e.format[t]?null!=x.format[t]:!1===e.format[t]?null==x.format[t]:(0,w.default)(e.format[t],x.format[t])}))return!1;return!(null!=e.prefix&&!e.prefix.test(x.prefix))&&(!(null!=e.suffix&&!e.suffix.test(x.suffix))&&!0!==e.handler.call(t,i,x))})&&n.preventDefault()}}}})}}]),e}(R.default);D.keys={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46},D.DEFAULTS={bindings:{bold:d("bold"),italic:d("italic"),underline:d("underline"),indent:{key:D.keys.TAB,format:["blockquote","indent","list"],handler:function(t,e){if(e.collapsed&&0!==e.offset)return!0;this.quill.format("indent","+1",S.default.sources.USER)}},outdent:{key:D.keys.TAB,shiftKey:!0,format:["blockquote","indent","list"],handler:function(t,e){if(e.collapsed&&0!==e.offset)return!0;this.quill.format("indent","-1",S.default.sources.USER)}},"outdent backspace":{key:D.keys.BACKSPACE,collapsed:!0,shiftKey:null,metaKey:null,ctrlKey:null,altKey:null,format:["indent","list"],offset:0,handler:function(t,e){null!=e.format.indent?this.quill.format("indent","-1",S.default.sources.USER):null!=e.format.list&&this.quill.format("list",!1,S.default.sources.USER)}},"indent code-block":p(!0),"outdent code-block":p(!1),"remove tab":{key:D.keys.TAB,shiftKey:!0,collapsed:!0,prefix:/\t$/,handler:function(t){this.quill.deleteText(t.index-1,1,S.default.sources.USER)}},tab:{key:D.keys.TAB,handler:function(t){this.quill.history.cutoff();var e=(new N.default).retain(t.index).delete(t.length).insert("\t");this.quill.updateContents(e,S.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(t.index+1,S.default.sources.SILENT)}},"list empty enter":{key:D.keys.ENTER,collapsed:!0,format:["list"],empty:!0,handler:function(t,e){this.quill.format("list",!1,S.default.sources.USER),e.format.indent&&this.quill.format("indent",!1,S.default.sources.USER)}},"checklist enter":{key:D.keys.ENTER,collapsed:!0,format:{list:"checked"},handler:function(t){var e=this.quill.getLine(t.index),n=b(e,2),r=n[0],o=n[1],i=(0,k.default)({},r.formats(),{list:"checked"}),l=(new N.default).retain(t.index).insert("\n",i).retain(r.length()-o-1).retain(1,{list:"unchecked"});this.quill.updateContents(l,S.default.sources.USER),this.quill.setSelection(t.index+1,S.default.sources.SILENT),this.quill.scrollIntoView()}},"header enter":{key:D.keys.ENTER,collapsed:!0,format:["header"],suffix:/^$/,handler:function(t,e){var n=this.quill.getLine(t.index),r=b(n,2),o=r[0],i=r[1],l=(new N.default).retain(t.index).insert("\n",e.format).retain(o.length()-i-1).retain(1,{header:null});this.quill.updateContents(l,S.default.sources.USER),this.quill.setSelection(t.index+1,S.default.sources.SILENT),this.quill.scrollIntoView()}},"list autofill":{key:" ",collapsed:!0,format:{list:!1},prefix:/^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/,handler:function(t,e){var n=e.prefix.length,r=this.quill.getLine(t.index),o=b(r,2),i=o[0],l=o[1];if(l>n)return!0;var a=void 0;switch(e.prefix.trim()){case"[]":case"[ ]":a="unchecked";break;case"[x]":a="checked";break;case"-":case"*":a="bullet";break;default:a="ordered"}this.quill.insertText(t.index," ",S.default.sources.USER),this.quill.history.cutoff();var s=(new N.default).retain(t.index-l).delete(n+1).retain(i.length()-2-l).retain(1,{list:a});this.quill.updateContents(s,S.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(t.index-n,S.default.sources.SILENT)}},"code exit":{key:D.keys.ENTER,collapsed:!0,format:["code-block"],prefix:/\n\n$/,suffix:/^\s+$/,handler:function(t){var e=this.quill.getLine(t.index),n=b(e,2),r=n[0],o=n[1],i=(new N.default).retain(t.index+r.length()-o-2).retain(1,{"code-block":null}).delete(1);this.quill.updateContents(i,S.default.sources.USER)}},"embed left":s(D.keys.LEFT,!1),"embed left shift":s(D.keys.LEFT,!0),"embed right":s(D.keys.RIGHT,!1),"embed right shift":s(D.keys.RIGHT,!0)}},e.default=D,e.SHORTKEY=B},function(t,e,n){"use strict";t.exports={align:{"":n(75),center:n(76),right:n(77),justify:n(78)},background:n(79),blockquote:n(80),bold:n(81),clean:n(82),code:n(40),"code-block":n(40),color:n(83),direction:{"":n(84),rtl:n(85)},float:{center:n(86),full:n(87),left:n(88),right:n(89)},formula:n(90),header:{1:n(91),2:n(92)},italic:n(93),image:n(94),indent:{"+1":n(95),"-1":n(96)},link:n(97),list:{ordered:n(98),bullet:n(99),check:n(100)},script:{sub:n(101),super:n(102)},strike:n(103),underline:n(104),video:n(105)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(1),o=function(){function t(t){this.domNode=t,this.domNode[r.DATA_KEY]={blot:this}}return Object.defineProperty(t.prototype,"statics",{get:function(){return this.constructor},enumerable:!0,configurable:!0}),t.create=function(t){if(null==this.tagName)throw new r.ParchmentError("Blot definition missing tagName");var e;return Array.isArray(this.tagName)?("string"==typeof t&&(t=t.toUpperCase(),parseInt(t).toString()===t&&(t=parseInt(t))),e="number"==typeof t?document.createElement(this.tagName[t-1]):this.tagName.indexOf(t)>-1?document.createElement(t):document.createElement(this.tagName[0])):e=document.createElement(this.tagName),this.className&&e.classList.add(this.className),e},t.prototype.attach=function(){null!=this.parent&&(this.scroll=this.parent.scroll)},t.prototype.clone=function(){var t=this.domNode.cloneNode(!1);return r.create(t)},t.prototype.detach=function(){null!=this.parent&&this.parent.removeChild(this),delete this.domNode[r.DATA_KEY]},t.prototype.deleteAt=function(t,e){this.isolate(t,e).remove()},t.prototype.formatAt=function(t,e,n,o){var i=this.isolate(t,e);if(null!=r.query(n,r.Scope.BLOT)&&o)i.wrap(n,o);else if(null!=r.query(n,r.Scope.ATTRIBUTE)){var l=r.create(this.statics.scope);i.wrap(l),l.format(n,o)}},t.prototype.insertAt=function(t,e,n){var o=null==n?r.create("text",e):r.create(e,n),i=this.split(t);this.parent.insertBefore(o,i)},t.prototype.insertInto=function(t,e){void 0===e&&(e=null),null!=this.parent&&this.parent.children.remove(this);var n=null;t.children.insertBefore(this,e),null!=e&&(n=e.domNode),this.domNode.parentNode==t.domNode&&this.domNode.nextSibling==n||t.domNode.insertBefore(this.domNode,n),this.parent=t,this.attach()},t.prototype.isolate=function(t,e){var n=this.split(t);return n.split(e),n},t.prototype.length=function(){return 1},t.prototype.offset=function(t){return void 0===t&&(t=this.parent),null==this.parent||this==t?0:this.parent.children.offset(this)+this.parent.offset(t)},t.prototype.optimize=function(t){null!=this.domNode[r.DATA_KEY]&&delete this.domNode[r.DATA_KEY].mutations},t.prototype.remove=function(){null!=this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),this.detach()},t.prototype.replace=function(t){null!=t.parent&&(t.parent.insertBefore(this,t.next),t.remove())},t.prototype.replaceWith=function(t,e){var n="string"==typeof t?r.create(t,e):t;return n.replace(this),n},t.prototype.split=function(t,e){return 0===t?this:this.next},t.prototype.update=function(t,e){},t.prototype.wrap=function(t,e){var n="string"==typeof t?r.create(t,e):t;return null!=this.parent&&this.parent.insertBefore(n,this.next),n.appendChild(this),n},t.blotName="abstract",t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(11),o=n(29),i=n(30),l=n(1),a=function(){function t(t){this.attributes={},this.domNode=t,this.build()}return t.prototype.attribute=function(t,e){e?t.add(this.domNode,e)&&(null!=t.value(this.domNode)?this.attributes[t.attrName]=t:delete this.attributes[t.attrName]):(t.remove(this.domNode),delete this.attributes[t.attrName])},t.prototype.build=function(){var t=this;this.attributes={};var e=r.default.keys(this.domNode),n=o.default.keys(this.domNode),a=i.default.keys(this.domNode);e.concat(n).concat(a).forEach(function(e){var n=l.query(e,l.Scope.ATTRIBUTE);n instanceof r.default&&(t.attributes[n.attrName]=n)})},t.prototype.copy=function(t){var e=this;Object.keys(this.attributes).forEach(function(n){var r=e.attributes[n].value(e.domNode);t.format(n,r)})},t.prototype.move=function(t){var e=this;this.copy(t),Object.keys(this.attributes).forEach(function(t){e.attributes[t].remove(e.domNode)}),this.attributes={}},t.prototype.values=function(){var t=this;return Object.keys(this.attributes).reduce(function(e,n){return e[n]=t.attributes[n].value(t.domNode),e},{})},t}();e.default=a},function(t,e,n){"use strict";function r(t,e){return(t.getAttribute("class")||"").split(/\s+/).filter(function(t){return 0===t.indexOf(e+"-")})}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.keys=function(t){return(t.getAttribute("class")||"").split(/\s+/).map(function(t){return t.split("-").slice(0,-1).join("-")})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(this.remove(t),t.classList.add(this.keyName+"-"+e),!0)},e.prototype.remove=function(t){r(t,this.keyName).forEach(function(e){t.classList.remove(e)}),0===t.classList.length&&t.removeAttribute("class")},e.prototype.value=function(t){var e=r(t,this.keyName)[0]||"",n=e.slice(this.keyName.length+1);return this.canAdd(t,n)?n:""},e}(i.default);e.default=l},function(t,e,n){"use strict";function r(t){var e=t.split("-"),n=e.slice(1).map(function(t){return t[0].toUpperCase()+t.slice(1)}).join("");return e[0]+n}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.keys=function(t){return(t.getAttribute("style")||"").split(";").map(function(t){return t.split(":")[0].trim()})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(t.style[r(this.keyName)]=e,!0)},e.prototype.remove=function(t){t.style[r(this.keyName)]="",t.getAttribute("style")||t.removeAttribute("style")},e.prototype.value=function(t){var e=t.style[r(this.keyName)];return this.canAdd(t,e)?e:""},e}(i.default);e.default=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=function(){function t(t,e){for(var n=0;n '},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;nr.right&&(i=r.right-o.right,this.root.style.left=e+i+"px"),o.leftr.bottom){var l=o.bottom-o.top,a=t.bottom-t.top+l;this.root.style.top=n-a+"px",this.root.classList.add("ql-flip")}return i}},{key:"show",value:function(){this.root.classList.remove("ql-editing"),this.root.classList.remove("ql-hidden")}}]),t}();e.default=i},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){var e=t.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/)||t.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);return e?(e[1]||"https")+"://www.youtube.com/embed/"+e[2]+"?showinfo=0":(e=t.match(/^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/))?(e[1]||"https")+"://player.vimeo.com/video/"+e[2]+"/":t}function s(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e.forEach(function(e){var r=document.createElement("option");e===n?r.setAttribute("selected","selected"):r.setAttribute("value",e),t.appendChild(r)})}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BaseTooltip=void 0;var u=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"link",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.root.classList.remove("ql-hidden"),this.root.classList.add("ql-editing"),null!=e?this.textbox.value=e:t!==this.root.getAttribute("data-mode")&&(this.textbox.value=""),this.position(this.quill.getBounds(this.quill.selection.savedRange)),this.textbox.select(),this.textbox.setAttribute("placeholder",this.textbox.getAttribute("data-"+t)||""),this.root.setAttribute("data-mode",t)}},{key:"restoreFocus",value:function(){var t=this.quill.scrollingContainer.scrollTop;this.quill.focus(),this.quill.scrollingContainer.scrollTop=t}},{key:"save",value:function(){var t=this.textbox.value;switch(this.root.getAttribute("data-mode")){case"link":var e=this.quill.root.scrollTop;this.linkRange?(this.quill.formatText(this.linkRange,"link",t,v.default.sources.USER),delete this.linkRange):(this.restoreFocus(),this.quill.format("link",t,v.default.sources.USER)),this.quill.root.scrollTop=e;break;case"video":t=a(t);case"formula":if(!t)break;var n=this.quill.getSelection(!0);if(null!=n){var r=n.index+n.length;this.quill.insertEmbed(r,this.root.getAttribute("data-mode"),t,v.default.sources.USER),"formula"===this.root.getAttribute("data-mode")&&this.quill.insertText(r+1," ",v.default.sources.USER),this.quill.setSelection(r+2,v.default.sources.USER)}}this.textbox.value="",this.hide()}}]),e}(A.default);e.BaseTooltip=M,e.default=L},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(46),i=r(o),l=n(34),a=n(36),s=n(62),u=n(63),c=r(u),f=n(64),h=r(f),p=n(65),d=r(p),y=n(35),v=n(24),b=n(37),g=n(38),m=n(39),_=r(m),O=n(66),w=r(O),x=n(15),k=r(x),E=n(67),N=r(E),j=n(68),A=r(j),q=n(69),T=r(q),P=n(70),S=r(P),C=n(71),L=r(C),M=n(13),R=r(M),I=n(72),B=r(I),D=n(73),U=r(D),F=n(74),H=r(F),K=n(26),z=r(K),Z=n(16),V=r(Z),W=n(41),G=r(W),Y=n(42),X=r(Y),$=n(43),Q=r($),J=n(107),tt=r(J),et=n(108),nt=r(et);i.default.register({"attributors/attribute/direction":a.DirectionAttribute,"attributors/class/align":l.AlignClass,"attributors/class/background":y.BackgroundClass,"attributors/class/color":v.ColorClass,"attributors/class/direction":a.DirectionClass,"attributors/class/font":b.FontClass,"attributors/class/size":g.SizeClass,"attributors/style/align":l.AlignStyle,"attributors/style/background":y.BackgroundStyle,"attributors/style/color":v.ColorStyle,"attributors/style/direction":a.DirectionStyle,"attributors/style/font":b.FontStyle,"attributors/style/size":g.SizeStyle},!0),i.default.register({"formats/align":l.AlignClass,"formats/direction":a.DirectionClass,"formats/indent":s.IndentClass,"formats/background":y.BackgroundStyle,"formats/color":v.ColorStyle,"formats/font":b.FontClass,"formats/size":g.SizeClass,"formats/blockquote":c.default,"formats/code-block":R.default,"formats/header":h.default,"formats/list":d.default,"formats/bold":_.default,"formats/code":M.Code,"formats/italic":w.default,"formats/link":k.default,"formats/script":N.default,"formats/strike":A.default,"formats/underline":T.default,"formats/image":S.default,"formats/video":L.default,"formats/list/item":p.ListItem,"modules/formula":B.default,"modules/syntax":U.default,"modules/toolbar":H.default,"themes/bubble":tt.default,"themes/snow":nt.default,"ui/icons":z.default,"ui/picker":V.default,"ui/icon-picker":X.default,"ui/color-picker":G.default,"ui/tooltip":Q.default},!0),e.default=i.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),i=r(o),l=n(6),a=r(l),s=n(3),u=r(s),c=n(14),f=r(c),h=n(23),p=r(h),d=n(31),y=r(d),v=n(33),b=r(v),g=n(5),m=r(g),_=n(59),O=r(_),w=n(8),x=r(w),k=n(60),E=r(k),N=n(61),j=r(N),A=n(25),q=r(A);a.default.register({"blots/block":u.default,"blots/block/embed":s.BlockEmbed,"blots/break":f.default,"blots/container":p.default,"blots/cursor":y.default,"blots/embed":b.default,"blots/inline":m.default,"blots/scroll":O.default,"blots/text":x.default,"modules/clipboard":E.default,"modules/history":j.default,"modules/keyboard":q.default}),i.default.register(u.default,f.default,y.default,m.default,O.default,x.default),e.default=a.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(){this.head=this.tail=null,this.length=0}return t.prototype.append=function(){for(var t=[],e=0;e1&&this.append.apply(this,t.slice(1))},t.prototype.contains=function(t){for(var e,n=this.iterator();e=n();)if(e===t)return!0;return!1},t.prototype.insertBefore=function(t,e){t&&(t.next=e,null!=e?(t.prev=e.prev,null!=e.prev&&(e.prev.next=t),e.prev=t,e===this.head&&(this.head=t)):null!=this.tail?(this.tail.next=t,t.prev=this.tail,this.tail=t):(t.prev=null,this.head=this.tail=t),this.length+=1)},t.prototype.offset=function(t){for(var e=0,n=this.head;null!=n;){if(n===t)return e;e+=n.length(),n=n.next}return-1},t.prototype.remove=function(t){this.contains(t)&&(null!=t.prev&&(t.prev.next=t.next),null!=t.next&&(t.next.prev=t.prev),t===this.head&&(this.head=t.next),t===this.tail&&(this.tail=t.prev),this.length-=1)},t.prototype.iterator=function(t){return void 0===t&&(t=this.head),function(){var e=t;return null!=t&&(t=t.next),e}},t.prototype.find=function(t,e){void 0===e&&(e=!1);for(var n,r=this.iterator();n=r();){var o=n.length();if(ta?n(r,t-a,Math.min(e,a+u-t)):n(r,0,Math.min(u,t+e-a)),a+=u}},t.prototype.map=function(t){return this.reduce(function(e,n){return e.push(t(n)),e},[])},t.prototype.reduce=function(t,e){for(var n,r=this.iterator();n=r();)e=t(e,n);return e},t}();e.default=r},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(17),i=n(1),l={attributes:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0},a=function(t){function e(e){var n=t.call(this,e)||this;return n.scroll=n,n.observer=new MutationObserver(function(t){n.update(t)}),n.observer.observe(n.domNode,l),n.attach(),n}return r(e,t),e.prototype.detach=function(){t.prototype.detach.call(this),this.observer.disconnect()},e.prototype.deleteAt=function(e,n){this.update(),0===e&&n===this.length()?this.children.forEach(function(t){t.remove()}):t.prototype.deleteAt.call(this,e,n)},e.prototype.formatAt=function(e,n,r,o){this.update(),t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){this.update(),t.prototype.insertAt.call(this,e,n,r)},e.prototype.optimize=function(e,n){var r=this;void 0===e&&(e=[]),void 0===n&&(n={}),t.prototype.optimize.call(this,n);for(var l=[].slice.call(this.observer.takeRecords());l.length>0;)e.push(l.pop());for(var a=function(t,e){void 0===e&&(e=!0),null!=t&&t!==r&&null!=t.domNode.parentNode&&(null==t.domNode[i.DATA_KEY].mutations&&(t.domNode[i.DATA_KEY].mutations=[]),e&&a(t.parent))},s=function(t){null!=t.domNode[i.DATA_KEY]&&null!=t.domNode[i.DATA_KEY].mutations&&(t instanceof o.default&&t.children.forEach(s),t.optimize(n))},u=e,c=0;u.length>0;c+=1){if(c>=100)throw new Error("[Parchment] Maximum optimize iterations reached");for(u.forEach(function(t){var e=i.find(t.target,!0);null!=e&&(e.domNode===t.target&&("childList"===t.type?(a(i.find(t.previousSibling,!1)),[].forEach.call(t.addedNodes,function(t){var e=i.find(t,!1);a(e,!1),e instanceof o.default&&e.children.forEach(function(t){a(t,!1)})})):"attributes"===t.type&&a(e.prev)),a(e))}),this.children.forEach(s),u=[].slice.call(this.observer.takeRecords()),l=u.slice();l.length>0;)e.push(l.pop())}},e.prototype.update=function(e,n){var r=this;void 0===n&&(n={}),e=e||this.observer.takeRecords(),e.map(function(t){var e=i.find(t.target,!0);return null==e?null:null==e.domNode[i.DATA_KEY].mutations?(e.domNode[i.DATA_KEY].mutations=[t],e):(e.domNode[i.DATA_KEY].mutations.push(t),null)}).forEach(function(t){null!=t&&t!==r&&null!=t.domNode[i.DATA_KEY]&&t.update(t.domNode[i.DATA_KEY].mutations||[],n)}),null!=this.domNode[i.DATA_KEY].mutations&&t.prototype.update.call(this,this.domNode[i.DATA_KEY].mutations,n),this.optimize(e,n)},e.blotName="scroll",e.defaultChild="block",e.scope=i.Scope.BLOCK_BLOT,e.tagName="DIV",e}(o.default);e.default=a},function(t,e,n){"use strict";function r(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(var n in t)if(t[n]!==e[n])return!1;return!0}var o=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=n(18),l=n(1),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.formats=function(n){if(n.tagName!==e.tagName)return t.formats.call(this,n)},e.prototype.format=function(n,r){var o=this;n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):(this.children.forEach(function(t){t instanceof i.default||(t=t.wrap(e.blotName,!0)),o.attributes.copy(t)}),this.unwrap())},e.prototype.formatAt=function(e,n,r,o){if(null!=this.formats()[r]||l.query(r,l.Scope.ATTRIBUTE)){this.isolate(e,n).format(r,o)}else t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.optimize=function(n){t.prototype.optimize.call(this,n);var o=this.formats();if(0===Object.keys(o).length)return this.unwrap();var i=this.next;i instanceof e&&i.prev===this&&r(o,i.formats())&&(i.moveChildren(this),i.remove())},e.blotName="inline",e.scope=l.Scope.INLINE_BLOT,e.tagName="SPAN",e}(i.default);e.default=a},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(18),i=n(1),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.formats=function(n){var r=i.query(e.blotName).tagName;if(n.tagName!==r)return t.formats.call(this,n)},e.prototype.format=function(n,r){null!=i.query(n,i.Scope.BLOCK)&&(n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):this.replaceWith(e.blotName))},e.prototype.formatAt=function(e,n,r,o){null!=i.query(r,i.Scope.BLOCK)?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){if(null==r||null!=i.query(n,i.Scope.INLINE))t.prototype.insertAt.call(this,e,n,r);else{var o=this.split(e),l=i.create(n,r);o.parent.insertBefore(l,o)}},e.prototype.update=function(e,n){navigator.userAgent.match(/Trident/)?this.build():t.prototype.update.call(this,e,n)},e.blotName="block",e.scope=i.Scope.BLOCK_BLOT,e.tagName="P",e}(o.default);e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(19),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.formats=function(t){},e.prototype.format=function(e,n){t.prototype.formatAt.call(this,0,this.length(),e,n)},e.prototype.formatAt=function(e,n,r,o){0===e&&n===this.length()?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.formats=function(){return this.statics.formats(this.domNode)},e}(o.default);e.default=i},function(t,e,n){"use strict";var r=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(19),i=n(1),l=function(t){function e(e){var n=t.call(this,e)||this;return n.text=n.statics.value(n.domNode),n}return r(e,t),e.create=function(t){return document.createTextNode(t)},e.value=function(t){var e=t.data;return e.normalize&&(e=e.normalize()),e},e.prototype.deleteAt=function(t,e){this.domNode.data=this.text=this.text.slice(0,t)+this.text.slice(t+e)},e.prototype.index=function(t,e){return this.domNode===t?e:-1},e.prototype.insertAt=function(e,n,r){null==r?(this.text=this.text.slice(0,e)+n+this.text.slice(e),this.domNode.data=this.text):t.prototype.insertAt.call(this,e,n,r)},e.prototype.length=function(){return this.text.length},e.prototype.optimize=function(n){t.prototype.optimize.call(this,n),this.text=this.statics.value(this.domNode),0===this.text.length?this.remove():this.next instanceof e&&this.next.prev===this&&(this.insertAt(this.length(),this.next.value()),this.next.remove())},e.prototype.position=function(t,e){return void 0===e&&(e=!1),[this.domNode,t]},e.prototype.split=function(t,e){if(void 0===e&&(e=!1),!e){if(0===t)return this;if(t===this.length())return this.next}var n=i.create(this.domNode.splitText(t));return this.parent.insertBefore(n,this.next),this.text=this.statics.value(this.domNode),n},e.prototype.update=function(t,e){var n=this;t.some(function(t){return"characterData"===t.type&&t.target===n.domNode})&&(this.text=this.statics.value(this.domNode))},e.prototype.value=function(){return this.text},e.blotName="text",e.scope=i.Scope.INLINE_BLOT,e}(o.default);e.default=l},function(t,e,n){"use strict";var r=document.createElement("div");if(r.classList.toggle("test-class",!1),r.classList.contains("test-class")){var o=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return arguments.length>1&&!this.contains(t)==!e?e:o.call(this,t)}}String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return e=e||0,this.substr(e,t.length)===t}),String.prototype.endsWith||(String.prototype.endsWith=function(t,e){var n=this.toString();("number"!=typeof e||!isFinite(e)||Math.floor(e)!==e||e>n.length)&&(e=n.length),e-=t.length;var r=n.indexOf(t,e);return-1!==r&&r===e}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var e,n=Object(this),r=n.length>>>0,o=arguments[1],i=0;ie.length?t:e,l=t.length>e.length?e:t,a=i.indexOf(l);if(-1!=a)return r=[[y,i.substring(0,a)],[v,l],[y,i.substring(a+l.length)]],t.length>e.length&&(r[0][0]=r[2][0]=d),r;if(1==l.length)return[[d,t],[y,e]];var u=s(t,e);if(u){var c=u[0],f=u[1],h=u[2],p=u[3],b=u[4],g=n(c,h),m=n(f,p);return g.concat([[v,b]],m)}return o(t,e)}function o(t,e){for(var n=t.length,r=e.length,o=Math.ceil((n+r)/2),l=o,a=2*o,s=new Array(a),u=new Array(a),c=0;cn)v+=2;else if(x>r)p+=2;else if(h){var k=l+f-_;if(k>=0&&k=E)return i(t,e,O,x)}}}for(var N=-m+b;N<=m-g;N+=2){var E,k=l+N;E=N==-m||N!=m&&u[k-1]n)g+=2;else if(j>r)b+=2;else if(!h){var w=l+f-N;if(w>=0&&w=E)return i(t,e,O,x)}}}}return[[d,t],[y,e]]}function i(t,e,r,o){var i=t.substring(0,r),l=e.substring(0,o),a=t.substring(r),s=e.substring(o),u=n(i,l),c=n(a,s);return u.concat(c)}function l(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var n=0,r=Math.min(t.length,e.length),o=r,i=0;n=t.length?[r,o,i,s,f]:null}var r=t.length>e.length?t:e,o=t.length>e.length?e:t;if(r.length<4||2*o.lengthu[4].length?s:u:s;var c,f,h,p;return t.length>e.length?(c=i[0],f=i[1],h=i[2],p=i[3]):(h=i[0],p=i[1],c=i[2],f=i[3]),[c,f,h,p,i[4]]}function u(t){t.push([v,""]);for(var e,n=0,r=0,o=0,i="",s="";n1?(0!==r&&0!==o&&(e=l(s,i),0!==e&&(n-r-o>0&&t[n-r-o-1][0]==v?t[n-r-o-1][1]+=s.substring(0,e):(t.splice(0,0,[v,s.substring(0,e)]),n++),s=s.substring(e),i=i.substring(e)),0!==(e=a(s,i))&&(t[n][1]=s.substring(s.length-e)+t[n][1],s=s.substring(0,s.length-e),i=i.substring(0,i.length-e))),0===r?t.splice(n-o,r+o,[y,s]):0===o?t.splice(n-r,r+o,[d,i]):t.splice(n-r-o,r+o,[d,i],[y,s]),n=n-r-o+(r?1:0)+(o?1:0)+1):0!==n&&t[n-1][0]==v?(t[n-1][1]+=t[n][1],t.splice(n,1)):n++,o=0,r=0,i="",s=""}""===t[t.length-1][1]&&t.pop();var c=!1;for(n=1;n0&&r.splice(o+2,0,[l[0],a]),p(r,o,3)}return t}function h(t){for(var e=!1,n=function(t){return t.charCodeAt(0)>=56320&&t.charCodeAt(0)<=57343},r=2;r=55296&&t.charCodeAt(t.length-1)<=56319}(t[r-2][1])&&t[r-1][0]===d&&n(t[r-1][1])&&t[r][0]===y&&n(t[r][1])&&(e=!0,t[r-1][1]=t[r-2][1].slice(-1)+t[r-1][1],t[r][1]=t[r-2][1].slice(-1)+t[r][1],t[r-2][1]=t[r-2][1].slice(0,-1));if(!e)return t;for(var o=[],r=0;r0&&o.push(t[r]);return o}function p(t,e,n){for(var r=e+n-1;r>=0&&r>=e-1;r--)if(r+1=r&&!a.endsWith("\n")&&(n=!0),e.scroll.insertAt(t,a);var c=e.scroll.line(t),f=u(c,2),h=f[0],p=f[1],y=(0,T.default)({},(0,O.bubbleFormats)(h));if(h instanceof w.default){var b=h.descendant(v.default.Leaf,p),g=u(b,1),m=g[0];y=(0,T.default)(y,(0,O.bubbleFormats)(m))}l=d.default.attributes.diff(y,l)||{}}else if("object"===s(o.insert)){var _=Object.keys(o.insert)[0];if(null==_)return t;e.scroll.insertAt(t,_,o.insert[_])}r+=i}return Object.keys(l).forEach(function(n){e.scroll.formatAt(t,i,n,l[n])}),t+i},0),t.reduce(function(t,n){return"number"==typeof n.delete?(e.scroll.deleteAt(t,n.delete),t):t+(n.retain||n.insert.length||1)},0),this.scroll.batchEnd(),this.update(t)}},{key:"deleteText",value:function(t,e){return this.scroll.deleteAt(t,e),this.update((new h.default).retain(t).delete(e))}},{key:"formatLine",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.scroll.update(),Object.keys(r).forEach(function(o){if(null==n.scroll.whitelist||n.scroll.whitelist[o]){var i=n.scroll.lines(t,Math.max(e,1)),l=e;i.forEach(function(e){var i=e.length();if(e instanceof g.default){var a=t-e.offset(n.scroll),s=e.newlineIndex(a+l)-a+1;e.formatAt(a,s,o,r[o])}else e.format(o,r[o]);l-=i})}}),this.scroll.optimize(),this.update((new h.default).retain(t).retain(e,(0,N.default)(r)))}},{key:"formatText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e,o,r[o])}),this.update((new h.default).retain(t).retain(e,(0,N.default)(r)))}},{key:"getContents",value:function(t,e){return this.delta.slice(t,t+e)}},{key:"getDelta",value:function(){return this.scroll.lines().reduce(function(t,e){return t.concat(e.delta())},new h.default)}},{key:"getFormat",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=[],r=[];0===e?this.scroll.path(t).forEach(function(t){var e=u(t,1),o=e[0];o instanceof w.default?n.push(o):o instanceof v.default.Leaf&&r.push(o)}):(n=this.scroll.lines(t,e),r=this.scroll.descendants(v.default.Leaf,t,e));var o=[n,r].map(function(t){if(0===t.length)return{};for(var e=(0,O.bubbleFormats)(t.shift());Object.keys(e).length>0;){var n=t.shift();if(null==n)return e;e=l((0,O.bubbleFormats)(n),e)}return e});return T.default.apply(T.default,o)}},{key:"getText",value:function(t,e){return this.getContents(t,e).filter(function(t){return"string"==typeof t.insert}).map(function(t){return t.insert}).join("")}},{key:"insertEmbed",value:function(t,e,n){return this.scroll.insertAt(t,e,n),this.update((new h.default).retain(t).insert(o({},e,n)))}},{key:"insertText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),this.scroll.insertAt(t,e),Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e.length,o,r[o])}),this.update((new h.default).retain(t).insert(e,(0,N.default)(r)))}},{key:"isBlank",value:function(){if(0==this.scroll.children.length)return!0;if(this.scroll.children.length>1)return!1;var t=this.scroll.children.head;return t.statics.blotName===w.default.blotName&&(!(t.children.length>1)&&t.children.head instanceof k.default)}},{key:"removeFormat",value:function(t,e){var n=this.getText(t,e),r=this.scroll.line(t+e),o=u(r,2),i=o[0],l=o[1],a=0,s=new h.default;null!=i&&(a=i instanceof g.default?i.newlineIndex(l)-l+1:i.length()-l,s=i.delta().slice(l,l+a-1).insert("\n"));var c=this.getContents(t,e+a),f=c.diff((new h.default).insert(n).concat(s)),p=(new h.default).retain(t).concat(f);return this.applyDelta(p)}},{key:"update",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=this.delta;if(1===e.length&&"characterData"===e[0].type&&e[0].target.data.match(P)&&v.default.find(e[0].target)){var o=v.default.find(e[0].target),i=(0,O.bubbleFormats)(o),l=o.offset(this.scroll),a=e[0].oldValue.replace(_.default.CONTENTS,""),s=(new h.default).insert(a),u=(new h.default).insert(o.value());t=(new h.default).retain(l).concat(s.diff(u,n)).reduce(function(t,e){return e.insert?t.insert(e.insert,i):t.push(e)},new h.default),this.delta=r.compose(t)}else this.delta=this.getDelta(),t&&(0,A.default)(r.compose(t),this.delta)||(t=r.diff(this.delta,n));return t}}]),t}();e.default=S},function(t,e){"use strict";function n(){}function r(t,e,n){this.fn=t,this.context=e,this.once=n||!1}function o(){this._events=new n,this._eventsCount=0}var i=Object.prototype.hasOwnProperty,l="~";Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(l=!1)),o.prototype.eventNames=function(){var t,e,n=[];if(0===this._eventsCount)return n;for(e in t=this._events)i.call(t,e)&&n.push(l?e.slice(1):e);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(t)):n},o.prototype.listeners=function(t,e){var n=l?l+t:t,r=this._events[n];if(e)return!!r;if(!r)return[];if(r.fn)return[r.fn];for(var o=0,i=r.length,a=new Array(i);o0){if(i instanceof y.BlockEmbed||f instanceof y.BlockEmbed)return void this.optimize();if(i instanceof _.default){var h=i.newlineIndex(i.length(),!0);if(h>-1&&(i=i.split(h+1))===f)return void this.optimize()}else if(f instanceof _.default){var p=f.newlineIndex(0);p>-1&&f.split(p+1)}var d=f.children.head instanceof g.default?null:f.children.head;i.moveChildren(f,d),i.remove()}this.optimize()}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.domNode.setAttribute("contenteditable",t)}},{key:"formatAt",value:function(t,n,r,o){(null==this.whitelist||this.whitelist[r])&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"formatAt",this).call(this,t,n,r,o),this.optimize())}},{key:"insertAt",value:function(t,n,r){if(null==r||null==this.whitelist||this.whitelist[n]){if(t>=this.length())if(null==r||null==h.default.query(n,h.default.Scope.BLOCK)){var o=h.default.create(this.statics.defaultChild);this.appendChild(o),null==r&&n.endsWith("\n")&&(n=n.slice(0,-1)),o.insertAt(0,n,r)}else{var i=h.default.create(n,r);this.appendChild(i)}else c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertAt",this).call(this,t,n,r);this.optimize()}}},{key:"insertBefore",value:function(t,n){if(t.statics.scope===h.default.Scope.INLINE_BLOT){var r=h.default.create(this.statics.defaultChild);r.appendChild(t),t=r}c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n)}},{key:"leaf",value:function(t){return this.path(t).pop()||[null,-1]}},{key:"line",value:function(t){return t===this.length()?this.line(t-1):this.descendant(a,t)}},{key:"lines",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE;return function t(e,n,r){var o=[],i=r;return e.children.forEachAt(n,r,function(e,n,r){a(e)?o.push(e):e instanceof h.default.Container&&(o=o.concat(t(e,n,i))),i-=r}),o}(this,t,e)}},{key:"optimize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!0!==this.batch&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t,n),t.length>0&&this.emitter.emit(d.default.events.SCROLL_OPTIMIZE,t,n))}},{key:"path",value:function(t){return c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"path",this).call(this,t).slice(1)}},{key:"update",value:function(t){if(!0!==this.batch){var n=d.default.sources.USER;"string"==typeof t&&(n=t),Array.isArray(t)||(t=this.observer.takeRecords()),t.length>0&&this.emitter.emit(d.default.events.SCROLL_BEFORE_UPDATE,n,t),c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"update",this).call(this,t.concat([])),t.length>0&&this.emitter.emit(d.default.events.SCROLL_UPDATE,n,t)}}}]),e}(h.default.Scroll);x.blotName="scroll",x.className="ql-editor",x.tagName="DIV",x.defaultChild="block",x.allowedChildren=[v.default,y.BlockEmbed,w.default],e.default=x},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function s(t,e,n){return"object"===(void 0===e?"undefined":x(e))?Object.keys(e).reduce(function(t,n){return s(t,n,e[n])},t):t.reduce(function(t,r){return r.attributes&&r.attributes[e]?t.push(r):t.insert(r.insert,(0,j.default)({},o({},e,n),r.attributes))},new q.default)}function u(t){if(t.nodeType!==Node.ELEMENT_NODE)return{};return t["__ql-computed-style"]||(t["__ql-computed-style"]=window.getComputedStyle(t))}function c(t,e){for(var n="",r=t.ops.length-1;r>=0&&n.length-1}function h(t,e,n){return t.nodeType===t.TEXT_NODE?n.reduce(function(e,n){return n(t,e)},new q.default):t.nodeType===t.ELEMENT_NODE?[].reduce.call(t.childNodes||[],function(r,o){var i=h(o,e,n);return o.nodeType===t.ELEMENT_NODE&&(i=e.reduce(function(t,e){return e(o,t)},i),i=(o[W]||[]).reduce(function(t,e){return e(o,t)},i)),r.concat(i)},new q.default):new q.default}function p(t,e,n){return s(n,t,!0)}function d(t,e){var n=P.default.Attributor.Attribute.keys(t),r=P.default.Attributor.Class.keys(t),o=P.default.Attributor.Style.keys(t),i={};return n.concat(r).concat(o).forEach(function(e){var n=P.default.query(e,P.default.Scope.ATTRIBUTE);null!=n&&(i[n.attrName]=n.value(t),i[n.attrName])||(n=Y[e],null==n||n.attrName!==e&&n.keyName!==e||(i[n.attrName]=n.value(t)||void 0),null==(n=X[e])||n.attrName!==e&&n.keyName!==e||(n=X[e],i[n.attrName]=n.value(t)||void 0))}),Object.keys(i).length>0&&(e=s(e,i)),e}function y(t,e){var n=P.default.query(t);if(null==n)return e;if(n.prototype instanceof P.default.Embed){var r={},o=n.value(t);null!=o&&(r[n.blotName]=o,e=(new q.default).insert(r,n.formats(t)))}else"function"==typeof n.formats&&(e=s(e,n.blotName,n.formats(t)));return e}function v(t,e){return c(e,"\n")||e.insert("\n"),e}function b(){return new q.default}function g(t,e){var n=P.default.query(t);if(null==n||"list-item"!==n.blotName||!c(e,"\n"))return e;for(var r=-1,o=t.parentNode;!o.classList.contains("ql-clipboard");)"list"===(P.default.query(o)||{}).blotName&&(r+=1),o=o.parentNode;return r<=0?e:e.compose((new q.default).retain(e.length()-1).retain(1,{indent:r}))}function m(t,e){return c(e,"\n")||(f(t)||e.length()>0&&t.nextSibling&&f(t.nextSibling))&&e.insert("\n"),e}function _(t,e){if(f(t)&&null!=t.nextElementSibling&&!c(e,"\n\n")){var n=t.offsetHeight+parseFloat(u(t).marginTop)+parseFloat(u(t).marginBottom);t.nextElementSibling.offsetTop>t.offsetTop+1.5*n&&e.insert("\n")}return e}function O(t,e){var n={},r=t.style||{};return r.fontStyle&&"italic"===u(t).fontStyle&&(n.italic=!0),r.fontWeight&&(u(t).fontWeight.startsWith("bold")||parseInt(u(t).fontWeight)>=700)&&(n.bold=!0),Object.keys(n).length>0&&(e=s(e,n)),parseFloat(r.textIndent||0)>0&&(e=(new q.default).insert("\t").concat(e)),e}function w(t,e){var n=t.data;if("O:P"===t.parentNode.tagName)return e.insert(n.trim());if(0===n.trim().length&&t.parentNode.classList.contains("ql-clipboard"))return e;if(!u(t.parentNode).whiteSpace.startsWith("pre")){var r=function(t,e){return e=e.replace(/[^\u00a0]/g,""),e.length<1&&t?" ":e};n=n.replace(/\r\n/g," ").replace(/\n/g," "),n=n.replace(/\s\s+/g,r.bind(r,!0)),(null==t.previousSibling&&f(t.parentNode)||null!=t.previousSibling&&f(t.previousSibling))&&(n=n.replace(/^\s+/,r.bind(r,!1))),(null==t.nextSibling&&f(t.parentNode)||null!=t.nextSibling&&f(t.nextSibling))&&(n=n.replace(/\s+$/,r.bind(r,!1)))}return e.insert(n)}Object.defineProperty(e,"__esModule",{value:!0}),e.matchText=e.matchSpacing=e.matchNewline=e.matchBlot=e.matchAttributor=e.default=void 0;var x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},k=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),E=function(){function t(t,e){for(var n=0;n\r?\n +\<"),this.convert();var e=this.quill.getFormat(this.quill.selection.savedRange.index);if(e[F.default.blotName]){var n=this.container.innerText;return this.container.innerHTML="",(new q.default).insert(n,o({},F.default.blotName,e[F.default.blotName]))}var r=this.prepareMatching(),i=k(r,2),l=i[0],a=i[1],s=h(this.container,l,a);return c(s,"\n")&&null==s.ops[s.ops.length-1].attributes&&(s=s.compose((new q.default).retain(s.length()-1).delete(1))),V.log("convert",this.container.innerHTML,s),this.container.innerHTML="",s}},{key:"dangerouslyPasteHTML",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:C.default.sources.API;if("string"==typeof t)this.quill.setContents(this.convert(t),e),this.quill.setSelection(0,C.default.sources.SILENT);else{var r=this.convert(e);this.quill.updateContents((new q.default).retain(t).concat(r),n),this.quill.setSelection(t+r.length(),C.default.sources.SILENT)}}},{key:"onPaste",value:function(t){var e=this;if(!t.defaultPrevented&&this.quill.isEnabled()){var n=this.quill.getSelection(),r=(new q.default).retain(n.index),o=this.quill.scrollingContainer.scrollTop;this.container.focus(),this.quill.selection.update(C.default.sources.SILENT),setTimeout(function(){r=r.concat(e.convert()).delete(n.length),e.quill.updateContents(r,C.default.sources.USER),e.quill.setSelection(r.length()-n.length,C.default.sources.SILENT),e.quill.scrollingContainer.scrollTop=o,e.quill.focus()},1)}}},{key:"prepareMatching",value:function(){var t=this,e=[],n=[];return this.matchers.forEach(function(r){var o=k(r,2),i=o[0],l=o[1];switch(i){case Node.TEXT_NODE:n.push(l);break;case Node.ELEMENT_NODE:e.push(l);break;default:[].forEach.call(t.container.querySelectorAll(i),function(t){t[W]=t[W]||[],t[W].push(l)})}}),[e,n]}}]),e}(I.default);$.DEFAULTS={matchers:[],matchVisual:!0},e.default=$,e.matchAttributor=d,e.matchBlot=y,e.matchNewline=m,e.matchSpacing=_,e.matchText=w},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){var e=t.ops[t.ops.length-1];return null!=e&&(null!=e.insert?"string"==typeof e.insert&&e.insert.endsWith("\n"):null!=e.attributes&&Object.keys(e.attributes).some(function(t){return null!=f.default.query(t,f.default.Scope.BLOCK)}))}function s(t){var e=t.reduce(function(t,e){return t+=e.delete||0},0),n=t.length()-e;return a(t)&&(n-=1),n}Object.defineProperty(e,"__esModule",{value:!0}),e.getLastChangeIndex=e.default=void 0;var u=function(){function t(t,e){for(var n=0;nr&&this.stack.undo.length>0){var o=this.stack.undo.pop();n=n.compose(o.undo),t=o.redo.compose(t)}else this.lastRecorded=r;this.stack.undo.push({redo:t,undo:n}),this.stack.undo.length>this.options.maxStack&&this.stack.undo.shift()}}},{key:"redo",value:function(){this.change("redo","undo")}},{key:"transform",value:function(t){this.stack.undo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)}),this.stack.redo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)})}},{key:"undo",value:function(){this.change("undo","redo")}}]),e}(y.default);v.DEFAULTS={delay:1e3,maxStack:100,userOnly:!1},e.default=v,e.getLastChangeIndex=s},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.IndentClass=void 0;var l=function(){function t(t,e){for(var n=0;n0&&this.children.tail.format(t,e)}},{key:"formats",value:function(){return o({},this.statics.blotName,this.statics.formats(this.domNode))}},{key:"insertBefore",value:function(t,n){if(t instanceof v)u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n);else{var r=null==n?this.length():n.offset(this),o=this.split(r);o.parent.insertBefore(t,o)}}},{key:"optimize",value:function(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t);var n=this.next;null!=n&&n.prev===this&&n.statics.blotName===this.statics.blotName&&n.domNode.tagName===this.domNode.tagName&&n.domNode.getAttribute("data-checked")===this.domNode.getAttribute("data-checked")&&(n.moveChildren(this),n.remove())}},{key:"replace",value:function(t){if(t.statics.blotName!==this.statics.blotName){var n=f.default.create(this.statics.defaultChild);t.moveChildren(n),this.appendChild(n)}u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t)}}]),e}(y.default);b.blotName="list",b.scope=f.default.Scope.BLOCK_BLOT,b.tagName=["OL","UL"],b.defaultChild="list-item",b.allowedChildren=[v],e.ListItem=v,e.default=b},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=n(39),a=function(t){return t&&t.__esModule?t:{default:t}}(l),s=function(t){function e(){return r(this,e),o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return i(e,t),e}(a.default);s.blotName="italic",s.tagName=["EM","I"],e.default=s},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=a(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return"string"==typeof t&&n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return f.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"match",value:function(t){return/\.(jpe?g|gif|png)$/.test(t)||/^data:image\/.+;base64/.test(t)}},{key:"sanitize",value:function(t){return(0,c.sanitize)(t,["http","https","data"])?t:"//:0"}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(u.default.Embed);h.blotName="image",h.tagName="IMG",e.default=h},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=a(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return n.setAttribute("frameborder","0"),n.setAttribute("allowfullscreen",!0),n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return f.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"sanitize",value:function(t){return c.default.sanitize(t)}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(s.BlockEmbed);h.blotName="video",h.className="ql-video",h.tagName="IFRAME",e.default=h},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.FormulaBlot=void 0;var a=function(){function t(t,e){for(var n=0;n0||null==this.cachedText)&&(this.domNode.innerHTML=t(e),this.domNode.normalize(),this.attach()),this.cachedText=e)}}]),e}(v.default);b.className="ql-syntax";var g=new c.default.Attributor.Class("token","hljs",{scope:c.default.Scope.INLINE}),m=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));if("function"!=typeof r.options.highlight)throw new Error("Syntax module requires highlight.js. Please include the library on the page before Quill.");var l=null;return r.quill.on(h.default.events.SCROLL_OPTIMIZE,function(){clearTimeout(l),l=setTimeout(function(){r.highlight(),l=null},r.options.interval)}),r.highlight(),r}return l(e,t),a(e,null,[{key:"register",value:function(){h.default.register(g,!0),h.default.register(b,!0)}}]),a(e,[{key:"highlight",value:function(){var t=this;if(!this.quill.selection.composing){this.quill.update(h.default.sources.USER);var e=this.quill.getSelection();this.quill.scroll.descendants(b).forEach(function(e){e.highlight(t.options.highlight)}),this.quill.update(h.default.sources.SILENT),null!=e&&this.quill.setSelection(e,h.default.sources.SILENT)}}}]),e}(d.default);m.DEFAULTS={highlight:function(){return null==window.hljs?null:function(t){return window.hljs.highlightAuto(t).value}}(),interval:1e3},e.CodeBlock=b,e.CodeToken=g,e.default=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function s(t,e,n){var r=document.createElement("button");r.setAttribute("type","button"),r.classList.add("ql-"+e),null!=n&&(r.value=n),t.appendChild(r)}function u(t,e){Array.isArray(e[0])||(e=[e]),e.forEach(function(e){var n=document.createElement("span");n.classList.add("ql-formats"),e.forEach(function(t){if("string"==typeof t)s(n,t);else{var e=Object.keys(t)[0],r=t[e];Array.isArray(r)?c(n,e,r):s(n,e,r)}}),t.appendChild(n)})}function c(t,e,n){var r=document.createElement("select");r.classList.add("ql-"+e),n.forEach(function(t){var e=document.createElement("option");!1!==t?e.setAttribute("value",t):e.setAttribute("selected","selected"),r.appendChild(e)}),t.appendChild(r)}Object.defineProperty(e,"__esModule",{value:!0}),e.addControls=e.default=void 0;var f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),h=function(){function t(t,e){for(var n=0;n '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BubbleTooltip=void 0;var a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=function(){function t(t,e){for(var n=0;n0&&o===h.default.sources.USER){r.show(),r.root.style.left="0px",r.root.style.width="",r.root.style.width=r.root.offsetWidth+"px";var i=r.quill.getLines(e.index,e.length);if(1===i.length)r.position(r.quill.getBounds(e));else{var l=i[i.length-1],a=r.quill.getIndex(l),s=Math.min(l.length()-1,e.index+e.length-a),u=r.quill.getBounds(new y.Range(a,s));r.position(u)}}else document.activeElement!==r.textbox&&r.quill.hasFocus()&&r.hide()}),r}return l(e,t),s(e,[{key:"listen",value:function(){var t=this;a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"listen",this).call(this),this.root.querySelector(".ql-close").addEventListener("click",function(){t.root.classList.remove("ql-editing")}),this.quill.on(h.default.events.SCROLL_OPTIMIZE,function(){setTimeout(function(){if(!t.root.classList.contains("ql-hidden")){var e=t.quill.getSelection();null!=e&&t.position(t.quill.getBounds(e))}},1)})}},{key:"cancel",value:function(){this.show()}},{key:"position",value:function(t){var n=a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"position",this).call(this,t),r=this.root.querySelector(".ql-tooltip-arrow");if(r.style.marginLeft="",0===n)return n;r.style.marginLeft=-1*n-r.offsetWidth/2+"px"}}]),e}(p.BaseTooltip);_.TEMPLATE=['','
','','',"
"].join(""),e.BubbleTooltip=_,e.default=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=function(){function t(t,e){for(var n=0;n','','',''].join(""),e.default=w}]).default}); -//# sourceMappingURL=quill.min.js.map \ No newline at end of file diff --git a/Wino.Mail/JS/Quill/quill.min.js.map b/Wino.Mail/JS/Quill/quill.min.js.map deleted file mode 100644 index f2729907..00000000 --- a/Wino.Mail/JS/Quill/quill.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///quill.min.js","webpack:///webpack/bootstrap bc1e3bc04ac5f71cbeee","webpack:///./node_modules/parchment/src/parchment.ts","webpack:///./node_modules/parchment/src/registry.ts","webpack:///./node_modules/extend/index.js","webpack:///./blots/block.js","webpack:///./node_modules/quill-delta/lib/delta.js","webpack:///./blots/inline.js","webpack:///./core/quill.js","webpack:///./core/module.js","webpack:///./blots/text.js","webpack:///./core/emitter.js","webpack:///./core/logger.js","webpack:///./node_modules/parchment/src/attributor/attributor.ts","webpack:///./node_modules/deep-equal/index.js","webpack:///./formats/code.js","webpack:///./blots/break.js","webpack:///./formats/link.js","webpack:///./ui/picker.js","webpack:///./node_modules/parchment/src/blot/abstract/container.ts","webpack:///./node_modules/parchment/src/blot/abstract/format.ts","webpack:///./node_modules/parchment/src/blot/abstract/leaf.ts","webpack:///./node_modules/quill-delta/lib/op.js","webpack:///./node_modules/clone/clone.js","webpack:///./core/selection.js","webpack:///./blots/container.js","webpack:///./formats/color.js","webpack:///./modules/keyboard.js","webpack:///./ui/icons.js","webpack:///./node_modules/parchment/src/blot/abstract/shadow.ts","webpack:///./node_modules/parchment/src/attributor/store.ts","webpack:///./node_modules/parchment/src/attributor/class.ts","webpack:///./node_modules/parchment/src/attributor/style.ts","webpack:///./blots/cursor.js","webpack:///./core/theme.js","webpack:///./blots/embed.js","webpack:///./formats/align.js","webpack:///./formats/background.js","webpack:///./formats/direction.js","webpack:///./formats/font.js","webpack:///./formats/size.js","webpack:///./formats/bold.js","webpack:///./assets/icons/code.svg","webpack:///./ui/color-picker.js","webpack:///./ui/icon-picker.js","webpack:///./ui/tooltip.js","webpack:///./themes/base.js","webpack:///./quill.js","webpack:///./core.js","webpack:///./node_modules/parchment/src/collection/linked-list.ts","webpack:///./node_modules/parchment/src/blot/scroll.ts","webpack:///./node_modules/parchment/src/blot/inline.ts","webpack:///./node_modules/parchment/src/blot/block.ts","webpack:///./node_modules/parchment/src/blot/embed.ts","webpack:///./node_modules/parchment/src/blot/text.ts","webpack:///./core/polyfill.js","webpack:///./node_modules/fast-diff/diff.js","webpack:///./node_modules/deep-equal/lib/keys.js","webpack:///./node_modules/deep-equal/lib/is_arguments.js","webpack:///./core/editor.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./blots/scroll.js","webpack:///./modules/clipboard.js","webpack:///./modules/history.js","webpack:///./formats/indent.js","webpack:///./formats/blockquote.js","webpack:///./formats/header.js","webpack:///./formats/list.js","webpack:///./formats/italic.js","webpack:///./formats/script.js","webpack:///./formats/strike.js","webpack:///./formats/underline.js","webpack:///./formats/image.js","webpack:///./formats/video.js","webpack:///./modules/formula.js","webpack:///./modules/syntax.js","webpack:///./modules/toolbar.js","webpack:///./assets/icons/align-left.svg","webpack:///./assets/icons/align-center.svg","webpack:///./assets/icons/align-right.svg","webpack:///./assets/icons/align-justify.svg","webpack:///./assets/icons/background.svg","webpack:///./assets/icons/blockquote.svg","webpack:///./assets/icons/bold.svg","webpack:///./assets/icons/clean.svg","webpack:///./assets/icons/color.svg","webpack:///./assets/icons/direction-ltr.svg","webpack:///./assets/icons/direction-rtl.svg","webpack:///./assets/icons/float-center.svg","webpack:///./assets/icons/float-full.svg","webpack:///./assets/icons/float-left.svg","webpack:///./assets/icons/float-right.svg","webpack:///./assets/icons/formula.svg","webpack:///./assets/icons/header.svg","webpack:///./assets/icons/header-2.svg","webpack:///./assets/icons/italic.svg","webpack:///./assets/icons/image.svg","webpack:///./assets/icons/indent.svg","webpack:///./assets/icons/outdent.svg","webpack:///./assets/icons/link.svg","webpack:///./assets/icons/list-ordered.svg","webpack:///./assets/icons/list-bullet.svg","webpack:///./assets/icons/list-check.svg","webpack:///./assets/icons/subscript.svg","webpack:///./assets/icons/superscript.svg","webpack:///./assets/icons/strike.svg","webpack:///./assets/icons/underline.svg","webpack:///./assets/icons/video.svg","webpack:///./assets/icons/dropdown.svg","webpack:///./themes/bubble.js","webpack:///./themes/snow.js"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","create","find","query","register","Container","default","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","input","match","ParchmentError","BlotClass","Node","TEXT_NODE","node","bubble","DATA_KEY","blot","parentNode","scope","ANY","types","attributes","LEVEL","BLOCK","INLINE","HTMLElement","names","getAttribute","split","classes","tags","tagName","TYPE","Definitions","_i","arguments","length","map","Definition","blotName","attrName","keyName","className","Array","isArray","toUpperCase","tagNames","forEach","tag","__extends","extendStatics","setPrototypeOf","__proto__","b","__","constructor","_super","message","_this","Error","hasOwn","toStr","toString","arr","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","key","extend","options","src","copy","copyIsArray","clone","target","deep","_interopRequireDefault","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","writable","bubbleFormats","formats","undefined","_extend2","parent","statics","BlockEmbed","_createClass","defineProperties","props","descriptor","protoProps","staticProps","_get","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","_extend","_quillDelta","_quillDelta2","_parchment","_parchment2","_break","_break2","_inline","_inline2","_text","_text2","_Parchment$Embed","apply","domNode","insert","values","attribute","BLOCK_ATTRIBUTE","index","format","def","endsWith","block","insertBefore","next","insertAt","slice","BLOCK_BLOT","_Parchment$Block","_this2","cache","delta","descendants","reduce","leaf","Math","min","lines","text","shift","children","tail","line","ref","head","remove","context","child","force","defaultChild","allowedChildren","diff","equal","op","NULL_CHARACTER","String","fromCharCode","Delta","ops","newOp","keys","push","delete","retain","lastOp","unshift","splice","chop","pop","filter","predicate","partition","passed","failed","initial","changeLength","elem","start","end","Infinity","iter","iterator","hasNext","nextOp","compose","other","thisIter","otherIter","peekType","peekLength","thisOp","otherOp","concat","strings","prep","join","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","peek","indexOf","transform","priority","transformPosition","offset","nextType","_Parchment$Inline","compare","BLOT","isolate","wrap","moveChildren","selfIndex","order","otherIndex","_defineProperty","expandConfig","container","userConfig","clipboard","keyboard","history","theme","Quill","DEFAULTS","import","_theme2","themeConfig","config","moduleNames","moduleConfig","moduleClass","debug","error","toolbar","document","querySelector","modify","modifier","source","strict","isEnabled","_emitter4","sources","USER","range","getSelection","oldDelta","editor","change","shiftRange","setSelection","SILENT","_emitter","args","events","TEXT_CHANGE","emitter","emit","EDITOR_CHANGE","_emitter2","overload","_typeof","API","_map","pos","_map2","_slicedToArray","_map3","max","_map4","_selection","Range","Symbol","sliceIterator","_arr","_n","_d","_e","_s","done","err","_editor","_editor2","_emitter3","_module","_module2","_selection2","_logger","_logger2","_theme","html","innerHTML","trim","classList","add","__quill","addContainer","setAttribute","scrollingContainer","scroll","whitelist","selection","addModule","init","on","type","toggle","isBlank","SCROLL_UPDATE","mutations","lastRange","update","contents","convert","setContents","clear","placeholder","readOnly","disable","limit","level","imports","path","overwrite","warn","startsWith","refNode","createElement","setRange","_this3","_overload","_overload2","deleteText","enable","enabled","scrollTop","focus","scrollIntoView","_this4","formatLine","formatText","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bounds","getBounds","containerBounds","getBoundingClientRect","bottom","top","height","left","right","width","getLength","_overload7","_overload8","getContents","getFormat","Number","MAX_VALUE","getRange","_overload9","_overload10","getText","hasFocus","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","contains","off","once","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","_overload15","_overload16","_this11","version","parchment","core/module","core/theme","Module","quill","TextBlot","_Parchment$Text","_eventemitter","_eventemitter2","eventName","addEventListener","_len","_key","querySelectorAll","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","listeners","log","event","_len2","_key2","_ref","handler","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","method","levels","_console","console","namespace","ns","logger","bind","newLevel","attributeBit","ATTRIBUTE","item","canAdd","replace","removeAttribute","isUndefinedOrNull","isBuffer","x","objEquiv","a","opts","isArguments","pSlice","deepEqual","ka","objectKeys","kb","e","sort","actual","expected","Date","getTime","Code","_block","_block2","_Inline","CodeBlock","_Block","textContent","frag","_descendant","descendant","_descendant2","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","lastIndexOf","appendChild","prev","optimize","removeChild","unwrap","TAB","Break","sanitize","url","protocols","anchor","href","protocol","Link","PROTOCOL_WHITELIST","SANITIZED_URL","toggleAriaAttribute","element","_keyboard","_keyboard2","_dropdown","_dropdown2","optionsCounter","Picker","select","buildPicker","style","display","label","togglePicker","keyCode","ENTER","ESCAPE","escape","preventDefault","option","tabIndex","hasAttribute","selectItem","id","buildItem","selected","buildLabel","buildOptions","close","setTimeout","trigger","selectedIndex","Event","dispatchEvent","createEvent","initEvent","isActive","makeBlot","childNodes","replaceChild","attach","linked_list_1","shadow_1","ContainerBlot","build","reverse","forEachAt","criteria","_a","lengthLeft","detach","childBlot","refBlot","some","insertInto","memo","targetParent","inclusive","position","after","addedNodes","removedNodes","mutation","body","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","nextSibling","FormatBlot","toLowerCase","replaceWith","replacement","wrapper","move","LeafBlot","INLINE_BLOT","Iterator","lib","keepNull","retOp","substr","_instanceof","circular","depth","includeNonEnumerable","_clone","proto","nativeMap","nativeSet","nativePromise","resolve","reject","then","__isArray","__isRegExp","RegExp","__getRegExpFlags","lastIndex","__isDate","useBuffer","Buffer","allParents","allChildren","keyChild","valueChild","set","entryChild","attrs","getOwnPropertySymbols","symbols","symbol","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","global","ignoreCase","multiline","Map","_","Set","Promise","clonePrototype","_toConsumableArray","arr2","from","_clone2","_deepEqual","_deepEqual2","Selection","composing","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","ignored","_context$range","startNode","startOffset","endNode","endOffset","restore","nativeRange","collapsed","data","scrollLength","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rect","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","activeElement","positions","indexes","_position","startContainer","endContainer","lastChild","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","_scroll$line","_scroll$line2","first","last","_scroll$line3","scrollBounds","removeAllRanges","addRange","blur","rangeToNative","oldRange","_getRange","_getRange2","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","parseInt","makeEmbedArrowHandler","shiftKey","_ref3","where","Keyboard","LEFT","altKey","RIGHT","_quill$getLeaf3","getLeaf","_quill2","handleBackspace","_quill$getLine11","getLine","_quill$getLine12","_quill$getLine13","_quill$getLine14","curFormats","prevFormats","_op2","test","prefix","handleDelete","suffix","nextLength","_quill$getLine15","_quill$getLine16","_quill$getLine17","_quill$getLine18","nextFormats","handleDeleteRange","getLines","firstFormats","lastFormats","handleEnter","lineFormats","makeCodeBlockHandler","indent","code-block","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","normalize","binding","charCodeAt","SHORTKEY","_op","_quill","navigator","platform","_Module","bindings","addBinding","metaKey","ctrlKey","userAgent","BACKSPACE","listen","evt","which","defaultPrevented","_quill$getLine","_quill$getLine2","_quill$getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","every","UP","DOWN","bold","italic","underline","outdent","outdent backspace","list","indent code-block","outdent code-block","remove tab","tab","cutoff","updateContents","list empty enter","checklist enter","_quill$getLine3","_quill$getLine4","header enter","_quill$getLine5","_quill$getLine6","header","list autofill","_quill$getLine7","_quill$getLine8","code exit","_quill$getLine9","_quill$getLine10","embed left","embed left shift","embed right","embed right shift","align","","center","justify","background","blockquote","clean","code","color","direction","rtl","float","full","formula","1","2","image","+1","-1","link","ordered","bullet","check","script","sub","super","strike","video","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","styles","attr","ClassAttributor","result","camelize","parts","rest","part","StyleAttributor","Cursor","createTextNode","CONTENTS","_length","restoreText","Theme","themes","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","Bold","_picker","_picker2","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","fill","IconPicker","icons","defaultItem","Tooltip","boundsContainer","TEMPLATE","marginTop","hide","reference","offsetWidth","rootBounds","verticalShift","extractVideoUrl","fillSelect","defaultValue","BaseTooltip","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_tooltip","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","listener","removeEventListener","tooltip","textbox","pickers","picker","extendToolbar","buttons","button","selects","handlers","edit","fileInput","files","reader","FileReader","onload","readAsDataURL","click","_Tooltip","save","cancel","mode","preview","linkRange","restoreFocus","_core","_core2","_align","_direction","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_background","_font","_size","_bold","_bold2","_italic","_italic2","_link","_link2","_script","_script2","_strike","_strike2","_underline","_underline2","_image","_image2","_video","_video2","_code","_code2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_icons","_icons2","_bubble","_bubble2","_snow","_snow2","attributors/attribute/direction","attributors/class/align","attributors/class/background","attributors/class/color","attributors/class/direction","attributors/class/font","attributors/class/size","attributors/style/align","attributors/style/background","attributors/style/color","attributors/style/direction","attributors/style/font","attributors/style/size","formats/align","formats/direction","formats/indent","IndentClass","formats/background","formats/color","formats/font","formats/size","formats/blockquote","formats/code-block","formats/header","formats/list","formats/bold","formats/code","formats/italic","formats/link","formats/script","formats/strike","formats/underline","formats/image","formats/video","formats/list/item","ListItem","modules/formula","modules/syntax","modules/toolbar","themes/bubble","themes/snow","ui/icons","ui/picker","ui/icon-picker","ui/color-picker","ui/tooltip","_container","_container2","_cursor","_cursor2","_embed","_embed2","_scroll","_scroll2","_clipboard","_clipboard2","_history","_history2","blots/block","blots/block/embed","blots/break","blots/container","blots/cursor","blots/embed","blots/inline","blots/scroll","blots/text","modules/clipboard","modules/history","modules/keyboard","LinkedList","append","nodes","cur","curNode","ret","callback","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","ScrollBlot","observer","MutationObserver","observe","disconnect","records","takeRecords","mark","markParent","remaining","previousSibling","grandChild","isEqual","obj1","obj2","prop","InlineBlot","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","token","searchString","subjectString","isFinite","floor","thisArg","execCommand","diff_main","text1","text2","cursor_pos","DIFF_EQUAL","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","fix_cursor","fix_emoji","DIFF_INSERT","DIFF_DELETE","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","x1","k1_offset","y1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","y","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","j","best_common","prefixLength","suffixLength","hm1","hm2","pointer","count_delete","count_insert","text_delete","text_insert","changes","cursor_normalize_diff","current_pos","next_pos","split_pos","d_left","d_right","norm","ndiffs","cursor_pointer","d_next","merge_tuples","compact","starts_with_pair_end","str","fixed_diffs","left_d","right_d","shim","supported","unsupported","propertyIsEnumerable","supportsArgumentsClass","combineFormats","combined","merged","normalizeDelta","ASCII","Editor","getDelta","consumeNextNewline","batchStart","_line$descendant","_line$descendant2","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","_path","formatsArr","blots","_scroll$line4","cursorIndex","textBlot","oldValue","oldText","newText","Events","EE","fn","EventEmitter","_events","_eventsCount","has","eventNames","exists","available","ee","a1","a2","a3","a4","a5","len","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_line4","applyFormat","_extend3","computeStyle","nodeType","ELEMENT_NODE","window","getComputedStyle","deltaEndsWith","endText","traverse","elementMatchers","textMatchers","matcher","childrenDelta","DOM_KEY","matchAlias","matchAttributor","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","matchBlot","matchBreak","matchIgnore","matchIndent","matchNewline","matchSpacing","nextElementSibling","nodeHeight","offsetHeight","parseFloat","marginBottom","offsetTop","matchStyles","fontStyle","fontWeight","textIndent","matchText","whiteSpace","replacer","collapse","CLIPBOARD_CONFIG","Clipboard","onPaste","matchers","selector","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","paste","pair","_pair","endsWithNewlineChange","getLastChangeIndex","deleteLength","changeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","stack","changeDelta","undoDelta","timestamp","now","delay","maxStack","IdentAttributor","Blockquote","Header","List","_Container","listEventHandler","Italic","_Bold","Script","Strike","Underline","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","katex","render","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","highlight","cachedText","Syntax","timer","clearTimeout","interval","hljs","highlightAuto","addButton","addControls","groups","controls","group","control","addSelect","Toolbar","_ret","addHandler","_this$quill$selection","_this$quill$selection2","_quill$selection$getR","_quill$selection$getR2","prompt","BubbleTooltip","_base","_base2","TOOLBAR_CONFIG","BubbleTheme","_BaseTheme","buildButtons","buildPickers","_BaseTooltip","show","lastLine","arrow","marginLeft","SnowTheme","SnowTooltip"],"mappings":"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","file":"quill.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","/*!\n * Quill Editor v1.3.6\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 45);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(48);\nvar inline_1 = __webpack_require__(49);\nvar block_1 = __webpack_require__(50);\nvar embed_1 = __webpack_require__(51);\nvar text_1 = __webpack_require__(52);\nvar attributor_1 = __webpack_require__(11);\nvar class_1 = __webpack_require__(29);\nvar style_1 = __webpack_require__(30);\nvar store_1 = __webpack_require__(28);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(14);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2.default.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n if (head instanceof _break2.default) {\n head.remove();\n }\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(54);\nvar equal = __webpack_require__(12);\nvar extend = __webpack_require__(2);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n var blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(53);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(57);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(9);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(22);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(32);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n _logger2.default.level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2.default.find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2.default.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4.default();\n this.scroll = _parchment2.default.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2.default(this.scroll);\n this.selection = new _selection2.default(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4.default.events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('
' + html + '


');\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n var change = new _quillDelta2.default();\n if (range == null) {\n return change;\n } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var bounds = void 0;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n var length = _this10.getLength();\n var deleted = _this10.editor.deleteText(0, length);\n var applied = _this10.editor.applyDelta(delta);\n var lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n applied.delete(1);\n }\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n\n this.selection.setRange(new _selection.Range(index, length), source);\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n var delta = new _quillDelta2.default().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n}();\n\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version = false ? 'dev' : \"1.3.6\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(58);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n});\n\nvar Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n _this.on('error', debug.error);\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node: node, handler: handler });\n }\n }]);\n\n return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(55);\nvar isArguments = __webpack_require__(56);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2.default, this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2.default, index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2.default.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n _inherits(Link, _Inline);\n\n function Link() {\n _classCallCheck(this, Link);\n\n return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n }\n\n _createClass(Link, [{\n key: 'format',\n value: function format(name, value) {\n if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('target', '_blank');\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return domNode.getAttribute('href');\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n var anchor = document.createElement('a');\n anchor.href = url;\n var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(25);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(106);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n function Picker(select) {\n var _this = this;\n\n _classCallCheck(this, Picker);\n\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', function () {\n _this.togglePicker();\n });\n this.label.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case _keyboard2.default.keys.ENTER:\n _this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'togglePicker',\n value: function togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n }, {\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\n });\n item.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case _keyboard2.default.keys.ENTER:\n _this2.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this2.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n }, {\n key: 'buildLabel',\n value: function buildLabel() {\n var label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = _dropdown2.default;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n }, {\n key: 'buildOptions',\n value: function buildOptions() {\n var _this3 = this;\n\n var options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = 'ql-picker-options-' + optionsCounter;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n _this3.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n }, {\n key: 'buildPicker',\n value: function buildPicker() {\n var _this4 = this;\n\n [].slice.call(this.select.attributes).forEach(function (item) {\n _this4.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n }, {\n key: 'escape',\n value: function escape() {\n var _this5 = this;\n\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(function () {\n return _this5.label.focus();\n }, 1);\n }\n }, {\n key: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n // IE11\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\n if (this.select.selectedIndex > -1) {\n var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n var isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n }]);\n\n return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(47);\nvar shadow_1 = __webpack_require__(27);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(11);\nvar store_1 = __webpack_require__(28);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(27);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n var _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(12);\nvar extend = __webpack_require__(2);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n child = new Buffer(parent.length);\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(12);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(9);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n};\n\nvar Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2.default.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4.default.sources.SILENT);\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n var native = _this.getNativeRange();\n if (native == null) return;\n if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n _this3.update(_emitter4.default.sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof _parchment2.default.Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n\n var range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2.default.find(node, true);\n var index = blot.offset(_this4.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2.default.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n var range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n var selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n}();\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(12);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n _this.listen();\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n var range = _this2.quill.getSelection();\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[]':case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2.default.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n }\n }\n return false;\n }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n }\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n 'align': {\n '': __webpack_require__(75),\n 'center': __webpack_require__(76),\n 'right': __webpack_require__(77),\n 'justify': __webpack_require__(78)\n },\n 'background': __webpack_require__(79),\n 'blockquote': __webpack_require__(80),\n 'bold': __webpack_require__(81),\n 'clean': __webpack_require__(82),\n 'code': __webpack_require__(40),\n 'code-block': __webpack_require__(40),\n 'color': __webpack_require__(83),\n 'direction': {\n '': __webpack_require__(84),\n 'rtl': __webpack_require__(85)\n },\n 'float': {\n 'center': __webpack_require__(86),\n 'full': __webpack_require__(87),\n 'left': __webpack_require__(88),\n 'right': __webpack_require__(89)\n },\n 'formula': __webpack_require__(90),\n 'header': {\n '1': __webpack_require__(91),\n '2': __webpack_require__(92)\n },\n 'italic': __webpack_require__(93),\n 'image': __webpack_require__(94),\n 'indent': {\n '+1': __webpack_require__(95),\n '-1': __webpack_require__(96)\n },\n 'link': __webpack_require__(97),\n 'list': {\n 'ordered': __webpack_require__(98),\n 'bullet': __webpack_require__(99),\n 'check': __webpack_require__(100)\n },\n 'script': {\n 'sub': __webpack_require__(101),\n 'super': __webpack_require__(102)\n },\n 'strike': __webpack_require__(103),\n 'underline': __webpack_require__(104),\n 'video': __webpack_require__(105)\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(11);\nvar class_1 = __webpack_require__(29);\nvar style_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(11);\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(11);\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n _this.domNode.appendChild(_this.textNode);\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n var target = this,\n index = 0;\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof _text2.default) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor.import('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n}();\n\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n _this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n _this.domNode.appendChild(_this.leftGuard);\n _this.domNode.appendChild(_this.contentNode);\n _this.domNode.appendChild(_this.rightGuard);\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2.default) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2.default) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(24);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n _inherits(Bold, _Inline);\n\n function Bold() {\n _classCallCheck(this, Bold);\n\n return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n }\n\n _createClass(Bold, [{\n key: 'optimize',\n value: function optimize(context) {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n }], [{\n key: 'create',\n value: function create() {\n return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n _inherits(ColorPicker, _Picker);\n\n function ColorPicker(select, label) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n _this.label.innerHTML = label;\n _this.container.classList.add('ql-color-picker');\n [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n item.classList.add('ql-primary');\n });\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n }]);\n\n return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n _inherits(IconPicker, _Picker);\n\n function IconPicker(select, icons) {\n _classCallCheck(this, IconPicker);\n\n var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n _this.container.classList.add('ql-icon-picker');\n [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n _this.defaultItem = _this.container.querySelector('.ql-selected');\n _this.selectItem(_this.defaultItem);\n return _this;\n }\n\n _createClass(IconPicker, [{\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n function Tooltip(quill, boundsContainer) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', function () {\n _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n });\n }\n this.hide();\n }\n\n _createClass(Tooltip, [{\n key: 'hide',\n value: function hide() {\n this.root.classList.add('ql-hidden');\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n // root.scrollTop should be 0 if scrollContainer !== root\n var top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n var containerBounds = this.boundsContainer.getBoundingClientRect();\n var rootBounds = this.root.getBoundingClientRect();\n var shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n var height = rootBounds.bottom - rootBounds.top;\n var verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = top - verticalShift + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n }, {\n key: 'show',\n value: function show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n }]);\n\n return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(9);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(25);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(32);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(41);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(42);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(43);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n _inherits(BaseTheme, _Theme);\n\n function BaseTheme(quill, options) {\n _classCallCheck(this, BaseTheme);\n\n var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n var listener = function listener(e) {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\n }\n if (_this.pickers != null) {\n _this.pickers.forEach(function (picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n return _this;\n }\n\n _createClass(BaseTheme, [{\n key: 'addModule',\n value: function addModule(name) {\n var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n }, {\n key: 'buildButtons',\n value: function buildButtons(buttons, icons) {\n buttons.forEach(function (button) {\n var className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(function (name) {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n var value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n }, {\n key: 'buildPickers',\n value: function buildPickers(selects, icons) {\n var _this2 = this;\n\n this.pickers = selects.map(function (select) {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new _iconPicker2.default(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n var format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new _colorPicker2.default(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new _picker2.default(select);\n }\n });\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n }\n }]);\n\n return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function image() {\n var _this3 = this;\n\n var fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n fileInput.value = \"\";\n };\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n _this4.listen();\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2.default.match(event, 'enter')) {\n _this5.save();\n event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2.default.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n if (range != null) {\n var index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _core = __webpack_require__(46);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(34);\n\nvar _direction = __webpack_require__(36);\n\nvar _indent = __webpack_require__(62);\n\nvar _blockquote = __webpack_require__(63);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(64);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(65);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(35);\n\nvar _color = __webpack_require__(24);\n\nvar _font = __webpack_require__(37);\n\nvar _size = __webpack_require__(38);\n\nvar _bold = __webpack_require__(39);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(66);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(15);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(67);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(68);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(69);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(70);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(71);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(72);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(73);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(74);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(26);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(41);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(42);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(43);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(107);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(108);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n\n 'attributors/class/align': _align.AlignClass,\n 'attributors/class/background': _background.BackgroundClass,\n 'attributors/class/color': _color.ColorClass,\n 'attributors/class/direction': _direction.DirectionClass,\n 'attributors/class/font': _font.FontClass,\n 'attributors/class/size': _size.SizeClass,\n\n 'attributors/style/align': _align.AlignStyle,\n 'attributors/style/background': _background.BackgroundStyle,\n 'attributors/style/color': _color.ColorStyle,\n 'attributors/style/direction': _direction.DirectionStyle,\n 'attributors/style/font': _font.FontStyle,\n 'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n 'formats/align': _align.AlignClass,\n 'formats/direction': _direction.DirectionClass,\n 'formats/indent': _indent.IndentClass,\n\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n\n 'formats/blockquote': _blockquote2.default,\n 'formats/code-block': _code2.default,\n 'formats/header': _header2.default,\n 'formats/list': _list2.default,\n\n 'formats/bold': _bold2.default,\n 'formats/code': _code.Code,\n 'formats/italic': _italic2.default,\n 'formats/link': _link2.default,\n 'formats/script': _script2.default,\n 'formats/strike': _strike2.default,\n 'formats/underline': _underline2.default,\n\n 'formats/image': _image2.default,\n 'formats/video': _video2.default,\n\n 'formats/list/item': _list.ListItem,\n\n 'modules/formula': _formula2.default,\n 'modules/syntax': _syntax2.default,\n 'modules/toolbar': _toolbar2.default,\n\n 'themes/bubble': _bubble2.default,\n 'themes/snow': _snow2.default,\n\n 'ui/icons': _icons2.default,\n 'ui/picker': _picker2.default,\n 'ui/icon-picker': _iconPicker2.default,\n 'ui/color-picker': _colorPicker2.default,\n 'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(14);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(23);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(31);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(33);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(59);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(8);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(60);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(61);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(25);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n 'blots/block': _block2.default,\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2.default,\n 'blots/container': _container2.default,\n 'blots/cursor': _cursor2.default,\n 'blots/embed': _embed2.default,\n 'blots/inline': _inline2.default,\n 'blots/scroll': _scroll2.default,\n 'blots/text': _text2.default,\n\n 'modules/clipboard': _clipboard2.default,\n 'modules/history': _history2.default,\n 'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function (token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(31);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(14);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(12);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var lines = [],\n leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2.default.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2.default;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(9);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(14);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(23);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n _this.optimize();\n _this.enable();\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof _code2.default) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2.default) {\n var _newlineIndex = last.newlineIndex(0);\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n var blot = _parchment2.default.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n var wrapper = _parchment2.default.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2.default.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.batch === true) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2.default.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(2);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(34);\n\nvar _background = __webpack_require__(35);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(24);\n\nvar _direction = __webpack_require__(36);\n\nvar _font = __webpack_require__(37);\n\nvar _size = __webpack_require__(38);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[_code2.default.blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2.default.sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n var indent = -1,\n parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n _this.clear();\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n }\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = { undo: [], redo: [] };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op.delete || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n _inherits(IdentAttributor, _Parchment$Attributor);\n\n function IdentAttributor() {\n _classCallCheck(this, IdentAttributor);\n\n return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n }\n\n _createClass(IdentAttributor, [{\n key: 'add',\n value: function add(node, value) {\n if (value === '+1' || value === '-1') {\n var indent = this.value(node) || 0;\n value = value === '+1' ? indent + 1 : indent - 1;\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n }\n }\n }, {\n key: 'canAdd',\n value: function canAdd(node, value) {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n }\n }, {\n key: 'value',\n value: function value(node) {\n return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n }\n }]);\n\n return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n _inherits(Blockquote, _Block);\n\n function Blockquote() {\n _classCallCheck(this, Blockquote);\n\n return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n }\n\n return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n _inherits(Header, _Block);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, null, [{\n key: 'formats',\n value: function formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n }]);\n\n return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(23);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n _inherits(ListItem, _Block);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'format',\n value: function format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(_parchment2.default.create(this.statics.scope));\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n }\n }\n }, {\n key: 'remove',\n value: function remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n }\n }\n }, {\n key: 'replaceWith',\n value: function replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n }\n }\n }], [{\n key: 'formats',\n value: function formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n }\n }]);\n\n return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n _inherits(List, _Container);\n\n _createClass(List, null, [{\n key: 'create',\n value: function create(value) {\n var tagName = value === 'ordered' ? 'OL' : 'UL';\n var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n }]);\n\n function List(domNode) {\n _classCallCheck(this, List);\n\n var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n var listEventHandler = function listEventHandler(e) {\n if (e.target.parentNode !== domNode) return;\n var format = _this2.statics.formats(domNode);\n var blot = _parchment2.default.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n };\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n return _this2;\n }\n\n _createClass(List, [{\n key: 'format',\n value: function format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats() {\n // We don't inherit from FormatBlot\n return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n } else {\n var index = ref == null ? this.length() : ref.offset(this);\n var after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n var item = _parchment2.default.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n }\n }]);\n\n return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bold = __webpack_require__(39);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n _inherits(Italic, _Bold);\n\n function Italic() {\n _classCallCheck(this, Italic);\n\n return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n }\n\n return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n _inherits(Script, _Inline);\n\n function Script() {\n _classCallCheck(this, Script);\n\n return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n }\n\n _createClass(Script, null, [{\n key: 'create',\n value: function create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n }]);\n\n return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n _inherits(Strike, _Inline);\n\n function Strike() {\n _classCallCheck(this, Strike);\n\n return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n }\n\n return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(5);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n _inherits(Underline, _Inline);\n\n function Underline() {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n }\n\n return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(15);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n _inherits(Image, _Parchment$Embed);\n\n function Image() {\n _classCallCheck(this, Image);\n\n return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n }\n\n _createClass(Image, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'match',\n value: function match(url) {\n return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n );\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(3);\n\nvar _link = __webpack_require__(15);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n _inherits(Video, _BlockEmbed);\n\n function Video() {\n _classCallCheck(this, Video);\n\n return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n }\n\n _createClass(Video, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _link2.default.sanitize(url);\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(33);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n _inherits(FormulaBlot, _Embed);\n\n function FormulaBlot() {\n _classCallCheck(this, FormulaBlot);\n\n return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n }\n\n _createClass(FormulaBlot, null, [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('data-value');\n }\n }]);\n\n return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n _inherits(Formula, _Module);\n\n _createClass(Formula, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(FormulaBlot, true);\n }\n }]);\n\n function Formula() {\n _classCallCheck(this, Formula);\n\n var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n return _this2;\n }\n\n return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n _inherits(SyntaxCodeBlock, _CodeBlock);\n\n function SyntaxCodeBlock() {\n _classCallCheck(this, SyntaxCodeBlock);\n\n return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n }\n\n _createClass(SyntaxCodeBlock, [{\n key: 'replaceWith',\n value: function replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n var text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = _highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n _inherits(Syntax, _Module);\n\n _createClass(Syntax, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(CodeToken, true);\n _quill2.default.register(SyntaxCodeBlock, true);\n }\n }]);\n\n function Syntax(quill, options) {\n _classCallCheck(this, Syntax);\n\n var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n if (typeof _this2.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n var timer = null;\n _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n _this2.highlight();\n timer = null;\n }, _this2.options.interval);\n });\n _this2.highlight();\n return _this2;\n }\n\n _createClass(Syntax, [{\n key: 'highlight',\n value: function highlight() {\n var _this3 = this;\n\n if (this.quill.selection.composing) return;\n this.quill.update(_quill2.default.sources.USER);\n var range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n code.highlight(_this3.options.highlight);\n });\n this.quill.update(_quill2.default.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n highlight: function () {\n if (window.hljs == null) return null;\n return function (text) {\n var result = window.hljs.highlightAuto(text);\n return result.value;\n };\n }(),\n interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(4);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n _inherits(Toolbar, _Module);\n\n function Toolbar(quill, options) {\n _classCallCheck(this, Toolbar);\n\n var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n if (Array.isArray(_this.options.container)) {\n var container = document.createElement('div');\n addControls(container, _this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n _this.container = container;\n } else if (typeof _this.options.container === 'string') {\n _this.container = document.querySelector(_this.options.container);\n } else {\n _this.container = _this.options.container;\n }\n if (!(_this.container instanceof HTMLElement)) {\n var _ret;\n\n return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n }\n _this.container.classList.add('ql-toolbar');\n _this.controls = [];\n _this.handlers = {};\n Object.keys(_this.options.handlers).forEach(function (format) {\n _this.addHandler(format, _this.options.handlers[format]);\n });\n [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n _this.attach(input);\n });\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n if (type === _quill2.default.events.SELECTION_CHANGE) {\n _this.update(range);\n }\n });\n _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n var _this$quill$selection = _this.quill.selection.getRange(),\n _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n _this.update(range);\n });\n return _this;\n }\n\n _createClass(Toolbar, [{\n key: 'addHandler',\n value: function addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n }, {\n key: 'attach',\n value: function attach(input) {\n var _this2 = this;\n\n var format = [].find.call(input.classList, function (className) {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (_parchment2.default.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n _this2.quill.focus();\n\n var _quill$selection$getR = _this2.quill.selection.getRange(),\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n range = _quill$selection$getR2[0];\n\n if (_this2.handlers[format] != null) {\n _this2.handlers[format].call(_this2, value);\n } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n value = prompt('Enter ' + format);\n if (!value) return;\n _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n } else {\n _this2.quill.format(format, value, _quill2.default.sources.USER);\n }\n _this2.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n }, {\n key: 'update',\n value: function update(range) {\n var formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n format = _pair[0],\n input = _pair[1];\n\n if (input.tagName === 'SELECT') {\n var option = void 0;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n var value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n }]);\n\n return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function (controls) {\n var group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function (control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n var format = Object.keys(control)[0];\n var value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n var input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function clean() {\n var _this3 = this;\n\n var range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n var formats = this.quill.getFormat();\n Object.keys(formats).forEach(function (name) {\n // Clean functionality in existing apps only clean inline formats\n if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n _this3.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, _quill2.default.sources.USER);\n }\n },\n direction: function direction(value) {\n var align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _quill2.default.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _quill2.default.sources.USER);\n }\n this.quill.format('direction', value, _quill2.default.sources.USER);\n },\n indent: function indent(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n var indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n var modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n }\n },\n link: function link(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, _quill2.default.sources.USER);\n },\n list: function list(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, _quill2.default.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n }\n } else {\n this.quill.format('list', value, _quill2.default.sources.USER);\n }\n }\n }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(9);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(44);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(22);\n\nvar _icons = __webpack_require__(26);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n _inherits(BubbleTheme, _BaseTheme);\n\n function BubbleTheme(quill, options) {\n _classCallCheck(this, BubbleTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-bubble');\n return _this;\n }\n\n _createClass(BubbleTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n }\n }]);\n\n return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n _inherits(BubbleTooltip, _BaseTooltip);\n\n function BubbleTooltip(quill, bounds) {\n _classCallCheck(this, BubbleTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n _this2.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n var lines = _this2.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n var index = _this2.quill.getIndex(lastLine);\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\n }\n });\n return _this2;\n }\n\n _createClass(BubbleTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('.ql-close').addEventListener('click', function () {\n _this3.root.classList.remove('ql-editing');\n });\n this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(function () {\n if (_this3.root.classList.contains('ql-hidden')) return;\n var range = _this3.quill.getSelection();\n if (range != null) {\n _this3.position(_this3.quill.getBounds(range));\n }\n }, 1);\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.show();\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n var arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n }\n }]);\n\n return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(9);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(44);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(15);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(22);\n\nvar _icons = __webpack_require__(26);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n _inherits(SnowTheme, _BaseTheme);\n\n function SnowTheme(quill, options) {\n _classCallCheck(this, SnowTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-snow');\n return _this;\n }\n\n _createClass(SnowTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (value) {\n var range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n var preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n var tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n _inherits(SnowTooltip, _BaseTooltip);\n\n function SnowTooltip(quill, bounds) {\n _classCallCheck(this, SnowTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n _this2.preview = _this2.root.querySelector('a.ql-preview');\n return _this2;\n }\n\n _createClass(SnowTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n if (_this3.root.classList.contains('ql-editing')) {\n _this3.save();\n } else {\n _this3.edit('link', _this3.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n if (_this3.linkRange != null) {\n var range = _this3.linkRange;\n _this3.restoreFocus();\n _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n delete _this3.linkRange;\n }\n event.preventDefault();\n _this3.hide();\n });\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\n if (range.length === 0 && source === _emitter2.default.sources.USER) {\n var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n link = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (link != null) {\n _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n var preview = _link2.default.formats(link.domNode);\n _this3.preview.textContent = preview;\n _this3.preview.setAttribute('href', preview);\n _this3.show();\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n return;\n }\n } else {\n delete _this3.linkRange;\n }\n _this3.hide();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\nexports.default = SnowTheme;\n\n/***/ })\n/******/ ])[\"default\"];\n});\n\n\n// WEBPACK FOOTER //\n// quill.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 45);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap bc1e3bc04ac5f71cbeee","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = require(\"./blot/abstract/container\");\nvar format_1 = require(\"./blot/abstract/format\");\nvar leaf_1 = require(\"./blot/abstract/leaf\");\nvar scroll_1 = require(\"./blot/scroll\");\nvar inline_1 = require(\"./blot/inline\");\nvar block_1 = require(\"./blot/block\");\nvar embed_1 = require(\"./blot/embed\");\nvar text_1 = require(\"./blot/text\");\nvar attributor_1 = require(\"./attributor/attributor\");\nvar class_1 = require(\"./attributor/class\");\nvar style_1 = require(\"./attributor/style\");\nvar store_1 = require(\"./attributor/store\");\nvar Registry = require(\"./registry\");\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/parchment.ts\n// module id = 0\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/registry.ts\n// module id = 1\n// module chunks = 0","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/extend/index.js\n// module id = 2\n// module chunks = 0","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Break from './break';\nimport Inline from './inline';\nimport TextBlot from './text';\n\n\nconst NEWLINE_LENGTH = 1;\n\n\nclass BlockEmbed extends Parchment.Embed {\n attach() {\n super.attach();\n this.attributes = new Parchment.Attributor.Store(this.domNode);\n }\n\n delta() {\n return new Delta().insert(this.value(), extend(this.formats(), this.attributes.values()));\n }\n\n format(name, value) {\n let attribute = Parchment.query(name, Parchment.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n\n formatAt(index, length, name, value) {\n this.format(name, value);\n }\n\n insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n let block = Parchment.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n super.insertAt(index, value, def);\n }\n }\n}\nBlockEmbed.scope = Parchment.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nclass Block extends Parchment.Block {\n constructor(domNode) {\n super(domNode);\n this.cache = {};\n }\n\n delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(Parchment.Leaf).reduce((delta, leaf) => {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new Delta()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n\n deleteAt(index, length) {\n super.deleteAt(index, length);\n this.cache = {};\n }\n\n formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n\n insertAt(index, value, def) {\n if (def != null) return super.insertAt(index, value, def);\n if (value.length === 0) return;\n let lines = value.split('\\n');\n let text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n super.insertAt(Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n let block = this;\n lines.reduce(function(index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n\n insertBefore(blot, ref) {\n let head = this.children.head;\n super.insertBefore(blot, ref);\n if (head instanceof Break) {\n head.remove();\n }\n this.cache = {};\n }\n\n length() {\n if (this.cache.length == null) {\n this.cache.length = super.length() + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n\n moveChildren(target, ref) {\n super.moveChildren(target, ref);\n this.cache = {};\n }\n\n optimize(context) {\n super.optimize(context);\n this.cache = {};\n }\n\n path(index) {\n return super.path(index, true);\n }\n\n removeChild(child) {\n super.removeChild(child);\n this.cache = {};\n }\n\n split(index, force = false) {\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n let clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n let next = super.split(index, force);\n this.cache = {};\n return next;\n }\n }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [Inline, Parchment.Embed, TextBlot];\n\n\nfunction bubbleFormats(blot, formats = {}) {\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = extend(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\n\nexport { bubbleFormats, BlockEmbed, Block as default };\n\n\n\n// WEBPACK FOOTER //\n// ./blots/block.js","var diff = require('fast-diff');\nvar equal = require('deep-equal');\nvar extend = require('extend');\nvar op = require('./op');\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/quill-delta/lib/delta.js\n// module id = 4\n// module chunks = 0","import Text from './text';\nimport Parchment from 'parchment';\n\n\nclass Inline extends Parchment.Inline {\n static compare(self, other) {\n let selfIndex = Inline.order.indexOf(self);\n let otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n\n formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && Parchment.query(name, Parchment.Scope.BLOT)) {\n let blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n super.formatAt(index, length, name, value);\n }\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.parent instanceof Inline &&\n Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n let parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n}\nInline.allowedChildren = [Inline, Parchment.Embed, Text];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = [\n 'cursor', 'inline', // Must be lower\n 'underline', 'strike', 'italic', 'bold', 'script',\n 'link', 'code' // Must be higher\n];\n\n\nexport default Inline;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/inline.js","import './polyfill';\nimport Delta from 'quill-delta';\nimport Editor from './editor';\nimport Emitter from './emitter';\nimport Module from './module';\nimport Parchment from 'parchment';\nimport Selection, { Range } from './selection';\nimport extend from 'extend';\nimport logger from './logger';\nimport Theme from './theme';\n\nlet debug = logger('quill');\n\n\nclass Quill {\n static debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n logger.level(limit);\n }\n\n static find(node) {\n return node.__quill || Parchment.find(node);\n }\n\n static import(name) {\n if (this.imports[name] == null) {\n debug.error(`Cannot import ${name}. Are you sure it was registered?`);\n }\n return this.imports[name];\n }\n\n static register(path, target, overwrite = false) {\n if (typeof path !== 'string') {\n let name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach((key) => {\n this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn(`Overwriting ${path} with`, target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) &&\n target.blotName !== 'abstract') {\n Parchment.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n\n constructor(container, options = {}) {\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n let html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new Emitter();\n this.scroll = Parchment.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new Editor(this.scroll);\n this.selection = new Selection(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type) => {\n if (type === Emitter.events.TEXT_CHANGE) {\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\n }\n });\n this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n let range = this.selection.lastRange;\n let index = range && range.length === 0 ? range.index : undefined;\n modify.call(this, () => {\n return this.editor.update(null, mutations, index);\n }, source);\n });\n let contents = this.clipboard.convert(`
${html}


`);\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n addContainer(container, refNode = null) {\n if (typeof container === 'string') {\n let className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n\n blur() {\n this.selection.setRange(null);\n }\n\n deleteText(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.deleteText(index, length);\n }, source, index, -1*length);\n }\n\n disable() {\n this.enable(false);\n }\n\n enable(enabled = true) {\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n\n focus() {\n let scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n\n format(name, value, source = Emitter.sources.API) {\n return modify.call(this, () => {\n let range = this.getSelection(true);\n let change = new Delta();\n if (range == null) {\n return change;\n } else if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n change = this.editor.formatLine(range.index, range.length, { [name]: value });\n } else if (range.length === 0) {\n this.selection.format(name, value);\n return change;\n } else {\n change = this.editor.formatText(range.index, range.length, { [name]: value });\n }\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }, source);\n }\n\n formatLine(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n\n formatText(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n\n getBounds(index, length = 0) {\n let bounds;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n let containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n\n getContents(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getContents(index, length);\n }\n\n getFormat(index = this.getSelection(true), length = 0) {\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n\n getIndex(blot) {\n return blot.offset(this.scroll);\n }\n\n getLength() {\n return this.scroll.length();\n }\n\n getLeaf(index) {\n return this.scroll.leaf(index);\n }\n\n getLine(index) {\n return this.scroll.line(index);\n }\n\n getLines(index = 0, length = Number.MAX_VALUE) {\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n\n getModule(name) {\n return this.theme.modules[name];\n }\n\n getSelection(focus = false) {\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n\n getText(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getText(index, length);\n }\n\n hasFocus() {\n return this.selection.hasFocus();\n }\n\n insertEmbed(index, embed, value, source = Quill.sources.API) {\n return modify.call(this, () => {\n return this.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n\n insertText(index, text, name, value, source) {\n let formats;\n [index, , formats, source] = overload(index, 0, name, value, source);\n return modify.call(this, () => {\n return this.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n\n isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n\n off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n\n on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n\n once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n\n pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n\n removeFormat(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.removeFormat(index, length);\n }, source, index);\n }\n\n scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n\n setContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n let length = this.getLength();\n let deleted = this.editor.deleteText(0, length);\n let applied = this.editor.applyDelta(delta);\n let lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof(lastOp.insert) === 'string' && lastOp.insert[lastOp.insert.length-1] === '\\n') {\n this.editor.deleteText(this.getLength() - 1, 1);\n applied.delete(1);\n }\n let ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n\n setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n [index, length, , source] = overload(index, length, source);\n this.selection.setRange(new Range(index, length), source);\n if (source !== Emitter.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n\n setText(text, source = Emitter.sources.API) {\n let delta = new Delta().insert(text);\n return this.setContents(delta, source);\n }\n\n update(source = Emitter.sources.USER) {\n let change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n\n updateContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n return this.editor.applyDelta(delta, source);\n }, source, true);\n }\n}\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = Emitter.events;\nQuill.sources = Emitter.sources;\n// eslint-disable-next-line no-undef\nQuill.version = typeof(QUILL_VERSION) === 'undefined' ? 'dev' : QUILL_VERSION;\n\nQuill.imports = {\n 'delta' : Delta,\n 'parchment' : Parchment,\n 'core/module' : Module,\n 'core/theme' : Theme\n};\n\n\nfunction expandConfig(container, userConfig) {\n userConfig = extend(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = Theme;\n } else {\n userConfig.theme = Quill.import(`themes/${userConfig.theme}`);\n if (userConfig.theme == null) {\n throw new Error(`Invalid theme ${userConfig.theme}. Did you register it?`);\n }\n }\n let themeConfig = extend(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function(config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function(module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n let moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n let moduleConfig = moduleNames.reduce(function(config, name) {\n let moduleClass = Quill.import(`modules/${name}`);\n if (moduleClass == null) {\n debug.error(`Cannot load ${name} module. Are you sure you registered it?`);\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar &&\n userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = extend(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function(key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function(config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === Emitter.sources.USER) {\n return new Delta();\n }\n let range = index == null ? null : this.getSelection();\n let oldDelta = this.editor.delta;\n let change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, Emitter.sources.SILENT);\n }\n if (change.length() > 0) {\n let args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n let formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if (typeof name === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || Emitter.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n let start, end;\n if (index instanceof Delta) {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n return index.transformPosition(pos, source !== Emitter.sources.USER);\n });\n } else {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n if (pos < index || (pos === index && source === Emitter.sources.USER)) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n }\n return new Range(start, end - start);\n}\n\n\nexport { expandConfig, overload, Quill as default };\n\n\n\n// WEBPACK FOOTER //\n// ./core/quill.js","class Module {\n constructor(quill, options = {}) {\n this.quill = quill;\n this.options = options;\n }\n}\nModule.DEFAULTS = {};\n\n\nexport default Module;\n\n\n\n// WEBPACK FOOTER //\n// ./core/module.js","import Parchment from 'parchment';\n\nclass TextBlot extends Parchment.Text { }\n\nexport default TextBlot;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/text.js","import EventEmitter from 'eventemitter3';\nimport logger from './logger';\n\nlet debug = logger('quill:events');\n\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function(eventName) {\n document.addEventListener(eventName, (...args) => {\n [].slice.call(document.querySelectorAll('.ql-container')).forEach((node) => {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n node.__quill.emitter.handleDOM(...args);\n }\n });\n });\n});\n\n\nclass Emitter extends EventEmitter {\n constructor() {\n super();\n this.listeners = {};\n this.on('error', debug.error);\n }\n\n emit() {\n debug.log.apply(debug, arguments);\n super.emit.apply(this, arguments);\n }\n\n handleDOM(event, ...args) {\n (this.listeners[event.type] || []).forEach(function({ node, handler }) {\n if (event.target === node || node.contains(event.target)) {\n handler(event, ...args);\n }\n });\n }\n\n listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node, handler })\n }\n}\n\nEmitter.events = {\n EDITOR_CHANGE : 'editor-change',\n SCROLL_BEFORE_UPDATE : 'scroll-before-update',\n SCROLL_OPTIMIZE : 'scroll-optimize',\n SCROLL_UPDATE : 'scroll-update',\n SELECTION_CHANGE : 'selection-change',\n TEXT_CHANGE : 'text-change'\n};\nEmitter.sources = {\n API : 'api',\n SILENT : 'silent',\n USER : 'user'\n};\n\n\nexport default Emitter;\n\n\n\n// WEBPACK FOOTER //\n// ./core/emitter.js","let levels = ['error', 'warn', 'log', 'info'];\nlet level = 'warn';\n\nfunction debug(method, ...args) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n console[method](...args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function(logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function(newLevel) {\n level = newLevel;\n};\n\n\nexport default namespace;\n\n\n\n// WEBPACK FOOTER //\n// ./core/logger.js","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../registry\");\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/attributor/attributor.ts\n// module id = 11\n// module chunks = 0","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/deep-equal/index.js\n// module id = 12\n// module chunks = 0","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Inline from '../blots/inline';\nimport TextBlot from '../blots/text';\n\n\nclass Code extends Inline {}\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\n\nclass CodeBlock extends Block {\n static create(value) {\n let domNode = super.create(value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n\n static formats() {\n return true;\n }\n\n delta() {\n let text = this.domNode.textContent;\n if (text.endsWith('\\n')) { // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce((delta, frag) => {\n return delta.insert(frag).insert('\\n', this.formats());\n }, new Delta());\n }\n\n format(name, value) {\n if (name === this.statics.blotName && value) return;\n let [text, ] = this.descendant(TextBlot, this.length() - 1);\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n super.format(name, value);\n }\n\n formatAt(index, length, name, value) {\n if (length === 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK) == null ||\n (name === this.statics.blotName && value === this.statics.formats(this.domNode))) {\n return;\n }\n let nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n let prevNewline = this.newlineIndex(index, true) + 1;\n let isolateLength = nextNewline - prevNewline + 1;\n let blot = this.isolate(prevNewline, isolateLength);\n let next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n\n insertAt(index, value, def) {\n if (def != null) return;\n let [text, offset] = this.descendant(TextBlot, index);\n text.insertAt(offset, value);\n }\n\n length() {\n let length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n\n newlineIndex(searchIndex, reverse = false) {\n if (!reverse) {\n let offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n\n optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(Parchment.create('text', '\\n'));\n }\n super.optimize(context);\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n super.replace(target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function(node) {\n let blot = Parchment.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof Parchment.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n}\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\n\nexport { Code, CodeBlock as default };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/code.js","import Parchment from 'parchment';\n\n\nclass Break extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n insertInto(parent, ref) {\n if (parent.children.length === 0) {\n super.insertInto(parent, ref);\n } else {\n this.remove();\n }\n }\n\n length() {\n return 0;\n }\n\n value() {\n return '';\n }\n}\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\n\nexport default Break;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/break.js","import Inline from '../blots/inline';\n\n\nclass Link extends Inline {\n static create(value) {\n let node = super.create(value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('target', '_blank');\n return node;\n }\n\n static formats(domNode) {\n return domNode.getAttribute('href');\n }\n\n static sanitize(url) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n\n format(name, value) {\n if (name !== this.statics.blotName || !value) return super.format(name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n}\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\n\nfunction sanitize(url, protocols) {\n let anchor = document.createElement('a');\n anchor.href = url;\n let protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\n\nexport { Link as default, sanitize };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/link.js","import Keyboard from '../modules/keyboard';\nimport DropdownIcon from '../assets/icons/dropdown.svg';\n\nlet optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nclass Picker {\n constructor(select) {\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', () => {\n this.togglePicker();\n });\n this.label.addEventListener('keydown', (event) => {\n switch(event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case Keyboard.keys.ENTER:\n this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case Keyboard.keys.ESCAPE:\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n\n buildItem(option) {\n let item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', () => {\n this.selectItem(item, true);\n });\n item.addEventListener('keydown', (event) => {\n switch(event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case Keyboard.keys.ENTER:\n this.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case Keyboard.keys.ESCAPE:\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n\n buildLabel() {\n let label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = DropdownIcon;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n\n buildOptions() {\n let options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = `ql-picker-options-${optionsCounter}`;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach((option) => {\n let item = this.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n this.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n\n buildPicker() {\n [].slice.call(this.select.attributes).forEach((item) => {\n this.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n\n escape() {\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(() => this.label.focus(), 1);\n }\n\n close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n\n selectItem(item, trigger = false) {\n let selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if (typeof Event === 'object') { // IE11\n let event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n\n update() {\n let option;\n if (this.select.selectedIndex > -1) {\n let item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n let isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n}\n\n\nexport default Picker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/picker.js","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = require(\"../../collection/linked-list\");\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/blot/abstract/container.ts\n// module id = 17\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"../../attributor/attributor\");\nvar store_1 = require(\"../../attributor/store\");\nvar container_1 = require(\"./container\");\nvar Registry = require(\"../../registry\");\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/blot/abstract/format.ts\n// module id = 18\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n var _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/blot/abstract/leaf.ts\n// module id = 19\n// module chunks = 0","var equal = require('deep-equal');\nvar extend = require('extend');\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\n\nmodule.exports = lib;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/quill-delta/lib/op.js\n// module id = 20\n// module chunks = 0","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n child = new Buffer(parent.length);\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/clone/clone.js\n// module id = 21\n// module chunks = 0","import Parchment from 'parchment';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport Emitter from './emitter';\nimport logger from './logger';\n\nlet debug = logger('quill:selection');\n\n\nclass Range {\n constructor(index, length = 0) {\n this.index = index;\n this.length = length;\n }\n}\n\n\nclass Selection {\n constructor(scroll, emitter) {\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = Parchment.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, () => {\n if (!this.mouseDown) {\n setTimeout(this.update.bind(this, Emitter.sources.USER), 1);\n }\n });\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type, delta) => {\n if (type === Emitter.events.TEXT_CHANGE && delta.length() > 0) {\n this.update(Emitter.sources.SILENT);\n }\n });\n this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n if (!this.hasFocus()) return;\n let native = this.getNativeRange();\n if (native == null) return;\n if (native.start.node === this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n this.emitter.once(Emitter.events.SCROLL_UPDATE, () => {\n try {\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(Emitter.events.SCROLL_OPTIMIZE, (mutations, context) => {\n if (context.range) {\n const { startNode, startOffset, endNode, endOffset } = context.range;\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(Emitter.sources.SILENT);\n }\n\n handleComposition() {\n this.root.addEventListener('compositionstart', () => {\n this.composing = true;\n });\n this.root.addEventListener('compositionend', () => {\n this.composing = false;\n if (this.cursor.parent) {\n const range = this.cursor.restore();\n if (!range) return;\n setTimeout(() => {\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n\n handleDragging() {\n this.emitter.listenDOM('mousedown', document.body, () => {\n this.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, () => {\n this.mouseDown = false;\n this.update(Emitter.sources.USER);\n });\n }\n\n focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n\n format(format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n this.scroll.update();\n let nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || Parchment.query(format, Parchment.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n let blot = Parchment.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof Parchment.Leaf) {\n let after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n\n getBounds(index, length = 0) {\n let scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n let node, [leaf, offset] = this.scroll.leaf(index);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n let range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n [leaf, offset] = this.scroll.leaf(index + length);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n let side = 'left';\n let rect;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n\n getNativeRange() {\n let selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n let nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n let range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n\n getRange() {\n let normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n let range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n\n hasFocus() {\n return document.activeElement === this.root;\n }\n\n normalizedToRange(range) {\n let positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n let indexes = positions.map((position) => {\n let [node, offset] = position;\n let blot = Parchment.find(node, true);\n let index = blot.offset(this.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof Parchment.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n let end = Math.min(Math.max(...indexes), this.scroll.length() - 1);\n let start = Math.min(end, ...indexes);\n return new Range(start, end-start);\n }\n\n normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) ||\n (!nativeRange.collapsed && !contains(this.root, nativeRange.endContainer))) {\n return null;\n }\n let range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function(position) {\n let node = position.node, offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n\n rangeToNative(range) {\n let indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n let args = [];\n let scrollLength = this.scroll.length();\n indexes.forEach((index, i) => {\n index = Math.min(scrollLength - 1, index);\n let node, [leaf, offset] = this.scroll.leaf(index);\n [node, offset] = leaf.position(offset, i !== 0);\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n\n scrollIntoView(scrollingContainer) {\n let range = this.lastRange;\n if (range == null) return;\n let bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n let limit = this.scroll.length()-1;\n let [first, ] = this.scroll.line(Math.min(range.index, limit));\n let last = first;\n if (range.length > 0) {\n [last, ] = this.scroll.line(Math.min(range.index + range.length, limit));\n }\n if (first == null || last == null) return;\n let scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= (scrollBounds.top - bounds.top);\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += (bounds.bottom - scrollBounds.bottom);\n }\n }\n\n setNativeRange(startNode, startOffset, endNode = startNode, endOffset = startOffset, force = false) {\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n let selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n let native = (this.getNativeRange() || {}).native;\n if (native == null || force ||\n startNode !== native.startContainer ||\n startOffset !== native.startOffset ||\n endNode !== native.endContainer ||\n endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n let range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n\n setRange(range, force = false, source = Emitter.sources.API) {\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n let args = this.rangeToNative(range);\n this.setNativeRange(...args, force);\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n\n update(source = Emitter.sources.USER) {\n let oldRange = this.lastRange;\n let [lastRange, nativeRange] = this.getRange();\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!equal(oldRange, this.lastRange)) {\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n let args = [Emitter.events.SELECTION_CHANGE, clone(this.lastRange), clone(oldRange), source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n }\n}\n\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\n\nexport { Range, Selection as default };\n\n\n\n// WEBPACK FOOTER //\n// ./core/selection.js","import Parchment from 'parchment';\nimport Block, { BlockEmbed } from './block';\n\n\nclass Container extends Parchment.Container { }\nContainer.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Container;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/container.js","import Parchment from 'parchment';\n\nclass ColorAttributor extends Parchment.Attributor.Style {\n value(domNode) {\n let value = super.value(domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function(component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n}\n\nlet ColorClass = new Parchment.Attributor.Class('color', 'ql-color', {\n scope: Parchment.Scope.INLINE\n});\nlet ColorStyle = new ColorAttributor('color', 'color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { ColorAttributor, ColorClass, ColorStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/color.js","import clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\nimport Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:keyboard');\n\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n\nclass Keyboard extends Module {\n static match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function(key) {\n return (!!binding[key] !== evt[key] && binding[key] !== null);\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n\n constructor(quill, options) {\n super(quill, options);\n this.bindings = {};\n Object.keys(this.options.bindings).forEach((name) => {\n if (name === 'list autofill' &&\n quill.scroll.whitelist != null &&\n !quill.scroll.whitelist['list']) {\n return;\n }\n if (this.options.bindings[name]) {\n this.addBinding(this.options.bindings[name]);\n }\n });\n this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function() {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null },\n { collapsed: true, offset: 0 },\n handleBackspace);\n this.listen();\n }\n\n addBinding(key, context = {}, handler = {}) {\n let binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = extend(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n\n listen() {\n this.quill.root.addEventListener('keydown', (evt) => {\n if (evt.defaultPrevented) return;\n let which = evt.which || evt.keyCode;\n let bindings = (this.bindings[which] || []).filter(function(binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n let range = this.quill.getSelection();\n if (range == null || !this.quill.hasFocus()) return;\n let [line, offset] = this.quill.getLine(range.index);\n let [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n let [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\n let prefixText = leafStart instanceof Parchment.Text ? leafStart.value().slice(0, offsetStart) : '';\n let suffixText = leafEnd instanceof Parchment.Text ? leafEnd.value().slice(offsetEnd) : '';\n let curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: this.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n let prevented = bindings.some((binding) => {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function(name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (typeof binding.format === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function(name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return equal(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(this, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n}\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold' : makeFormatHandler('bold'),\n 'italic' : makeFormatHandler('italic'),\n 'underline' : makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', Quill.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', Quill.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', Quill.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, Quill.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function(range) {\n this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function(range) {\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index)\n .delete(range.length)\n .insert('\\t');\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function(range, context) {\n this.quill.format('list', false, Quill.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, Quill.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function(range) {\n let [line, offset] = this.quill.getLine(range.index);\n let formats = extend({}, line.formats(), { list: 'checked' });\n let delta = new Delta().retain(range.index)\n .insert('\\n', formats)\n .retain(line.length() - offset - 1)\n .retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function(range, context) {\n let [line, offset] = this.quill.getLine(range.index);\n let delta = new Delta().retain(range.index)\n .insert('\\n', context.format)\n .retain(line.length() - offset - 1)\n .retain(1, { header: null });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function(range, context) {\n let length = context.prefix.length;\n let [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]': case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-': case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index - offset)\n .delete(length + 1)\n .retain(line.length() - 2 - offset)\n .retain(1, { list: value });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function(range) {\n const [line, offset] = this.quill.getLine(range.index);\n const delta = new Delta()\n .retain(range.index + line.length() - offset - 2)\n .retain(1, { 'code-block': null })\n .delete(1);\n this.quill.updateContents(delta, Quill.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n const where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return {\n key,\n shiftKey,\n altKey: null,\n [where]: /^$/,\n handler: function(range) {\n let index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += (range.length + 1);\n }\n const [leaf, ] = this.quill.getLeaf(index);\n if (!(leaf instanceof Parchment.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, Quill.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, Quill.sources.USER);\n }\n }\n return false;\n }\n };\n}\n\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n let [line, ] = this.quill.getLine(range.index);\n let formats = {};\n if (context.offset === 0) {\n let [prev, ] = this.quill.getLine(range.index - 1);\n if (prev != null && prev.length() > 1) {\n let curFormats = line.formats();\n let prevFormats = this.quill.getFormat(range.index-1, 1);\n formats = DeltaOp.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n let length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index-length, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index-length, length, formats, Quill.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n let length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n let formats = {}, nextLength = 0;\n let [line, ] = this.quill.getLine(range.index);\n if (context.offset >= line.length() - 1) {\n let [next, ] = this.quill.getLine(range.index + 1);\n if (next) {\n let curFormats = line.formats();\n let nextFormats = this.quill.getFormat(range.index, 1);\n formats = DeltaOp.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, Quill.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n let lines = this.quill.getLines(range);\n let formats = {};\n if (lines.length > 1) {\n let firstFormats = lines[0].formats();\n let lastFormats = lines[lines.length - 1].formats();\n formats = DeltaOp.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, Quill.sources.USER);\n }\n this.quill.setSelection(range.index, Quill.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n let lineFormats = Object.keys(context.format).reduce(function(lineFormats, format) {\n if (Parchment.query(format, Parchment.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, Quill.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach((name) => {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n this.quill.format(name, context.format[name], Quill.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: {'code-block': true },\n handler: function(range) {\n let CodeBlock = Parchment.query('code-block');\n let index = range.index, length = range.length;\n let [block, offset] = this.quill.scroll.descendant(CodeBlock, index);\n if (block == null) return;\n let scrollIndex = this.quill.getIndex(block);\n let start = block.newlineIndex(offset, true) + 1;\n let end = block.newlineIndex(scrollIndex + offset + length);\n let lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach((line, i) => {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(Quill.sources.USER);\n this.quill.setSelection(index, length, Quill.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function(range, context) {\n this.quill.format(format, !context.format[format], Quill.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if (typeof binding === 'object') {\n binding = clone(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\n\nexport { Keyboard as default, SHORTKEY };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/keyboard.js","module.exports = {\n 'align': {\n '' : require('../assets/icons/align-left.svg'),\n 'center' : require('../assets/icons/align-center.svg'),\n 'right' : require('../assets/icons/align-right.svg'),\n 'justify' : require('../assets/icons/align-justify.svg')\n },\n 'background': require('../assets/icons/background.svg'),\n 'blockquote': require('../assets/icons/blockquote.svg'),\n 'bold' : require('../assets/icons/bold.svg'),\n 'clean' : require('../assets/icons/clean.svg'),\n 'code' : require('../assets/icons/code.svg'),\n 'code-block': require('../assets/icons/code.svg'),\n 'color' : require('../assets/icons/color.svg'),\n 'direction' : {\n '' : require('../assets/icons/direction-ltr.svg'),\n 'rtl' : require('../assets/icons/direction-rtl.svg')\n },\n 'float': {\n 'center' : require('../assets/icons/float-center.svg'),\n 'full' : require('../assets/icons/float-full.svg'),\n 'left' : require('../assets/icons/float-left.svg'),\n 'right' : require('../assets/icons/float-right.svg')\n },\n 'formula' : require('../assets/icons/formula.svg'),\n 'header': {\n '1' : require('../assets/icons/header.svg'),\n '2' : require('../assets/icons/header-2.svg')\n },\n 'italic' : require('../assets/icons/italic.svg'),\n 'image' : require('../assets/icons/image.svg'),\n 'indent': {\n '+1' : require('../assets/icons/indent.svg'),\n '-1' : require('../assets/icons/outdent.svg')\n },\n 'link' : require('../assets/icons/link.svg'),\n 'list': {\n 'ordered' : require('../assets/icons/list-ordered.svg'),\n 'bullet' : require('../assets/icons/list-bullet.svg'),\n 'check' : require('../assets/icons/list-check.svg')\n },\n 'script': {\n 'sub' : require('../assets/icons/subscript.svg'),\n 'super' : require('../assets/icons/superscript.svg'),\n },\n 'strike' : require('../assets/icons/strike.svg'),\n 'underline' : require('../assets/icons/underline.svg'),\n 'video' : require('../assets/icons/video.svg')\n};\n\n\n\n// WEBPACK FOOTER //\n// ./ui/icons.js","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../../registry\");\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/blot/abstract/shadow.ts\n// module id = 27\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nvar class_1 = require(\"./class\");\nvar style_1 = require(\"./style\");\nvar Registry = require(\"../registry\");\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/attributor/store.ts\n// module id = 28\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/attributor/class.ts\n// module id = 29\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/attributor/style.ts\n// module id = 30\n// module chunks = 0","import Parchment from 'parchment';\nimport TextBlot from './text';\n\n\nclass Cursor extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n constructor(domNode, selection) {\n super(domNode);\n this.selection = selection;\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n this._length = 0;\n }\n\n detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n\n format(name, value) {\n if (this._length !== 0) {\n return super.format(name, value);\n }\n let target = this, index = 0;\n while (target != null && target.statics.scope !== Parchment.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n\n index(node, offset) {\n if (node === this.textNode) return 0;\n return super.index(node, offset);\n }\n\n length() {\n return this._length;\n }\n\n position() {\n return [this.textNode, this.textNode.data.length];\n }\n\n remove() {\n super.remove();\n this.parent = null;\n }\n\n restore() {\n if (this.selection.composing || this.parent == null) return;\n let textNode = this.textNode;\n let range = this.selection.getNativeRange();\n let restoreText, start, end;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n [restoreText, start, end] = [textNode, range.start.offset, range.end.offset];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n let text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof TextBlot) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(Parchment.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n [start, end] = [start, end].map(function(offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n\n update(mutations, context) {\n if (mutations.some((mutation) => {\n return mutation.type === 'characterData' && mutation.target === this.textNode;\n })) {\n let range = this.restore();\n if (range) context.range = range;\n }\n }\n\n value() {\n return '';\n }\n}\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = \"\\uFEFF\"; // Zero width no break space\n\n\nexport default Cursor;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/cursor.js","class Theme {\n constructor(quill, options) {\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n init() {\n Object.keys(this.options.modules).forEach((name) => {\n if (this.modules[name] == null) {\n this.addModule(name);\n }\n });\n }\n\n addModule(name) {\n let moduleClass = this.quill.constructor.import(`modules/${name}`);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n}\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\n\nexport default Theme;\n\n\n\n// WEBPACK FOOTER //\n// ./core/theme.js","import Parchment from 'parchment';\nimport TextBlot from './text';\n\nconst GUARD_TEXT = \"\\uFEFF\";\n\n\nclass Embed extends Parchment.Embed {\n constructor(node) {\n super(node);\n this.contentNode = document.createElement('span');\n this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(this.domNode.childNodes).forEach((childNode) => {\n this.contentNode.appendChild(childNode);\n });\n this.leftGuard = document.createTextNode(GUARD_TEXT);\n this.rightGuard = document.createTextNode(GUARD_TEXT);\n this.domNode.appendChild(this.leftGuard);\n this.domNode.appendChild(this.contentNode);\n this.domNode.appendChild(this.rightGuard);\n }\n\n index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return super.index(node, offset);\n }\n\n restore(node) {\n let range, textNode;\n let text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof TextBlot) {\n let prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof TextBlot) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n }\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n\n update(mutations, context) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'characterData' &&\n (mutation.target === this.leftGuard || mutation.target === this.rightGuard)) {\n let range = this.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n}\n\n\nexport default Embed;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/embed.js","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nlet AlignAttribute = new Parchment.Attributor.Attribute('align', 'align', config);\nlet AlignClass = new Parchment.Attributor.Class('align', 'ql-align', config);\nlet AlignStyle = new Parchment.Attributor.Style('align', 'text-align', config);\n\nexport { AlignAttribute, AlignClass, AlignStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/align.js","import Parchment from 'parchment';\nimport { ColorAttributor } from './color';\n\nlet BackgroundClass = new Parchment.Attributor.Class('background', 'ql-bg', {\n scope: Parchment.Scope.INLINE\n});\nlet BackgroundStyle = new ColorAttributor('background', 'background-color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { BackgroundClass, BackgroundStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/background.js","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nlet DirectionAttribute = new Parchment.Attributor.Attribute('direction', 'dir', config);\nlet DirectionClass = new Parchment.Attributor.Class('direction', 'ql-direction', config);\nlet DirectionStyle = new Parchment.Attributor.Style('direction', 'direction', config);\n\nexport { DirectionAttribute, DirectionClass, DirectionStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/direction.js","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nlet FontClass = new Parchment.Attributor.Class('font', 'ql-font', config);\n\nclass FontStyleAttributor extends Parchment.Attributor.Style {\n value(node) {\n return super.value(node).replace(/[\"']/g, '');\n }\n}\n\nlet FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexport { FontStyle, FontClass };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/font.js","import Parchment from 'parchment';\n\nlet SizeClass = new Parchment.Attributor.Class('size', 'ql-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nlet SizeStyle = new Parchment.Attributor.Style('size', 'font-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexport { SizeClass, SizeStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/size.js","import Inline from '../blots/inline';\n\nclass Bold extends Inline {\n static create() {\n return super.create();\n }\n\n static formats() {\n return true;\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n}\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexport default Bold;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/bold.js","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/code.svg\n// module id = 40\n// module chunks = 0","import Picker from './picker';\n\n\nclass ColorPicker extends Picker {\n constructor(select, label) {\n super(select);\n this.label.innerHTML = label;\n this.container.classList.add('ql-color-picker');\n [].slice.call(this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function(item) {\n item.classList.add('ql-primary');\n });\n }\n\n buildItem(option) {\n let item = super.buildItem(option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n let colorLabel = this.label.querySelector('.ql-color-label');\n let value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n}\n\n\nexport default ColorPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/color-picker.js","import Picker from './picker';\n\n\nclass IconPicker extends Picker {\n constructor(select, icons) {\n super(select);\n this.container.classList.add('ql-icon-picker');\n [].forEach.call(this.container.querySelectorAll('.ql-picker-item'), (item) => {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n this.defaultItem = this.container.querySelector('.ql-selected');\n this.selectItem(this.defaultItem);\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n}\n\n\nexport default IconPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/icon-picker.js","class Tooltip {\n constructor(quill, boundsContainer) {\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', () => {\n this.root.style.marginTop = (-1*this.quill.root.scrollTop) + 'px';\n });\n }\n this.hide();\n }\n\n hide() {\n this.root.classList.add('ql-hidden');\n }\n\n position(reference) {\n let left = reference.left + reference.width/2 - this.root.offsetWidth/2;\n // root.scrollTop should be 0 if scrollContainer !== root\n let top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n let containerBounds = this.boundsContainer.getBoundingClientRect();\n let rootBounds = this.root.getBoundingClientRect();\n let shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n let height = rootBounds.bottom - rootBounds.top;\n let verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = (top - verticalShift) + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n\n show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n}\n\n\nexport default Tooltip;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/tooltip.js","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Emitter from '../core/emitter';\nimport Keyboard from '../modules/keyboard';\nimport Theme from '../core/theme';\nimport ColorPicker from '../ui/color-picker';\nimport IconPicker from '../ui/icon-picker';\nimport Picker from '../ui/picker';\nimport Tooltip from '../ui/tooltip';\n\n\nconst ALIGNS = [ false, 'center', 'right', 'justify' ];\n\nconst COLORS = [\n \"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\",\n \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\",\n \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\",\n \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\",\n \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"\n];\n\nconst FONTS = [ false, 'serif', 'monospace' ];\n\nconst HEADERS = [ '1', '2', '3', false ];\n\nconst SIZES = [ 'small', false, 'large', 'huge' ];\n\n\nclass BaseTheme extends Theme {\n constructor(quill, options) {\n super(quill, options);\n let listener = (e) => {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (this.tooltip != null && !this.tooltip.root.contains(e.target) &&\n document.activeElement !== this.tooltip.textbox && !this.quill.hasFocus()) {\n this.tooltip.hide();\n }\n if (this.pickers != null) {\n this.pickers.forEach(function(picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n }\n\n addModule(name) {\n let module = super.addModule(name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n\n buildButtons(buttons, icons) {\n buttons.forEach((button) => {\n let className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach((name) => {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n let value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n\n buildPickers(selects, icons) {\n this.pickers = selects.map((select) => {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new IconPicker(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n let format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new ColorPicker(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new Picker(select);\n }\n });\n let update = () => {\n this.pickers.forEach(function(picker) {\n picker.update();\n });\n };\n this.quill.on(Emitter.events.EDITOR_CHANGE, update);\n }\n}\nBaseTheme.DEFAULTS = extend(true, {}, Theme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function() {\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', () => {\n if (fileInput.files != null && fileInput.files[0] != null) {\n let reader = new FileReader();\n reader.onload = (e) => {\n let range = this.quill.getSelection(true);\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ image: e.target.result })\n , Emitter.sources.USER);\n this.quill.setSelection(range.index + 1, Emitter.sources.SILENT);\n fileInput.value = \"\";\n }\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\n\nclass BaseTooltip extends Tooltip {\n constructor(quill, boundsContainer) {\n super(quill, boundsContainer);\n this.textbox = this.root.querySelector('input[type=\"text\"]');\n this.listen();\n }\n\n listen() {\n this.textbox.addEventListener('keydown', (event) => {\n if (Keyboard.match(event, 'enter')) {\n this.save();\n event.preventDefault();\n } else if (Keyboard.match(event, 'escape')) {\n this.cancel();\n event.preventDefault();\n }\n });\n }\n\n cancel() {\n this.hide();\n }\n\n edit(mode = 'link', preview = null) {\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(`data-${mode}`) || '');\n this.root.setAttribute('data-mode', mode);\n }\n\n restoreFocus() {\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n\n save() {\n let value = this.textbox.value;\n switch(this.root.getAttribute('data-mode')) {\n case 'link': {\n let scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, Emitter.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, Emitter.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video': {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula': {\n if (!value) break;\n let range = this.quill.getSelection(true);\n if (range != null) {\n let index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, Emitter.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', Emitter.sources.USER);\n }\n this.quill.setSelection(index + 2, Emitter.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n}\n\n\nfunction extractVideoUrl(url) {\n let match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) ||\n url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) { // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values, defaultValue = false) {\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\n\nexport { BaseTooltip, BaseTheme as default };\n\n\n\n// WEBPACK FOOTER //\n// ./themes/base.js","import Quill from './core';\n\nimport { AlignClass, AlignStyle } from './formats/align';\nimport { DirectionAttribute, DirectionClass, DirectionStyle } from './formats/direction';\nimport { IndentClass as Indent } from './formats/indent';\n\nimport Blockquote from './formats/blockquote';\nimport Header from './formats/header';\nimport List, { ListItem } from './formats/list';\n\nimport { BackgroundClass, BackgroundStyle } from './formats/background';\nimport { ColorClass, ColorStyle } from './formats/color';\nimport { FontClass, FontStyle } from './formats/font';\nimport { SizeClass, SizeStyle } from './formats/size';\n\nimport Bold from './formats/bold';\nimport Italic from './formats/italic';\nimport Link from './formats/link';\nimport Script from './formats/script';\nimport Strike from './formats/strike';\nimport Underline from './formats/underline';\n\nimport Image from './formats/image';\nimport Video from './formats/video';\n\nimport CodeBlock, { Code as InlineCode } from './formats/code';\n\nimport Formula from './modules/formula';\nimport Syntax from './modules/syntax';\nimport Toolbar from './modules/toolbar';\n\nimport Icons from './ui/icons';\nimport Picker from './ui/picker';\nimport ColorPicker from './ui/color-picker';\nimport IconPicker from './ui/icon-picker';\nimport Tooltip from './ui/tooltip';\n\nimport BubbleTheme from './themes/bubble';\nimport SnowTheme from './themes/snow';\n\n\nQuill.register({\n 'attributors/attribute/direction': DirectionAttribute,\n\n 'attributors/class/align': AlignClass,\n 'attributors/class/background': BackgroundClass,\n 'attributors/class/color': ColorClass,\n 'attributors/class/direction': DirectionClass,\n 'attributors/class/font': FontClass,\n 'attributors/class/size': SizeClass,\n\n 'attributors/style/align': AlignStyle,\n 'attributors/style/background': BackgroundStyle,\n 'attributors/style/color': ColorStyle,\n 'attributors/style/direction': DirectionStyle,\n 'attributors/style/font': FontStyle,\n 'attributors/style/size': SizeStyle\n}, true);\n\n\nQuill.register({\n 'formats/align': AlignClass,\n 'formats/direction': DirectionClass,\n 'formats/indent': Indent,\n\n 'formats/background': BackgroundStyle,\n 'formats/color': ColorStyle,\n 'formats/font': FontClass,\n 'formats/size': SizeClass,\n\n 'formats/blockquote': Blockquote,\n 'formats/code-block': CodeBlock,\n 'formats/header': Header,\n 'formats/list': List,\n\n 'formats/bold': Bold,\n 'formats/code': InlineCode,\n 'formats/italic': Italic,\n 'formats/link': Link,\n 'formats/script': Script,\n 'formats/strike': Strike,\n 'formats/underline': Underline,\n\n 'formats/image': Image,\n 'formats/video': Video,\n\n 'formats/list/item': ListItem,\n\n 'modules/formula': Formula,\n 'modules/syntax': Syntax,\n 'modules/toolbar': Toolbar,\n\n 'themes/bubble': BubbleTheme,\n 'themes/snow': SnowTheme,\n\n 'ui/icons': Icons,\n 'ui/picker': Picker,\n 'ui/icon-picker': IconPicker,\n 'ui/color-picker': ColorPicker,\n 'ui/tooltip': Tooltip\n}, true);\n\n\nexport default Quill;\n\n\n\n// WEBPACK FOOTER //\n// ./quill.js","import Parchment from 'parchment';\nimport Quill from './core/quill';\n\nimport Block, { BlockEmbed } from './blots/block';\nimport Break from './blots/break';\nimport Container from './blots/container';\nimport Cursor from './blots/cursor';\nimport Embed from './blots/embed';\nimport Inline from './blots/inline';\nimport Scroll from './blots/scroll';\nimport TextBlot from './blots/text';\n\nimport Clipboard from './modules/clipboard';\nimport History from './modules/history';\nimport Keyboard from './modules/keyboard';\n\nQuill.register({\n 'blots/block' : Block,\n 'blots/block/embed' : BlockEmbed,\n 'blots/break' : Break,\n 'blots/container' : Container,\n 'blots/cursor' : Cursor,\n 'blots/embed' : Embed,\n 'blots/inline' : Inline,\n 'blots/scroll' : Scroll,\n 'blots/text' : TextBlot,\n\n 'modules/clipboard' : Clipboard,\n 'modules/history' : History,\n 'modules/keyboard' : Keyboard\n});\n\nParchment.register(Block, Break, Cursor, Inline, Scroll, TextBlot);\n\n\nexport default Quill;\n\n\n\n// WEBPACK FOOTER //\n// ./core.js","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/collection/linked-list.ts\n// module id = 47\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = require(\"./abstract/container\");\nvar Registry = require(\"../registry\");\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/blot/scroll.ts\n// module id = 48\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/blot/inline.ts\n// module id = 49\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/blot/block.ts\n// module id = 50\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = require(\"./abstract/leaf\");\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/blot/embed.ts\n// module id = 51\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = require(\"./abstract/leaf\");\nvar Registry = require(\"../registry\");\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parchment/src/blot/text.ts\n// module id = 52\n// module chunks = 0","let elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n let _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function(token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position){\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function(searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./core/polyfill.js","/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fast-diff/diff.js\n// module id = 54\n// module chunks = 0","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/deep-equal/lib/keys.js\n// module id = 55\n// module chunks = 0","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/deep-equal/lib/is_arguments.js\n// module id = 56\n// module chunks = 0","import Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport CodeBlock from '../formats/code';\nimport CursorBlot from '../blots/cursor';\nimport Block, { bubbleFormats } from '../blots/block';\nimport Break from '../blots/break';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\n\n\nconst ASCII = /^[ -~]*$/;\n\n\nclass Editor {\n constructor(scroll) {\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n applyDelta(delta) {\n let consumeNextNewline = false;\n this.scroll.update();\n let scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce((index, op) => {\n let length = op.retain || op.delete || op.insert.length || 1;\n let attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n let text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n this.scroll.insertAt(index, text);\n let [line, offset] = this.scroll.line(index);\n let formats = extend({}, bubbleFormats(line));\n if (line instanceof Block) {\n let [leaf, ] = line.descendant(Parchment.Leaf, offset);\n formats = extend(formats, bubbleFormats(leaf));\n }\n attributes = DeltaOp.attributes.diff(formats, attributes) || {};\n } else if (typeof op.insert === 'object') {\n let key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach((name) => {\n this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce((index, op) => {\n if (typeof op.delete === 'number') {\n this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n\n deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new Delta().retain(index).delete(length));\n }\n\n formatLine(index, length, formats = {}) {\n this.scroll.update();\n Object.keys(formats).forEach((format) => {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n let lines = this.scroll.lines(index, Math.max(length, 1));\n let lengthRemaining = length;\n lines.forEach((line) => {\n let lineLength = line.length();\n if (!(line instanceof CodeBlock)) {\n line.format(format, formats[format]);\n } else {\n let codeIndex = index - line.offset(this.scroll);\n let codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n formatText(index, length, formats = {}) {\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n\n getDelta() {\n return this.scroll.lines().reduce((delta, line) => {\n return delta.concat(line.delta());\n }, new Delta());\n }\n\n getFormat(index, length = 0) {\n let lines = [], leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function(path) {\n let [blot, ] = path;\n if (blot instanceof Block) {\n lines.push(blot);\n } else if (blot instanceof Parchment.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(Parchment.Leaf, index, length);\n }\n let formatsArr = [lines, leaves].map(function(blots) {\n if (blots.length === 0) return {};\n let formats = bubbleFormats(blots.shift());\n while (Object.keys(formats).length > 0) {\n let blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats(bubbleFormats(blot), formats);\n }\n return formats;\n });\n return extend.apply(extend, formatsArr);\n }\n\n getText(index, length) {\n return this.getContents(index, length).filter(function(op) {\n return typeof op.insert === 'string';\n }).map(function(op) {\n return op.insert;\n }).join('');\n }\n\n insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new Delta().retain(index).insert({ [embed]: value }));\n }\n\n insertText(index, text, formats = {}) {\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).insert(text, clone(formats)));\n }\n\n isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n let block = this.scroll.children.head;\n if (block.statics.blotName !== Block.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof Break;\n }\n\n removeFormat(index, length) {\n let text = this.getText(index, length);\n let [line, offset] = this.scroll.line(index + length);\n let suffixLength = 0, suffix = new Delta();\n if (line != null) {\n if (!(line instanceof CodeBlock)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n let contents = this.getContents(index, length + suffixLength);\n let diff = contents.diff(new Delta().insert(text).concat(suffix));\n let delta = new Delta().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n\n update(change, mutations = [], cursorIndex = undefined) {\n let oldDelta = this.delta;\n if (mutations.length === 1 &&\n mutations[0].type === 'characterData' &&\n mutations[0].target.data.match(ASCII) &&\n Parchment.find(mutations[0].target)) {\n // Optimization for character changes\n let textBlot = Parchment.find(mutations[0].target);\n let formats = bubbleFormats(textBlot);\n let index = textBlot.offset(this.scroll);\n let oldValue = mutations[0].oldValue.replace(CursorBlot.CONTENTS, '');\n let oldText = new Delta().insert(oldValue);\n let newText = new Delta().insert(textBlot.value());\n let diffDelta = new Delta().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function(delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new Delta());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !equal(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n}\n\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function(merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function(delta, op) {\n if (op.insert === 1) {\n let attributes = clone(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = clone(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n let text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new Delta());\n}\n\n\nexport default Editor;\n\n\n\n// WEBPACK FOOTER //\n// ./core/editor.js","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/eventemitter3/index.js\n// module id = 58\n// module chunks = 0","import Parchment from 'parchment';\nimport Emitter from '../core/emitter';\nimport Block, { BlockEmbed } from './block';\nimport Break from './break';\nimport CodeBlock from '../formats/code';\nimport Container from './container';\n\n\nfunction isLine(blot) {\n return (blot instanceof Block || blot instanceof BlockEmbed);\n}\n\n\nclass Scroll extends Parchment.Scroll {\n constructor(domNode, config) {\n super(domNode);\n this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n this.whitelist = config.whitelist.reduce(function(whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n this.domNode.addEventListener('DOMNodeInserted', function() {});\n this.optimize();\n this.enable();\n }\n\n batchStart() {\n this.batch = true;\n }\n\n batchEnd() {\n this.batch = false;\n this.optimize();\n }\n\n deleteAt(index, length) {\n let [first, offset] = this.line(index);\n let [last, ] = this.line(index + length);\n super.deleteAt(index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof BlockEmbed || last instanceof BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof CodeBlock) {\n let newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof CodeBlock) {\n let newlineIndex = last.newlineIndex(0);\n if (newlineIndex > -1) {\n last.split(newlineIndex + 1);\n }\n }\n let ref = last.children.head instanceof Break ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n\n enable(enabled = true) {\n this.domNode.setAttribute('contenteditable', enabled);\n }\n\n formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n super.formatAt(index, length, format, value);\n this.optimize();\n }\n\n insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || Parchment.query(value, Parchment.Scope.BLOCK) == null) {\n let blot = Parchment.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n let embed = Parchment.create(value, def);\n this.appendChild(embed);\n }\n } else {\n super.insertAt(index, value, def);\n }\n this.optimize();\n }\n\n insertBefore(blot, ref) {\n if (blot.statics.scope === Parchment.Scope.INLINE_BLOT) {\n let wrapper = Parchment.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n super.insertBefore(blot, ref);\n }\n\n leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n\n line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n\n lines(index = 0, length = Number.MAX_VALUE) {\n let getLines = (blot, index, length) => {\n let lines = [], lengthLeft = length;\n blot.children.forEachAt(index, length, function(child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof Parchment.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n\n optimize(mutations = [], context = {}) {\n if (this.batch === true) return;\n super.optimize(mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n\n path(index) {\n return super.path(index).slice(1); // Exclude self\n }\n\n update(mutations) {\n if (this.batch === true) return;\n let source = Emitter.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n super.update(mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n }\n }\n}\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Scroll;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/scroll.js","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nimport { AlignAttribute, AlignStyle } from '../formats/align';\nimport { BackgroundStyle } from '../formats/background';\nimport CodeBlock from '../formats/code';\nimport { ColorStyle } from '../formats/color';\nimport { DirectionAttribute, DirectionStyle } from '../formats/direction';\nimport { FontStyle } from '../formats/font';\nimport { SizeStyle } from '../formats/size';\n\nlet debug = logger('quill:clipboard');\n\n\nconst DOM_KEY = '__ql-matcher';\n\nconst CLIPBOARD_CONFIG = [\n [Node.TEXT_NODE, matchText],\n [Node.TEXT_NODE, matchNewline],\n ['br', matchBreak],\n [Node.ELEMENT_NODE, matchNewline],\n [Node.ELEMENT_NODE, matchBlot],\n [Node.ELEMENT_NODE, matchSpacing],\n [Node.ELEMENT_NODE, matchAttributor],\n [Node.ELEMENT_NODE, matchStyles],\n ['li', matchIndent],\n ['b', matchAlias.bind(matchAlias, 'bold')],\n ['i', matchAlias.bind(matchAlias, 'italic')],\n ['style', matchIgnore]\n];\n\nconst ATTRIBUTE_ATTRIBUTORS = [\n AlignAttribute,\n DirectionAttribute\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nconst STYLE_ATTRIBUTORS = [\n AlignStyle,\n BackgroundStyle,\n ColorStyle,\n DirectionStyle,\n FontStyle,\n SizeStyle\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\n\nclass Clipboard extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.quill.root.addEventListener('paste', this.onPaste.bind(this));\n this.container = this.quill.addContainer('ql-clipboard');\n this.container.setAttribute('contenteditable', true);\n this.container.setAttribute('tabindex', -1);\n this.matchers = [];\n CLIPBOARD_CONFIG.concat(this.options.matchers).forEach(([selector, matcher]) => {\n if (!options.matchVisual && matcher === matchSpacing) return;\n this.addMatcher(selector, matcher);\n });\n }\n\n addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n\n convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n const formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[CodeBlock.blotName]) {\n const text = this.container.innerText;\n this.container.innerHTML = '';\n return new Delta().insert(text, { [CodeBlock.blotName]: formats[CodeBlock.blotName] });\n }\n let [elementMatchers, textMatchers] = this.prepareMatching();\n let delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new Delta().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n\n dangerouslyPasteHTML(index, html, source = Quill.sources.API) {\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, Quill.sources.SILENT);\n } else {\n let paste = this.convert(html);\n this.quill.updateContents(new Delta().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), Quill.sources.SILENT);\n }\n }\n\n onPaste(e) {\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n let range = this.quill.getSelection();\n let delta = new Delta().retain(range.index);\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(Quill.sources.SILENT);\n setTimeout(() => {\n delta = delta.concat(this.convert()).delete(range.length);\n this.quill.updateContents(delta, Quill.sources.USER);\n // range.length contributes to delta.length()\n this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT);\n this.quill.scrollingContainer.scrollTop = scrollTop;\n this.quill.focus();\n }, 1);\n }\n\n prepareMatching() {\n let elementMatchers = [], textMatchers = [];\n this.matchers.forEach((pair) => {\n let [selector, matcher] = pair;\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(this.container.querySelectorAll(selector), (node) => {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n}\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\n\nfunction applyFormat(delta, format, value) {\n if (typeof format === 'object') {\n return Object.keys(format).reduce(function(delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function(delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, extend({}, {[format]: value}, op.attributes));\n }\n }, new Delta());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n const DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n let endText = \"\";\n for (let i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n let op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1*text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n let style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) { // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function(delta, matcher) {\n return matcher(node, delta);\n }, new Delta());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], (delta, childNode) => {\n let childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new Delta());\n } else {\n return new Delta();\n }\n}\n\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n let attributes = Parchment.Attributor.Attribute.keys(node);\n let classes = Parchment.Attributor.Class.keys(node);\n let styles = Parchment.Attributor.Style.keys(node);\n let formats = {};\n attributes.concat(classes).concat(styles).forEach((name) => {\n let attr = Parchment.query(name, Parchment.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name]\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n let match = Parchment.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof Parchment.Embed) {\n let embed = {};\n let value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new Delta().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new Delta();\n}\n\nfunction matchIndent(node, delta) {\n let match = Parchment.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n let indent = -1, parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((Parchment.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new Delta().retain(delta.length() - 1).retain(1, { indent: indent}));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || (delta.length() > 0 && node.nextSibling && isLine(node.nextSibling))) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n let nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight*1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n let formats = {};\n let style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') ||\n parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) { // Could be 0.5in\n delta = new Delta().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n let text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n let replacer = function(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if ((node.previousSibling == null && isLine(node.parentNode)) ||\n (node.previousSibling != null && isLine(node.previousSibling))) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if ((node.nextSibling == null && isLine(node.parentNode)) ||\n (node.nextSibling != null && isLine(node.nextSibling))) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\n\nexport { Clipboard as default, matchAttributor, matchBlot, matchNewline, matchSpacing, matchText };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/clipboard.js","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass History extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.lastRecorded = 0;\n this.ignoreChange = false;\n this.clear();\n this.quill.on(Quill.events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\n if (eventName !== Quill.events.TEXT_CHANGE || this.ignoreChange) return;\n if (!this.options.userOnly || source === Quill.sources.USER) {\n this.record(delta, oldDelta);\n } else {\n this.transform(delta);\n }\n });\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, this.undo.bind(this));\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, this.redo.bind(this));\n if (/Win/i.test(navigator.platform)) {\n this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, this.redo.bind(this));\n }\n }\n\n change(source, dest) {\n if (this.stack[source].length === 0) return;\n let delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], Quill.sources.USER);\n this.ignoreChange = false;\n let index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n\n clear() {\n this.stack = { undo: [], redo: [] };\n }\n\n cutoff() {\n this.lastRecorded = 0;\n }\n\n record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n let undoDelta = this.quill.getContents().diff(oldDelta);\n let timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n let delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n\n redo() {\n this.change('redo', 'undo');\n }\n\n transform(delta) {\n this.stack.undo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n\n undo() {\n this.change('undo', 'redo');\n }\n}\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n let lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function(attr) {\n return Parchment.query(attr, Parchment.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n let deleteLength = delta.reduce(function(length, op) {\n length += (op.delete || 0);\n return length;\n }, 0);\n let changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\n\nexport { History as default, getLastChangeIndex };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/history.js","import Parchment from 'parchment';\n\nclass IdentAttributor extends Parchment.Attributor.Class {\n add(node, value) {\n if (value === '+1' || value === '-1') {\n let indent = this.value(node) || 0;\n value = (value === '+1' ? (indent + 1) : (indent - 1));\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return super.add(node, value);\n }\n }\n\n canAdd(node, value) {\n return super.canAdd(node, value) || super.canAdd(node, parseInt(value));\n }\n\n value(node) {\n return parseInt(super.value(node)) || undefined; // Don't return NaN\n }\n}\n\nlet IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: Parchment.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexport { IndentClass };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/indent.js","import Block from '../blots/block';\n\n\nclass Blockquote extends Block {}\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\n\nexport default Blockquote;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/blockquote.js","import Block from '../blots/block';\n\n\nclass Header extends Block {\n static formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n}\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n\nexport default Header;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/header.js","import Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Container from '../blots/container';\n\n\nclass ListItem extends Block {\n static formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : super.formats(domNode);\n }\n\n format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(Parchment.create(this.statics.scope));\n } else {\n super.format(name, value);\n }\n }\n\n remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n super.remove();\n }\n }\n\n replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return super.replaceWith(name, value);\n }\n }\n}\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\n\nclass List extends Container {\n static create(value) {\n let tagName = value === 'ordered' ? 'OL' : 'UL';\n let node = super.create(tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n\n constructor(domNode) {\n super(domNode);\n const listEventHandler = (e) => {\n if (e.target.parentNode !== domNode) return;\n let format = this.statics.formats(domNode);\n let blot = Parchment.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if(format === 'unchecked') {\n blot.format('list', 'checked');\n }\n }\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n }\n\n format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n\n formats() {\n // We don't inherit from FormatBlot\n return { [this.statics.blotName]: this.statics.formats(this.domNode) };\n }\n\n insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n super.insertBefore(blot, ref);\n } else {\n let index = ref == null ? this.length() : ref.offset(this);\n let after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n\n optimize(context) {\n super.optimize(context);\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n next.domNode.tagName === this.domNode.tagName &&\n next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n let item = Parchment.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n super.replace(target);\n }\n}\nList.blotName = 'list';\nList.scope = Parchment.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\n\nexport { ListItem, List as default };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/list.js","import Bold from './bold';\n\nclass Italic extends Bold { }\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexport default Italic;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/italic.js","import Inline from '../blots/inline';\n\nclass Script extends Inline {\n static create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return super.create(value);\n }\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n}\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexport default Script;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/script.js","import Inline from '../blots/inline';\n\nclass Strike extends Inline { }\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexport default Strike;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/strike.js","import Inline from '../blots/inline';\n\nclass Underline extends Inline { }\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexport default Underline;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/underline.js","import Parchment from 'parchment';\nimport { sanitize } from '../formats/link';\n\nconst ATTRIBUTES = [\n 'alt',\n 'height',\n 'width'\n];\n\n\nclass Image extends Parchment.Embed {\n static create(value) {\n let node = super.create(value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce(function(formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n\n static match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n }\n\n static sanitize(url) {\n return sanitize(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n}\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\n\nexport default Image;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/image.js","import { BlockEmbed } from '../blots/block';\nimport Link from '../formats/link';\n\nconst ATTRIBUTES = [\n 'height',\n 'width'\n];\n\n\nclass Video extends BlockEmbed {\n static create(value) {\n let node = super.create(value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce(function(formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n\n static sanitize(url) {\n return Link.sanitize(url);\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n}\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\n\nexport default Video;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/video.js","import Embed from '../blots/embed';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass FormulaBlot extends Embed {\n static create(value) {\n let node = super.create(value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n\n static value(domNode) {\n return domNode.getAttribute('data-value');\n }\n}\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\n\nclass Formula extends Module {\n static register() {\n Quill.register(FormulaBlot, true);\n }\n\n constructor() {\n super();\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n }\n}\n\n\nexport { FormulaBlot, Formula as default };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/formula.js","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\nimport CodeBlock from '../formats/code';\n\n\nclass SyntaxCodeBlock extends CodeBlock {\n replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n super.replaceWith(block);\n }\n\n highlight(highlight) {\n let text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n}\nSyntaxCodeBlock.className = 'ql-syntax';\n\n\nlet CodeToken = new Parchment.Attributor.Class('token', 'hljs', {\n scope: Parchment.Scope.INLINE\n});\n\n\nclass Syntax extends Module {\n static register() {\n Quill.register(CodeToken, true);\n Quill.register(SyntaxCodeBlock, true);\n }\n\n constructor(quill, options) {\n super(quill, options);\n if (typeof this.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n let timer = null;\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n this.highlight();\n timer = null;\n }, this.options.interval);\n });\n this.highlight();\n }\n\n highlight() {\n if (this.quill.selection.composing) return;\n this.quill.update(Quill.sources.USER);\n let range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach((code) => {\n code.highlight(this.options.highlight);\n });\n this.quill.update(Quill.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, Quill.sources.SILENT);\n }\n }\n}\nSyntax.DEFAULTS = {\n highlight: (function() {\n if (window.hljs == null) return null;\n return function(text) {\n let result = window.hljs.highlightAuto(text);\n return result.value;\n };\n })(),\n interval: 1000\n};\n\n\nexport { SyntaxCodeBlock as CodeBlock, CodeToken, Syntax as default};\n\n\n\n// WEBPACK FOOTER //\n// ./modules/syntax.js","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:toolbar');\n\n\nclass Toolbar extends Module {\n constructor(quill, options) {\n super(quill, options);\n if (Array.isArray(this.options.container)) {\n let container = document.createElement('div');\n addControls(container, this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n this.container = container;\n } else if (typeof this.options.container === 'string') {\n this.container = document.querySelector(this.options.container);\n } else {\n this.container = this.options.container;\n }\n if (!(this.container instanceof HTMLElement)) {\n return debug.error('Container required for toolbar', this.options);\n }\n this.container.classList.add('ql-toolbar');\n this.controls = [];\n this.handlers = {};\n Object.keys(this.options.handlers).forEach((format) => {\n this.addHandler(format, this.options.handlers[format]);\n });\n [].forEach.call(this.container.querySelectorAll('button, select'), (input) => {\n this.attach(input);\n });\n this.quill.on(Quill.events.EDITOR_CHANGE, (type, range) => {\n if (type === Quill.events.SELECTION_CHANGE) {\n this.update(range);\n }\n });\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n let [range, ] = this.quill.selection.getRange(); // quill.getSelection triggers update\n this.update(range);\n });\n }\n\n addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n\n attach(input) {\n let format = [].find.call(input.classList, (className) => {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (Parchment.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n let eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, (e) => {\n let value;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n let selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n this.quill.focus();\n let [range, ] = this.quill.selection.getRange();\n if (this.handlers[format] != null) {\n this.handlers[format].call(this, value);\n } else if (Parchment.query(format).prototype instanceof Parchment.Embed) {\n value = prompt(`Enter ${format}`);\n if (!value) return;\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ [format]: value })\n , Quill.sources.USER);\n } else {\n this.quill.format(format, value, Quill.sources.USER);\n }\n this.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n\n update(range) {\n let formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function(pair) {\n let [format, input] = pair;\n if (input.tagName === 'SELECT') {\n let option;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n let value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector(`option[value=\"${value}\"]`);\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n let isActive = formats[format] === input.getAttribute('value') ||\n (formats[format] != null && formats[format].toString() === input.getAttribute('value')) ||\n (formats[format] == null && !input.getAttribute('value'));\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n}\nToolbar.DEFAULTS = {};\n\n\nfunction addButton(container, format, value) {\n let input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function(controls) {\n let group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function(control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n let format = Object.keys(control)[0];\n let value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n let input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function() {\n let range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n let formats = this.quill.getFormat();\n Object.keys(formats).forEach((name) => {\n // Clean functionality in existing apps only clean inline formats\n if (Parchment.query(name, Parchment.Scope.INLINE) != null) {\n this.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, Quill.sources.USER);\n }\n },\n direction: function(value) {\n let align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', Quill.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, Quill.sources.USER);\n }\n this.quill.format('direction', value, Quill.sources.USER);\n },\n indent: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n let indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n let modifier = (value === '+1') ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, Quill.sources.USER);\n }\n },\n link: function(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, Quill.sources.USER);\n },\n list: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, Quill.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', Quill.sources.USER);\n }\n } else {\n this.quill.format('list', value, Quill.sources.USER);\n }\n }\n }\n}\n\n\nexport { Toolbar as default, addControls };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/toolbar.js","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-left.svg\n// module id = 75\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-center.svg\n// module id = 76\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-right.svg\n// module id = 77\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-justify.svg\n// module id = 78\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/background.svg\n// module id = 79\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/blockquote.svg\n// module id = 80\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/bold.svg\n// module id = 81\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/clean.svg\n// module id = 82\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/color.svg\n// module id = 83\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-ltr.svg\n// module id = 84\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-rtl.svg\n// module id = 85\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-center.svg\n// module id = 86\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-full.svg\n// module id = 87\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-left.svg\n// module id = 88\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-right.svg\n// module id = 89\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/formula.svg\n// module id = 90\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header.svg\n// module id = 91\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header-2.svg\n// module id = 92\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/italic.svg\n// module id = 93\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/image.svg\n// module id = 94\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/indent.svg\n// module id = 95\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/outdent.svg\n// module id = 96\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/link.svg\n// module id = 97\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-ordered.svg\n// module id = 98\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-bullet.svg\n// module id = 99\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-check.svg\n// module id = 100\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/subscript.svg\n// module id = 101\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/superscript.svg\n// module id = 102\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/strike.svg\n// module id = 103\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/underline.svg\n// module id = 104\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/video.svg\n// module id = 105\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/dropdown.svg\n// module id = 106\n// module chunks = 0","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n ['bold', 'italic', 'link'],\n [{ header: 1 }, { header: 2 }, 'blockquote']\n];\n\nclass BubbleTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-bubble');\n }\n\n extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n }\n}\nBubbleTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\n\nclass BubbleTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.quill.on(Emitter.events.EDITOR_CHANGE, (type, range, oldRange, source) => {\n if (type !== Emitter.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === Emitter.sources.USER) {\n this.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n this.root.style.left = '0px';\n this.root.style.width = '';\n this.root.style.width = this.root.offsetWidth + 'px';\n let lines = this.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n this.position(this.quill.getBounds(range));\n } else {\n let lastLine = lines[lines.length - 1];\n let index = this.quill.getIndex(lastLine);\n let length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n let bounds = this.quill.getBounds(new Range(index, length));\n this.position(bounds);\n }\n } else if (document.activeElement !== this.textbox && this.quill.hasFocus()) {\n this.hide();\n }\n });\n }\n\n listen() {\n super.listen();\n this.root.querySelector('.ql-close').addEventListener('click', () => {\n this.root.classList.remove('ql-editing');\n });\n this.quill.on(Emitter.events.SCROLL_OPTIMIZE, () => {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(() => {\n if (this.root.classList.contains('ql-hidden')) return;\n let range = this.quill.getSelection();\n if (range != null) {\n this.position(this.quill.getBounds(range));\n }\n }, 1);\n });\n }\n\n cancel() {\n this.show();\n }\n\n position(reference) {\n let shift = super.position(reference);\n let arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = (-1*shift - arrow.offsetWidth/2) + 'px';\n }\n}\nBubbleTooltip.TEMPLATE = [\n '',\n '
',\n '',\n '',\n '
'\n].join('');\n\n\nexport { BubbleTooltip, BubbleTheme as default };\n\n\n\n// WEBPACK FOOTER //\n// ./themes/bubble.js","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport LinkBlot from '../formats/link';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n [{ header: ['1', '2', '3', false] }],\n ['bold', 'italic', 'underline', 'link'],\n [{ list: 'ordered' }, { list: 'bullet' }],\n ['clean']\n];\n\nclass SnowTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-snow');\n }\n\n extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function(range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n}\nSnowTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (value) {\n let range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n let preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n let tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\n\nclass SnowTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.preview = this.root.querySelector('a.ql-preview');\n }\n\n listen() {\n super.listen();\n this.root.querySelector('a.ql-action').addEventListener('click', (event) => {\n if (this.root.classList.contains('ql-editing')) {\n this.save();\n } else {\n this.edit('link', this.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', (event) => {\n if (this.linkRange != null) {\n let range = this.linkRange;\n this.restoreFocus();\n this.quill.formatText(range, 'link', false, Emitter.sources.USER);\n delete this.linkRange;\n }\n event.preventDefault();\n this.hide();\n });\n this.quill.on(Emitter.events.SELECTION_CHANGE, (range, oldRange, source) => {\n if (range == null) return;\n if (range.length === 0 && source === Emitter.sources.USER) {\n let [link, offset] = this.quill.scroll.descendant(LinkBlot, range.index);\n if (link != null) {\n this.linkRange = new Range(range.index - offset, link.length());\n let preview = LinkBlot.formats(link.domNode);\n this.preview.textContent = preview;\n this.preview.setAttribute('href', preview);\n this.show();\n this.position(this.quill.getBounds(this.linkRange));\n return;\n }\n } else {\n delete this.linkRange;\n }\n this.hide();\n });\n }\n\n show() {\n super.show();\n this.root.removeAttribute('data-mode');\n }\n}\nSnowTooltip.TEMPLATE = [\n '',\n '',\n '',\n ''\n].join('');\n\n\nexport default SnowTheme;\n\n\n\n// WEBPACK FOOTER //\n// ./themes/snow.js"],"sourceRoot":""} \ No newline at end of file diff --git a/Wino.Mail/JS/Quill/quill.snow.css b/Wino.Mail/JS/Quill/quill.snow.css deleted file mode 100644 index c4792697..00000000 --- a/Wino.Mail/JS/Quill/quill.snow.css +++ /dev/null @@ -1,947 +0,0 @@ -/*! - * Quill Editor v1.3.6 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */ -.ql-container { - - font-family: Helvetica, Arial, sans-serif; - font-size: 13px; - height: 1000px !important; - resize: vertical; - margin: 0px; -} -.ql-container.ql-disabled .ql-tooltip { - visibility: hidden; -} -.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before { - pointer-events: none; -} -.ql-clipboard { - left: -100000px; - height: 1px; - overflow-y: hidden; - position: absolute; - top: 50%; -} -.ql-clipboard p { - margin: 0; - padding: 0; -} -.ql-editor { - line-height: 1.40; - height: 100%; - outline: none; - overflow-y: auto; - padding: 4px 4px; - tab-size: 4; - -moz-tab-size: 4; - text-align: left; - white-space: pre-wrap; - word-wrap: break-word; -} - -/* Reply Border */ -.ql-container.ql-snow { - /* border: solid #636e72; */ -} - -.ql-editor > * { - cursor: text; -} -.ql-editor p, -.ql-editor ol, -.ql-editor ul, -.ql-editor pre, -.ql-editor blockquote, -.ql-editor h1, -.ql-editor h2, -.ql-editor h3, -.ql-editor h4, -.ql-editor h5, -.ql-editor h6 { - margin: 0; - padding: 0; - counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol, -.ql-editor ul { - padding-left: 1.5em; -} -.ql-editor ol > li, -.ql-editor ul > li { - list-style-type: none; -} -.ql-editor ul > li::before { - content: '\2022'; -} -.ql-editor ul[data-checked=true], -.ql-editor ul[data-checked=false] { - pointer-events: none; -} -.ql-editor ul[data-checked=true] > li *, -.ql-editor ul[data-checked=false] > li * { - pointer-events: all; -} -.ql-editor ul[data-checked=true] > li::before, -.ql-editor ul[data-checked=false] > li::before { - color: #777; - cursor: pointer; - pointer-events: all; -} -.ql-editor ul[data-checked=true] > li::before { - content: '\2611'; -} -.ql-editor ul[data-checked=false] > li::before { - content: '\2610'; -} -.ql-editor li::before { - display: inline-block; - white-space: nowrap; - width: 1.2em; -} -.ql-editor li:not(.ql-direction-rtl)::before { - margin-left: -1.5em; - margin-right: 0.3em; - text-align: right; -} -.ql-editor li.ql-direction-rtl::before { - margin-left: 0.3em; - margin-right: -1.5em; -} -.ql-editor ol li:not(.ql-direction-rtl), -.ql-editor ul li:not(.ql-direction-rtl) { - padding-left: 1.5em; -} -.ql-editor ol li.ql-direction-rtl, -.ql-editor ul li.ql-direction-rtl { - padding-right: 1.5em; -} -.ql-editor ol li { - counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; - counter-increment: list-0; -} -.ql-editor ol li:before { - content: counter(list-0, decimal) '. '; -} -.ql-editor ol li.ql-indent-1 { - counter-increment: list-1; -} -.ql-editor ol li.ql-indent-1:before { - content: counter(list-1, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-1 { - counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-2 { - counter-increment: list-2; -} -.ql-editor ol li.ql-indent-2:before { - content: counter(list-2, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-2 { - counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-3 { - counter-increment: list-3; -} -.ql-editor ol li.ql-indent-3:before { - content: counter(list-3, decimal) '. '; -} -.ql-editor ol li.ql-indent-3 { - counter-reset: list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-4 { - counter-increment: list-4; -} -.ql-editor ol li.ql-indent-4:before { - content: counter(list-4, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-4 { - counter-reset: list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-5 { - counter-increment: list-5; -} -.ql-editor ol li.ql-indent-5:before { - content: counter(list-5, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-5 { - counter-reset: list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-6 { - counter-increment: list-6; -} -.ql-editor ol li.ql-indent-6:before { - content: counter(list-6, decimal) '. '; -} -.ql-editor ol li.ql-indent-6 { - counter-reset: list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-7 { - counter-increment: list-7; -} -.ql-editor ol li.ql-indent-7:before { - content: counter(list-7, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-7 { - counter-reset: list-8 list-9; -} -.ql-editor ol li.ql-indent-8 { - counter-increment: list-8; -} -.ql-editor ol li.ql-indent-8:before { - content: counter(list-8, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-8 { - counter-reset: list-9; -} -.ql-editor ol li.ql-indent-9 { - counter-increment: list-9; -} -.ql-editor ol li.ql-indent-9:before { - content: counter(list-9, decimal) '. '; -} -.ql-editor .ql-indent-1:not(.ql-direction-rtl) { - padding-left: 3em; -} -.ql-editor li.ql-indent-1:not(.ql-direction-rtl) { - padding-left: 4.5em; -} -.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right { - padding-right: 3em; -} -.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right { - padding-right: 4.5em; -} -.ql-editor .ql-indent-2:not(.ql-direction-rtl) { - padding-left: 6em; -} -.ql-editor li.ql-indent-2:not(.ql-direction-rtl) { - padding-left: 7.5em; -} -.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right { - padding-right: 6em; -} -.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right { - padding-right: 7.5em; -} -.ql-editor .ql-indent-3:not(.ql-direction-rtl) { - padding-left: 9em; -} -.ql-editor li.ql-indent-3:not(.ql-direction-rtl) { - padding-left: 10.5em; -} -.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right { - padding-right: 9em; -} -.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right { - padding-right: 10.5em; -} -.ql-editor .ql-indent-4:not(.ql-direction-rtl) { - padding-left: 12em; -} -.ql-editor li.ql-indent-4:not(.ql-direction-rtl) { - padding-left: 13.5em; -} -.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right { - padding-right: 12em; -} -.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right { - padding-right: 13.5em; -} -.ql-editor .ql-indent-5:not(.ql-direction-rtl) { - padding-left: 15em; -} -.ql-editor li.ql-indent-5:not(.ql-direction-rtl) { - padding-left: 16.5em; -} -.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right { - padding-right: 15em; -} -.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right { - padding-right: 16.5em; -} -.ql-editor .ql-indent-6:not(.ql-direction-rtl) { - padding-left: 18em; -} -.ql-editor li.ql-indent-6:not(.ql-direction-rtl) { - padding-left: 19.5em; -} -.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right { - padding-right: 18em; -} -.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right { - padding-right: 19.5em; -} -.ql-editor .ql-indent-7:not(.ql-direction-rtl) { - padding-left: 21em; -} -.ql-editor li.ql-indent-7:not(.ql-direction-rtl) { - padding-left: 22.5em; -} -.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right { - padding-right: 21em; -} -.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right { - padding-right: 22.5em; -} -.ql-editor .ql-indent-8:not(.ql-direction-rtl) { - padding-left: 24em; -} -.ql-editor li.ql-indent-8:not(.ql-direction-rtl) { - padding-left: 25.5em; -} -.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right { - padding-right: 24em; -} -.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right { - padding-right: 25.5em; -} -.ql-editor .ql-indent-9:not(.ql-direction-rtl) { - padding-left: 27em; -} -.ql-editor li.ql-indent-9:not(.ql-direction-rtl) { - padding-left: 28.5em; -} -.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right { - padding-right: 27em; -} -.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right { - padding-right: 28.5em; -} -.ql-editor .ql-video { - display: block; - max-width: 100%; -} -.ql-editor .ql-video.ql-align-center { - margin: 0 auto; -} -.ql-editor .ql-video.ql-align-right { - margin: 0 0 0 auto; -} -.ql-editor .ql-bg-black { - background-color: #000; -} -.ql-editor .ql-bg-red { - background-color: #e60000; -} -.ql-editor .ql-bg-orange { - background-color: #f90; -} -.ql-editor .ql-bg-yellow { - background-color: #ff0; -} -.ql-editor .ql-bg-green { - background-color: #008a00; -} -.ql-editor .ql-bg-blue { - background-color: #06c; -} -.ql-editor .ql-bg-purple { - background-color: #93f; -} -.ql-editor .ql-color-white { - color: #fff; -} -.ql-editor .ql-color-red { - color: #e60000; -} -.ql-editor .ql-color-orange { - color: #f90; -} -.ql-editor .ql-color-yellow { - color: #ff0; -} -.ql-editor .ql-color-green { - color: #008a00; -} -.ql-editor .ql-color-blue { - color: #06c; -} -.ql-editor .ql-color-purple { - color: #93f; -} -.ql-editor .ql-font-serif { - font-family: Georgia, Times New Roman, serif; -} -.ql-editor .ql-font-monospace { - font-family: Monaco, Courier New, monospace; -} -.ql-editor .ql-size-small { - font-size: 0.75em; -} -.ql-editor .ql-size-large { - font-size: 1.5em; -} -.ql-editor .ql-size-huge { - font-size: 2.5em; -} -.ql-editor .ql-direction-rtl { - direction: rtl; - text-align: inherit; -} -.ql-editor .ql-align-center { - text-align: center; -} -.ql-editor .ql-align-justify { - text-align: justify; -} -.ql-editor .ql-align-right { - text-align: right; -} -.ql-editor.ql-blank::before { - color: rgba(0,0,0,0.6); - content: attr(data-placeholder); - left: 4px; - pointer-events: none; - position: absolute; - right: 4px; -} -.ql-snow.ql-toolbar:after, -.ql-snow .ql-toolbar:after { - clear: both; - content: ''; - display: table; -} -.ql-snow.ql-toolbar button, -.ql-snow .ql-toolbar button { - background: none; - border: none; - cursor: pointer; - display: inline-block; - float: left; - height: 24px; - padding: 3px 5px; - width: 28px; -} -.ql-snow.ql-toolbar button svg, -.ql-snow .ql-toolbar button svg { - float: left; - height: 100%; -} -.ql-snow.ql-toolbar button:active:hover, -.ql-snow .ql-toolbar button:active:hover { - outline: none; -} -.ql-snow.ql-toolbar input.ql-image[type=file], -.ql-snow .ql-toolbar input.ql-image[type=file] { - display: none; -} -.ql-snow.ql-toolbar button:hover, -.ql-snow .ql-toolbar button:hover, -.ql-snow.ql-toolbar button:focus, -.ql-snow .ql-toolbar button:focus, -.ql-snow.ql-toolbar button.ql-active, -.ql-snow .ql-toolbar button.ql-active, -.ql-snow.ql-toolbar .ql-picker-label:hover, -.ql-snow .ql-toolbar .ql-picker-label:hover, -.ql-snow.ql-toolbar .ql-picker-label.ql-active, -.ql-snow .ql-toolbar .ql-picker-label.ql-active, -.ql-snow.ql-toolbar .ql-picker-item:hover, -.ql-snow .ql-toolbar .ql-picker-item:hover, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected { - color: #06c; -} -.ql-snow.ql-toolbar button:hover .ql-fill, -.ql-snow .ql-toolbar button:hover .ql-fill, -.ql-snow.ql-toolbar button:focus .ql-fill, -.ql-snow .ql-toolbar button:focus .ql-fill, -.ql-snow.ql-toolbar button.ql-active .ql-fill, -.ql-snow .ql-toolbar button.ql-active .ql-fill, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, -.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, -.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill, -.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill, -.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill, -.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, -.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill { - fill: #06c; -} -.ql-snow.ql-toolbar button:hover .ql-stroke, -.ql-snow .ql-toolbar button:hover .ql-stroke, -.ql-snow.ql-toolbar button:focus .ql-stroke, -.ql-snow .ql-toolbar button:focus .ql-stroke, -.ql-snow.ql-toolbar button.ql-active .ql-stroke, -.ql-snow .ql-toolbar button.ql-active .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, -.ql-snow.ql-toolbar button:hover .ql-stroke-miter, -.ql-snow .ql-toolbar button:hover .ql-stroke-miter, -.ql-snow.ql-toolbar button:focus .ql-stroke-miter, -.ql-snow .ql-toolbar button:focus .ql-stroke-miter, -.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, -.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter { - stroke: #06c; -} -@media (pointer: coarse) { - .ql-snow.ql-toolbar button:hover:not(.ql-active), - .ql-snow .ql-toolbar button:hover:not(.ql-active) { - color: #444; - } - .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill, - .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill, - .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, - .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill { - fill: #444; - } - .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke, - .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke, - .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, - .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter { - stroke: #444; - } -} -.ql-snow { - box-sizing: border-box; -} -.ql-snow * { - box-sizing: border-box; -} -.ql-snow .ql-hidden { - display: none; -} -.ql-snow .ql-out-bottom, -.ql-snow .ql-out-top { - visibility: hidden; -} -.ql-snow .ql-tooltip { - position: absolute; - transform: translateY(10px); -} -.ql-snow .ql-tooltip a { - cursor: pointer; - text-decoration: none; -} -.ql-snow .ql-tooltip.ql-flip { - transform: translateY(-10px); -} -.ql-snow .ql-formats { - display: inline-block; - vertical-align: middle; -} -.ql-snow .ql-formats:after { - clear: both; - content: ''; - display: table; -} -.ql-snow .ql-stroke { - fill: none; - stroke: #444; - stroke-linecap: round; - stroke-linejoin: round; - stroke-width: 2; -} -.ql-snow .ql-stroke-miter { - fill: none; - stroke: #444; - stroke-miterlimit: 10; - stroke-width: 2; -} -.ql-snow .ql-fill, -.ql-snow .ql-stroke.ql-fill { - fill: #444; -} -.ql-snow .ql-empty { - fill: none; -} -.ql-snow .ql-even { - fill-rule: evenodd; -} -.ql-snow .ql-thin, -.ql-snow .ql-stroke.ql-thin { - stroke-width: 1; -} -.ql-snow .ql-transparent { - opacity: 0.4; -} -.ql-snow .ql-direction svg:last-child { - display: none; -} -.ql-snow .ql-direction.ql-active svg:last-child { - display: inline; -} -.ql-snow .ql-direction.ql-active svg:first-child { - display: none; -} -.ql-snow .ql-editor h1 { - font-size: 2em; -} -.ql-snow .ql-editor h2 { - font-size: 1.5em; -} -.ql-snow .ql-editor h3 { - font-size: 1.17em; -} -.ql-snow .ql-editor h4 { - font-size: 1em; -} -.ql-snow .ql-editor h5 { - font-size: 0.83em; -} -.ql-snow .ql-editor h6 { - font-size: 0.67em; -} -.ql-snow .ql-editor a { - text-decoration: underline; -} -.ql-snow .ql-editor blockquote { - border-left: 4px solid #ccc; - margin-bottom: 5px; - margin-top: 5px; - padding-left: 16px; -} -.ql-snow .ql-editor code, -.ql-snow .ql-editor pre { - background-color: #f0f0f0; - border-radius: 3px; -} -.ql-snow .ql-editor pre { - white-space: pre-wrap; - margin-bottom: 5px; - margin-top: 5px; - padding: 5px 10px; -} -.ql-snow .ql-editor code { - font-size: 85%; - padding: 2px 4px; -} -.ql-snow .ql-editor pre.ql-syntax { - background-color: #23241f; - color: #f8f8f2; - overflow: visible; -} -.ql-snow .ql-editor img { - max-width: 100%; -} -.ql-snow .ql-picker { - color: #444; - display: inline-block; - float: left; - font-size: 14px; - font-weight: 500; - height: 24px; - position: relative; - vertical-align: middle; -} -.ql-snow .ql-picker-label { - cursor: pointer; - display: inline-block; - height: 100%; - padding-left: 8px; - padding-right: 2px; - position: relative; - width: 100%; -} -.ql-snow .ql-picker-label::before { - display: inline-block; - line-height: 22px; -} -.ql-snow .ql-picker-options { - background-color: #fff; - display: none; - min-width: 100%; - padding: 4px 8px; - position: absolute; - white-space: nowrap; -} -.ql-snow .ql-picker-options .ql-picker-item { - cursor: pointer; - display: block; - padding-bottom: 5px; - padding-top: 5px; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-label { - color: #ccc; - z-index: 2; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill { - fill: #ccc; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke { - stroke: #ccc; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-options { - display: block; - margin-top: -1px; - top: 100%; - z-index: 1; -} -.ql-snow .ql-color-picker, -.ql-snow .ql-icon-picker { - width: 28px; -} -.ql-snow .ql-color-picker .ql-picker-label, -.ql-snow .ql-icon-picker .ql-picker-label { - padding: 2px 4px; -} -.ql-snow .ql-color-picker .ql-picker-label svg, -.ql-snow .ql-icon-picker .ql-picker-label svg { - right: 4px; -} -.ql-snow .ql-icon-picker .ql-picker-options { - padding: 4px 0px; -} -.ql-snow .ql-icon-picker .ql-picker-item { - height: 24px; - width: 24px; - padding: 2px 4px; -} -.ql-snow .ql-color-picker .ql-picker-options { - padding: 3px 5px; - width: 152px; -} -.ql-snow .ql-color-picker .ql-picker-item { - border: 1px solid transparent; - float: left; - height: 16px; - margin: 2px; - padding: 0px; - width: 16px; -} -.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg { - position: absolute; - margin-top: -9px; - right: 0; - top: 50%; - width: 18px; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before { - content: attr(data-label); -} -.ql-snow .ql-picker.ql-header { - width: 98px; -} -.ql-snow .ql-picker.ql-header .ql-picker-label::before, -.ql-snow .ql-picker.ql-header .ql-picker-item::before { - content: 'Normal'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { - content: 'Heading 1'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { - content: 'Heading 2'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { - content: 'Heading 3'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { - content: 'Heading 4'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { - content: 'Heading 5'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { - content: 'Heading 6'; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { - font-size: 2em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { - font-size: 1.5em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { - font-size: 1.17em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { - font-size: 1em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { - font-size: 0.83em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { - font-size: 0.67em; -} -.ql-snow .ql-picker.ql-font { - width: 108px; -} -.ql-snow .ql-picker.ql-font .ql-picker-label::before, -.ql-snow .ql-picker.ql-font .ql-picker-item::before { - content: 'Sans Serif'; -} -.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { - content: 'Serif'; -} -.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { - content: 'Monospace'; -} -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { - font-family: Georgia, Times New Roman, serif; -} -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { - font-family: Monaco, Courier New, monospace; -} -.ql-snow .ql-picker.ql-size { - width: 98px; -} -.ql-snow .ql-picker.ql-size .ql-picker-label::before, -.ql-snow .ql-picker.ql-size .ql-picker-item::before { - content: 'Normal'; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { - content: 'Small'; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { - content: 'Large'; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { - content: 'Huge'; -} -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { - font-size: 10px; -} -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { - font-size: 18px; -} -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { - font-size: 32px; -} -.ql-snow .ql-color-picker.ql-background .ql-picker-item { - background-color: #fff; -} -.ql-snow .ql-color-picker.ql-color .ql-picker-item { - background-color: #000; -} -.ql-toolbar.ql-snow { - border: 1px solid #ccc; - box-sizing: border-box; - font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; - padding: 8px; -} -.ql-toolbar.ql-snow .ql-formats { - margin-right: 15px; -} -.ql-toolbar.ql-snow .ql-picker-label { - border: 1px solid transparent; -} -.ql-toolbar.ql-snow .ql-picker-options { - border: 1px solid transparent; - box-shadow: rgba(0,0,0,0.2) 0 2px 8px; -} -.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label { - border-color: #ccc; -} -.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options { - border-color: #ccc; -} -.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected, -.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover { - border-color: #000; -} -.ql-toolbar.ql-snow + .ql-container.ql-snow { - border-top: 0px; -} -.ql-snow .ql-tooltip { - background-color: #fff; - border: 1px solid #ccc; - box-shadow: 0px 0px 5px #ddd; - color: #444; - padding: 5px 12px; - white-space: nowrap; -} -.ql-snow .ql-tooltip::before { - content: "Visit URL:"; - line-height: 26px; - margin-right: 8px; -} -.ql-snow .ql-tooltip input[type=text] { - display: none; - border: 1px solid #ccc; - font-size: 13px; - height: 26px; - margin: 0px; - padding: 3px 5px; - width: 170px; -} -.ql-snow .ql-tooltip a.ql-preview { - display: inline-block; - max-width: 200px; - overflow-x: hidden; - text-overflow: ellipsis; - vertical-align: top; -} -.ql-snow .ql-tooltip a.ql-action::after { - border-right: 1px solid #ccc; - content: 'Edit'; - margin-left: 16px; - padding-right: 8px; -} -.ql-snow .ql-tooltip a.ql-remove::before { - content: 'Remove'; - margin-left: 8px; -} -.ql-snow .ql-tooltip a { - line-height: 26px; -} -.ql-snow .ql-tooltip.ql-editing a.ql-preview, -.ql-snow .ql-tooltip.ql-editing a.ql-remove { - display: none; -} -.ql-snow .ql-tooltip.ql-editing input[type=text] { - display: inline-block; -} -.ql-snow .ql-tooltip.ql-editing a.ql-action::after { - border-right: 0px; - content: 'Save'; - padding-right: 0px; -} -.ql-snow .ql-tooltip[data-mode=link]::before { - content: "Enter link:"; -} -.ql-snow .ql-tooltip[data-mode=formula]::before { - content: "Enter formula:"; -} -.ql-snow .ql-tooltip[data-mode=video]::before { - content: "Enter video:"; -} -.ql-snow a { - color: #06c; -} - diff --git a/Wino.Mail/JS/Quill/reader.css b/Wino.Mail/JS/Quill/reader.css deleted file mode 100644 index 1fbed5bc..00000000 --- a/Wino.Mail/JS/Quill/reader.css +++ /dev/null @@ -1,10 +0,0 @@ -#readerDiv { - font-family: Arial, Helvetica, sans-serif; - background-color: transparent !important; -} - -/*@font-face { - font-family: Starborn; - src: url(Fonts/Starborn.ttf); -} -*/ diff --git a/Wino.Mail/JS/editor.html b/Wino.Mail/JS/editor.html new file mode 100644 index 00000000..06d61265 --- /dev/null +++ b/Wino.Mail/JS/editor.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Wino.Mail/JS/editor.js b/Wino.Mail/JS/editor.js new file mode 100644 index 00000000..32d2765d --- /dev/null +++ b/Wino.Mail/JS/editor.js @@ -0,0 +1,104 @@ +const editor = Jodit.make("#editor", { + "useSearch": false, + "toolbar": true, + "buttons": "bold,italic,underline,strikethrough,brush,ul,ol,font,fontsize,paragraph,image,link,indent,outdent,align,lineHeight,table", + "inline": true, + "toolbarAdaptive": false, + "toolbarInlineForSelection": false, + "showCharsCounter": false, + "showWordsCounter": false, + "showXPathInStatusbar": false, + "disablePlugins": "add-new-line", + "showPlaceholder": false, + "uploader": { + "insertImageAsBase64URI": true + }, + "enter": "DIV", + "minHeight": 200 +}); + +// Handle the image input change event +imageInput.addEventListener('change', () => { + const file = imageInput.files[0]; + if (file) { + const reader = new FileReader(); + reader.onload = function (event) { + const base64Image = event.target.result; + insertImages([base64Image]); + }; + reader.readAsDataURL(file); + } +}); + +const disabledButtons = ["indent", "outdent"]; +const ariaPressedButtons = ["bold", "italic", "underline", "strikethrough", "ul", "ol"]; + +const alignmentButton = document.querySelector(`[ref='left']`).firstChild.firstChild; +const alignmentObserver = new MutationObserver(function () { + const value = alignmentButton.firstChild.getAttribute('class').split(' ')[0]; + window.chrome.webview.postMessage({ type: 'alignment', value: value }); +}); +alignmentObserver.observe(alignmentButton, { childList: true, attributes: true, attributeFilter: ["class"] }); + +const ariaObservers = ariaPressedButtons.map(button => { + const buttonContainer = document.querySelector(`[ref='${button}']`); + const observer = new MutationObserver(function () { pressedChanged(buttonContainer) }); + observer.observe(buttonContainer.firstChild, { attributes: true, attributeFilter: ["aria-pressed"] }); + + return observer; +}); + +const disabledObservers = disabledButtons.map(button => { + const buttonContainer = document.querySelector(`[ref='${button}']`); + const observer = new MutationObserver(function () { disabledButtonChanged(buttonContainer) }); + observer.observe(buttonContainer.firstChild, { attributes: true, attributeFilter: ["disabled"] }); + + return observer; +}); + +function pressedChanged(buttonContainer) { + const ref = buttonContainer.getAttribute('ref'); + const value = buttonContainer.firstChild.getAttribute('aria-pressed'); + window.chrome.webview.postMessage({ type: ref, value: value }); +} + +function disabledButtonChanged(buttonContainer) { + const ref = buttonContainer.getAttribute('ref'); + const value = buttonContainer.firstChild.getAttribute('disabled'); + console.log(buttonContainer, ref, value); + window.chrome.webview.postMessage({ type: ref, value: value }); +} + + +function RenderHTML(htmlString) { + editor.s.insertHTML(htmlString); + editor.synchronizeValues(); +} + +function GetHTMLContent() { + return editor.value; +} + +function SetLightEditor() { + DarkReader.disable(); +} + +function SetDarkEditor() { + DarkReader.enable(); +} + +function toggleToolbar(enable) { + const toolbar = document.querySelector('.jodit-toolbar__box'); + if (enable == 'true') { + toolbar.style.display = 'flex'; + } + else { + toolbar.style.display = 'none'; + } +} + +function insertImages(images) { + images.forEach(image => { + editor.selection.insertHTML(`Embedded Image`); + }); +}; diff --git a/Wino.Mail/JS/Quill/global.css b/Wino.Mail/JS/global.css similarity index 100% rename from Wino.Mail/JS/Quill/global.css rename to Wino.Mail/JS/global.css diff --git a/Wino.Mail/JS/Quill/darkreader.js b/Wino.Mail/JS/libs/darkreader.js similarity index 100% rename from Wino.Mail/JS/Quill/darkreader.js rename to Wino.Mail/JS/libs/darkreader.js diff --git a/Wino.Mail/JS/libs/jodit.min.css b/Wino.Mail/JS/libs/jodit.min.css new file mode 100644 index 00000000..bed4d57f --- /dev/null +++ b/Wino.Mail/JS/libs/jodit.min.css @@ -0,0 +1,5664 @@ +.jodit-about { + padding: 20px +} + + .jodit-about a { + color: #459ce7; + text-decoration: none + } + + .jodit-about a:focus, .jodit-about a:hover { + color: #23527c; + outline: 0; + text-decoration: underline + } + + .jodit-about div { + margin-bottom: calc(var(--jd-padding-default)/2) + } + +.jodit-ui-group { + display: inline-flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + max-width: 100% +} + +.jodit-ui-group_line_true { + display: flex; + justify-content: stretch +} + +.jodit-ui-group_separated_true:not(:last-child):not(.jodit-ui-group_before-spacer_true):after { + border-left: 0; + border-right: 1px solid var(--jd-color-border); + content: ""; + cursor: default; + margin: 2px; + padding: 0 +} + +.jodit-ui-group:last-child { + border-bottom: 0 +} + +.jodit-ui-list { + display: flex; + flex-direction: column +} + +.jodit-ui-list_mode_vertical .jodit-ui-group { + background-color: transparent; + border: 0; + flex-direction: column +} + +.jodit-ui-list_mode_vertical .jodit-toolbar-button { + height: auto; + min-height: var(--jd-button-size) +} + +.jodit-ui-list_mode_vertical .jodit-toolbar-button__button { + cursor: pointer; + height: auto; + min-height: var(--jd-button-size); + width: 100% +} + +.jodit-ui-list_mode_vertical .jodit-toolbar-button__text:not(:empty) { + justify-content: left +} + +.jodit-ui-separator { + border-left: 0; + border-right: 1px solid var(--jd-color-border); + cursor: default; + margin: 2px; + padding: 0 +} + +.jodit-ui-break { + border-top: 1px solid var(--jd-color-border); + flex-basis: 100%; + height: 0 !important; + width: 0 +} + +.jodit-ui-spacer { + flex: 1 +} + +.jodit-ui-button-icon-text__icon { + display: none +} + + .jodit-ui-button-icon-text__icon:not(:empty) { + display: inline-flex + } + +.jodit-ui-button-icon-text__text { + display: none +} + + .jodit-ui-button-icon-text__text:not(:empty) { + display: inline-flex; + flex-grow: 1; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + justify-content: center + } + +.jodit-ui-button-icon-text_context_menu .jodit-ui-button-icon-text__text { + justify-content: left; + padding-left: var(--jd-padding-default); + position: relative +} + + .jodit-ui-button-icon-text_context_menu .jodit-ui-button-icon-text__text:before { + border-left: 1px solid var(--jd-color-border); + content: ""; + height: 35px; + left: 0; + position: absolute; + top: calc(var(--jd-padding-default)*-1) + } + +.jodit-ui-button-icon-text__icon:not(:empty) + .jodit-ui-button-icon-text__text:not(:empty) { + margin-left: var(--jd-padding-default) +} + +.jodit-ui-button-icon-text__icon:empty + .jodit-ui-button-icon-text__text:not(:empty) { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button-clear, .jodit-ui-button_clear { + appearance: none; + background: 0 0; + border: 0; + box-shadow: none; + box-sizing: border-box; + font-style: normal; + outline: 0; + padding: 0; + position: relative; + text-align: center; + text-decoration: none; + text-transform: none; + user-select: none +} + +.jodit-ui-button-sizes { + height: 34px; + min-width: 34px +} + + .jodit-ui-button-sizes .jodit-icon { + height: 14px; + width: 14px + } + + .jodit-ui-button-sizes button { + appearance: none; + height: 34px; + min-width: 34px; + padding: 0 + } + +.jodit-ui-button-sizes_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button-sizes_size_tiny { + height: 16px; + min-width: 16px +} + + .jodit-ui-button-sizes_size_tiny .jodit-icon { + height: 8px; + width: 8px + } + + .jodit-ui-button-sizes_size_tiny button { + appearance: none; + height: 16px; + min-width: 16px; + padding: 0 + } + +.jodit-ui-button-sizes_size_tiny_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button-sizes_size_xsmall { + height: 22px; + min-width: 22px +} + + .jodit-ui-button-sizes_size_xsmall .jodit-icon { + height: 10px; + width: 10px + } + + .jodit-ui-button-sizes_size_xsmall button { + appearance: none; + height: 22px; + min-width: 22px; + padding: 0 + } + +.jodit-ui-button-sizes_size_xsmall_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button-sizes_size_small { + height: 28px; + min-width: 28px +} + + .jodit-ui-button-sizes_size_small .jodit-icon { + height: 12px; + width: 12px + } + + .jodit-ui-button-sizes_size_small button { + appearance: none; + height: 28px; + min-width: 28px; + padding: 0 + } + +.jodit-ui-button-sizes_size_small_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button-sizes_size_large { + height: 40px; + min-width: 40px +} + + .jodit-ui-button-sizes_size_large .jodit-icon { + height: 16px; + width: 16px + } + + .jodit-ui-button-sizes_size_large button { + appearance: none; + height: 40px; + min-width: 40px; + padding: 0 + } + +.jodit-ui-button-sizes_size_large_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button-variants_variant_outline { + border: 1px solid var(--jd-color-border) +} + +.jodit-ui-button-variants_variant_default { + background-color: #e3e3e3; + color: #212529 +} + + .jodit-ui-button-variants_variant_default svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button-variants_variant_default [disabled] { + opacity: .7 + } + + .jodit-ui-button-variants_variant_default:hover:not([disabled]) { + background-color: #c9cdd1; + color: #212529 + } + + .jodit-ui-button-variants_variant_default:hover:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button-variants_variant_default:active:not([disabled]) { + background-color: #dae0e5; + color: #212529 + } + + .jodit-ui-button-variants_variant_default:active:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button-variants_variant_default:focus:not([disabled]) { + outline: 1px dashed #dae0e5 + } + +.jodit-ui-button-variants_variant_primary { + background-color: #007bff; + color: #fff +} + + .jodit-ui-button-variants_variant_primary svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button-variants_variant_primary [disabled] { + opacity: .7 + } + + .jodit-ui-button-variants_variant_primary:hover:not([disabled]) { + background-color: #0069d9; + color: #fff + } + + .jodit-ui-button-variants_variant_primary:hover:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button-variants_variant_primary:active:not([disabled]) { + background-color: #0062cc; + color: #fff + } + + .jodit-ui-button-variants_variant_primary:active:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button-variants_variant_primary:focus:not([disabled]) { + outline: 1px dashed #0062cc + } + +.jodit-ui-button-variants_variant_secondary { + background-color: #d8d8d8; + border-radius: 0; + color: #212529 +} + + .jodit-ui-button-variants_variant_secondary svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button-variants_variant_secondary [disabled] { + opacity: .7 + } + + .jodit-ui-button-variants_variant_secondary:hover:not([disabled]) { + background-color: #c9cdd1; + color: #212529 + } + + .jodit-ui-button-variants_variant_secondary:hover:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button-variants_variant_secondary:active:not([disabled]) { + background-color: #dae0e5; + color: #212529 + } + + .jodit-ui-button-variants_variant_secondary:active:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button-variants_variant_secondary:focus:not([disabled]) { + outline: 1px dashed #dae0e5 + } + +.jodit-ui-button-variants_variant_success { + background-color: #28a745; + color: #fff +} + + .jodit-ui-button-variants_variant_success svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button-variants_variant_success [disabled] { + opacity: .7 + } + + .jodit-ui-button-variants_variant_success:hover:not([disabled]) { + background-color: #218838; + color: #fff + } + + .jodit-ui-button-variants_variant_success:hover:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button-variants_variant_success:active:not([disabled]) { + background-color: #1e7e34; + color: #fff + } + + .jodit-ui-button-variants_variant_success:active:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button-variants_variant_success:focus:not([disabled]) { + outline: 1px dashed #1e7e34 + } + +.jodit-ui-button-variants_variant_danger { + background-color: #dc3545; + color: #fff +} + + .jodit-ui-button-variants_variant_danger svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button-variants_variant_danger [disabled] { + opacity: .7 + } + + .jodit-ui-button-variants_variant_danger:hover:not([disabled]) { + background-color: #c82333; + color: #fff + } + + .jodit-ui-button-variants_variant_danger:hover:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button-variants_variant_danger:active:not([disabled]) { + background-color: #bd2130; + color: #fff + } + + .jodit-ui-button-variants_variant_danger:active:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button-variants_variant_danger:focus:not([disabled]) { + outline: 1px dashed #bd2130 + } + +.jodit-ui-button-style { + border-radius: var(--jd-border-radius-default); + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button, .jodit-ui-button-style { + align-items: center; + color: var(--jd-color-text-icons); + display: inline-flex; + justify-content: center +} + +.jodit-ui-button { + appearance: none; + background: 0 0; + border: 0; + border-radius: var(--jd-border-radius-default); + box-shadow: none; + box-sizing: border-box; + cursor: pointer; + font-style: normal; + height: 34px; + min-width: 34px; + outline: 0; + padding: 0; + padding: 0 var(--jd-padding-default); + position: relative; + text-align: center; + text-decoration: none; + text-transform: none; + user-select: none +} + + .jodit-ui-button:focus-visible:not([disabled]), .jodit-ui-button:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover); + opacity: 1; + outline: 0 + } + + .jodit-ui-button:active:not([disabled]), .jodit-ui-button[aria-pressed=true]:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity40); + outline: 0 + } + + .jodit-ui-button[aria-pressed=true]:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity60) + } + + .jodit-ui-button[disabled] { + opacity: .3; + pointer-events: none + } + + .jodit-ui-button .jodit-icon { + height: 14px; + width: 14px + } + + .jodit-ui-button button { + appearance: none; + height: 34px; + min-width: 34px; + padding: 0 + } + +.jodit-ui-button_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button_size_tiny { + height: 16px; + min-width: 16px +} + + .jodit-ui-button_size_tiny .jodit-icon { + height: 8px; + width: 8px + } + + .jodit-ui-button_size_tiny button { + appearance: none; + height: 16px; + min-width: 16px; + padding: 0 + } + +.jodit-ui-button_size_tiny_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button_size_xsmall { + height: 22px; + min-width: 22px +} + + .jodit-ui-button_size_xsmall .jodit-icon { + height: 10px; + width: 10px + } + + .jodit-ui-button_size_xsmall button { + appearance: none; + height: 22px; + min-width: 22px; + padding: 0 + } + +.jodit-ui-button_size_xsmall_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button_size_small { + height: 28px; + min-width: 28px +} + + .jodit-ui-button_size_small .jodit-icon { + height: 12px; + width: 12px + } + + .jodit-ui-button_size_small button { + appearance: none; + height: 28px; + min-width: 28px; + padding: 0 + } + +.jodit-ui-button_size_small_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button_size_large { + height: 40px; + min-width: 40px +} + + .jodit-ui-button_size_large .jodit-icon { + height: 16px; + width: 16px + } + + .jodit-ui-button_size_large button { + appearance: none; + height: 40px; + min-width: 40px; + padding: 0 + } + +.jodit-ui-button_size_large_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button__icon { + display: none +} + + .jodit-ui-button__icon:not(:empty) { + display: inline-flex + } + +.jodit-ui-button__text { + display: none +} + + .jodit-ui-button__text:not(:empty) { + display: inline-flex; + flex-grow: 1; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + justify-content: center + } + +.jodit-ui-button_context_menu .jodit-ui-button__text { + justify-content: left; + padding-left: var(--jd-padding-default); + position: relative +} + + .jodit-ui-button_context_menu .jodit-ui-button__text:before { + border-left: 1px solid var(--jd-color-border); + content: ""; + height: 35px; + left: 0; + position: absolute; + top: calc(var(--jd-padding-default)*-1) + } + +.jodit-ui-button__icon:not(:empty) + .jodit-ui-button__text:not(:empty) { + margin-left: var(--jd-padding-default) +} + +.jodit-ui-button__icon:empty + .jodit-ui-button__text:not(:empty) { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-button:focus:not([disabled]) { + outline: 1px dashed var(--jd-color-background-selection) +} + +.jodit-ui-button_variant_outline { + border: 1px solid var(--jd-color-border) +} + +.jodit-ui-button_variant_default { + background-color: #e3e3e3; + color: #212529 +} + + .jodit-ui-button_variant_default svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button_variant_default [disabled] { + opacity: .7 + } + + .jodit-ui-button_variant_default:hover:not([disabled]) { + background-color: #c9cdd1; + color: #212529 + } + + .jodit-ui-button_variant_default:hover:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button_variant_default:active:not([disabled]) { + background-color: #dae0e5; + color: #212529 + } + + .jodit-ui-button_variant_default:active:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button_variant_default:focus:not([disabled]) { + outline: 1px dashed #dae0e5 + } + +.jodit-ui-button_variant_primary { + background-color: #007bff; + color: #fff +} + + .jodit-ui-button_variant_primary svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button_variant_primary [disabled] { + opacity: .7 + } + + .jodit-ui-button_variant_primary:hover:not([disabled]) { + background-color: #0069d9; + color: #fff + } + + .jodit-ui-button_variant_primary:hover:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button_variant_primary:active:not([disabled]) { + background-color: #0062cc; + color: #fff + } + + .jodit-ui-button_variant_primary:active:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button_variant_primary:focus:not([disabled]) { + outline: 1px dashed #0062cc + } + +.jodit-ui-button_variant_secondary { + background-color: #d8d8d8; + border-radius: 0; + color: #212529 +} + + .jodit-ui-button_variant_secondary svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button_variant_secondary [disabled] { + opacity: .7 + } + + .jodit-ui-button_variant_secondary:hover:not([disabled]) { + background-color: #c9cdd1; + color: #212529 + } + + .jodit-ui-button_variant_secondary:hover:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button_variant_secondary:active:not([disabled]) { + background-color: #dae0e5; + color: #212529 + } + + .jodit-ui-button_variant_secondary:active:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-ui-button_variant_secondary:focus:not([disabled]) { + outline: 1px dashed #dae0e5 + } + +.jodit-ui-button_variant_success { + background-color: #28a745; + color: #fff +} + + .jodit-ui-button_variant_success svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button_variant_success [disabled] { + opacity: .7 + } + + .jodit-ui-button_variant_success:hover:not([disabled]) { + background-color: #218838; + color: #fff + } + + .jodit-ui-button_variant_success:hover:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button_variant_success:active:not([disabled]) { + background-color: #1e7e34; + color: #fff + } + + .jodit-ui-button_variant_success:active:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button_variant_success:focus:not([disabled]) { + outline: 1px dashed #1e7e34 + } + +.jodit-ui-button_variant_danger { + background-color: #dc3545; + color: #fff +} + + .jodit-ui-button_variant_danger svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button_variant_danger [disabled] { + opacity: .7 + } + + .jodit-ui-button_variant_danger:hover:not([disabled]) { + background-color: #c82333; + color: #fff + } + + .jodit-ui-button_variant_danger:hover:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button_variant_danger:active:not([disabled]) { + background-color: #bd2130; + color: #fff + } + + .jodit-ui-button_variant_danger:active:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-ui-button_variant_danger:focus:not([disabled]) { + outline: 1px dashed #bd2130 + } + +:root { + --jd-popup-box-shadow: 0 4px 1px -2px rgba(76,76,76,.2),0 3px 3px 0 rgba(76,76,76,.15),0 1px 4px 0 rgba(76,76,76,.13) +} + +.jodit-popup { + background: 0 0; + border: 0; + box-shadow: var(--jd-popup-box-shadow); + display: inline-block; + float: none; + height: auto; + margin: 0; + max-width: none; + outline: 0; + padding: 0; + position: static; + position: fixed; + transform: translateZ(0); + width: auto; + z-index: var(--jd-z-index-popup) +} + +.jodit-popup__content { + background: var(--jd-color-background-default); + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + max-height: 300px; + overflow: auto; + padding: var(--jd-padding-default); + overflow-scrolling: touch +} + +.jodit-popup_padding_false .jodit-popup__content { + padding: 0 +} + +.jodit-popup_max-height_false .jodit-popup__content { + max-height: fit-content +} + +.jodit-context-menu { + background: 0 0; + border: 0; + box-shadow: var(--jd-popup-box-shadow); + display: inline-block; + float: none; + height: auto; + margin: 0; + max-width: none; + outline: 0; + padding: 0; + position: static; + position: fixed; + transform: translateZ(0); + width: auto; + z-index: var(--jd-z-index-popup); + z-index: var(--jd-z-index-context-menu) +} + +.jodit-context-menu, .jodit-context-menu__content { + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default) +} + +.jodit-context-menu__content { + background: var(--jd-color-background-default); + max-height: 300px; + overflow: auto; + padding: var(--jd-padding-default); + overflow-scrolling: touch +} + +.jodit-context-menu_padding_false .jodit-context-menu__content { + padding: 0 +} + +.jodit-context-menu_max-height_false .jodit-context-menu__content { + max-height: fit-content +} + +.jodit-context-menu .jodit-ui-button { + display: flex +} + +.jodit-context-menu button { + width: 100% +} + +.jodit-context-menu_theme_dark { + background-color: var(--jd-dark-background-color) +} + +.jodit-ui-button-group { + margin-bottom: var(--jd-padding-default) +} + +.jodit-ui-button-group__label { + color: var(--jd-color-label); + display: block; + font-size: .8em; + margin-bottom: calc(var(--jd-padding-default)/4) +} + +.jodit-ui-button-group__options { + display: flex; + justify-content: flex-start +} + +.jodit-ui-button-group .jodit-ui-button:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0 +} + +.jodit-ui-button-group .jodit-ui-button + .jodit-ui-button { + border-bottom-left-radius: 0; + border-left: 1px solid var(--jd-color-button-background-hover-opacity40); + border-top-left-radius: 0 +} + +.jodit-ui-button-group .jodit-ui-button[aria-pressed=true]:not([disabled]) { + background-color: var(--jd-color-button-background-hover); + border-left: 0; + box-shadow: inset 0 0 3px 0 var(--jd-color-dark); + color: var(--jd-color-dark); + outline: 0 +} + + .jodit-ui-button-group .jodit-ui-button[aria-pressed=true]:not([disabled]) + .jodit-ui-button { + border: 0 + } + +:root { + --jd-tooltip-color: #fff; + --jd-tooltip-background-color: rgba(0,0,0,.7); + --jd-tooltip-sfx-shadow: rgba(0,0,0,.15); + --jd-tooltip-border-width: 0; + --jd-tooltip-border-color: #e5e5e5 +} + +.jodit-ui-tooltip { + animation-fill-mode: forwards; + animation-timing-function: ease-out; + background-clip: padding-box; + background-color: var(--jd-tooltip-background-color); + border-radius: 4px; + box-shadow: 0 0 0 var(--jd-tooltip-border-width) var(--jd-tooltip-border-color),0 8px 20px var(--jd-tooltip-border-width) var(--jd-tooltip-sfx-shadow); + color: var(--jd-tooltip-color); + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-small); + line-height: 1.4; + max-width: 120px; + opacity: 0; + outline: none; + position: fixed; + text-rendering: optimizelegibility; + transform: translate(-50%,calc(var(--jd-padding-default)/2)); + transition: opacity .2s ease 0s; + user-select: none; + white-space: normal; + width: auto; + z-index: var(--jd-z-index-tooltip) +} + +@media (max-width:768px) { + .jodit-ui-tooltip { + display: none + } +} + +.jodit-ui-tooltip__content { + padding: calc(var(--jd-padding-default)/2) calc(var(--jd-padding-default)*1.5) +} + +.jodit-ui-tooltip.jodit-ui-tooltip_visible_true { + opacity: 1 +} + +.jodit-ui-block { + align-items: center; + display: flex; + justify-content: stretch; + margin-bottom: var(--jd-padding-default) +} + +.jodit-ui-block_width_full { + width: 100% +} + +.jodit-ui-block_align_full { + justify-content: space-between +} + +.jodit-ui-block_align_right { + justify-content: flex-end +} + +.jodit-ui-block_padding_true { + padding: var(--jd-padding-default) +} + +.jodit-ui-label { + color: var(--jd-color-label); + display: block; + font-size: .8em; + margin-bottom: calc(var(--jd-padding-default)/4) +} + +.jodit-ui-input { + display: flex; + flex-direction: column; + margin-bottom: var(--jd-padding-default) +} + +.jodit-ui-input__input { + appearance: none; + background-color: var(--jd-color-white); + border: 0; + border-radius: 0; + box-sizing: border-box; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + height: var(--jd-input-height); + line-height: 1.2; + outline: none; + padding: 0 var(--jd-padding-default); + width: 100% +} + + .jodit-ui-input__input[disabled] { + background-color: #f0f0f0; + color: var(--jd-color-border) + } + +.jodit-ui-input__input_has-error_true { + border-color: var(--jd-color-red) +} + +.jodit-ui-input__input:focus { + outline: 0 +} + +.jodit-ui-input_theme_dark .jodit-ui-input__input { + background-color: var(--jd-color-gray) +} + +.jodit-ui-input_has-error_true .jodit-ui-input__input { + border-color: var(--jd-color-red) +} + +.jodit-ui-input__error, .jodit-ui-input__label { + color: var(--jd-color-label); + display: block; + font-size: .8em; + margin-bottom: calc(var(--jd-padding-default)/4) +} + +.jodit-ui-input__error, .jodit-ui-input_has-error_true .jodit-ui-input__label { + color: var(--jd-color-error) +} + +.jodit-ui-input__wrapper { + align-items: center; + background-color: var(--jd-color-white); + border: 1px solid var(--jd-color-border); + display: flex; + justify-content: stretch; + min-width: 200px +} + +@media (max-width:480px) { + .jodit-ui-input__wrapper { + min-width: 140px + } +} + +.jodit-ui-input_theme_dark .jodit-ui-input__wrapper { + background-color: var(--jd-color-gray); + border-color: var(--jd-color-border) +} + +.jodit-ui-input_focused_true .jodit-ui-input__wrapper { + border-color: var(--jd-color-border-selected) +} + +.jodit-ui-input__icon:not(:empty) { + align-items: center; + display: flex; + padding: 0 var(--jd-padding-default) +} + + .jodit-ui-input__icon:not(:empty) svg { + height: 16px; + width: 16px; + fill: var(--jd-color-border) + } + + .jodit-ui-input__icon:not(:empty) + .jodit-ui-input__input { + padding-left: 0 + } + +.jodit-ui-input__clear { + align-items: center; + display: flex; + opacity: .8; + padding: 0 var(--jd-padding-default) 0 0 +} + + .jodit-ui-input__clear:active { + opacity: 1; + transform: scale(1.1) + } + + .jodit-ui-input__clear svg { + height: 12px; + width: 12px; + fill: var(--jd-color-border) + } + +.jodit-ui-input_theme_dark .jodit-ui-input__clear svg, .jodit-ui-input_theme_dark .jodit-ui-input__icon svg { + fill: var(--jd-color-dark) +} + +.jodit-ui-block .jodit-ui-input { + margin-bottom: 0 +} + +.jodit-ui-select { + display: flex; + flex-direction: column; + margin-bottom: var(--jd-padding-default) +} + +.jodit-ui-select__input { + appearance: none; + background-color: var(--jd-color-white); + border: 0; + border-radius: 0; + box-sizing: border-box; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + height: var(--jd-input-height); + line-height: 1.2; + outline: none; + padding: 0 var(--jd-padding-default); + width: 100% +} + + .jodit-ui-select__input[disabled] { + background-color: #f0f0f0; + color: var(--jd-color-border) + } + +.jodit-ui-select__input_has-error_true { + border-color: var(--jd-color-red) +} + +.jodit-ui-select__input:focus { + outline: 0 +} + +.jodit-ui-select_theme_dark .jodit-ui-select__input { + background-color: var(--jd-color-gray) +} + +.jodit-ui-select_has-error_true .jodit-ui-select__input { + border-color: var(--jd-color-red) +} + +.jodit-ui-select__error, .jodit-ui-select__label { + color: var(--jd-color-label); + display: block; + font-size: .8em; + margin-bottom: calc(var(--jd-padding-default)/4) +} + +.jodit-ui-select__error, .jodit-ui-select_has-error_true .jodit-ui-select__label { + color: var(--jd-color-error) +} + +.jodit-ui-select__wrapper { + align-items: center; + background-color: var(--jd-color-white); + border: 1px solid var(--jd-color-border); + display: flex; + justify-content: stretch; + min-width: 200px +} + +@media (max-width:480px) { + .jodit-ui-select__wrapper { + min-width: 140px + } +} + +.jodit-ui-select_theme_dark .jodit-ui-select__wrapper { + background-color: var(--jd-color-gray); + border-color: var(--jd-color-border) +} + +.jodit-ui-select_focused_true .jodit-ui-select__wrapper { + border-color: var(--jd-color-border-selected) +} + +.jodit-ui-select__icon:not(:empty) { + align-items: center; + display: flex; + padding: 0 var(--jd-padding-default) +} + + .jodit-ui-select__icon:not(:empty) svg { + height: 16px; + width: 16px; + fill: var(--jd-color-border) + } + + .jodit-ui-select__icon:not(:empty) + .jodit-ui-select__input { + padding-left: 0 + } + +.jodit-ui-select__clear { + align-items: center; + display: flex; + opacity: .8; + padding: 0 var(--jd-padding-default) 0 0 +} + + .jodit-ui-select__clear:active { + opacity: 1; + transform: scale(1.1) + } + + .jodit-ui-select__clear svg { + height: 12px; + width: 12px; + fill: var(--jd-color-border) + } + +.jodit-ui-select_theme_dark .jodit-ui-select__clear svg, .jodit-ui-select_theme_dark .jodit-ui-select__icon svg { + fill: var(--jd-color-dark) +} + +.jodit-ui-select__input { + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8xIiBkYXRhLW5hbWU9IkxheWVyIDEiIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIj48ZGVmcz48c3R5bGU+LmNscy0ye2ZpbGw6IzQ0NH08L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMCAwaDQuOTV2MTBIMHoiIHN0eWxlPSJmaWxsOiNmZmYiLz48cGF0aCBkPSJtMS40MSA0LjY3IDEuMDctMS40OSAxLjA2IDEuNDl6TTMuNTQgNS4zMyAyLjQ4IDYuODIgMS40MSA1LjMzeiIgY2xhc3M9ImNscy0yIi8+PC9zdmc+); + background-position: 98% 50%; + background-repeat: no-repeat; + padding-right: calc(var(--jd-padding-default)*2) +} + +.jodit-ui-select_size_tiny { + margin-bottom: 0 +} + + .jodit-ui-select_size_tiny .jodit-ui-select__input { + --jd-height: calc(var(--jd-input-height)/1.8); + height: var(--jd-height); + line-height: var(--jd-height) + } + +.jodit-ui-select_variant_outline .jodit-ui-select__wrapper { + border: 0 +} + + .jodit-ui-select_variant_outline .jodit-ui-select__wrapper select { + outline: 0 + } + +.jodit-ui-select_width_auto { + width: auto +} + + .jodit-ui-select_width_auto .jodit-ui-select__wrapper { + min-width: auto + } + +.jodit-ui-text-area { + display: flex; + flex-direction: column; + margin-bottom: var(--jd-padding-default); + width: 100% +} + +.jodit-ui-text-area__input { + appearance: none; + background-color: var(--jd-color-white); + border: 0; + border-radius: 0; + box-sizing: border-box; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + height: var(--jd-input-height); + line-height: 1.2; + outline: none; + padding: 0 var(--jd-padding-default); + width: 100% +} + + .jodit-ui-text-area__input[disabled] { + background-color: #f0f0f0; + color: var(--jd-color-border) + } + +.jodit-ui-text-area__input_has-error_true { + border-color: var(--jd-color-red) +} + +.jodit-ui-text-area__input:focus { + outline: 0 +} + +.jodit-ui-text-area_theme_dark .jodit-ui-text-area__input { + background-color: var(--jd-color-gray) +} + +.jodit-ui-text-area_has-error_true .jodit-ui-text-area__input { + border-color: var(--jd-color-red) +} + +.jodit-ui-text-area__error, .jodit-ui-text-area__label { + color: var(--jd-color-label); + display: block; + font-size: .8em; + margin-bottom: calc(var(--jd-padding-default)/4) +} + +.jodit-ui-text-area__error, .jodit-ui-text-area_has-error_true .jodit-ui-text-area__label { + color: var(--jd-color-error) +} + +.jodit-ui-text-area__wrapper { + align-items: center; + background-color: var(--jd-color-white); + border: 1px solid var(--jd-color-border); + display: flex; + justify-content: stretch; + min-width: 200px +} + +@media (max-width:480px) { + .jodit-ui-text-area__wrapper { + min-width: 140px + } +} + +.jodit-ui-text-area_theme_dark .jodit-ui-text-area__wrapper { + background-color: var(--jd-color-gray); + border-color: var(--jd-color-border) +} + +.jodit-ui-text-area_focused_true .jodit-ui-text-area__wrapper { + border-color: var(--jd-color-border-selected) +} + +.jodit-ui-text-area__icon:not(:empty) { + align-items: center; + display: flex; + padding: 0 var(--jd-padding-default) +} + + .jodit-ui-text-area__icon:not(:empty) svg { + height: 16px; + width: 16px; + fill: var(--jd-color-border) + } + + .jodit-ui-text-area__icon:not(:empty) + .jodit-ui-text-area__input { + padding-left: 0 + } + +.jodit-ui-text-area__clear { + align-items: center; + display: flex; + opacity: .8; + padding: 0 var(--jd-padding-default) 0 0 +} + + .jodit-ui-text-area__clear:active { + opacity: 1; + transform: scale(1.1) + } + + .jodit-ui-text-area__clear svg { + height: 12px; + width: 12px; + fill: var(--jd-color-border) + } + +.jodit-ui-text-area_theme_dark .jodit-ui-text-area__clear svg, .jodit-ui-text-area_theme_dark .jodit-ui-text-area__icon svg { + fill: var(--jd-color-dark) +} + +.jodit-ui-text-area__wrapper { + flex: 1 +} + +.jodit-ui-text-area__input { + height: 100%; + min-height: 60px; + padding: var(--jd-padding-default) +} + +.jodit-ui-checkbox { + align-items: center; + display: flex; + flex-direction: row-reverse; + justify-content: flex-end; + margin-bottom: var(--jd-padding-default) +} + +.jodit-ui-checkbox__input { + margin-right: var(--jd-padding-default) +} + +.jodit-ui-checkbox_switch_true .jodit-ui-checkbox__wrapper { + display: inline-block; + height: 34px; + margin-right: var(--jd-padding-default); + position: relative; + width: 60px +} + + .jodit-ui-checkbox_switch_true .jodit-ui-checkbox__wrapper input { + height: 0; + opacity: 0; + width: 0 + } + +.jodit-ui-checkbox_switch_true .jodit-ui-checkbox__switch-slider { + background-color: #ccc; + border-radius: 34px; + cursor: pointer; + inset: 0; + position: absolute; + transition: .4s +} + + .jodit-ui-checkbox_switch_true .jodit-ui-checkbox__switch-slider:before { + background-color: #fff; + border-radius: 50%; + bottom: 4px; + content: ""; + height: 26px; + left: 4px; + position: absolute; + transition: .4s; + width: 26px + } + +.jodit-ui-checkbox_switch_true.jodit-ui-checkbox_checked_true .jodit-ui-checkbox__switch-slider { + background-color: #2196f3 +} + + .jodit-ui-checkbox_switch_true.jodit-ui-checkbox_checked_true .jodit-ui-checkbox__switch-slider:before { + transform: translateX(26px) + } + +.jodit-ui-checkbox_switch_true.jodit-ui-checkbox_focused_true .jodit-ui-checkbox__switch-slider { + box-shadow: 0 0 1px #2196f3 +} + +.jodit-ui-block .jodit-ui-checkbox { + margin-bottom: 0 +} + +.jodit-ui-file-input { + overflow: hidden; + position: relative +} + +.jodit-ui-file-input__input { + bottom: 0; + cursor: pointer; + font-size: 400px; + margin: 0 calc(var(--jd-padding-default)*-1) 0 0; + opacity: 0; + padding: 0; + position: absolute; + right: 0; + top: 0 +} + +@keyframes a { + 30% { + opacity: .6 + } + + 60% { + opacity: 0 + } + + to { + opacity: .6 + } +} + +.jodit-progress-bar { + border-radius: 1px; + height: 2px; + left: 0; + opacity: .7; + position: absolute; + top: 0; + z-index: 2147483647 +} + + .jodit-progress-bar div { + background: var(--jd-color-background-progress); + height: 2px; + position: relative; + transition: width .5s ease-out,opacity .5s linear; + will-change: width,opacity + } + + .jodit-progress-bar div:after, .jodit-progress-bar div:before { + animation: a 2s ease-out 0s infinite; + border-radius: 100%; + box-shadow: var(--jd-color-background-progress) 1px 0 6px 1px; + content: ""; + display: inline-block; + height: 2px; + opacity: .6; + position: absolute; + top: 0 + } + + .jodit-progress-bar div:before { + right: -80px; + width: 180px; + clip: rect(-6px,90px,14px,-6px) + } + + .jodit-progress-bar div:after { + right: 0; + width: 20px; + clip: rect(-6px,22px,14px,var(--jd-padding-default)) + } + +:root { + --jd-em-color-border: #b6d4fe; + --jd-em-color-bg: #cfe2ff; + --jd-em-color-color: #084298; + --jd-em-border-radius: 0.375rem; + --jd-em-padding: 0.5rem 1rem; + --jd-em-font-size: 1rem +} + +.jodit-ui-messages { + bottom: 0; + height: 0; + overflow: visible; + position: absolute; + right: 0; + width: 0; + z-index: 3 +} + +.jodit-ui-message { + background: var(--jd-em-color-bg); + border: 1px solid var(--jd-em-color-border); + border-radius: var(--jd-em-border-radius); + bottom: 0; + color: var(--jd-em-color-color); + cursor: pointer; + display: block; + font-size: var(--jd-em-font-size); + opacity: 0; + padding: var(--jd-em-padding); + position: absolute; + right: calc(var(--jd-padding-default)/2); + transition: opacity .1s linear,bottom .3s linear,transform .1s ease-out; + white-space: pre +} + +.jodit-ui-message_active_true { + opacity: 1 +} + +.jodit-ui-message:active { + transform: scale(.76) +} + +.jodit-ui-message_variant_secondary { + --jd-em-color-border: #d3d6d8; + --jd-em-color-bg: #e2e3e5; + --jd-em-color-color: #41464b +} + +.jodit-ui-message_variant_danger, .jodit-ui-message_variant_error, .jodit-ui-message_variant_secondary { + background: var(--jd-em-color-bg); + border-color: var(--jd-em-color-border); + color: var(--jd-em-color-color) +} + +.jodit-ui-message_variant_danger, .jodit-ui-message_variant_error { + --jd-em-color-border: #f5c2c7; + --jd-em-color-bg: #f8d7da; + --jd-em-color-color: #842029 +} + +.jodit-ui-message_variant_success { + --jd-em-color-border: #badbcc; + --jd-em-color-bg: #d1e7dd; + --jd-em-color-color: #0f5132; + background: var(--jd-em-color-bg); + border-color: var(--jd-em-color-border); + color: var(--jd-em-color-color) +} + +.jodit-toolbar-collection, .jodit-toolbar-editor-collection { + display: flex; + flex-direction: column +} + +.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-editor-collection_mode_horizontal { + background-image: repeating-linear-gradient(transparent 0,transparent calc(var(--jd-button-size) - 1px),var(--jd-color-border) var(--jd-button-size)); + position: relative +} + + .jodit-toolbar-collection_mode_horizontal:after, .jodit-toolbar-editor-collection_mode_horizontal:after { + background-color: var(--jd-color-background-default); + bottom: 0; + content: ""; + display: block; + height: 1px; + left: 0; + position: absolute; + width: 100% + } + +.jodit-toolbar-collection_size_tiny, .jodit-toolbar-editor-collection_size_tiny { + --jd-button-icon-size: 8px +} + + .jodit-toolbar-collection_size_tiny.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-collection_size_tiny.jodit-toolbar-editor-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_tiny.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_tiny.jodit-toolbar-editor-collection_mode_horizontal { + background-image: repeating-linear-gradient(transparent 0,transparent 19px,var(--jd-color-border) 20px) + } + +.jodit-toolbar-collection_size_xsmall, .jodit-toolbar-editor-collection_size_xsmall { + --jd-button-icon-size: 10px +} + + .jodit-toolbar-collection_size_xsmall.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-collection_size_xsmall.jodit-toolbar-editor-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_xsmall.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_xsmall.jodit-toolbar-editor-collection_mode_horizontal { + background-image: repeating-linear-gradient(transparent 0,transparent 25px,var(--jd-color-border) 26px) + } + +.jodit-toolbar-collection_size_small, .jodit-toolbar-editor-collection_size_small { + --jd-button-icon-size: 12px +} + + .jodit-toolbar-collection_size_small.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-collection_size_small.jodit-toolbar-editor-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_small.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_small.jodit-toolbar-editor-collection_mode_horizontal { + background-image: repeating-linear-gradient(transparent 0,transparent 31px,var(--jd-color-border) 32px) + } + +.jodit-toolbar-collection_size_middle, .jodit-toolbar-editor-collection_size_middle { + --jd-button-icon-size: 14px +} + + .jodit-toolbar-collection_size_middle.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-collection_size_middle.jodit-toolbar-editor-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_middle.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_middle.jodit-toolbar-editor-collection_mode_horizontal { + background-image: repeating-linear-gradient(transparent 0,transparent 37px,var(--jd-color-border) 38px) + } + +.jodit-toolbar-collection_size_large, .jodit-toolbar-editor-collection_size_large { + --jd-button-icon-size: 16px +} + + .jodit-toolbar-collection_size_large.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-collection_size_large.jodit-toolbar-editor-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_large.jodit-toolbar-collection_mode_horizontal, .jodit-toolbar-editor-collection_size_large.jodit-toolbar-editor-collection_mode_horizontal { + background-image: repeating-linear-gradient(transparent 0,transparent 43px,var(--jd-color-border) 44px) + } + +.jodit-toolbar-collection_mode_vertical .jodit-ui-group, .jodit-toolbar-editor-collection_mode_vertical .jodit-ui-group { + background-color: transparent; + border: 0; + flex-direction: column +} + +.jodit-toolbar-collection_mode_vertical .jodit-toolbar-button, .jodit-toolbar-editor-collection_mode_vertical .jodit-toolbar-button { + height: auto; + min-height: var(--jd-button-size) +} + +.jodit-toolbar-collection_mode_vertical .jodit-toolbar-button__button, .jodit-toolbar-editor-collection_mode_vertical .jodit-toolbar-button__button { + cursor: pointer; + height: auto; + min-height: var(--jd-button-size); + width: 100% +} + +.jodit-toolbar-collection_mode_vertical .jodit-toolbar-button__text:not(:empty), .jodit-toolbar-editor-collection_mode_vertical .jodit-toolbar-button__text:not(:empty) { + justify-content: left +} + +.jodit-toolbar-collection .jodit-toolbar-button, .jodit-toolbar-collection .jodit-toolbar-content, .jodit-toolbar-collection .jodit-toolbar-select, .jodit-toolbar-editor-collection .jodit-toolbar-button, .jodit-toolbar-editor-collection .jodit-toolbar-content, .jodit-toolbar-editor-collection .jodit-toolbar-select { + margin: var(--jd-margin-v) 1px; + padding: 0 +} + +.jodit-dialog .jodit-toolbar-collection_mode_horizontal, .jodit-dialog .jodit-toolbar-editor-collection_mode_horizontal { + background-image: none +} + +:root { + --jd-button-trigger-size: 14px +} + +.jodit-toolbar-button { + align-items: center; + border: 1px solid transparent; + border-radius: var(--jd-border-radius-default); + display: flex; + height: 34px; + justify-content: center; + min-width: 34px; + overflow: hidden +} + +.jodit-toolbar-button__icon { + display: none +} + + .jodit-toolbar-button__icon:not(:empty) { + display: inline-flex + } + +.jodit-toolbar-button__text { + display: none +} + + .jodit-toolbar-button__text:not(:empty) { + display: inline-flex; + flex-grow: 1; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + justify-content: center + } + +.jodit-toolbar-button_context_menu .jodit-toolbar-button__text { + justify-content: left; + padding-left: var(--jd-padding-default); + position: relative +} + + .jodit-toolbar-button_context_menu .jodit-toolbar-button__text:before { + border-left: 1px solid var(--jd-color-border); + content: ""; + height: 35px; + left: 0; + position: absolute; + top: calc(var(--jd-padding-default)*-1) + } + +.jodit-toolbar-button__icon:not(:empty) + .jodit-toolbar-button__text:not(:empty) { + margin-left: var(--jd-padding-default) +} + +.jodit-toolbar-button__icon:empty + .jodit-toolbar-button__text:not(:empty) { + padding: 0 var(--jd-padding-default); + padding: 0 +} + +.jodit-toolbar-button .jodit-icon { + height: 14px; + width: 14px +} + +.jodit-toolbar-button button { + appearance: none; + height: 34px; + min-width: 34px; + padding: 0 +} + +.jodit-toolbar-button_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-button_size_tiny { + height: 16px; + min-width: 16px +} + + .jodit-toolbar-button_size_tiny .jodit-icon { + height: 8px; + width: 8px + } + + .jodit-toolbar-button_size_tiny button { + appearance: none; + height: 16px; + min-width: 16px; + padding: 0 + } + +.jodit-toolbar-button_size_tiny_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-button_size_xsmall { + height: 22px; + min-width: 22px +} + + .jodit-toolbar-button_size_xsmall .jodit-icon { + height: 10px; + width: 10px + } + + .jodit-toolbar-button_size_xsmall button { + appearance: none; + height: 22px; + min-width: 22px; + padding: 0 + } + +.jodit-toolbar-button_size_xsmall_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-button_size_small { + height: 28px; + min-width: 28px +} + + .jodit-toolbar-button_size_small .jodit-icon { + height: 12px; + width: 12px + } + + .jodit-toolbar-button_size_small button { + appearance: none; + height: 28px; + min-width: 28px; + padding: 0 + } + +.jodit-toolbar-button_size_small_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-button_size_large { + height: 40px; + min-width: 40px +} + + .jodit-toolbar-button_size_large .jodit-icon { + height: 16px; + width: 16px + } + + .jodit-toolbar-button_size_large button { + appearance: none; + height: 40px; + min-width: 40px; + padding: 0 + } + +.jodit-toolbar-button_size_large_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-button__button { + align-items: center; + appearance: none; + background: 0 0; + border: 0; + border-radius: var(--jd-border-radius-default); + box-shadow: none; + box-sizing: border-box; + color: var(--jd-color-text-icons); + cursor: pointer; + display: inline-flex; + font-style: normal; + justify-content: center; + outline: 0; + padding: 0; + padding: 0 var(--jd-padding-default); + position: relative; + text-align: center; + text-decoration: none; + text-transform: none; + user-select: none +} + + .jodit-toolbar-button__button:focus-visible:not([disabled]), .jodit-toolbar-button__button:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover); + opacity: 1; + outline: 0 + } + + .jodit-toolbar-button__button:active:not([disabled]), .jodit-toolbar-button__button[aria-pressed=true]:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity40); + outline: 0 + } + + .jodit-toolbar-button__button[aria-pressed=true]:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity60) + } + + .jodit-toolbar-button__button[disabled] { + opacity: .3; + pointer-events: none + } + +.jodit-toolbar-button__trigger { + align-items: center; + border-radius: 0 var(--jd-border-radius-default) var(--jd-border-radius-default) 0; + cursor: pointer; + display: flex; + height: 100%; + justify-content: center; + opacity: .4; + --jd-button-trigger-size: 14px; + width: calc(var(--jd-button-trigger-size, 14px) + 2px) +} + + .jodit-toolbar-button__trigger:focus-visible:not([disabled]), .jodit-toolbar-button__trigger:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover); + opacity: 1; + outline: 0 + } + + .jodit-toolbar-button__trigger:active:not([disabled]), .jodit-toolbar-button__trigger[aria-pressed=true]:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity40); + outline: 0 + } + + .jodit-toolbar-button__trigger[aria-pressed=true]:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity60) + } + + .jodit-toolbar-button__trigger[disabled] { + opacity: .3; + pointer-events: none + } + + .jodit-toolbar-button__trigger svg { + width: calc(var(--jd-button-trigger-size, 14px) - 4px) + } + +.jodit-toolbar-button_size_tiny .jodit-toolbar-button__trigger { + --jd-button-trigger-size: 8px; + width: calc(var(--jd-button-trigger-size, 8px) + 2px) +} + + .jodit-toolbar-button_size_tiny .jodit-toolbar-button__trigger svg { + width: calc(var(--jd-button-trigger-size, 8px) - 4px) + } + +.jodit-toolbar-button_size_xsmall .jodit-toolbar-button__trigger { + --jd-button-trigger-size: 10px; + width: calc(var(--jd-button-trigger-size, 10px) + 2px) +} + + .jodit-toolbar-button_size_xsmall .jodit-toolbar-button__trigger svg { + width: calc(var(--jd-button-trigger-size, 10px) - 4px) + } + +.jodit-toolbar-button_size_small .jodit-toolbar-button__trigger { + --jd-button-trigger-size: 12px; + width: calc(var(--jd-button-trigger-size, 12px) + 2px) +} + + .jodit-toolbar-button_size_small .jodit-toolbar-button__trigger svg { + width: calc(var(--jd-button-trigger-size, 12px) - 4px) + } + +.jodit-toolbar-button_size_large .jodit-toolbar-button__trigger { + --jd-button-trigger-size: 16px; + width: calc(var(--jd-button-trigger-size, 16px) + 2px) +} + + .jodit-toolbar-button_size_large .jodit-toolbar-button__trigger svg { + width: calc(var(--jd-button-trigger-size, 16px) - 4px) + } + +.jodit-toolbar-button_with-trigger_true .jodit-toolbar-button__button { + border-radius: var(--jd-border-radius-default) 0 0 var(--jd-border-radius-default) +} + +.jodit-toolbar-button_with-trigger_true:hover:not([disabled]) { + border-color: var(--jd-color-border) +} + +.jodit-toolbar-button_stroke_false svg { + stroke: none +} + +.jodit-toolbar-content { + align-items: center; + appearance: none; + background: 0 0; + border: 1px solid transparent; + border-radius: var(--jd-border-radius-default); + box-shadow: none; + box-sizing: border-box; + color: var(--jd-color-text-icons); + cursor: pointer; + display: inline-flex; + font-style: normal; + height: 34px; + justify-content: center; + min-width: 34px; + outline: 0; + padding: 0; + position: relative; + text-align: center; + text-decoration: none; + text-transform: none; + user-select: none +} + + .jodit-toolbar-content:focus-visible:not([disabled]), .jodit-toolbar-content:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover); + opacity: 1; + outline: 0 + } + + .jodit-toolbar-content:active:not([disabled]), .jodit-toolbar-content[aria-pressed=true]:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity40); + outline: 0 + } + + .jodit-toolbar-content[aria-pressed=true]:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity60) + } + + .jodit-toolbar-content[disabled] { + opacity: .3; + pointer-events: none + } + + .jodit-toolbar-content .jodit-icon { + height: 14px; + width: 14px + } + + .jodit-toolbar-content button { + appearance: none; + height: 34px; + min-width: 34px; + padding: 0 + } + +.jodit-toolbar-content_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-content_size_tiny { + height: 16px; + min-width: 16px +} + + .jodit-toolbar-content_size_tiny .jodit-icon { + height: 8px; + width: 8px + } + + .jodit-toolbar-content_size_tiny button { + appearance: none; + height: 16px; + min-width: 16px; + padding: 0 + } + +.jodit-toolbar-content_size_tiny_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-content_size_xsmall { + height: 22px; + min-width: 22px +} + + .jodit-toolbar-content_size_xsmall .jodit-icon { + height: 10px; + width: 10px + } + + .jodit-toolbar-content_size_xsmall button { + appearance: none; + height: 22px; + min-width: 22px; + padding: 0 + } + +.jodit-toolbar-content_size_xsmall_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-content_size_small { + height: 28px; + min-width: 28px +} + + .jodit-toolbar-content_size_small .jodit-icon { + height: 12px; + width: 12px + } + + .jodit-toolbar-content_size_small button { + appearance: none; + height: 28px; + min-width: 28px; + padding: 0 + } + +.jodit-toolbar-content_size_small_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-content_size_large { + height: 40px; + min-width: 40px +} + + .jodit-toolbar-content_size_large .jodit-icon { + height: 16px; + width: 16px + } + + .jodit-toolbar-content_size_large button { + appearance: none; + height: 40px; + min-width: 40px; + padding: 0 + } + +.jodit-toolbar-content_size_large_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-content__icon { + display: none +} + + .jodit-toolbar-content__icon:not(:empty) { + display: inline-flex + } + +.jodit-toolbar-content__text { + display: none +} + + .jodit-toolbar-content__text:not(:empty) { + display: inline-flex; + flex-grow: 1; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + justify-content: center + } + +.jodit-toolbar-content_context_menu .jodit-toolbar-content__text { + justify-content: left; + padding-left: var(--jd-padding-default); + position: relative +} + + .jodit-toolbar-content_context_menu .jodit-toolbar-content__text:before { + border-left: 1px solid var(--jd-color-border); + content: ""; + height: 35px; + left: 0; + position: absolute; + top: calc(var(--jd-padding-default)*-1) + } + +.jodit-toolbar-content__icon:not(:empty) + .jodit-toolbar-content__text:not(:empty) { + margin-left: var(--jd-padding-default) +} + +.jodit-toolbar-content__icon:empty + .jodit-toolbar-content__text:not(:empty) { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-content:focus:not([disabled]) { + outline: 1px dashed var(--jd-color-background-selection) +} + +.jodit-toolbar-content_variant_outline { + border: 1px solid var(--jd-color-border) +} + +.jodit-toolbar-content_variant_default { + background-color: #e3e3e3; + color: #212529 +} + + .jodit-toolbar-content_variant_default svg { + fill: #212529; + stroke: #212529 + } + + .jodit-toolbar-content_variant_default [disabled] { + opacity: .7 + } + + .jodit-toolbar-content_variant_default:hover:not([disabled]) { + background-color: #c9cdd1; + color: #212529 + } + + .jodit-toolbar-content_variant_default:hover:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-toolbar-content_variant_default:active:not([disabled]) { + background-color: #dae0e5; + color: #212529 + } + + .jodit-toolbar-content_variant_default:active:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-toolbar-content_variant_default:focus:not([disabled]) { + outline: 1px dashed #dae0e5 + } + +.jodit-toolbar-content_variant_primary { + background-color: #007bff; + color: #fff +} + + .jodit-toolbar-content_variant_primary svg { + fill: #fff; + stroke: #fff + } + + .jodit-toolbar-content_variant_primary [disabled] { + opacity: .7 + } + + .jodit-toolbar-content_variant_primary:hover:not([disabled]) { + background-color: #0069d9; + color: #fff + } + + .jodit-toolbar-content_variant_primary:hover:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-toolbar-content_variant_primary:active:not([disabled]) { + background-color: #0062cc; + color: #fff + } + + .jodit-toolbar-content_variant_primary:active:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-toolbar-content_variant_primary:focus:not([disabled]) { + outline: 1px dashed #0062cc + } + +.jodit-toolbar-content_variant_secondary { + background-color: #d8d8d8; + border-radius: 0; + color: #212529 +} + + .jodit-toolbar-content_variant_secondary svg { + fill: #212529; + stroke: #212529 + } + + .jodit-toolbar-content_variant_secondary [disabled] { + opacity: .7 + } + + .jodit-toolbar-content_variant_secondary:hover:not([disabled]) { + background-color: #c9cdd1; + color: #212529 + } + + .jodit-toolbar-content_variant_secondary:hover:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-toolbar-content_variant_secondary:active:not([disabled]) { + background-color: #dae0e5; + color: #212529 + } + + .jodit-toolbar-content_variant_secondary:active:not([disabled]) svg { + fill: #212529; + stroke: #212529 + } + + .jodit-toolbar-content_variant_secondary:focus:not([disabled]) { + outline: 1px dashed #dae0e5 + } + +.jodit-toolbar-content_variant_success { + background-color: #28a745; + color: #fff +} + + .jodit-toolbar-content_variant_success svg { + fill: #fff; + stroke: #fff + } + + .jodit-toolbar-content_variant_success [disabled] { + opacity: .7 + } + + .jodit-toolbar-content_variant_success:hover:not([disabled]) { + background-color: #218838; + color: #fff + } + + .jodit-toolbar-content_variant_success:hover:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-toolbar-content_variant_success:active:not([disabled]) { + background-color: #1e7e34; + color: #fff + } + + .jodit-toolbar-content_variant_success:active:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-toolbar-content_variant_success:focus:not([disabled]) { + outline: 1px dashed #1e7e34 + } + +.jodit-toolbar-content_variant_danger { + background-color: #dc3545; + color: #fff +} + + .jodit-toolbar-content_variant_danger svg { + fill: #fff; + stroke: #fff + } + + .jodit-toolbar-content_variant_danger [disabled] { + opacity: .7 + } + + .jodit-toolbar-content_variant_danger:hover:not([disabled]) { + background-color: #c82333; + color: #fff + } + + .jodit-toolbar-content_variant_danger:hover:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-toolbar-content_variant_danger:active:not([disabled]) { + background-color: #bd2130; + color: #fff + } + + .jodit-toolbar-content_variant_danger:active:not([disabled]) svg { + fill: #fff; + stroke: #fff + } + + .jodit-toolbar-content_variant_danger:focus:not([disabled]) { + outline: 1px dashed #bd2130 + } + +.jodit-toolbar-content:hover:not([disabled]) { + background-color: transparent; + opacity: 1; + outline: 0 +} + +.jodit-toolbar-select { + --jd-color-button-background-hover-opacity40: hsla(0,0%,86%,.2); + --jd-color-button-background-hover-opacity60: hsla(0,0%,86%,.1); + align-items: center; + border: 1px solid transparent; + border-radius: var(--jd-border-radius-default); + cursor: pointer; + display: flex; + height: 34px; + justify-content: center; + justify-content: space-between; + min-width: 34px; + min-width: 100px; + overflow: hidden +} + +.jodit-toolbar-select__icon { + display: none +} + + .jodit-toolbar-select__icon:not(:empty) { + display: inline-flex + } + +.jodit-toolbar-select__text { + display: none +} + + .jodit-toolbar-select__text:not(:empty) { + display: inline-flex; + flex-grow: 1; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + justify-content: center + } + +.jodit-toolbar-select_context_menu .jodit-toolbar-select__text { + justify-content: left; + padding-left: var(--jd-padding-default); + position: relative +} + + .jodit-toolbar-select_context_menu .jodit-toolbar-select__text:before { + border-left: 1px solid var(--jd-color-border); + content: ""; + height: 35px; + left: 0; + position: absolute; + top: calc(var(--jd-padding-default)*-1) + } + +.jodit-toolbar-select__icon:not(:empty) + .jodit-toolbar-select__text:not(:empty) { + margin-left: var(--jd-padding-default) +} + +.jodit-toolbar-select__icon:empty + .jodit-toolbar-select__text:not(:empty) { + padding: 0 var(--jd-padding-default); + padding: 0 +} + +.jodit-toolbar-select .jodit-icon { + height: 14px; + width: 14px +} + +.jodit-toolbar-select button { + appearance: none; + height: 34px; + min-width: 34px; + padding: 0 +} + +.jodit-toolbar-select_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-select_size_tiny { + height: 16px; + min-width: 16px +} + + .jodit-toolbar-select_size_tiny .jodit-icon { + height: 8px; + width: 8px + } + + .jodit-toolbar-select_size_tiny button { + appearance: none; + height: 16px; + min-width: 16px; + padding: 0 + } + +.jodit-toolbar-select_size_tiny_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-select_size_xsmall { + height: 22px; + min-width: 22px +} + + .jodit-toolbar-select_size_xsmall .jodit-icon { + height: 10px; + width: 10px + } + + .jodit-toolbar-select_size_xsmall button { + appearance: none; + height: 22px; + min-width: 22px; + padding: 0 + } + +.jodit-toolbar-select_size_xsmall_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-select_size_small { + height: 28px; + min-width: 28px +} + + .jodit-toolbar-select_size_small .jodit-icon { + height: 12px; + width: 12px + } + + .jodit-toolbar-select_size_small button { + appearance: none; + height: 28px; + min-width: 28px; + padding: 0 + } + +.jodit-toolbar-select_size_small_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-select_size_large { + height: 40px; + min-width: 40px +} + + .jodit-toolbar-select_size_large .jodit-icon { + height: 16px; + width: 16px + } + + .jodit-toolbar-select_size_large button { + appearance: none; + height: 40px; + min-width: 40px; + padding: 0 + } + +.jodit-toolbar-select_size_large_text-icons_true button { + padding: 0 var(--jd-padding-default) +} + +.jodit-toolbar-select__button { + align-items: center; + appearance: none; + background: 0 0; + border: 0; + border-radius: var(--jd-border-radius-default); + box-shadow: none; + box-sizing: border-box; + color: var(--jd-color-text-icons); + cursor: pointer; + display: inline-flex; + font-style: normal; + justify-content: center; + outline: 0; + padding: 0; + padding: 0 var(--jd-padding-default); + position: relative; + text-align: center; + text-decoration: none; + text-transform: none; + user-select: none +} + + .jodit-toolbar-select__button:focus-visible:not([disabled]), .jodit-toolbar-select__button:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover); + opacity: 1; + outline: 0 + } + + .jodit-toolbar-select__button:active:not([disabled]), .jodit-toolbar-select__button[aria-pressed=true]:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity40); + outline: 0 + } + + .jodit-toolbar-select__button[aria-pressed=true]:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity60) + } + + .jodit-toolbar-select__button[disabled] { + opacity: .3; + pointer-events: none + } + +.jodit-toolbar-select__trigger { + align-items: center; + border-radius: 0 var(--jd-border-radius-default) var(--jd-border-radius-default) 0; + cursor: pointer; + display: flex; + height: 100%; + justify-content: center; + opacity: .4; + --jd-button-trigger-size: 14px; + width: calc(var(--jd-button-trigger-size, 14px) + 2px) +} + + .jodit-toolbar-select__trigger:focus-visible:not([disabled]), .jodit-toolbar-select__trigger:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover); + opacity: 1; + outline: 0 + } + + .jodit-toolbar-select__trigger:active:not([disabled]), .jodit-toolbar-select__trigger[aria-pressed=true]:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity40); + outline: 0 + } + + .jodit-toolbar-select__trigger[aria-pressed=true]:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity60) + } + + .jodit-toolbar-select__trigger[disabled] { + opacity: .3; + pointer-events: none + } + + .jodit-toolbar-select__trigger svg { + width: calc(var(--jd-button-trigger-size, 14px) - 4px) + } + +.jodit-toolbar-select_size_tiny .jodit-toolbar-select__trigger { + --jd-button-trigger-size: 8px; + width: calc(var(--jd-button-trigger-size, 8px) + 2px) +} + + .jodit-toolbar-select_size_tiny .jodit-toolbar-select__trigger svg { + width: calc(var(--jd-button-trigger-size, 8px) - 4px) + } + +.jodit-toolbar-select_size_xsmall .jodit-toolbar-select__trigger { + --jd-button-trigger-size: 10px; + width: calc(var(--jd-button-trigger-size, 10px) + 2px) +} + + .jodit-toolbar-select_size_xsmall .jodit-toolbar-select__trigger svg { + width: calc(var(--jd-button-trigger-size, 10px) - 4px) + } + +.jodit-toolbar-select_size_small .jodit-toolbar-select__trigger { + --jd-button-trigger-size: 12px; + width: calc(var(--jd-button-trigger-size, 12px) + 2px) +} + + .jodit-toolbar-select_size_small .jodit-toolbar-select__trigger svg { + width: calc(var(--jd-button-trigger-size, 12px) - 4px) + } + +.jodit-toolbar-select_size_large .jodit-toolbar-select__trigger { + --jd-button-trigger-size: 16px; + width: calc(var(--jd-button-trigger-size, 16px) + 2px) +} + + .jodit-toolbar-select_size_large .jodit-toolbar-select__trigger svg { + width: calc(var(--jd-button-trigger-size, 16px) - 4px) + } + +.jodit-toolbar-select_with-trigger_true .jodit-toolbar-button__button { + border-radius: var(--jd-border-radius-default) 0 0 var(--jd-border-radius-default) +} + +.jodit-toolbar-select_with-trigger_true:hover:not([disabled]) { + border-color: var(--jd-color-border) +} + +.jodit-toolbar-select_stroke_false svg { + stroke: none +} + +.jodit-toolbar-select:focus-visible:not([disabled]), .jodit-toolbar-select:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover); + opacity: 1; + outline: 0 +} + +.jodit-toolbar-select:active:not([disabled]), .jodit-toolbar-select[aria-pressed=true]:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity40); + outline: 0 +} + +.jodit-toolbar-select[aria-pressed=true]:hover:not([disabled]) { + background-color: var(--jd-color-button-background-hover-opacity60) +} + +.jodit-toolbar-select[disabled] { + opacity: .3; + pointer-events: none +} + +.jodit-toolbar-select__text:not(:empty) { + justify-content: left +} + +.jodit-toolbar-select__button { + flex: 1 +} + +.jodit-toolbar__box:not(:empty) { + --jd-color-background-default: var(--jd-color-panel); + background-color: var(--jd-color-background-default); + border-bottom: 1px solid var(--jd-color-border); + border-radius: var(--jd-border-radius-default) var(--jd-border-radius-default) 0 0; + overflow: hidden +} + + .jodit-toolbar__box:not(:empty) .jodit-toolbar-editor-collection:after { + background-color: var(--jd-color-panel) + } + +.jodit-dialog { + border: 0; + box-sizing: border-box; + display: none; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + height: 0; + position: absolute; + width: 0; + will-change: left,top,width,height +} + +.jodit-dialog_moved_true { + user-select: none +} + +.jodit-dialog * { + box-sizing: border-box +} + +.jodit-dialog .jodit_elfinder, .jodit-dialog .jodit_elfinder * { + box-sizing: initial +} + +.jodit-dialog__overlay { + background-color: rgba(0,0,0,.5); + display: none; + height: 100%; + left: 0; + overflow: auto; + position: fixed; + text-align: center; + top: 0; + white-space: nowrap; + width: 100%; + z-index: var(--jd-z-index-dialog-overlay) +} + +.jodit-dialog_static_true .jodit-dialog__overlay { + display: none +} + +.jodit-dialog_active_true, .jodit-dialog_modal_true .jodit-dialog__overlay { + display: block +} + +.jodit-dialog__panel { + background-color: #fff; + display: flex; + flex-flow: column nowrap; + left: 0; + max-height: 100%; + max-width: 100%; + min-height: 100px; + min-width: 200px; + position: fixed; + top: 0; + z-index: var(--jd-z-index-dialog); + --jd-box-shadow-blur: calc(var(--jd-padding-default)*2); + --jd-box-shadow-1: 0 var(--jd-padding-default) var(--jd-box-shadow-blur) rgba(0,0,0,.19); + box-shadow: var(--jd-box-shadow-1),0 6px 6px rgba(0,0,0,.23); + text-align: left; + white-space: normal +} + +@media (max-width:480px) { + .jodit-dialog:not(.jodit-dialog_adaptive_false) .jodit-dialog__panel { + height: 100% !important; + left: 0 !important; + max-width: 100%; + top: 0 !important; + width: 100% !important + } +} + +.jodit-dialog_static_true { + box-sizing: border-box; + display: block; + height: auto; + position: relative; + width: auto; + z-index: inherit +} + + .jodit-dialog_static_true .jodit-dialog__panel { + border: 1px solid var(--jd-color-border); + box-shadow: none; + left: auto !important; + position: relative; + top: auto !important; + width: 100% !important; + z-index: inherit + } + +.jodit-dialog_theme_dark, .jodit-dialog_theme_dark .jodit-dialog__panel { + background-color: var(--jd-dark-background-darknes); + color: var(--jd-dark-text-color) +} + +.jodit-dialog__header { + border-bottom: 1px solid var(--jd-color-border); + cursor: move; + display: flex; + justify-content: space-between; + min-height: 50px; + text-align: left +} + +.jodit-dialog__header-title, .jodit-dialog__header-toolbar { + align-items: center; + display: flex; + flex-shrink: 3; + font-size: 18px; + font-weight: 400; + line-height: 48px; + margin: 0; + padding: 0 var(--jd-padding-default); + vertical-align: top +} + +@media (max-width:480px) { + .jodit-dialog__header-toolbar { + padding-left: 0 + } +} + +.jodit-dialog__header-button { + color: #222; + flex-basis: 48px; + font-size: 28px; + height: 48px; + line-height: 48px; + text-align: center; + text-decoration: none; + transition: background-color .2s ease 0s +} + + .jodit-dialog__header-button:hover { + background-color: var(--jd-color-background-button-hover) + } + +.jodit-dialog__header .jodit_toolbar { + background: transparent; + border: 0; + box-shadow: none +} + + .jodit-dialog__header .jodit_toolbar > li.jodit-toolbar-button .jodit-input { + padding-left: var(--jd-padding-default); + width: auto + } + +@media (max-width:480px) { + .jodit-dialog:not(.jodit-dialog_adaptive_false) .jodit-dialog__header { + flex-direction: column + } +} + +.jodit-dialog_slim_true .jodit-dialog__header { + min-height: 10px +} + +.jodit-dialog_slim_true .jodit-dialog__header-title, .jodit-dialog_slim_true .jodit-dialog__header-toolbar { + padding: 0 calc(var(--jd-padding-default)/4) +} + +.jodit-dialog_theme_dark .jodit-dialog__header { + border-color: var(--jd-color-dark) +} + +.jodit-dialog_fullsize_true .jodit-dialog__header { + cursor: default +} + +.jodit-dialog__content { + flex: 1; + min-height: 100px; + overflow: auto +} + + .jodit-dialog__content .jodit-form__group { + margin-bottom: calc(var(--jd-padding-default)*1.5); + padding: 0 var(--jd-padding-default) + } + + .jodit-dialog__content .jodit-form__group:first-child { + margin-top: var(--jd-padding-default) + } + + .jodit-dialog__content .jodit-form__group .jodit-input_group { + border-collapse: separate; + display: table; + width: 100% + } + + .jodit-dialog__content .jodit-form__group .jodit-input_group > * { + display: table-cell; + height: 34px; + vertical-align: middle + } + + .jodit-dialog__content .jodit-form__group .jodit-input_group > input { + margin: 0 !important + } + + .jodit-dialog__content .jodit-form__group .jodit-input_group > input:not([class*=col-]) { + width: 100% + } + + .jodit-dialog__content .jodit-form__group .jodit-input_group-buttons { + font-size: 0; + vertical-align: middle; + white-space: nowrap; + width: 1% + } + + .jodit-dialog__content .jodit-form__group .jodit-input_group-buttons > .jodit-button { + border: 1px solid var(--jd-color-border); + border-radius: 0; + height: 34px; + line-height: 34px; + margin-left: -1px + } + +.jodit-dialog__footer { + display: none; + flex-wrap: nowrap; + justify-content: space-between; + padding: var(--jd-padding-default) +} + + .jodit-dialog__footer button { + margin-right: calc(var(--jd-padding-default)/2) + } + + .jodit-dialog__footer button:last-child { + margin-right: 0 + } + +.jodit-dialog__column { + display: flex +} + +.jodit-dialog__resizer { + display: none; + position: relative +} + + .jodit-dialog__resizer svg { + bottom: 0; + cursor: nwse-resize; + height: 12px; + overflow: hidden; + position: absolute; + right: 0; + width: 12px; + fill: var(--jd-color-gray-dark); + user-select: none + } + +.jodit-dialog_resizable_true .jodit-dialog__resizer { + display: block +} + +@media (max-width:480px) { + .jodit-dialog__resizer { + display: none + } +} + +.jodit-dialog_prompt { + max-width: 300px; + min-width: 200px; + padding: var(--jd-padding-default); + word-break: break-all +} + + .jodit-dialog_prompt label { + display: block; + margin-bottom: calc(var(--jd-padding-default)/2) + } + +.jodit-dialog_alert { + max-width: 300px; + min-width: 200px; + padding: var(--jd-padding-default); + word-break: break-all +} + +.jodit-dialog_footer_true .jodit-dialog__footer { + display: flex +} + +.jodit_fullsize .jodit-dialog__panel { + height: 100% !important; + inset: 0 !important; + width: 100% !important +} + + .jodit_fullsize .jodit-dialog__panel .jodit-dialog__resizer { + display: none + } + +.jodit-dialog .jodit-ui-messages { + z-index: var(--jd-z-index-dialog) +} + +:root { + --jd-image-editor-resizer-border-color: #05ff00; + --jd-image-editor-resizer-target-size: padding-default; + --jd-image-editor-resizer-target-border-color: #383838; + --jd-image-editor-resizer-target-bg-color: #8c7878 +} + +.jodit-image-editor { + height: 100%; + overflow: hidden; + padding: var(--jd-padding-default); + width: 100% +} + +@media (max-width:768px) { + .jodit-image-editor { + height: auto + } +} + +.jodit-image-editor > div, .jodit-image-editor > div > div { + height: 100% +} + +@media (max-width:768px) { + .jodit-image-editor > div, .jodit-image-editor > div > div { + height: auto; + min-height: 200px + } +} + +.jodit-image-editor * { + box-sizing: border-box +} + +.jodit-image-editor .jodit-image-editor__slider-title { + background-color: #f9f9f9; + border-bottom: 1px solid hsla(0,0%,62%,.31); + color: #333; + cursor: pointer; + font-weight: 700; + line-height: 1em; + padding: .8em 1em; + text-overflow: ellipsis; + text-shadow: #f3f3f3 0 1px 0; + user-select: none; + white-space: nowrap +} + + .jodit-image-editor .jodit-image-editor__slider-title svg { + display: inline-block; + margin-right: var(--jd-padding-default); + vertical-align: middle; + width: 16px + } + +.jodit-image-editor .jodit-image-editor__slider-content { + display: none +} + +.jodit-image-editor .jodit-image-editor__slider.jodit-image-editor_active .jodit-image-editor__slider-title { + background-color: #5d5d5d; + color: #fff; + text-shadow: #000 0 1px 0 +} + + .jodit-image-editor .jodit-image-editor__slider.jodit-image-editor_active .jodit-image-editor__slider-title svg { + fill: #fff + } + +.jodit-image-editor .jodit-image-editor__slider.jodit-image-editor_active .jodit-image-editor__slider-content { + display: block +} + +.jodit-image-editor__area { + background-color: #eee; + background-image: linear-gradient(45deg,var(--jd-color-border) 25%,transparent 25%,transparent 75%,var(--jd-color-border) 75%,var(--jd-color-border)),linear-gradient(45deg,var(--jd-color-border) 25%,transparent 25%,transparent 75%,var(--jd-color-border) 75%,var(--jd-color-border)); + background-position: 0 0,15px 15px; + background-size: 30px 30px; + display: none; + height: 100%; + overflow: hidden; + position: relative; + user-select: none; + width: 100% +} + + .jodit-image-editor__area.jodit-image-editor_active { + display: block + } + + .jodit-image-editor__area .jodit-image-editor__box { + height: 100%; + overflow: hidden; + pointer-events: none; + position: relative; + z-index: 1 + } + + .jodit-image-editor__area .jodit-image-editor__box img { + max-height: 100%; + max-width: 100%; + user-select: none + } + + .jodit-image-editor__area .jodit-image-editor__croper, .jodit-image-editor__area .jodit-image-editor__resizer { + background-repeat: no-repeat; + border: 1px solid #fff; + box-shadow: 0 0 11px #000; + height: 100px; + left: 20px; + pointer-events: none; + position: absolute; + top: var(--jd-padding-default); + width: 100px; + z-index: 2 + } + + .jodit-image-editor__area .jodit-image-editor__croper i.jodit_bottomright, .jodit-image-editor__area .jodit-image-editor__resizer i.jodit_bottomright { + background-color: var(--jd-image-editor-resizer-target-bg-color); + border: 1px solid var(--jd-image-editor-resizer-target-border-color); + border-radius: 50%; + bottom: calc(var(--jd-padding-default)*-1); + box-shadow: 0 0 11px #000; + cursor: se-resize; + display: inline-block; + height: 20px; + pointer-events: all; + position: absolute; + right: calc(var(--jd-padding-default)*-1); + width: 20px; + z-index: 4 + } + + .jodit-image-editor__area .jodit-image-editor__croper i.jodit_bottomright:active, .jodit-image-editor__area .jodit-image-editor__resizer i.jodit_bottomright:active { + border: 1px solid #ff0 + } + + .jodit-image-editor__area.jodit-image-editor__area_crop { + background: #eee; + height: 100%; + line-height: 100%; + position: relative; + text-align: center + } + + .jodit-image-editor__area.jodit-image-editor__area_crop .jodit-image-editor__box { + height: 100%; + line-height: 100%; + overflow: visible; + pointer-events: all; + text-align: left + } + + .jodit-image-editor__area.jodit-image-editor__area_crop .jodit-image-editor__box img { + height: 100%; + max-height: 100%; + max-width: 100%; + width: 100% + } + + .jodit-image-editor__area.jodit-image-editor__area_crop .jodit-image-editor__box:after { + background: hsla(0,0%,100%,.3); + content: ""; + inset: 0; + margin: auto; + position: absolute; + z-index: 1 + } + + .jodit-image-editor__area.jodit-image-editor__area_crop .jodit-image-editor__box .jodit-image-editor__croper { + cursor: move; + pointer-events: all + } + + .jodit-image-editor__area.jodit-image-editor__area_crop .jodit-image-editor__box .jodit-image-editor__croper i.jodit-image-editor__sizes { + background: rgba(0,0,0,.2); + border-radius: .4em; + bottom: -30px; + color: #fff; + display: block; + font-size: 12px; + left: 100%; + padding: 9px 6px; + position: absolute; + text-align: center; + text-shadow: none; + white-space: pre + } + + .jodit-image-editor__area.jodit-image-editor__area_crop.jodit-image-editor_active { + align-items: center; + display: flex; + justify-content: center + } + +.jodit-file-browser-files { + display: none; + height: 100%; + overflow-anchor: auto; + position: relative; + vertical-align: top +} + + .jodit-file-browser-files .jodit-button { + border-radius: 0 + } + +.jodit-file-browser-files_loading_true:before { + content: ""; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100% +} + +.jodit-file-browser-files_loading_true:after { + animation: b 2s ease-out 0s infinite; + background: url(data:image/png;base64,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) no-repeat 50%; + background-size: 100% 100%; + content: ""; + display: inline-block; + height: var(--jd-icon-loader-size); + left: 50%; + margin-left: calc(var(--jd-icon-loader-size)/-2); + margin-top: calc(var(--jd-icon-loader-size)/-2); + opacity: .7; + position: absolute; + top: 50%; + vertical-align: middle; + width: var(--jd-icon-loader-size); + will-change: transform +} + +.jodit-file-browser-files::-webkit-scrollbar { + width: calc(var(--jd-padding-default)/2) +} + +.jodit-file-browser-files::-webkit-scrollbar-track { + box-shadow: inset 0 0 6px rgba(0,0,0,.3) +} + +.jodit-file-browser-files::-webkit-scrollbar-thumb { + background-color: #a9a9a9; + outline: 1px solid #708090 +} + +.jodit-file-browser-files_active_true { + align-content: flex-start; + display: flex; + flex-wrap: wrap; + overflow-y: auto; + padding: calc(var(--jd-padding-default)/2); + width: 100% +} + +.jodit-file-browser-files__item { + align-items: center; + border: 1px solid var(--jd-color-border); + display: flex; + font-size: 0; + height: var(--jd-col-size); + justify-content: center; + margin: calc(var(--jd-padding-default)/2); + overflow: hidden; + position: relative; + text-align: center; + transition: border .1s linear,bottom .1s linear; + width: var(--jd-col-size) +} + +@media (max-width:480px) { + .jodit-file-browser-files__item { + width: calc(50% - var(--jd-padding-default)) + } +} + +.jodit-file-browser-files__item img { + max-width: 100% +} + +.jodit-file-browser-files__item:hover { + border-color: #433b5c +} + +.jodit-file-browser-files__item_active_true { + background-color: var(--jd-color-border-active); + border-color: var(--jd-color-border-selected) +} + + .jodit-file-browser-files__item_active_true .jodit-file-browser-files__item-info { + background-color: var(--jd-color-border-active); + color: #fff; + text-shadow: none + } + +.jodit-file-browser-files__item-info { + background-color: var(--jd-info-background); + bottom: 0; + color: #333; + font-size: 14px; + left: 0; + line-height: 16px; + opacity: .85; + overflow: visible; + padding: .3em .6em; + position: absolute; + right: 0; + text-align: left; + text-shadow: #eee 0 1px 0; + transition: opacity .4s ease; + white-space: normal +} + + .jodit-file-browser-files__item-info > span { + display: block; + font-size: .75em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap + } + + .jodit-file-browser-files__item-info > span.jodit-file-browser-files__item-info-filename { + font-size: .9em; + font-weight: 700 + } + +.jodit-file-browser-files__item:hover:not(.jodit-file-browser-files__item_active_true) .jodit-file-browser-files__item-info { + bottom: -100px +} + +.jodit-file-browser-files_view_list { + scroll-behavior: smooth +} + + .jodit-file-browser-files_view_list a { + border-width: 0 0 1px; + display: block; + height: 26px; + line-height: 26px; + margin: 0; + text-align: left; + white-space: nowrap; + width: 100% + } + + .jodit-file-browser-files_view_list a img { + display: inline-block; + margin-left: 4px; + max-width: 16px; + min-width: 16px; + vertical-align: middle + } + + .jodit-file-browser-files_view_list a .jodit-file-browser-files__item-info { + background-color: transparent; + display: inline-block; + font-size: 0; + height: 100%; + line-height: inherit; + margin-left: 4px; + padding: 0; + position: static; + vertical-align: middle; + width: calc(100% - 20px) + } + + .jodit-file-browser-files_view_list a .jodit-file-browser-files__item-info > span { + display: inline-block; + font-size: 12px; + height: 100% + } + + .jodit-file-browser-files_view_list a .jodit-file-browser-files__item-info-filename { + width: 50% + } + + .jodit-file-browser-files_view_list a .jodit-file-browser-files__item-info-filechanged, .jodit-file-browser-files_view_list a .jodit-file-browser-files__item-info-filesize { + width: 25% + } + + .jodit-file-browser-files_view_list a:hover { + background-color: #433b5c + } + + .jodit-file-browser-files_view_list a:hover .jodit-file-browser-files__item-info { + color: #fff; + text-shadow: none + } + + .jodit-file-browser-files_view_list a:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle + } + +:root { + --jd-color-folder-title: #b1b1b1 +} + +.jodit-file-browser-tree { + --jd-color-background-filebrowser-folders: #3f3f3f; + display: none; + height: 100%; + overflow-anchor: auto; + position: relative; + vertical-align: top +} + + .jodit-file-browser-tree .jodit-button { + border-radius: 0 + } + +.jodit-file-browser-tree_loading_true:before { + content: ""; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100% +} + +.jodit-file-browser-tree_loading_true:after { + animation: b 2s ease-out 0s infinite; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAABRsSURBVHja7F1/aJfVGn/33RgUg8FiNfK2WCykyS7GLoYyUbwYipZMumgLo+iPS9HlXhSHkRXdislESxMz0mapuaFo2myjkfnNlTQ2FJdTu8NvLVcrdbpcfGvxrfs823m/vXt3fjznvOedzr0PPJzzPe+7d+97Ps95nuc851fGAw884CD98ccfI1Jqmc3UpEyQz4FkMqRTgYshn8fymZ57SyGbzf5mENIOz9+ngE9Atg/SLkhPQHoWeEDn3SmpSZlJnvf7ypUrTpb7IyMjY+gGN6WWmaY84l2T3c+u58D1csjOgvwsyBdBvsDRo2zgMl/ZNM59vcAJ4Dj8nzikLa5QmBLv28YCfPd3li7gPHBMwKdcEwhCJgN6FoLOWJtUgiWovALG04FXsbI44xbgw8AplbaU/Q+ZQNgGf0gA/JWhC1aQyle1eN91rPRKKKuEsjzZvSph0m2RiutpIYRrfZC8B+l7kB6jgq0CnQIy9X39v2NYQW5FeUFQlQVN/aALyiYBPw/5M5B+Dvw02vMggqcDukEl57F3xHf9H747+4bA5oD6dzqaYEgAqIDbBl9RhvZ4H/B5yL+IDp3oXhmwNkm3lTLn80VIz+O3QFqm2/rHwgeI6QDOa006LZ3Q4lHNNwK3AVeYAD4WgmHQUivYNzWyb7xufICYaavXVbuKZ6MXfwRVJ+TnXW+Am/oMnNaO3/Y5pPitcyh/a6LqtXwAt+J01LVFEzAJ0jpIj7JunJYd1wHchnBQHUSC3Uan8WPgPVgHlBiBCcAkH4Da2i2DjwGZlcy5W0K17zLwVb9NgaY4iJpawJs+BCnWwUo3SKXT4oOAP8IHCFsIfMCguj8JaQ2kOaaA227d10ALuIR1gHVxErjctPtHBd8btSR3A4MIgSePAZxqVPeQlthq7ZRuZVABCVkLuGkJpGgKsY4ybfUEVO84qhsoAzSgrUfHZ1UQVe99B6o2oMYdwg7latAq5iROGoueQExW6UE0gCe/ANIh9SZ6jqkWsN3STZ0rHWEgpkNmEvILxqQbSAXaAPxqSBswQkbpbpo6fGPR0m3GBYjBIIwqNjCTEAr4wkBQUA0AjKNrdZCu0okAqgQhTKCDhFxV91BNgsDuYx3WQZptG3xtDUCJEDKvthGuLVEJlq4gUMyAylfQERadPrhKOHTmB3Ces4RFEXNsgW8UClbZcEhxqPQIpHOord2k1ZsAH4YvYNJXN3EgWX4Ocw4LbIEvDQSJfADJtULWxSuj+BBUP4DaC6D0DkyFg6JKTVo/5brvXqzbo2zSi3af3/9bGgrW1Ar5kH4MXEzVHEHVf5CuYZC4fti9AoI/gXX8Eda5Tp9f9I4xWWsnOoc5zNMv1okjmKp/vzay3epNJ4+YmALdoWBPWTHksc5zTU1AekqYt7LcWTruTYTZQdmQHoB0GuXv/de8L8e7xrsuA8kPNtx3AZIOxp3APc7wvD6kvi+//DLh3nvPPfegWs1jf4dBGGxpOA+hlOXzgw7VBjEBnDKcs4jzDOZDOmjqD2SJQFGBx9JaSOcQ7xVO2RIJhf86AfB+Z3huHs7Ra2pra+ugtubTp0+jMLgC0e6/ftddd6EgzMO5iGwSaq4NITCdLczy6GzXAj8KnDIxAaM0AKeViwCtgbRSNgGUJwQyDaACngO4w6S/CXgb8KEvvvgiFUaw59y5c64mWXvnnXdmsijdYxjpdP6cXh6oS0g1Bb48zpFEzValA3663pcuXaoleSzFltBIlWhRmWx+v6yMcQJ4PU7A/Oyzz/qca0R33HEHrjlAEJa73rns24JqA0keTUGTjglIJpNOxsMPP6wLfiGkx53hxRbcewwXc1BAx0u4gGMNcP2nn36acq4juv322ytZ5K7UlhBo5LER3AvcTXU60wKgYbsyWTCi3LTV6wLvKesGrvrkk0/qneucCgoKHoJkHbxvYRAhMMij/zMbVzZRTMAvv/wycj4AoRv4Mk7oII4HkLp+vC6drwxt/FrgKeMBfKTe3t69UMFTgPG9B3WcQdMeBsvjhJJqnYGqjMrKSmr/tZxNWAi87o9i+1l5O6SPNjc3dzrjlPLz83HyC/aWpqk0gWZUUHZtJvxuUZmAtAYgtHycr/a6qIXz2DQI5OH1UDRjPIOPdOHChU6o+JmQXW+68JYS4vUB/bozvN5RGAImdwPZA3AC51RKrMAfyBHFGCRBnz4oe7ypqemgc4PQxYsX0YytuOWWW3BRaa3DWd0U1A/w/Z4KvBx4jcoExAitE6dzPStr3RR/QKQ5fOUJ4PsaGxtvGPC9dOnSJfyu+7ALa9MJFPx+lkU05YNBBDVdg0uwKc4eAWCZ83cC8jM+/PDDLucGpr6+Pvy+GWz/ASs9AMFvd7ax1ATEFOBjmLdSBraN3gBwHHhmQ0NDrzMB6PLly73MUYubOs3EiB/GJebyTEB6QogCnGrV6KAFR7AVeP4HH3ww4EwgunLlCn7vfACi1UQDqMb5PWUvm5qAB3HESXNomKz2GaOHv/DAgQNJZwJSf38/fvdC3J5G1iPQnf3jK5sGvx80MQHP69hxHWZ/2wN8//vvv3/BmcD0008/XWCaoEcUJ6C0eoUWeFbXBOBCzTKKJ2/YExgEXrRv374eJyLn6tWrWA+LAJRBy+o/rQUQUx0TsFwzRKzLK/bu3dseQf8nDQwMYH2sCOL0ibx9Vr6cagIKmf0nxe8pguC7vn/Pnj2bIshH088//4z1st+m+veUI6ZFFBOwLGj/XqIh0O4/HkEtJgDmcZ4/EED9e69VKk0ACoDN1u/jqrq6uv4IZjElk0msnypbwPs0wTKVCUBnYbLuMC5REA7v3r37vQhikhBgPTWrTAEFeB9NZt3C0SbAr/6DdPM4jF7/PyNotUzBU26vgAo8x+7zri3jmgAgnOJdKYrVB9QEb+zcubMrgpVOv/76K9bXGzrACwTJfw1D+9k8EzAXOE8GviEPAK+JIDXSAlhvA7yWTWztvMfiXM65PBNQrgLfUBi2v/vuu70RnPo0ODjYC0BtN3D2VNfLR5gAz04eRn17yb0p4A0RlIEI6y+la/MV1xf4fYACSEtDiP031dbWRrY/AP32229dAGCTrs1XrHHEaesFXh+gXCfooyEM2yIIrdC2ADZ/1D1eM+CagHLJ5ExTxrl9hyLsrDiDWI99EjApgPvLRwhAmQh4HV/Axwe3bt06GMEXnFKpFK4tOBgQcH95WdoEAE01nc8Xi8VEArA3gs4q7VWpfsHaCpEg4GrnoeXhOEKUw3u4yZYqbGo4Lk2KR5hZpcOsXjO9GIm0AYFycTErmoDJVLWu0Tto3bJly0CEmT36/fffkzh/UKfVE3yLkix3Xx+v5FjYaaslgiwUZxDrdbrm38guF6EAFFKAF5kEwcFPrRFcoVCrIdAiKsSlYUWqFi/zBwTXOiKsQqGOIKe1cQRmSAPkmYIv0ADY9Yuif+GYgC5Wv9kB1L6X8lAA8k3BFwhB94YNG1IRXPYJutwpINwBpNjSI/O5AhDQGUxEUIVKCRMBEGiFIQG4yX+Daf+fPacvwihUM2Czfm/KcgMLtjZZhudEY//hks2VVJlZ7tJvi5SMMApVA9gMsOVkXYvDFiO6fggFACUqJ6qKcaMBbD5uAH2AlE0fIKJxRSnUAGizcykePtWzjOo1VA2gpa0V2CVRALBbURDwQV4qiGAKVQDyLZ571JfFum0lFqTJvScvgilUytPxAxSY9boawMbD3OtFEUahaoAinQap0gA4JSzhPswSFz733HOZEVT2KZlMYr0WesGV7KpOoQRqgG6DVi4rx5EqjFWfjSCz3vqLHd9IoGyYnoBjNwpAwhBoWXlpJAChCECpv66p5ycJBCSBcwI7daZ7E83FtAiuUGgaT/WLACaYhk4MBCVk0UDKWb2c3+URVqFogOm8OqccqMW5d+Dmm29OuGsDOyw7gmUvvfRSFBCySFevXsX6LBO1cIoG8NEQ5u7KoFbLi0Kz3fODI7JGeHbwTSJADcxCq1cAWnR39yYIQUWEmVX1X2G6SYTgnhavABwL0uoF91dUV1dnR9AFp/7+fjysq0IGvIEGODYkAOwa7t/XYXl3kDzgBRF8Vgg3eczT2SqGYP97vBoA83ELrd6/WPSJCDsr6v8Jw91BRdfS6za9ewQ1qVo9RQv47plXU1NTHEFoTpcvX8aTwueJgKdoAI4wpE8Y9e4SdtgdGLK4S1gm8L8jGAO1fqy/TNmiUE1hQIwPj9AADOQk7ugRdJ9ADj+2bt26aI6AAV26dAnr7THqnsFEYTgEnBRtFl0fwk6hOcCrIjiNaBXOAKIcuq3hG4w4fTXma+lNOEHEZFs4hcA8+eqrr0a+gAZdvHgRbf+TsrMDDMxBr2v/eT7A0L5+8HN7AKdPFhncHMGqZftfB84Wga0yBwKtsN1hk4B5PsCIrd0C2HwRz924cWNlBK2afvzxx0rX89c5Qo4gCNv85bwDI7r8XUKqynfL/KmHazZt2pQbQSymH374AffuqeEB7gWXCrzHFCCmXf5niE4NWxPkJFAJ41GmtRHMUtWP9TNJdYScgQZYo3NoFEYF21WmgAq8776KzZs3Px1BPZq+//57rJcKXhg3oClo90b/qCeHvqLjA2j6B+u2bNlSFkH+J3333XdlAMo6ntq3cJroK6K4gOzgyP2oBaj2nqIdPGXYKzjw5ptvToqgd5yenh5U+Qcgmy07UdxQA7QD7xfFClSnh68Oelag6H5n+Fj6j9566638iQz++fPn8wGMRq/dV4EviwVwrq0W9QpUJsAdINof5LRQxfNLgBu2bt06IaePffvttzjDp8EZ3r6dDL7sQEkfyAdVW82rjo9H/hdkB2y2ft89eEB149tvvz2hlqh/8803OazlTzMFX6ENcKLvU7LgEMUEuIc9vqLb+inBJE8ezyo+un379gkxaPT111/jdx4FEGbJwOd1A2VdQ9896Pj1qIJDMSJI6yHpNGnpGlHFqVgp77zzzg29tjCRSBQx8KfKWrmJBvDkO4HXU3oI7pQwFUDpc/8s9ABk14uB23bs2HFDTiU7d+7cAqj4NrbESxtojeAQYjWoOnyaqwF4AsFSnDm81lT1y2YZ+cpwLmHDzp07a3bt2nVDTCrt6urKBq5hDl8eBXCTHgGjtWxTaVK8IEYFjKWrvVPIdU8VE2kMgUCsBD6ye/fukvEM/ldffVUCFX4EsitVtl3UYjU0wDHg1dQIodQJFJShKXgE0j5dLaACn6MJkKcDH6+rq6uur68fV72EM2fO5Jw9e7YasseBp5u0cKoQsDxO9Vrqqn6R2hdGAjWEoBvSR03B9wPNA95HGDVcBXxqz549D40H8E+fPo3vecoZntGTreqzmwgBRyDw2Plu3TBxxmuvvcYFUQYwy+OQ5UoV6DITQzEJnGsdbLSyfvHixdfVptSnTp2qZMJaqtsVVtWbAiP0zap498ryt956q5OxYcMGyj/gpbhbxS5IlwSJBQQYYsZVzWtREBYtWnTN9ic+efIkOq1LmM9SZDKplioQgrJ6ZpZTVODd32kBIEoZL0UvvdFdCBoUfGo8gXM0/UHgHTireeHChaFrhePHj+N0dzxqdxnwg2xwS0vD6YIvwAOnd89nvhkZeJduu+02J2Pjxo0UKZO9GM7w+cjdFMIgCmiqAXj39bO5DPFYLNY8b948ayeXtLW1lbIT1mcxzjVZUGtqCjh44Bj/34H7ZXjJhCItAAHAd1Mc0fvcPYAqCPhBhIHDF5jP0MF2QkmwE02HTMjs2bPTpqOlpSXPVeHABSwoVcLsOebzTWZH2fADOClO7ZqB3yfDTWUSUACyiHZG9UJY0SiNH7PKIjsiqt6BooegIhTMOYxHUTweN3q26EAN/wkr3t+qvEaKczbvxzoXPcf7brL/a9oNFKXYPZzpnUpGlX6dbqHIDIRNlIWXsuibbjdQkGLdzoQ0YfJ/uJFAamsndllw19HZzDlxVGFmkcqilFnSEFotnnKNOlZPGQX0lWOdzoa01xR47nCwDtBEpwbHoedj94wy0KSKCOoIQhgaQrXZgkoYdMCXPAvrcr57WITuXEHlcLCu00cQGjza7BEcRjbRAFSNQAXXVAh0zuY1BV/Q2r3pekixnz+oGRomvVtMV9Vr3I/98RXAC73LzoM4grIWb1sIxgp8iSnAOlsIKdZhynB8QG8wiKIBDPyCQ5C9F0cRKY6gDFwZ2DaFIEzwCS3e3b/nXlzKras1dFr/KA2go/5FLVRwfzdzDtfodgupZoFqGohbqIYGPsH+Yx3NxF6V7D2omkXlmMZM1T8PDMXfoUl4BruKkHaaaANbtj2MnoEJ+L6/72RdvGe8Kt9kjqBOj4SsAUyvce7BCSV/Ba6C/EBYXcSg5oIKtqkj5ikbgLSKqfwWaheRWqZ6j1gIAFPuQW2AI3lTIN0b1CSonMSwYgCU6wqQ8NunsOHcQcozVKZIVwhiKjVuMEihY0YwevgPSDG0eUy3ezjWYOsEhRRAHWPf/A93Egc1MKTj+FGEIGZhIEgJiMzPYPlmHNxgjmLTtRSCsOw+o2YWzcNvbTYIBVsVgrQGsAW+6cCSJx9nUcS/QbrfVAjCDgQZ/P1+yOM33Q9pPMizqCaAKgSxsMCntk6B2sdVyYsh/QvwC7hriY4QhCkUGi0e3/kF/AYow29pJ8YArJkAihDEwgRfVyNw8rif7X+B74Y8qs03nOGNDq0IgQ3Afff0sXecAfm72bv3UFoxpdWbtH7V32cFcfgoLcyCEKQdJ9zVHNL/AM9ijOP808MYD/CP7UvuO8ZGP+OMB3nP4T1PNfYvey/KXAPKd2XpevA27iWYANk9g8yZamblOa5A4FQtZ/jEsjybWsBTaX1sQkbcA/iACAQd0E2EQgU8RUiyKC02qGnQjS6qwPP9LQJwiLFLuUwQcBuaIiYQuBjTPc8wk/32VtYJFq104xQnmLlJMPuNNr3fUEuQQtDUVm8DeNcc/F+AAQBKd8HaIWdjwQAAAABJRU5ErkJggg==) no-repeat 50%; + background-size: 100% 100%; + content: ""; + display: inline-block; + height: var(--jd-icon-loader-size); + left: 50%; + margin-left: calc(var(--jd-icon-loader-size)/-2); + margin-top: calc(var(--jd-icon-loader-size)/-2); + opacity: .7; + position: absolute; + top: 50%; + vertical-align: middle; + width: var(--jd-icon-loader-size); + will-change: transform +} + +.jodit-file-browser-tree::-webkit-scrollbar { + width: calc(var(--jd-padding-default)/2) +} + +.jodit-file-browser-tree::-webkit-scrollbar-track { + box-shadow: inset 0 0 6px rgba(0,0,0,.3) +} + +.jodit-file-browser-tree::-webkit-scrollbar-thumb { + background-color: #a9a9a9; + outline: 1px solid #708090 +} + +.jodit-file-browser-tree_active_true { + background-color: var(--jd-color-background-filebrowser-folders); + display: flex; + flex-direction: column; + max-width: 290px; + min-width: 200px; + overflow-y: auto; + width: var(--jd-first-column); + z-index: 2 +} + +@media (max-width:480px) { + .jodit-file-browser-tree_active_true { + height: 100px; + max-width: 100%; + width: auto + } +} + +.jodit-file-browser-tree_active_true::-webkit-scrollbar { + width: calc(var(--jd-padding-default)/2) +} + +.jodit-file-browser-tree_active_true::-webkit-scrollbar-track { + box-shadow: inset 0 0 6px rgba(0,0,0,.3) +} + +.jodit-file-browser-tree_active_true::-webkit-scrollbar-thumb { + background-color: hsla(0,0%,50%,.5); + outline: 1px solid #708090 +} + +.jodit-file-browser-tree__item { + align-items: center; + border-bottom: 1px solid #474747; + color: var(--jd-color-folder-title); + display: flex; + justify-content: space-between; + min-height: 38px; + padding: calc(var(--jd-padding-default)/2) var(--jd-padding-default); + position: relative; + text-decoration: none; + transition: background-color .2s ease 0s; + word-break: break-all +} + +.jodit-file-browser-tree__item-title { + color: var(--jd-color-folder-title); + flex: 1 +} + +.jodit-file-browser-tree__item .jodit-icon_folder { + align-items: center; + display: flex; + height: calc(var(--jd-icon-size) + 4px); + justify-content: center; + margin-left: calc(var(--jd-padding-default)/2); + opacity: .3; + width: calc(var(--jd-icon-size) + 4px) +} + + .jodit-file-browser-tree__item .jodit-icon_folder svg { + height: var(--jd-icon-size); + width: var(--jd-icon-size); + fill: var(--jd-color-folder-title) !important; + stroke: var(--jd-color-folder-title) !important + } + + .jodit-file-browser-tree__item .jodit-icon_folder:hover { + background: #696969 + } + +.jodit-file-browser-tree__item:hover { + background-color: var(--jd-color-background-button-hover) +} + +.jodit-file-browser-tree__item:hover-title { + color: var(--jd-color-text) +} + +.jodit-file-browser-tree__item:hover i.jodit-icon_folder { + opacity: .6 +} + +.jodit-file-browser-tree__source-title { + background: #5a5a5a; + border-bottom: 1px solid #484848; + color: #969696; + display: block; + font-size: 12px; + padding: 2px 4px; + position: relative; + user-select: none; + word-break: break-all +} + +a + .jodit-file-browser-tree__source-title { + margin-top: var(--jd-padding-default) +} + +:root { + --jd-first-column: 31%; + --jd-cols: 4; + --jd-info-background: #e9e9e9; + --jd-icon-size: 12px; + --jd-col-size: 150px +} + +.jodit-file-browser { + display: flex; + font-family: var(--jd-font-default); + height: 100% +} + +.jodit-file-browser_no-files_true { + padding: var(--jd-padding-default) +} + +@media (max-width:480px) { + .jodit-file-browser { + flex-flow: column-reverse + } +} + +.jodit-dialog .jodit-dialog__header-title.jodit-file-browser__title-box { + align-items: center; + display: flex; + padding-left: var(--jd-padding-default) +} + +.jodit-file-browser-preview { + align-items: center; + display: flex; + height: 100%; + justify-content: center; + margin: auto; + max-height: 100%; + max-width: min(100%,1000px); + min-height: min(100%,500px); + min-width: 400px; + position: relative; + text-align: center +} + +@media (max-width:768px) { + .jodit-file-browser-preview { + height: 100%; + max-height: 100%; + max-width: 100%; + min-height: auto; + min-width: auto + } +} + +.jodit-file-browser-preview__box { + align-items: center; + display: flex; + flex-grow: 1; + justify-content: center +} + +.jodit-file-browser-preview__navigation { + cursor: pointer; + height: 100%; + left: 0; + position: absolute; + top: 0 +} + +.jodit-file-browser-preview__navigation_arrow_next { + left: auto; + right: 0 +} + +.jodit-file-browser-preview__navigation svg { + height: 45px; + position: relative; + top: 50%; + width: 45px; + fill: #9e9ba7; + transform: translateY(-50%); + transition: fill .3s linear +} + +.jodit-file-browser-preview__navigation:hover svg { + fill: #000 +} + +.jodit-file-browser-preview img { + max-height: 100%; + max-width: 100% +} + +.jodit-status-bar { + align-items: center; + background-color: var(--jd-color-panel); + border-radius: 0 0 var(--jd-border-radius-default) var(--jd-border-radius-default); + color: var(--jd-color-text-icons); + display: flex; + font-size: var(--jd-font-size-small); + height: 20px; + justify-content: flex-start; + overflow: hidden; + padding: 0 calc(var(--jd-padding-default)/2); + text-transform: uppercase +} + +.jodit-status-bar_resize-handle_true { + padding-right: 14px +} + +.jodit-status-bar:before { + content: ""; + flex: auto; + order: 1 +} + +.jodit-status-bar .jodit-status-bar__item { + line-height: 1.5714em; + margin: 0 var(--jd-padding-default) 0 0; + order: 0; + padding: 0 +} + + .jodit-status-bar .jodit-status-bar__item, .jodit-status-bar .jodit-status-bar__item > span { + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + font-size: var(--jd-font-size-small) + } + + .jodit-status-bar .jodit-status-bar__item.jodit-status-bar__item-right { + margin: 0 0 0 var(--jd-padding-default); + order: 2 + } + + .jodit-status-bar .jodit-status-bar__item a { + border-radius: 3px; + cursor: default; + text-decoration: none + } + + .jodit-status-bar .jodit-status-bar__item a:hover { + background-color: var(--jd-color-background-gray); + text-decoration: none + } + +.jodit-status-bar a.jodit-status-bar-link { + cursor: pointer +} + + .jodit-status-bar a.jodit-status-bar-link, .jodit-status-bar a.jodit-status-bar-link:hover, .jodit-status-bar a.jodit-status-bar-link:visited { + background-color: transparent; + color: var(--jd-color-text-icons) + } + + .jodit-status-bar a.jodit-status-bar-link:hover { + text-decoration: underline + } + +.jodit-workplace + .jodit-status-bar:not(:empty) { + border-top: 1px solid var(--jd-color-border) +} + +.jodit_disabled .jodit-status-bar { + opacity: .4 +} + +.jodit-drag-and-drop__file-box, .jodit_uploadfile_button { + border: 1px dashed var(--jd-color-gray); + margin: var(--jd-padding-default) 0; + overflow: hidden; + padding: 25px 0; + position: relative; + text-align: center; + width: 100% +} + + .jodit-drag-and-drop__file-box:hover, .jodit_uploadfile_button:hover { + background-color: var(--jd-color-background-button-hover) + } + + .jodit-drag-and-drop__file-box input, .jodit_uploadfile_button input { + cursor: pointer; + font-size: 400px; + inset: 0; + margin: 0; + opacity: 0; + padding: 0; + position: absolute + } + +@media (max-width:768px) { + .jodit-drag-and-drop__file-box { + max-width: 100%; + min-width: var(--jd-width-input-min); + width: auto + } +} + +:root { + --jd-anl-color-new-line: var(--jd-color-border); + --jd-anl-handle-size: 20px; + --jd-anl-handle-offset: calc(100% - var(--jd-anl-handle-size)) +} + +.jodit-add-new-line { + display: block; + height: 1px; + outline: none; + position: fixed; + top: 0; + z-index: 1 +} + + .jodit-add-new-line, .jodit-add-new-line * { + box-sizing: border-box + } + + .jodit-add-new-line:after { + background-color: var(--jd-anl-color-new-line); + content: ""; + display: block; + height: 1px; + width: 100% + } + + .jodit-add-new-line span { + align-items: center; + background: var(--jd-color-background-button-hover-opacity30); + border: 1px solid var(--jd-anl-color-new-line); + cursor: pointer; + display: flex; + height: var(--jd-anl-handle-size); + justify-content: center; + left: var(--jd-anl-handle-offset); + position: absolute; + top: 0; + transform: translateY(-50%); + width: var(--jd-anl-handle-size) + } + + .jodit-add-new-line span:hover { + background: var(--jd-color-background-button-hover) + } + + .jodit-add-new-line svg { + width: calc(var(--jd-anl-handle-size)/2); + fill: var(--jd-anl-color-new-line) + } + +.jodit-source__mode .jodit-add-new-line { + display: none !important +} + +:root { + --jd-color-picker-cell-size: 24px +} + +.jodit-color-picker { + margin: 0; + text-align: left; + user-select: none +} + +.jodit-color-picker__group { + display: flex; + flex-wrap: wrap; + margin-bottom: calc(var(--jd-padding-default)/2); + max-width: calc(var(--jd-color-picker-cell-size)*10); + white-space: normal +} + +.jodit-color-picker__color-item { + border: 1px solid transparent; + display: block; + height: var(--jd-color-picker-cell-size); + text-align: center; + text-decoration: none; + vertical-align: middle; + width: var(--jd-color-picker-cell-size) +} + + .jodit-color-picker__color-item:hover { + border-color: #000 + } + + .jodit-color-picker__color-item:active, .jodit-color-picker__color-item_active_true { + border: 2px solid var(--jd-color-border-selected) + } + +.jodit-color-picker__native svg { + display: inline-block; + height: 16px; + margin-right: 4px; + width: 16px +} + +.jodit-color-picker__native input { + appearance: none; + border: none; + height: 18px; + padding: 0; + width: 18px +} + + .jodit-color-picker__native input[type=color]::-webkit-color-swatch-wrapper { + padding: 0 + } + + .jodit-color-picker__native input input[type=color]::-webkit-color-swatch { + border: none + } + +.jodit-tabs { + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default) +} + + .jodit-tabs .jodit-tabs__buttons { + display: flex; + justify-content: center; + margin-bottom: var(--jd-padding-default); + margin-top: calc(var(--jd-padding-default)/2) + } + + .jodit-tabs .jodit-tabs__buttons > * { + cursor: pointer; + margin-left: calc(var(--jd-padding-default)/2) + } + + .jodit-tabs .jodit-tabs__buttons > :only-of-type { + width: 100% + } + + .jodit-tabs .jodit-tabs__buttons > :first-child { + margin-left: 0 + } + +@media (max-width:480px) { + .jodit-tabs .jodit-tabs__buttons { + display: block + } + + .jodit-tabs .jodit-tabs__buttons > * { + margin-left: 0; + width: 100% + } +} + +.jodit-tabs__button { + min-width: 80px +} + +.jodit-tabs__button_columns_3 { + width: 33.33333% +} + +.jodit-tabs__button_columns_2 { + width: 50% +} + +.jodit-tabs .jodit-tabs__wrapper .jodit-tab { + display: none +} + + .jodit-tabs .jodit-tabs__wrapper .jodit-tab.jodit-tab_active { + display: block + } + + .jodit-tabs .jodit-tabs__wrapper .jodit-tab.jodit-tab_empty { + min-height: 100px; + min-width: 220px + } + +.jodit_fullsize-box_true { + overflow: visible !important; + position: static !important; + z-index: var(--jd-z-index-full-size) !important +} + +body.jodit_fullsize-box_true, html.jodit_fullsize-box_true { + height: 0 !important; + overflow: hidden !important; + width: 0 !important +} + +html.jodit_fullsize-box_true { + position: fixed !important +} + +.jodit_fullsize { + inset: 0; + max-width: none !important; + position: absolute; + z-index: var(--jd-z-index-full-size) +} + + .jodit_fullsize .toolbar { + width: 100% !important + } + + .jodit_fullsize .jodit__area, .jodit_fullsize .jodit_editor { + height: 100% + } + +.jodit-ui-image-position-tab__lockMargin > svg, .jodit-ui-image-position-tab__lockSize > svg, .jodit-ui-image-properties-form__lockMargin > svg, .jodit-ui-image-properties-form__lockSize > svg { + display: inline-block; + height: var(--jd-icon-middle-size); + overflow: hidden; + width: var(--jd-icon-middle-size); + fill: var(--jd-color-dark); + line-height: var(--jd-icon-middle-size); + transform-origin: 0 0 !important; + vertical-align: middle +} + +.jodit-ui-image-position-tab__view-box, .jodit-ui-image-properties-form__view-box { + padding: var(--jd-padding-default) +} + +.jodit-ui-image-position-tab__imageView, .jodit-ui-image-properties-form__imageView { + align-items: center; + background-color: var(--jd-color-background-light-gray); + display: flex; + height: var(--jd-width-default); + justify-content: center; + margin: 0 0 var(--jd-padding-default); + padding: 0 +} + + .jodit-ui-image-position-tab__imageView img, .jodit-ui-image-properties-form__imageView img { + max-height: 100%; + max-width: 100% + } + +.jodit-ui-image-position-tab__imageSizes.jodit-form__group, .jodit-ui-image-properties-form__imageSizes.jodit-form__group { + align-items: center; + flex-direction: row; + margin: 0; + min-width: auto; + padding: 0 +} + + .jodit-ui-image-position-tab__imageSizes.jodit-form__group a, .jodit-ui-image-properties-form__imageSizes.jodit-form__group a { + cursor: pointer; + display: inline-block + } + +.jodit-ui-image-position-tab .jodit-form__group, .jodit-ui-image-properties-form .jodit-form__group { + padding: 0 +} + +.jodit-ui-image-position-tab__tabsBox, .jodit-ui-image-properties-form__tabsBox { + padding: 0 var(--jd-padding-default) +} + +.jodit-ui-image-properties-form_lock_true:before { + background-color: var(--jd-color-button-background-hover-opacity60); + content: ""; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 3 +} + +.jodit-ui-image-properties-form_lock_true:after { + animation: b 2s ease-out 0s infinite; + background: url(data:image/png;base64,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) no-repeat 50%; + background-size: 100% 100%; + background-size: var(--jd-icon-loader-size); + content: ""; + display: inline-block; + height: var(--jd-icon-loader-size); + left: 50%; + margin-left: -10px; + margin-top: -10px; + position: absolute; + top: 50%; + vertical-align: middle; + width: var(--jd-icon-loader-size); + will-change: transform +} + +.jodit-popup-inline__container { + min-width: 700px; + z-index: 1300 +} + +.jodit-paste-storage { + max-width: 600px; + padding: var(--jd-padding-default) +} + +@media (max-width:768px) { + .jodit-paste-storage { + max-width: 100% + } +} + +.jodit-paste-storage > div { + border: 1px solid var(--jd-color-border); + max-height: 300px; + max-width: 100% +} + + .jodit-paste-storage > div:first-child { + margin-bottom: var(--jd-padding-default) + } + + .jodit-paste-storage > div:first-child a { + border: 1px solid transparent; + box-sizing: border-box; + color: var(--jd-color-default); + display: block; + margin: 0; + max-width: 100%; + outline: none; + overflow: hidden; + padding: calc(var(--jd-padding-default)/2); + text-decoration: none; + text-overflow: ellipsis; + white-space: pre + } + + .jodit-paste-storage > div:first-child a.jodit_active { + background-color: var(--jd-dark-background-color); + color: var(--jd-color-white) + } + + .jodit-paste-storage > div:first-child a:focus { + outline: none + } + + .jodit-paste-storage > div:last-child { + overflow: auto; + padding: var(--jd-padding-default) + } + + .jodit-paste-storage > div:last-child li, .jodit-paste-storage > div:last-child ul { + margin: 0 + } + +.jodit-placeholder { + color: var(--jd-color-placeholder); + display: block; + left: 0; + padding: var(--jd-padding-default); + pointer-events: none; + position: absolute; + top: 0; + user-select: none !important; + width: 100%; + z-index: 1 +} + +.jodit__preview-box table { + border: none; + border-collapse: collapse; + empty-cells: show; + margin-bottom: 1em; + margin-top: 1em; + max-width: 100% +} + + .jodit__preview-box table tr { + user-select: none + } + + .jodit__preview-box table tr td, .jodit__preview-box table tr th { + border: 1px solid var(--jd-color-border); + min-width: 2em; + padding: .4em; + user-select: text; + vertical-align: middle + } + +.jodit-table-resizer { + cursor: col-resize; + margin-left: calc(var(--jd-padding-default)/-2); + padding-left: calc(var(--jd-padding-default)/2); + padding-right: calc(var(--jd-padding-default)/2); + position: absolute; + z-index: 3 +} + + .jodit-table-resizer:after { + border: 0; + content: ""; + display: block; + height: 100%; + width: 0 + } + +.jodit-table-resizer_moved { + background-color: var(--jd-color-background-selection); + z-index: 2 +} + + .jodit-table-resizer_moved:after { + border-right: 1px solid moved + } + +[data-jodit_iframe_wrapper] { + display: block; + position: relative; + user-select: none +} + + [data-jodit_iframe_wrapper] iframe { + position: relative + } + + [data-jodit_iframe_wrapper]:after { + background: transparent; + content: ""; + cursor: pointer; + display: block; + inset: 0; + position: absolute; + z-index: 1 + } + + [data-jodit_iframe_wrapper][data-jodit-wrapper_active=true] iframe { + z-index: 2 + } + +.jodit_lock [data-jodit-wrapper_active=true] iframe { + z-index: 1 +} + +:root { + --jd-viewer-width: 70px; + --jd-viewer-height: 24px; + --jd-resizer-handle-size: 10px; + --jd-resizer-border-color: #98c1f1; + --jd-resizer-handle-color: #5ba4f3; + --jd-resizer-handle-hover-color: #537ebb +} + +.jodit-resizer { + font-size: 0; + height: 100px; + left: 0; + outline: 3px solid var(--jd-resizer-border-color); + pointer-events: none; + position: absolute; + top: 0; + width: 100px +} + + .jodit-resizer, .jodit-resizer * { + box-sizing: border-box + } + + .jodit-resizer > span { + background-color: var(--jd-color-placeholder); + color: var(--jd-color-white); + display: inline-block; + font-size: 12px; + height: var(--jd-viewer-height); + left: 50%; + line-height: var(--jd-viewer-height); + margin-left: calc(var(--jd-viewer-width)/-2); + margin-top: calc(var(--jd-viewer-height)/-2); + opacity: 0; + overflow: visible; + position: absolute; + text-align: center; + top: 50%; + transition: opacity .2s linear; + width: var(--jd-viewer-width) + } + + .jodit-resizer > div { + background-color: var(--jd-resizer-handle-color); + display: inline-block; + height: var(--jd-resizer-handle-size); + pointer-events: all; + position: absolute; + width: var(--jd-resizer-handle-size); + z-index: 4 + } + + .jodit-resizer > div:hover { + background-color: var(--jd-resizer-handle-hover-color) + } + + .jodit-resizer > div:first-child { + cursor: nwse-resize; + left: calc(var(--jd-resizer-handle-size)/-2); + top: calc(var(--jd-resizer-handle-size)/-2) + } + + .jodit-resizer > div:nth-child(2) { + cursor: nesw-resize; + right: calc(var(--jd-resizer-handle-size)/-2); + top: calc(var(--jd-resizer-handle-size)/-2) + } + + .jodit-resizer > div:nth-child(3) { + bottom: calc(var(--jd-resizer-handle-size)/-2); + cursor: nwse-resize; + right: calc(var(--jd-resizer-handle-size)/-2) + } + + .jodit-resizer > div:nth-child(4) { + bottom: calc(var(--jd-resizer-handle-size)/-2); + cursor: nesw-resize; + left: calc(var(--jd-resizer-handle-size)/-2) + } + +@media (max-width:768px) { + .jodit-resizer > div :root { + --jd-resizer-handle-size: calc(var(--jd-resizer-handle-size)*2) + } +} + +:root { + --jd-height-search: 30px; + --jd-width-search: 320px; + --jd-width-search-input-box: 60%; + --jd-width-search-count-box: 15%; + --jd-transform-button-active: 0.95; + --jd-timeout-button-active: 0.1s +} + +.jodit-ui-search { + height: 0; + position: absolute; + right: 0; + top: 0; + width: 0 +} + +.jodit-ui-search_sticky_true { + position: fixed +} + +.jodit-ui-search__box { + background-color: var(--jd-color-panel); + border: solid var(--jd-color-border); + border-width: 0 0 1px 1px; + display: flex; + max-width: 100vw; + padding: calc(var(--jd-padding-default)/2); + position: absolute; + right: 0; + width: var(--jd-width-search) +} + + .jodit-ui-search__box input { + background-color: transparent; + border: 0; + height: 100%; + margin: 0; + outline: none; + padding: 0 var(--jd-padding-default); + width: 100% + } + + .jodit-ui-search__box input[data-ref=replace] { + display: none + } + + .jodit-ui-search__box input:not(:focus) + input:not(:focus) { + border-top: 1px solid var(--jd-color-border) + } + +.jodit-ui-search__buttons, .jodit-ui-search__counts, .jodit-ui-search__inputs { + height: var(--jd-height-search) +} + +.jodit-ui-search__inputs { + padding-right: calc(var(--jd-padding-default)/2); + width: var(--jd-width-search-input-box) +} + +.jodit-ui-search__counts { + border-left: 1px solid var(--jd-color-border); + color: var(--jd-color-border); + width: var(--jd-width-search-count-box) +} + +.jodit-ui-search__buttons, .jodit-ui-search__counts { + align-items: center; + display: flex; + justify-content: center +} + +.jodit-ui-search__buttons { + flex: 1; + padding-left: 0 +} + + .jodit-ui-search__buttons button { + background-color: transparent; + border: 1px solid transparent; + height: 100%; + margin-right: 1%; + width: 32% + } + + .jodit-ui-search__buttons button[data-ref=replace-btn] { + border: 1px solid var(--jd-color-border); + display: none; + margin-top: 2px; + width: 100% + } + + .jodit-ui-search__buttons button:hover { + background-color: var(--jd-color-background-button-hover) + } + + .jodit-ui-search__buttons button:focus { + border: 1px solid var(--jd-color-background-selection-opacity50) + } + + .jodit-ui-search__buttons button:active { + border: 1px solid var(--jd-color-background-selection); + transform: scale(var(--jd-transform-button-active)) + } + +.jodit-ui-search_empty-query_true [data-ref=next], .jodit-ui-search_empty-query_true [data-ref=prev] { + opacity: .5 +} + +.jodit-ui-search_replace_true .jodit-ui-search__counts, .jodit-ui-search_replace_true .jodit-ui-search__inputs { + height: calc(var(--jd-height-search)*2) +} + + .jodit-ui-search_replace_true .jodit-ui-search__counts input, .jodit-ui-search_replace_true .jodit-ui-search__inputs input { + height: 50%; + transition: background-color var(--jd-timeout-button-active) linear + } + + .jodit-ui-search_replace_true .jodit-ui-search__counts input:focus, .jodit-ui-search_replace_true .jodit-ui-search__inputs input:focus { + box-shadow: inset 0 0 3px 0 var(--jd-color-border) + } + + .jodit-ui-search_replace_true .jodit-ui-search__counts input[data-ref=replace], .jodit-ui-search_replace_true .jodit-ui-search__inputs input[data-ref=replace] { + display: block + } + +.jodit-ui-search_replace_true .jodit-ui-search__buttons { + flex-wrap: wrap +} + + .jodit-ui-search_replace_true .jodit-ui-search__buttons button[data-ref=replace-btn] { + display: block + } + +::highlight(jodit-search-result), [jd-tmp-selection] { + background-color: var(--jd-color-background-selection); + color: var(--jd-color-text-selection) +} + +.jodit-container:not(.jodit_inline) { + min-height: 100px +} + + .jodit-container:not(.jodit_inline) .jodit-workplace { + display: flex; + flex-direction: column; + height: auto; + min-height: 50px; + overflow: hidden + } + + .jodit-container:not(.jodit_inline) .jodit-editor__resize { + position: relative + } + + .jodit-container:not(.jodit_inline) .jodit-editor__resize svg { + bottom: 0; + cursor: nwse-resize; + height: 12px; + overflow: hidden; + position: absolute; + right: 0; + width: 12px; + fill: var(--jd-color-gray-dark); + user-select: none + } + +.jodit-source { + background-color: var(--jd-color-source-area); + display: none; + flex: auto; + overflow: auto; + position: relative +} + + .jodit-source, .jodit-source .jodit-source__mirror-fake { + min-height: 100% + } + + .jodit-source * { + font: 12px/normal Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace + } + +.jodit-container.jodit-source__mode .jodit-wysiwyg, .jodit-container.jodit-source__mode .jodit-wysiwyg_iframe { + display: none !important +} + +.jodit-container.jodit-source__mode .jodit-source { + display: block !important +} + +.jodit-container.jodit_split_mode .jodit-workplace { + flex-flow: row nowrap +} + +.jodit-container.jodit_split_mode .jodit-source, .jodit-container.jodit_split_mode .jodit-wysiwyg, .jodit-container.jodit_split_mode .jodit-wysiwyg_iframe { + display: block !important; + flex: 1; + width: 50% +} + +.jodit-source__mirror { + background: var(--jd-color-source-area); + border: 0; + box-shadow: none; + box-sizing: border-box; + color: #f0f0f0; + height: 100%; + line-height: 1.5; + font: 12px/normal Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace; + margin: 0; + min-height: 100%; + outline: none; + overflow: auto; + padding: var(--jd-padding-default); + resize: none; + tab-size: 2em; + white-space: pre-wrap; + width: 100%; + z-index: 2 +} + + .jodit-source__mirror::selection { + background: var(--jd-color-selection-area) + } + +.jodit_sticky-dummy_toolbar { + display: none +} + +.jodit_sticky > .jodit-toolbar__box { + border-bottom: 1px solid var(--jd-color-border); + left: auto; + position: fixed; + position: sticky; + top: 0; + z-index: 3 +} + +.jodit_sticky .jodit_sticky-dummy_toolbar { + display: block +} + +.jodit-symbols { + padding: var(--jd-padding-default); + width: 460px +} + +.jodit-symbols__container { + display: flex +} + +.jodit-symbols__container_table { + width: 88% +} + +.jodit-symbols__container_preview { + width: 12% +} + +.jodit-symbols__preview { + border: 1px solid var(--jd-color-border); + font-size: 34px; + padding: 20px 0; + text-align: center +} + +.jodit-symbols__table { + border: 0; + border-spacing: 0; + table-layout: fixed +} + + .jodit-symbols__table td { + padding: 0 + } + + .jodit-symbols__table td a { + border: 1px solid transparent; + box-sizing: border-box; + color: var(--jd-color-text); + cursor: pointer; + display: inline-block; + font-size: 16px; + height: calc(var(--jd-height-element-default)*1.2); + line-height: calc(var(--jd-height-element-default)*1.2); + text-align: center; + text-decoration: none; + vertical-align: top; + width: calc(var(--jd-width-element-default)*1.2) + } + + .jodit-symbols__table td a:focus, .jodit-symbols__table td a:hover { + outline: 2px solid var(--jd-color-border) + } + +.jodit-ui-ai-assistant { + min-width: 460px; + padding: var(--jd-padding-default); + width: 100% +} + +@media (max-width:768px) { + .jodit-ui-ai-assistant { + min-width: 100% + } +} + +.jodit-ui-ai-assistant__body { + margin-bottom: 10px +} + +.jodit-ui-ai-assistant__prompt-row { + align-items: flex-start; + display: flex; + margin-bottom: 10px +} + +.jodit-ui-ai-assistant__prompt-row-label { + margin-right: 10px +} + +.jodit-ui-ai-assistant__prompt-row-input { + flex: 1; + margin-right: 10px +} + +.jodit-ui-ai-assistant__prompt-row .jodit-icon_ai_assistant { + cursor: pointer; + height: 22px; + width: 22px +} + +.jodit-ui-ai-assistant__prompt-row .jodit-ui-button { + margin-right: 10px +} + +.jodit-ui-ai-assistant__prompt-row .jodit-ui-button_ai_assistant { + margin-right: 0; + margin-top: 20px +} + +.jodit-ui-ai-assistant__results { + border-color: var(--jd-color-label); + border-style: solid; + border-width: 1px; + height: 300px; + line-height: 1.5; + max-width: 460px; + min-height: 300px; + min-width: 100%; + overflow: auto; + padding: var(--jd-padding-default); + position: relative +} + + .jodit-ui-ai-assistant__results p { + margin: 0 0 10px + } + +.jodit-ui-ai-assistant__close { + cursor: pointer; + padding: 10px; + position: absolute; + right: 0; + top: 0 +} + +.jodit-ui-ai-assistant_hide_true { + display: none +} + +.jodit-ui-ai-assistant__spinner:before { + animation: b .6s linear infinite; + border: 1px solid #ccc; + border-radius: 50%; + border-top-color: #8817c3; + box-sizing: border-box; + content: ""; + height: 30px; + left: 50%; + margin-left: -15px; + margin-top: -15px; + position: absolute; + top: 50%; + width: 30px +} + +.jodit-ui-ai-assistant__error { + color: var(--jd-color-error) +} + +/*.jodit-context table, .jodit-wysiwyg table { + border: none; + border-collapse: collapse; + empty-cells: show; + margin-bottom: 1em; + margin-top: 1em; + max-width: 100% +} + + .jodit-context table tr, .jodit-wysiwyg table tr { + user-select: none + } + + .jodit-context table tr td, .jodit-context table tr th, .jodit-wysiwyg table tr td, .jodit-wysiwyg table tr th { + border: 1px solid var(--jd-color-border); + min-width: 2em; + padding: .4em; + user-select: text; + vertical-align: middle + }*/ + +.jodit-form__inserter { + --jd-color-table-cell-background-hover: var(--jd-color-button-background-hover) +} + + .jodit-form__inserter .jodit-form__table-creator-box { + display: flex + } + +@media (max-width:768px) { + .jodit-form__inserter .jodit-form__table-creator-box { + flex-direction: column + } +} + +.jodit-form__inserter .jodit-form__table-creator-box .jodit-form__container { + font-size: 0; + margin: 0; + min-width: 180px; + padding: 0 +} + + .jodit-form__inserter .jodit-form__table-creator-box .jodit-form__container > div > span { + border: 1px solid var(--jd-color-border); + box-sizing: border-box; + display: inline-block; + height: var(--jd-height-element-default); + margin-bottom: 2px; + margin-left: 2px; + vertical-align: top; + width: var(--jd-width-element-default) + } + + .jodit-form__inserter .jodit-form__table-creator-box .jodit-form__container > div > span:first-child { + margin-left: 0 + } + + .jodit-form__inserter .jodit-form__table-creator-box .jodit-form__container > div > span.jodit_hovered { + background: var(--jd-color-table-cell-background-hover); + border-color: var(--jd-color-table-cell-background-hover) + } + +.jodit-form__inserter .jodit-form__table-creator-box .jodit-form__options { + font-size: var(--jd-font-size-default) +} + + .jodit-form__inserter .jodit-form__table-creator-box .jodit-form__options label { + padding-top: 0; + text-align: left + } + + .jodit-form__inserter .jodit-form__table-creator-box .jodit-form__options label input { + margin-right: var(--jd-padding-default) + } + +.jodit-form__inserter label { + font-size: 14px; + margin: 0; + padding: 8px; + text-align: center +} + +.jodit-xpath { + align-items: center; + display: flex; + margin-left: calc(var(--jd-padding-default)/-2) +} + +.jodit-xpath__item { + display: flex; + height: var(--jd-font-size-small); + line-height: calc(var(--jd-font-size-small) - 1px) +} + + .jodit-xpath__item a { + color: var(--jd-color-default); + font-size: var(--jd-font-size-small); + margin-left: 2px; + outline: 0; + padding: 0 3px + } + +:root { + --jd-color-white: #fff; + --jd-color-gray: #dadada; + --jd-color-gray-dark: #a5a5a5; + --jd-color-dark: #4c4c4c; + --jd-color-blue: #b5d6fd; + --jd-color-light-blue: rgba(181,214,253,.5); + --jd-color-red: #ff3b3b; + --jd-color-light-red: rgba(255,59,59,.4); + --jd-color-default: var(--jd-color-dark); + --jd-color-text: #222; + --jd-color-label: var(--jd-color-gray-dark); + --jd-color-error: var(--jd-color-red); + --jd-color-border: var(--jd-color-gray); + --jd-color-border-dark: var(--jd-color-dark); + --jd-color-border-selected: #1e88e5; + --jd-color-border-active: #b5b5b5; + --jd-color-selection: var(--jd-color-dark); + --jd-color-selection-area: #bdbdbd; + --jd-color-separator: var(--jd-color-border); + --jd-color-placeholder: var(--jd-color-gray-dark); + --jd-color-panel: #f9f9f9; + --jd-color-resizer: #c8c8c8; + --jd-color-background-default: var(--jd-color-white); + --jd-color-background-light-gray: #f5f5f6; + --jd-color-background-gray: var(--jd-color-gray); + --jd-color-background-gray-hover: #f8f8f8; + --jd-color-background-button-hover: #ecebe9; + --jd-color-background-button-hover-opacity30: hsla(40,7%,92%,.3); + --jd-color-background-progress: #b91f1f; + --jd-color-background-active: #2196f3; + --jd-color-background-selection: #b5d6fd; + --jd-color-text-selection: var(--jd-color-white); + --jd-color-background-selection-opacity50: rgba(181,214,253,.995); + --jd-color-source-area: #323232; + --jd-color-button-background-hover: #dcdcdc; + --jd-color-button-background-hover-opacity40: hsla(0,0%,86%,.4); + --jd-color-button-background-hover-opacity60: hsla(0,0%,86%,.6); + --jd-font-default: -apple-system,blinkmacsystemfont,"Segoe UI",roboto,oxygen-sans,ubuntu,cantarell,"Helvetica Neue",sans-serif; + --jd-font-size-default: 14px; + --jd-font-size-small: 11px; + --jd-color-text-icons: rgba(0,0,0,.75); + --jd-color-icon: var(--jd-color-dark); + --jd-padding-default: 8px; + --jd-border-radius-default: 3px; + --jd-icon-tiny-size: 8px; + --jd-icon-xsmall-size: 10px; + --jd-icon-small-size: 12px; + --jd-icon-middle-size: 14px; + --jd-icon-large-size: 16px; + --jd-z-index-full-size: 100000; + --jd-z-index-popup: 10000001; + --jd-z-index-dialog-overlay: 20000003; + --jd-z-index-dialog: 20000004; + --jd-z-index-context-menu: 30000005; + --jd-z-index-tooltip: 30000006; + --jd-icon-loader-size: 48px; + --jd-width-element-default: 18px; + --jd-height-element-default: 18px; + --jd-dark-background-color: #575757; + --jd-dark-background-ligher: silver; + --jd-dark-background-darknes: #353535; + --jd-dark-border-color: #444; + --jd-dark-text-color: #d1cccc; + --jd-dark-text-color-opacity80: hsla(0,5%,81%,.8); + --jd-dark-text-color-opacity50: hsla(0,5%,81%,.5); + --jd-dark-icon-color: silver; + --jd-dark-toolbar-color: #5f5c5c; + --jd-dark-toolbar-seperator-color1: rgba(81,81,81,.41); + --jd-dark-toolbar-seperator-color2: #686767; + --jd-dark-toolbar-seperator-color-opacity80: hsla(0,0%,41%,.8); + --jd-dark-toolbar-seperator-color3: hsla(0,0%,41%,.75); + --jd-dark-color-border-selected: #152f5f; + --jd-width-default: 180px; + --jd-width-input-min: var(--jd-width-default); + --jd-input-height: 32px; + --jd-button-icon-size: 14px; + --jd-margin-v: 2px; + --jd-button-df-size: calc((var(--jd-button-icon-size) - 4px)*2); + --jd-button-size: calc(var(--jd-button-icon-size) + var(--jd-button-df-size) + var(--jd-margin-v)*2); + --jd-focus-input-box-shadow: 0 0 0 0.05rem rgba(0,123,255,.25) +} + +.jodit-wysiwyg { + outline: 0 +} + + .jodit-wysiwyg ::selection, .jodit-wysiwyg::selection { + background: #b5d6fd; + color: #4c4c4c + } + +.jodit-container:not(.jodit_inline) .jodit-wysiwyg { + margin: 0; + outline: 0; + overflow-x: auto; + padding: 8px; + position: relative +} + + .jodit-container:not(.jodit_inline) .jodit-wysiwyg img { + max-width: 100%; + position: relative + } + + .jodit-container:not(.jodit_inline) .jodit-wysiwyg jodit-media { + position: relative + } + + .jodit-container:not(.jodit_inline) .jodit-wysiwyg jodit-media * { + position: relative; + z-index: 0 + } + + .jodit-container:not(.jodit_inline) .jodit-wysiwyg jodit-media:before { + content: ""; + inset: 0; + position: absolute; + z-index: 1 + } + +:root { + --jd-switche-width: 60px; + --jd-switche-height: 32px; + --jd-switche-slider-margin: 4px; + --jd-switche-slider-size: calc(var(--jd-switche-height) - var(--jd-switche-slider-margin)*2) +} + +.jodit-form { + color: var(--jd-color-default); + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default) +} + + .jodit-form.jodit_error { + border-color: var(--jd-color-error); + box-shadow: inset 0 0 3px 0 hsla(0,0%,74%,.3) + } + +@media (max-width:768px) { + .jodit-form { + min-width: 150px + } +} + +.jodit-form button { + background: #d6d6d6; + border: none; + color: var(--jd-color-dark); + cursor: pointer; + font-size: 16px; + height: 36px; + line-height: 1; + margin-bottom: var(--jd-padding-default); + margin-top: var(--jd-padding-default); + outline: none; + padding: var(--jd-padding-default); + text-decoration: none; + transition: background .2s ease 0s +} + + .jodit-form button:hover { + background-color: var(--jd-color-background-button-hover); + color: var(--jd-color-dark) + } + + .jodit-form button:active { + background: var(--jd-color-background-button-hover); + color: var(--jd-color-dark) + } + +.jodit-form label { + align-items: center; + display: flex; + margin-bottom: var(--jd-padding-default); + text-align: left; + white-space: nowrap +} + + .jodit-form label:last-child { + margin-bottom: 0 + } + +.jodit-form .jodit-form__center { + justify-content: center +} + +.jodit .jodit-input, .jodit .jodit-select, .jodit .jodit-textarea { + appearance: none; + background-color: var(--jd-color-white); + border: 1px solid var(--jd-color-border); + border-radius: 0; + box-sizing: border-box; + font-family: var(--jd-font-default); + font-size: var(--jd-font-size-default); + height: var(--jd-input-height); + line-height: 1.2; + outline: none; + padding: 0 var(--jd-padding-default); + width: 100% +} + + .jodit .jodit-input[disabled], .jodit .jodit-select[disabled], .jodit .jodit-textarea[disabled] { + background-color: #f0f0f0; + color: var(--jd-color-border) + } + +.jodit .jodit-input_has-error_true, .jodit .jodit-select_has-error_true, .jodit .jodit-textarea_has-error_true { + border-color: var(--jd-color-red) +} + +.jodit .jodit-input:focus { + border-color: #66afe9; + outline: 0 +} + +.jodit-checkbox { + border: 0; + cursor: pointer; + height: 16px; + margin: 0 calc(var(--jd-padding-default)/2) 0 0; + outline: none; + padding: 0; + position: relative; + width: 16px; + z-index: 2 +} + +.jodit-select { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' id='Layer_1' data-name='Layer 1' viewBox='0 0 4.95 10'%3E%3Cdefs%3E%3Cstyle%3E.cls-2{fill:%23444}%3C/style%3E%3C/defs%3E%3Cpath d='M0 0h4.95v10H0z' style='fill:%23fff'/%3E%3Cpath d='m1.41 4.67 1.07-1.49 1.06 1.49zM3.54 5.33 2.48 6.82 1.41 5.33z' class='cls-2'/%3E%3C/svg%3E"); + background-position: 98% 50%; + background-repeat: no-repeat; + padding-right: calc(var(--jd-padding-default)*2) +} + +.jodit-textarea { + height: auto +} + +.jodit-form__group, .jodit-textarea { + min-width: var(--jd-width-input-min) +} + +.jodit-form__group { + display: flex; + flex-direction: column; + margin-bottom: var(--jd-padding-default) +} + + .jodit-form__group label { + margin-bottom: calc(var(--jd-padding-default)/2) + } + +.jodit-button { + align-items: center; + background-color: var(--jd-color-background-gray); + border: 0; + border-radius: .25rem; + color: var(--jd-color-default); + cursor: pointer; + display: inline-flex; + height: calc(var(--jd-padding-default)*4); + justify-content: center; + line-height: 1; + margin: 0; + padding: 0 var(--jd-padding-default); + position: relative; + text-decoration: none; + user-select: none; + width: auto +} + + .jodit-button svg { + display: inline-block; + height: 24px; + width: 24px + } + + .jodit-button svg + span { + margin-left: calc(var(--jd-padding-default)/2) + } + + .jodit-button:active, .jodit-button:focus { + outline: 0 + } + + .jodit-button.disabled { + opacity: .7 + } + +.jodit-buttons { + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + margin-bottom: var(--jd-padding-default) +} + +.jodit-button .jodit_icon, .jodit-button svg, .jodit-dialog__header .jodit_icon, .jodit-dialog__header svg { + display: inline-block; + height: 16px; + vertical-align: middle; + width: 16px +} + +.jodit-switcher-wrapper { + align-items: center; + display: flex +} + + .jodit-switcher-wrapper .jodit-switcher + span { + margin-left: var(--jd-padding-default) + } + +.jodit-switcher { + display: inline-block; + height: var(--jd-switche-height); + position: relative; + width: var(--jd-switche-width) +} + + .jodit-switcher input { + height: 0; + opacity: 0; + width: 0 + } + + .jodit-switcher .jodit-switcher__slider { + background-color: var(--jd-color-gray); + border-radius: var(--jd-switche-height); + cursor: pointer; + inset: 0; + position: absolute; + transition: .4s + } + + .jodit-switcher .jodit-switcher__slider:before { + background-color: #fff; + border-radius: 50%; + bottom: var(--jd-switche-slider-margin); + content: ""; + height: var(--jd-switche-slider-size); + left: var(--jd-switche-slider-margin); + position: absolute; + transition: .4s; + width: var(--jd-switche-slider-size) + } + +input:checked + .jodit-switcher__slider { + background-color: var(--jd-color-background-active) +} + + input:checked + .jodit-switcher__slider:before { + transform: translateX(calc(var(--jd-switche-width) - var(--jd-switche-slider-margin)*2 - var(--jd-switche-slider-size))) + } + +input:focus + .jodit-switcher__slider { + box-shadow: 0 0 1px var(--jd-color-background-active) +} + +.jodit-button-group { + display: flex +} + + .jodit-button-group input { + display: none + } + + .jodit-button-group button { + display: flex; + flex: 1; + justify-content: center; + text-align: center + } + + .jodit-button-group button + button { + margin-left: -1px + } + + .jodit-button-group button:first-child, .jodit-button-group input:first-child + button { + border-bottom-right-radius: 0; + border-right: 0; + border-top-right-radius: 0 + } + + .jodit-button-group button:last-child, .jodit-button-group input:last-child + button { + border-bottom-left-radius: 0; + border-left: 0; + border-top-left-radius: 0 + } + + .jodit-button-group input[type=checkbox]:checked + button, .jodit-button-group input[type=checkbox]:not(:checked) + button + button { + background-image: none; + box-shadow: inset 0 2px 4px rgba(0,0,0,.3),0 1px 2px rgba(0,0,0,.05) + } + +.jodit_text_icons .jodit_icon { + font-size: var(--jd-font-size-default); + width: auto +} + + .jodit_text_icons .jodit_icon:first-letter { + text-transform: uppercase + } + +.jodit_text_icons .jodit-tabs .jodit-tabs__buttons > a { + font-family: var(--jd-font-default); + width: auto +} + + .jodit_text_icons .jodit-tabs .jodit-tabs__buttons > a i { + width: auto + } + +.jodit_text_icons.jodit-dialog .jodit-button, .jodit_text_icons.jodit-dialog .jodit-dialog__header a { + color: var(--jd-color-text-icons); + font-family: var(--jd-font-default); + padding: var(--jd-padding-default); + width: auto +} + + .jodit_text_icons.jodit-dialog .jodit-button .jodit_icon, .jodit_text_icons.jodit-dialog .jodit-dialog__header a .jodit_icon { + width: auto + } + +.jodit-grid { + display: flex; + width: 100% +} + + .jodit-grid.jodit-grid_column { + flex-direction: column + } + +@media (max-width:480px) { + .jodit-grid.jodit-grid_xs-column { + flex-direction: column + } +} + +.jodit-grid [class*=jodit_col-] { + flex: 1 1 auto +} + +.jodit-grid .jodit_col-lg-5-5 { + width: 100% +} + +.jodit-grid .jodit_col-lg-4-5 { + width: 80% +} + +.jodit-grid .jodit_col-lg-3-5 { + width: 60% +} + +.jodit-grid .jodit_col-lg-2-5 { + width: 40% +} + +.jodit-grid .jodit_col-lg-1-5 { + width: 20% +} + +.jodit-grid .jodit_col-lg-4-4 { + width: 100% +} + +.jodit-grid .jodit_col-lg-3-4 { + width: 75% +} + +.jodit-grid .jodit_col-lg-2-4 { + width: 50% +} + +.jodit-grid .jodit_col-lg-1-4 { + width: 25% +} + +@media (max-width:992px) { + .jodit-grid .jodit_col-md-5-5 { + width: 100% + } + + .jodit-grid .jodit_col-md-4-5 { + width: 80% + } + + .jodit-grid .jodit_col-md-3-5 { + width: 60% + } + + .jodit-grid .jodit_col-md-2-5 { + width: 40% + } + + .jodit-grid .jodit_col-md-1-5 { + width: 20% + } + + .jodit-grid .jodit_col-md-4-4 { + width: 100% + } + + .jodit-grid .jodit_col-md-3-4 { + width: 75% + } + + .jodit-grid .jodit_col-md-2-4 { + width: 50% + } + + .jodit-grid .jodit_col-md-1-4 { + width: 25% + } +} + +@media (max-width:768px) { + .jodit-grid .jodit_col-sm-5-5 { + width: 100% + } + + .jodit-grid .jodit_col-sm-4-5 { + width: 80% + } + + .jodit-grid .jodit_col-sm-3-5 { + width: 60% + } + + .jodit-grid .jodit_col-sm-2-5 { + width: 40% + } + + .jodit-grid .jodit_col-sm-1-5 { + width: 20% + } + + .jodit-grid .jodit_col-sm-4-4 { + width: 100% + } + + .jodit-grid .jodit_col-sm-3-4 { + width: 75% + } + + .jodit-grid .jodit_col-sm-2-4 { + width: 50% + } + + .jodit-grid .jodit_col-sm-1-4 { + width: 25% + } +} + +@media (max-width:480px) { + .jodit-grid .jodit_col-xs-5-5 { + width: 100% + } + + .jodit-grid .jodit_col-xs-4-5 { + width: 80% + } + + .jodit-grid .jodit_col-xs-3-5 { + width: 60% + } + + .jodit-grid .jodit_col-xs-2-5 { + width: 40% + } + + .jodit-grid .jodit_col-xs-1-5 { + width: 20% + } + + .jodit-grid .jodit_col-xs-4-4 { + width: 100% + } + + .jodit-grid .jodit_col-xs-3-4 { + width: 75% + } + + .jodit-grid .jodit_col-xs-2-4 { + width: 50% + } + + .jodit-grid .jodit_col-xs-1-4 { + width: 25% + } +} + +@keyframes b { + to { + transform: rotate(1turn) + } +} + +.jodit-icon_loader { + animation: b 2s ease-out 0s infinite; + background: url(data:image/png;base64,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) no-repeat 50%; + background-size: 100% 100%; + display: inline-block; + height: var(--jd-icon-loader-size); + vertical-align: middle; + width: var(--jd-icon-loader-size); + will-change: transform +} + +.jodit-icon { + background: 50% no-repeat; + background-size: contain; + height: 14px; + overflow: visible; + width: 14px; + fill: var(--jd-color-icon); + transform-origin: 0 0 !important +} + +.jodit-icon, .jodit-icon_close { + stroke: var(--jd-color-icon) +} + +svg.jodit-icon { + height: auto; + isolation: isolate +} + +.jodit-icon_text { + font-size: 14px +} + +.jodit, .jodit *, .jodit-container, .jodit-container * { + box-sizing: border-box +} + + .jodit .jodit-workplace, .jodit-container .jodit-workplace { + overflow: auto; + position: relative + } + + .jodit .jodit-workplace .jodit-wysiwyg, .jodit .jodit-workplace .jodit-wysiwyg_iframe, .jodit-container .jodit-workplace .jodit-wysiwyg, .jodit-container .jodit-workplace .jodit-wysiwyg_iframe { + height: 100%; + width: 100% + } + +.jodit-wysiwyg [contenteditable=false] { + cursor: default +} + +.jodit-container:not(.jodit_inline) { + background-color: var(--jd-color-background-light-gray); + border: 1px solid var(--jd-color-border); + border-radius: var(--jd-border-radius-default) +} + + .jodit-container:not(.jodit_inline) .jodit-workplace { + background-color: var(--jd-color-background-default); + border: 0 solid var(--jd-color-border); + max-height: 100% + } + + .jodit-container:not(.jodit_inline).jodit_disabled { + background: var(--jd-color-background-gray) + } + + .jodit-container:not(.jodit_inline).jodit_disabled .jodit-workplace { + opacity: .4 + } + +.jodit_disabled, .jodit_lock { + user-select: none !important +} + +.jodit_hidden { + display: none !important +} + +.jodit_vertical_middle { + align-items: center; + display: flex +} + +.jodit-box { + background: 0 0; + border: 0; + float: none; + height: auto; + margin: 0; + max-width: none; + outline: 0; + padding: 0; + position: static; + width: auto +} + +.jodit-dialog_theme_dark, .jodit_theme_dark { + --jd-color-border: #6b6b6b; + --jd-color-text: var(--jd-dark-text-color) +} + + .jodit-dialog_theme_dark .jodit-toolbar-collection_mode_horizontal, .jodit-dialog_theme_dark .jodit-toolbar-editor-collection_mode_horizontal, .jodit_theme_dark .jodit-toolbar-collection_mode_horizontal, .jodit_theme_dark .jodit-toolbar-editor-collection_mode_horizontal { + background-image: repeating-linear-gradient(transparent 0,transparent calc(var(--jd-button-size) - 1px),var(--jd-color-border) var(--jd-button-size)) + } + + .jodit-dialog_theme_dark .jodit-toolbar-collection_mode_horizontal:after, .jodit-dialog_theme_dark .jodit-toolbar-editor-collection_mode_horizontal:after, .jodit_theme_dark .jodit-toolbar-collection_mode_horizontal:after, .jodit_theme_dark .jodit-toolbar-editor-collection_mode_horizontal:after { + background-color: var(--jd-color-border) + } + + .jodit-dialog_theme_dark .jodit-toolbar__box:not(:empty), .jodit_theme_dark .jodit-toolbar__box:not(:empty) { + border-color: var(--jd-color-border) + } + + .jodit-dialog_theme_dark .jodit-toolbar__box:not(:empty) .jodit-toolbar-editor-collection:after, .jodit_theme_dark .jodit-toolbar__box:not(:empty) .jodit-toolbar-editor-collection:after { + background-color: var(--jd-color-border) + } + + .jodit-dialog_theme_dark .jodit-ui-group_separated_true:not(:last-child,.jodit-ui-group_before-spacer_true):after, .jodit_theme_dark .jodit-ui-group_separated_true:not(:last-child,.jodit-ui-group_before-spacer_true):after { + border-right-color: var(--jd-color-border) + } + + .jodit-dialog_theme_dark.jodit-container, .jodit_theme_dark.jodit-container { + background-color: var(--jd-dark-background-color); + border-color: var(--jd-color-border) + } + + .jodit-dialog_theme_dark.jodit-container.jodit_disabled, .jodit_theme_dark.jodit-container.jodit_disabled { + background-color: var(--jd-dark-background-color) + } + + .jodit-dialog_theme_dark.jodit-container:not(.jodit_inline) .jodit-workplace, .jodit_theme_dark.jodit-container:not(.jodit_inline) .jodit-workplace { + border-color: var(--jd-dark-background-color) + } + + .jodit-dialog_theme_dark .jodit-popup__content, .jodit_theme_dark .jodit-popup__content { + background: var(--jd-dark-background-color) + } + + .jodit-dialog_theme_dark .jodit-toolbar-button, .jodit-dialog_theme_dark .jodit-toolbar-select, .jodit-dialog_theme_dark .jodit-ui-button, .jodit_theme_dark .jodit-toolbar-button, .jodit_theme_dark .jodit-toolbar-select, .jodit_theme_dark .jodit-ui-button { + --jd-color-icon: var(--jd-dark-icon-color) + } + + .jodit-dialog_theme_dark .jodit-toolbar-button__text, .jodit-dialog_theme_dark .jodit-toolbar-select__text, .jodit-dialog_theme_dark .jodit-ui-button__text, .jodit_theme_dark .jodit-toolbar-button__text, .jodit_theme_dark .jodit-toolbar-select__text, .jodit_theme_dark .jodit-ui-button__text { + color: var(--jd-color-text) + } + + .jodit-dialog_theme_dark .jodit-toolbar-button .jodit-icon, .jodit-dialog_theme_dark .jodit-toolbar-button svg, .jodit-dialog_theme_dark .jodit-toolbar-button__trigger, .jodit-dialog_theme_dark .jodit-toolbar-select .jodit-icon, .jodit-dialog_theme_dark .jodit-toolbar-select svg, .jodit-dialog_theme_dark .jodit-toolbar-select__trigger, .jodit-dialog_theme_dark .jodit-ui-button .jodit-icon, .jodit-dialog_theme_dark .jodit-ui-button svg, .jodit-dialog_theme_dark .jodit-ui-button__trigger, .jodit_theme_dark .jodit-toolbar-button .jodit-icon, .jodit_theme_dark .jodit-toolbar-button svg, .jodit_theme_dark .jodit-toolbar-button__trigger, .jodit_theme_dark .jodit-toolbar-select .jodit-icon, .jodit_theme_dark .jodit-toolbar-select svg, .jodit_theme_dark .jodit-toolbar-select__trigger, .jodit_theme_dark .jodit-ui-button .jodit-icon, .jodit_theme_dark .jodit-ui-button svg, .jodit_theme_dark .jodit-ui-button__trigger { + fill: var(--jd-color-icon); + stroke: var(--jd-color-icon) + } + + .jodit-dialog_theme_dark .jodit-toolbar-button:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-toolbar-button__button:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-toolbar-button__text:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-toolbar-button__trigger:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-toolbar-select:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-toolbar-select__button:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-toolbar-select__text:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-toolbar-select__trigger:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-ui-button:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-ui-button__button:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-ui-button__text:hover:not([disabled]), .jodit-dialog_theme_dark .jodit-ui-button__trigger:hover:not([disabled]), .jodit_theme_dark .jodit-toolbar-button:hover:not([disabled]), .jodit_theme_dark .jodit-toolbar-button__button:hover:not([disabled]), .jodit_theme_dark .jodit-toolbar-button__text:hover:not([disabled]), .jodit_theme_dark .jodit-toolbar-button__trigger:hover:not([disabled]), .jodit_theme_dark .jodit-toolbar-select:hover:not([disabled]), .jodit_theme_dark .jodit-toolbar-select__button:hover:not([disabled]), .jodit_theme_dark .jodit-toolbar-select__text:hover:not([disabled]), .jodit_theme_dark .jodit-toolbar-select__trigger:hover:not([disabled]), .jodit_theme_dark .jodit-ui-button:hover:not([disabled]), .jodit_theme_dark .jodit-ui-button__button:hover:not([disabled]), .jodit_theme_dark .jodit-ui-button__text:hover:not([disabled]), .jodit_theme_dark .jodit-ui-button__trigger:hover:not([disabled]) { + --jd-color-text: var(--jd-dark-background-color); + --jd-color-icon: var(--jd-dark-background-color); + background-color: var(--jd-dark-background-ligher); + color: var(--jd-dark-background-color) + } + + .jodit-dialog_theme_dark .jodit-status-bar, .jodit-dialog_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty), .jodit_theme_dark .jodit-status-bar, .jodit_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) { + background-color: var(--jd-dark-toolbar-color); + border-color: var(--jd-color-border); + color: var(--jd-dark-text-color) + } + + .jodit-dialog_theme_dark .jodit-status-bar, .jodit-dialog_theme_dark .jodit-status-bar .jodit-status-bar__item a, .jodit-dialog_theme_dark .jodit-status-bar .jodit-status-bar__item span, .jodit-dialog_theme_dark .jodit-status-bar a.jodit-status-bar-link, .jodit-dialog_theme_dark .jodit-status-bar a.jodit-status-bar-link:hover, .jodit-dialog_theme_dark .jodit-status-bar a.jodit-status-bar-link:visited, .jodit-dialog_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty), .jodit-dialog_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) .jodit-status-bar__item a, .jodit-dialog_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) .jodit-status-bar__item span, .jodit-dialog_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) a.jodit-status-bar-link, .jodit-dialog_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) a.jodit-status-bar-link:hover, .jodit-dialog_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) a.jodit-status-bar-link:visited, .jodit_theme_dark .jodit-status-bar, .jodit_theme_dark .jodit-status-bar .jodit-status-bar__item a, .jodit_theme_dark .jodit-status-bar .jodit-status-bar__item span, .jodit_theme_dark .jodit-status-bar a.jodit-status-bar-link, .jodit_theme_dark .jodit-status-bar a.jodit-status-bar-link:hover, .jodit_theme_dark .jodit-status-bar a.jodit-status-bar-link:visited, .jodit_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty), .jodit_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) .jodit-status-bar__item a, .jodit_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) .jodit-status-bar__item span, .jodit_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) a.jodit-status-bar-link, .jodit_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) a.jodit-status-bar-link:hover, .jodit_theme_dark .jodit-workplace + .jodit-status-bar:not(:empty) a.jodit-status-bar-link:visited { + color: var(--jd-dark-text-color) + } + + .jodit-dialog_theme_dark .jodit-toolbar__box:not(:empty), .jodit_theme_dark .jodit-toolbar__box:not(:empty) { + background: var(--jd-dark-toolbar-color) + } + + .jodit-dialog_theme_dark .jodit-icon-close, .jodit_theme_dark .jodit-icon-close { + stroke: var(--jd-dark-icon-color) + } + + .jodit-dialog_theme_dark .jodit-wysiwyg, .jodit-dialog_theme_dark .jodit-wysiwyg_iframe, .jodit_theme_dark .jodit-wysiwyg, .jodit_theme_dark .jodit-wysiwyg_iframe { + background-color: var(--jd-dark-background-color); + color: var(--jd-dark-text-color) + } + + .jodit-dialog_theme_dark .jodit-form input[type=text], .jodit-dialog_theme_dark .jodit-form input[type=url], .jodit-dialog_theme_dark .jodit-form textarea, .jodit_theme_dark .jodit-form input[type=text], .jodit_theme_dark .jodit-form input[type=url], .jodit_theme_dark .jodit-form textarea { + background-color: var(--jd-dark-toolbar-seperator-color1); + border-color: var(--jd-dark-toolbar-seperator-color2); + color: var(--jd-dark-text-color) + } + + .jodit-dialog_theme_dark .jodit-form button, .jodit_theme_dark .jodit-form button { + background-color: var(--jd-dark-toolbar-seperator-color3); + color: var(--jd-dark-text-color) + } + + .jodit-dialog_theme_dark .jodit-placeholder, .jodit_theme_dark .jodit-placeholder { + color: var(--jd-dark-text-color-opacity80) + } + + .jodit-dialog_theme_dark .jodit-drag-and-drop__file-box, .jodit-dialog_theme_dark .jodit_uploadfile_button, .jodit_theme_dark .jodit-drag-and-drop__file-box, .jodit_theme_dark .jodit_uploadfile_button { + color: var(--jd-dark-text-color) + } + + .jodit-dialog_theme_dark .jodit-drag-and-drop__file-box:hover, .jodit-dialog_theme_dark .jodit_uploadfile_button:hover, .jodit_theme_dark .jodit-drag-and-drop__file-box:hover, .jodit_theme_dark .jodit_uploadfile_button:hover { + background-color: var(--jd-dark-toolbar-seperator-color3) + } + + .jodit-dialog_theme_dark .jodit-add-new-line:before, .jodit_theme_dark .jodit-add-new-line:before { + border-top-color: var(--jd-dark-toolbar-seperator-color2) + } + + .jodit-dialog_theme_dark .jodit-add-new-line span, .jodit_theme_dark .jodit-add-new-line span { + background: var(--jd-dark-toolbar-seperator-color3); + border-color: var(--jd-dark-toolbar-seperator-color2) + } + + .jodit-dialog_theme_dark .jodit-add-new-line span svg, .jodit_theme_dark .jodit-add-new-line span svg { + fill: var(--jd-dark-text-color) + } + + .jodit-dialog_theme_dark .jodit-resizer > i, .jodit_theme_dark .jodit-resizer > i { + background: var(--jd-dark-toolbar-seperator-color3); + border-color: var(--jd-dark-icon-color) + } + + .jodit-dialog_theme_dark .jodit-input, .jodit-dialog_theme_dark .jodit-select, .jodit_theme_dark .jodit-input, .jodit_theme_dark .jodit-select { + background-color: var(--jd-dark-background-ligher); + border-color: var(--jd-dark-border-color); + color: var(--jd-dark-border-color) + } + + .jodit-dialog_theme_dark.jodit-dialog, .jodit_theme_dark.jodit-dialog { + background-color: var(--jd-dark-background-color) + } + + .jodit-dialog_theme_dark.jodit-dialog .jodit-dialog__header, .jodit-dialog_theme_dark.jodit-dialog .jodit-filebrowser__files.active .jodit-filebrowser__files-item, .jodit_theme_dark.jodit-dialog .jodit-dialog__header, .jodit_theme_dark.jodit-dialog .jodit-filebrowser__files.active .jodit-filebrowser__files-item { + border-color: var(--jd-dark-border-color) + } + + .jodit-dialog_theme_dark.jodit-dialog .jodit-filebrowser__files.active .jodit-filebrowser__files-item-info, .jodit_theme_dark.jodit-dialog .jodit-filebrowser__files.active .jodit-filebrowser__files-item-info { + background-color: var(--jd-dark-text-color) + } diff --git a/Wino.Mail/JS/libs/jodit.min.js b/Wino.Mail/JS/libs/jodit.min.js new file mode 100644 index 00000000..75b640a5 --- /dev/null +++ b/Wino.Mail/JS/libs/jodit.min.js @@ -0,0 +1,10 @@ +/*! + * jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser + * Author: Chupurnov (https://xdsoft.net/jodit/) + * Version: v4.2.5 + * Url: https://xdsoft.net/jodit/ + * License(s): MIT + */ + + +((t,e)=>{if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var s=e();for(var i in s)("object"==typeof exports?exports:t)[i]=s[i]}})(self,(function(){return function(){var t,e={26318(t,e,s){"use strict";function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?t=>typeof t:t=>t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t,i(t)}function r(t,e,s){var r=s.value;if("function"!=typeof r)throw new TypeError("@boundMethod decorator can only be applied to methods not: ".concat(i(r)));var o=!1;return{configurable:!0,get(){if(o||this===t.prototype||this.hasOwnProperty(e)||"function"!=typeof r)return r;var s=r.bind(this);return o=!0,Object.defineProperty(this,e,{configurable:!0,get(){return s},set(t){r=t,delete this[e]}}),o=!1,s},set(t){r=t}}}function o(t){var e;return"undefined"!=typeof Reflect&&"function"==typeof Reflect.ownKeys?e=Reflect.ownKeys(t.prototype):(e=Object.getOwnPropertyNames(t.prototype),"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(t.prototype)))),e.forEach((e=>{if("constructor"!==e){var s=Object.getOwnPropertyDescriptor(t.prototype,e);"function"==typeof s.value&&Object.defineProperty(t.prototype,e,r(t,e,s))}})),t}function n(){return 1===arguments.length?o.apply(void 0,arguments):r.apply(void 0,arguments)}s.d(e,{Ay(){return n}})},36115(t,e,s){"use strict";s.d(e,{T(){return r}});var i=s(17352);class r{constructor(){this.cache=!0,this.defaultTimeout=100,this.namespace="",this.safeMode=!1,this.width="auto",this.height="auto",this.safePluginsList=["about","enter","backspace","size","bold","hotkeys"],this.license="",this.preset="custom",this.presets={inline:{inline:!0,toolbar:!1,toolbarInline:!0,toolbarInlineForSelection:!0,showXPathInStatusbar:!1,showCharsCounter:!1,showWordsCounter:!1,showPlaceholder:!1}},this.ownerDocument="undefined"!=typeof document?document:null,this.ownerWindow="undefined"!=typeof window?window:null,this.shadowRoot=null,this.zIndex=0,this.readonly=!1,this.disabled=!1,this.activeButtonsInReadOnly=["source","fullsize","print","about","dots","selectall"],this.allowCommandsInReadOnly=["selectall","preview","print"],this.toolbarButtonSize="middle",this.allowTabNavigation=!1,this.inline=!1,this.theme="default",this.saveModeInStorage=!1,this.editorClassName=!1,this.className=!1,this.style=!1,this.containerStyle=!1,this.styleValues={},this.triggerChangeEvent=!0,this.direction="",this.language="auto",this.debugLanguage=!1,this.i18n=!1,this.tabIndex=-1,this.toolbar=!0,this.statusbar=!0,this.showTooltip=!0,this.showTooltipDelay=200,this.useNativeTooltip=!1,this.defaultActionOnPaste=i.INSERT_AS_HTML,this.enter=i.PARAGRAPH,this.iframe=!1,this.editHTMLDocumentMode=!1,this.enterBlock="br"!==this.enter?this.enter:i.PARAGRAPH,this.defaultMode=i.MODE_WYSIWYG,this.useSplitMode=!1,this.colors={greyscale:["#000000","#434343","#666666","#999999","#B7B7B7","#CCCCCC","#D9D9D9","#EFEFEF","#F3F3F3","#FFFFFF"],palette:["#980000","#FF0000","#FF9900","#FFFF00","#00F0F0","#00FFFF","#4A86E8","#0000FF","#9900FF","#FF00FF"],full:["#E6B8AF","#F4CCCC","#FCE5CD","#FFF2CC","#D9EAD3","#D0E0E3","#C9DAF8","#CFE2F3","#D9D2E9","#EAD1DC","#DD7E6B","#EA9999","#F9CB9C","#FFE599","#B6D7A8","#A2C4C9","#A4C2F4","#9FC5E8","#B4A7D6","#D5A6BD","#CC4125","#E06666","#F6B26B","#FFD966","#93C47D","#76A5AF","#6D9EEB","#6FA8DC","#8E7CC3","#C27BA0","#A61C00","#CC0000","#E69138","#F1C232","#6AA84F","#45818E","#3C78D8","#3D85C6","#674EA7","#A64D79","#85200C","#990000","#B45F06","#BF9000","#38761D","#134F5C","#1155CC","#0B5394","#351C75","#733554","#5B0F00","#660000","#783F04","#7F6000","#274E13","#0C343D","#1C4587","#073763","#20124D","#4C1130"]},this.colorPickerDefaultTab="background",this.imageDefaultWidth=300,this.removeButtons=[],this.disablePlugins=[],this.extraPlugins=[],this.extraButtons=[],this.extraIcons={},this.createAttributes={table:{style:"border-collapse:collapse;width: 100%;"}},this.sizeLG=900,this.sizeMD=700,this.sizeSM=400,this.buttons=[{group:"font-style",buttons:[]},{group:"list",buttons:[]},{group:"font",buttons:[]},"---",{group:"script",buttons:[]},{group:"media",buttons:[]},"\n",{group:"state",buttons:[]},{group:"clipboard",buttons:[]},{group:"insert",buttons:[]},{group:"indent",buttons:[]},{group:"color",buttons:[]},{group:"form",buttons:[]},"---",{group:"history",buttons:[]},{group:"search",buttons:[]},{group:"source",buttons:[]},{group:"other",buttons:[]},{group:"info",buttons:[]}],this.events={},this.textIcons=!1,this.showBrowserColorPicker=!0}static get defaultOptions(){return r.__defaultOptions||(r.__defaultOptions=new r),r.__defaultOptions}}r.prototype.controls={}},86302(t,e,s){"use strict";s.d(e,{j(){return h}});var i=s(17352),r=s(59146),o=s(69052),n=s(2461),a=s(25376),l=s(92039),c=s(98253),u=s(35642),d=(s(28712),s(21567));class h{constructor(){this.timers=new Map,this.__callbacks=new Map,this.__queueMicrotaskNative=queueMicrotask?.bind(window)??Promise.resolve().then.bind(Promise.resolve()),this.promisesRejections=new Set,this.requestsIdle=new Set,this.requestsRaf=new Set,this.requestIdleCallbackNative=window.requestIdleCallback?.bind(window)??((t,e)=>{const s=Date.now();return this.setTimeout((()=>{t({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-s))}})}),e?.timeout??1)}),this.__cancelIdleCallbackNative=window.cancelIdleCallback?.bind(window)??(t=>{this.clearTimeout(t)}),this.isDestructed=!1}delay(t){return this.promise((e=>this.setTimeout(e,t)))}setTimeout(t,e,...s){if(this.isDestructed)return 0;let i={};(0,u.R)(e)&&(e=0),(0,n.E)(e)||(i=e,e=i.timeout||0),i.label&&this.clearLabel(i.label);const o=(0,r.w)(t,e,...s),a=i.label||o;return this.timers.set(a,o),this.__callbacks.set(a,t),o}updateTimeout(t,e){if(!t||!this.timers.has(t))return null;const s=this.__callbacks.get(t);return this.setTimeout(s,{label:t,timeout:e})}clearLabel(t){t&&this.timers.has(t)&&((0,r.D)(this.timers.get(t)),this.timers.delete(t),this.__callbacks.delete(t))}clearTimeout(t){if((0,c.K)(t))return this.clearLabel(t);(0,r.D)(t),this.timers.delete(t),this.__callbacks.delete(t)}debounce(t,e,s=!1){let i=0,n=!1;const c=[],u=(...e)=>{if(!n){i=0;const s=t(...e);if(n=!0,c.length){const t=()=>{c.forEach((t=>t())),c.length=0};(0,l.y)(s)?s.finally(t):t()}}},d=(...a)=>{n=!1,e?(!i&&s&&u(...a),(0,r.D)(i),i=this.setTimeout((()=>u(...a)),(0,o.T)(e)?e():e),this.timers.set(t,i)):u(...a)};return(0,a.Q)(e)&&e.promisify?(...t)=>{const e=this.promise((t=>{c.push(t)}));return d(...t),e}:d}microDebounce(t,e=!1){let s,i=!1,r=!0;return(...o)=>{s=o,i?r=!0:(r=!0,e&&(r=!1,t(...s)),i=!0,this.__queueMicrotaskNative((()=>{i=!1,this.isDestructed||r&&t(...s)})))}}throttle(t,e,s=!1){let i,r,n,a=null;return(...s)=>{i=!0,n=s,e?a||(r=()=>{i?(t(...n),i=!1,a=this.setTimeout(r,(0,o.T)(e)?e():e),this.timers.set(r,a)):a=null},r()):t(...n)}}promise(t){let e=()=>{};const s=new Promise(((s,i)=>{e=()=>i((0,d.h)()),this.promisesRejections.add(e),t(s,i)}));return s.finally||"undefined"==typeof process||i.IS_ES_NEXT||(s.finally=t=>(s.then(t).catch(t),s)),s.finally((()=>{this.promisesRejections.delete(e)})).catch((()=>null)),s.rejectCallback=e,s}promiseState(t){if(t.status)return t.status;if(!Promise.race)return new Promise((e=>{t.then((t=>(e("fulfilled"),t)),(t=>{throw e("rejected"),t})),this.setTimeout((()=>{e("pending")}),100)}));const e={};return Promise.race([t,e]).then((t=>t===e?"pending":"fulfilled"),(()=>"rejected"))}requestIdleCallback(t,e){const s=this.requestIdleCallbackNative(t,e);return this.requestsIdle.add(s),s}requestIdlePromise(t){return this.promise((e=>{const s=this.requestIdleCallback((()=>e(s)),t)}))}cancelIdleCallback(t){return this.requestsIdle.delete(t),this.__cancelIdleCallbackNative(t)}requestAnimationFrame(t){const e=requestAnimationFrame(t);return this.requestsRaf.add(e),e}cancelAnimationFrame(t){this.requestsRaf.delete(t),cancelAnimationFrame(t)}clear(){this.requestsIdle.forEach((t=>this.cancelIdleCallback(t))),this.requestsRaf.forEach((t=>this.cancelAnimationFrame(t))),this.timers.forEach((t=>(0,r.D)(this.timers.get(t)))),this.timers.clear(),this.promisesRejections.forEach((t=>t())),this.promisesRejections.clear()}destruct(){this.clear(),this.isDestructed=!0}}},64890(t,e,s){"use strict";s.d(e,{j(){return i.j}});var i=s(86302)},37474(t,e,s){"use strict";s.d(e,{u(){return l}});var i=s(64890),r=s(64567),o=s(56298),n=s(65147);const a=new Map;class l{get componentName(){return this.__componentName||(this.__componentName="jodit-"+(0,n.kebabCase)(((0,n.isFunction)(this.className)?this.className():"")||(0,n.getClassName)(this))),this.__componentName}getFullElName(t,e,s){const i=[this.componentName];return t&&(t=t.replace(/[^a-z0-9-]/gi,"-"),i.push("__"+t)),e&&(i.push("_",e),i.push("_",(0,n.isVoid)(s)?"true":""+s)),i.join("")}get ownerDocument(){return this.ow.document}get od(){return this.ownerDocument}get ow(){return this.ownerWindow}get(t,e){return(0,n.get)(t,e||this)}get isReady(){return this.componentStatus===r.f.ready}get isDestructed(){return this.componentStatus===r.f.destructed}get isInDestruct(){return r.f.beforeDestruct===this.componentStatus||r.f.destructed===this.componentStatus}bindDestruct(t){return t.hookStatus(r.f.beforeDestruct,(()=>!this.isInDestruct&&this.destruct())),this}constructor(){this.async=new i.j,this.ownerWindow=window,this.__componentStatus=r.f.beforeInit,this.uid="jodit-uid-"+(0,o.w9)()}destruct(){this.setStatus(r.f.destructed),this.async&&(this.async.destruct(),this.async=void 0),a.get(this)&&a.delete(this),this.ownerWindow=void 0}get componentStatus(){return this.__componentStatus}set componentStatus(t){this.setStatus(t)}setStatus(t){return this.setStatusComponent(t,this)}setStatusComponent(t,e){if(t===this.__componentStatus)return;e===this&&(this.__componentStatus=t);const s=Object.getPrototypeOf(this);s&&(0,n.isFunction)(s.setStatusComponent)&&s.setStatusComponent(t,e);const i=a.get(this),r=i?.[t];r&&r.length&&r.forEach((t=>t(e)))}hookStatus(t,e){let s=a.get(this);s||(s={},a.set(this,s)),s[t]||(s[t]=[]),s[t].push(e)}static isInstanceOf(t,e){return t instanceof e}}l.STATUSES=r.f},77753(t,e,s){"use strict";s.d(e,{f(){return r.f},uA(){return i.u},vG(){return o.v}});var i=s(37474),r=s(64567),o=s(7982)},64567(t,e,s){"use strict";s.d(e,{f(){return i}});const i={beforeInit:"beforeInit",ready:"ready",beforeDestruct:"beforeDestruct",destructed:"destructed"}},7982(t,e,s){"use strict";s.d(e,{v(){return r}});var i=s(37474);class r extends i.u{get j(){return this.jodit}get defaultTimeout(){return this.j.defaultTimeout}i18n(t,...e){return this.j.i18n(t,...e)}setParentView(t){return this.jodit=t,t.components.add(this),this}constructor(t){super(),this.setParentView(t)}destruct(){return this.j.components.delete(this),super.destruct()}}},17352(t,e,s){"use strict";s.r(e),s.d(e,{ACCURACY(){return J},APP_VERSION(){return i},BASE_PATH(){return at},BR(){return F},CLIPBOARD_ID(){return ut},COMMAND_KEYS(){return H},EMULATE_DBLCLICK_TIMEOUT(){return Q},ES(){return r},FAT_MODE(){return c},HOMEPAGE(){return u},INSEPARABLE_TAGS(){return T},INSERT_AS_HTML(){return tt},INSERT_AS_TEXT(){return st},INSERT_CLEAR_HTML(){return et},INSERT_ONLY_TEXT(){return it},INVISIBLE_SPACE(){return p},INVISIBLE_SPACE_REG_EXP(){return g},INVISIBLE_SPACE_REG_EXP_END(){return f},INVISIBLE_SPACE_REG_EXP_START(){return v},IS_BLOCK(){return w},IS_ES_MODERN(){return o},IS_ES_NEXT(){return n},IS_IE(){return K},IS_INLINE(){return C},IS_MAC(){return ot},IS_PROD(){return a},IS_TEST(){return l},KEY_ALIASES(){return nt},KEY_ALT(){return A},KEY_BACKSPACE(){return I},KEY_DELETE(){return D},KEY_DOWN(){return N},KEY_ENTER(){return z},KEY_ESC(){return L},KEY_F3(){return q},KEY_LEFT(){return M},KEY_META(){return x},KEY_RIGHT(){return R},KEY_SPACE(){return B},KEY_TAB(){return j},KEY_UP(){return P},LIST_TAGS(){return k},MARKER_CLASS(){return Z},MODE_SOURCE(){return $},MODE_SPLIT(){return U},MODE_WYSIWYG(){return W},NBSP_SPACE(){return m},NEARBY(){return O},NO_EMPTY_TAGS(){return E},PARAGRAPH(){return V},PASSIVE_EVENTS(){return ht},SAFE_COUNT_CHANGE_CALL(){return rt},SET_TEST(){return d},SOURCE_CONSUMER(){return dt},SPACE_REG_EXP(){return b},SPACE_REG_EXP_END(){return _},SPACE_REG_EXP_START(){return y},TEMP_ATTR(){return lt},TEXT_HTML(){return G},TEXT_PLAIN(){return Y},TEXT_RTF(){return X},TOKENS(){return h},lang(){return ct}});const i="4.2.5",r="es2021",o=!0,n=!0,a=!0;let l=!1;const c=!1,u="https://xdsoft.net/jodit/",d=()=>l=!0,h={},p="\ufeff",m=" ",g=()=>/[\uFEFF]/g,f=()=>/[\uFEFF]+$/g,v=()=>/^[\uFEFF]+/g,b=()=>/[\s\n\t\r\uFEFF\u200b]+/g,y=()=>/^[\s\n\t\r\uFEFF\u200b]+/g,_=()=>/[\s\n\t\r\uFEFF\u200b]+$/g,w=/^(ADDRESS|ARTICLE|ASIDE|BLOCKQUOTE|CANVAS|DD|DFN|DIV|DL|DT|FIELDSET|FIGCAPTION|FIGURE|FOOTER|FORM|H[1-6]|HEADER|HGROUP|HR|LI|MAIN|NAV|NOSCRIPT|OUTPUT|P|PRE|RUBY|SCRIPT|STYLE|OBJECT|OL|SECTION|IFRAME|JODIT|JODIT-MEDIA|UL|TR|TD|TH|TBODY|THEAD|TFOOT|TABLE|BODY|HTML|VIDEO)$/i,C=/^(STRONG|SPAN|I|EM|B|SUP|SUB|A|U)$/i,k=new Set(["ul","ol"]),S=["img","video","svg","iframe","script","input","textarea","link","jodit","jodit-media"],T=new Set([...S,"br","hr"]),E=new Set(S),x="Meta",I="Backspace",j="Tab",z="Enter",L="Escape",A="Alt",M="ArrowLeft",P="ArrowUp",R="ArrowRight",N="ArrowDown",B="Space",D="Delete",q="F3",O=5,J=10,H=[x,I,D,P,N,R,M,z,L,q,j],F="br",V="p",W=1,$=2,U=3,K="undefined"!=typeof navigator&&(-1!==navigator.userAgent.indexOf("MSIE")||/rv:11.0/i.test(navigator.userAgent)),Y=K?"text":"text/plain",G=K?"html":"text/html",X=K?"rtf":"text/rtf",Z="jodit-selection_marker",Q=300,tt="insert_as_html",et="insert_clear_html",st="insert_as_text",it="insert_only_text",rt=10,ot="undefined"!=typeof window&&/Mac|iPod|iPhone|iPad/.test(window.navigator.platform),nt={add:"+",break:"pause",cmd:"meta",command:"meta",ctl:"control",ctrl:"control",del:"delete",down:"arrowdown",esc:"escape",ins:"insert",left:"arrowleft",mod:ot?"meta":"control",opt:"alt",option:"alt",return:"enter",right:"arrowright",space:" ",spacebar:" ",up:"arrowup",win:"meta",windows:"meta"},at=(()=>{if("undefined"==typeof document)return"";const t=document.currentScript,e=t=>{const e=t.split("/");return/\.js/.test(e[e.length-1])?e.slice(0,e.length-1).join("/")+"/":t};if(t)return e(t.src);const s=document.querySelectorAll("script[src]");return s&&s.length?e(s[s.length-1].src):window.location.href})(),lt="data-jodit-temp",ct={},ut="clipboard",dt="source-consumer",ht=new Set(["touchstart","touchend","scroll","mousewheel","mousemove","touchmove"])},92852(t,e,s){"use strict";s.d(e,{X(){return n}});var i=s(17352),r=s(55186),o=s(65147);s(28712);class n{get doc(){return(0,o.isFunction)(this.document)?this.document():this.document}constructor(t,e){this.document=t,this.createAttributes=e}element(t,e,s){const i=this.doc.createElement(t.toLowerCase());return this.applyCreateAttributes(i),e&&((0,o.isPlainObject)(e)?(0,o.attr)(i,e):s=e),s&&(0,o.asArray)(s).forEach((t=>i.appendChild((0,o.isString)(t)?this.fromHTML(t):t))),i}div(t,e,s){const i=this.element("div",e,s);return t&&(i.className=t),i}sandbox(){const t=this.element("iframe",{sandbox:"allow-same-origin"});this.doc.body.appendChild(t);const e=t.contentWindow?.document;if(!e)throw Error("Iframe error");return e.open(),e.write(""),e.close(),[e.body,t]}span(t,e,s){const i=this.element("span",e,s);return t&&(i.className=t),i}a(t,e,s){const i=this.element("a",e,s);return t&&(i.className=t),i}text(t){return this.doc.createTextNode(t)}fake(){return this.text(i.INVISIBLE_SPACE)}fragment(){return this.doc.createDocumentFragment()}fromHTML(t,e){const s=this.div();s.innerHTML=""+t;const i=s.firstChild===s.lastChild&&s.firstChild?s.firstChild:s;if(r.J.safeRemove(i),e){const t=(0,o.refs)(i);Object.keys(e).forEach((s=>{const i=t[s];i&&!1===e[s]&&r.J.hide(i)}))}return i}applyCreateAttributes(t){if(this.createAttributes){const e=this.createAttributes;if(e&&e[t.tagName.toLowerCase()]){const s=e[t.tagName.toLowerCase()];(0,o.isFunction)(s)?s(t):(0,o.isPlainObject)(s)&&(0,o.attr)(t,s)}}}}},40594(t,e,s){"use strict";s.d(e,{X(){return i.X}});var i=s(92852)},11961(t,e,s){"use strict";s.d(e,{d(){return i.Ay}});var i=s(26318)},87875(t,e,s){"use strict";s.d(e,{OK(){return c},PO(){return a},PP(){return l}});var i=s(64567),r=s(55186),o=s(9823),n=s(76166);function a(t,e){const s=Object.getOwnPropertyDescriptor(t,e);return!s||(0,o.Tn)(s.get)?null:s.value}function l(t,e,s){const i=s.get;if(!i)throw(0,n.z3)("Getter property descriptor expected");s.get=function(){const t=i.call(this);return t&&!0===t.noCache||Object.defineProperty(this,e,{configurable:s.configurable,enumerable:s.enumerable,writable:!1,value:t}),t}}function c(t,e,s){const a=s.value;if(!(0,o.Tn)(a))throw(0,n.z3)("Handler must be a Function");let l=!0;const c=new WeakMap;s.value=function(...t){if(l&&c.has(this.constructor))return c.get(this.constructor)?.cloneNode(!0);const e=a.apply(this,t);return l&&r.J.isElement(e)&&c.set(this.constructor,e),l?e.cloneNode(!0):e},t.hookStatus(i.f.ready,(t=>{const e=(0,o.hH)(t)?t:t.jodit;l=!!e.options.cache}))}},24767(t,e,s){"use strict";function i(t){class e extends t{constructor(...t){super(...t),this.constructor===e&&(this instanceof e||Object.setPrototypeOf(this,e.prototype),this.setStatus("ready"))}}return e}s.d(e,{s(){return i}})},37075(t,e,s){"use strict";s.d(e,{n(){return a},s(){return n}});var i=s(77753),r=s(9823),o=(s(28712),s(50156));function n(t,e=!1,s="debounce"){return(n,a)=>{const l=n[a];if(!(0,r.Tn)(l))throw(0,o.z3)("Handler must be a Function");return n.hookStatus(i.f.ready,(i=>{const{async:o}=i,n=(0,r.Tn)(t)?t(i):t,l=(0,r.Et)(n)||(0,r.Qd)(n)?n:i.defaultTimeout;Object.defineProperty(i,a,{configurable:!0,value:o[s](i[a].bind(i),l,e)})})),{configurable:!0,get(){return l.bind(this)}}}}function a(t,e=!1){return n(t,e,"throttle")}},1963(t,e,s){"use strict";s.d(e,{C(){return r}});var i=s(69052);function r(...t){return e=>{const s=e.prototype;for(let e=0;t.length>e;e++){const r=t[e],o=Object.getOwnPropertyNames(r.prototype);for(let t=0;o.length>t;t++){const e=o[t],n=Object.getOwnPropertyDescriptor(r.prototype,e);null!=n&&(0,i.T)(n.value)&&!(0,i.T)(s[e])&&Object.defineProperty(s,e,{enumerable:!0,configurable:!0,writable:!0,value(...t){return n.value.call(this,...t)}})}}}}},71151(t,e,s){"use strict";s.d(e,{A(){return o}});var i=s(69052),r=s(50156);function o(t){return(e,s)=>{if(!(0,i.T)(e[s]))throw(0,r.z3)("Handler must be a Function");e.hookStatus(t,(t=>{t[s].call(t)}))}}},86285(t,e,s){"use strict";s.d(e,{N(){return n}});var i=s(77753),r=s(69052),o=s(50156);function n(){return(t,e)=>{if(!(0,r.T)(t[e]))throw(0,o.z3)("Handler must be a Function");t.hookStatus(i.f.ready,(t=>{const{async:s}=t,i=t[e];t[e]=(...e)=>s.requestIdleCallback(i.bind(t,...e))}))}}},22664(t,e,s){"use strict";s.r(e),s.d(e,{autobind(){return i.d},cache(){return r.PP},cacheHTML(){return r.OK},cached(){return r.PO},component(){return o.s},debounce(){return n.s},derive(){return a.C},getPropertyDescriptor(){return p.N},hook(){return l.A},idle(){return c.N},nonenumerable(){return u.m},persistent(){return d.y},throttle(){return n.n},wait(){return h.u},watch(){return p.w}});var i=s(11961),r=s(87875),o=s(24767),n=s(37075),a=s(1963),l=s(71151),c=s(86285),u=s(48791),d=s(33087),h=s(48647),p=s(66927)},48791(t,e,s){"use strict";s.d(e,{m(){return i}});const i=(t,e)=>{!1!==(Object.getOwnPropertyDescriptor(t,e)||{}).enumerable&&Object.defineProperty(t,e,{enumerable:!1,set(t){Object.defineProperty(this,e,{enumerable:!1,writable:!0,value:t})}})}},33087(t,e,s){"use strict";s.d(e,{y(){return o}});var i=s(64567),r=s(12041);function o(t,e){t.hookStatus(i.f.ready,(t=>{const s=(0,r.h)(t)?t:t.jodit,i=`${s.options.namespace}${t.componentName}_prop_${e}`,o=t[e];Object.defineProperty(t,e,{get:()=>s.storage.get(i)??o,set(t){s.storage.set(i,t)}})}))}},48647(t,e,s){"use strict";s.d(e,{u(){return n}});var i=s(64567),r=s(69052),o=s(50156);function n(t){return(e,s)=>{if(!(0,r.T)(e[s]))throw(0,o.z3)("Handler must be a Function");e.hookStatus(i.f.ready,(e=>{const{async:i}=e,r=e[s];let o=0;Object.defineProperty(e,s,{configurable:!0,value:function s(...n){i.clearTimeout(o),t(e)?r.apply(e,n):o=i.setTimeout((()=>s(...n)),10)}})}))}}},66927(t,e,s){"use strict";s.d(e,{N(){return u},w(){return d}});var i=s(64567),r=s(32332),o=s(42589),n=s(69052),a=s(25376),l=s(12041),c=s(50156);function u(t,e){let s;do{s=Object.getOwnPropertyDescriptor(t,e),t=Object.getPrototypeOf(t)}while(!s&&t);return s}function d(t,e){return(s,d)=>{if(!(0,n.T)(s[d]))throw(0,c.z3)("Handler must be a Function");const h=e?.immediately??!0,p=e?.context,m=e=>{const i=(0,l.h)(e)?e:e.jodit;let c=(t,...s)=>{if(!e.isInDestruct)return e[d](t,...s)};h||(c=e.async.microDebounce(c,!0)),(0,o.u)(t).forEach((t=>{if(/:/.test(t)){const[s,r]=t.split(":");let o=p;return s.length&&(o=e.get(s)),(0,n.T)(o)&&(o=o(e)),i.events.on(o||e,r,c),o||i.events.on(r,c),void e.hookStatus("beforeDestruct",(()=>{i.events.off(o||e,r,c).off(r,c)}))}const o=t.split("."),[l]=o,d=o.slice(1);let h=e[l];(0,a.Q)(h)&&(0,r.s)(h).on("change."+d.join("."),c);const m=u(s,l);Object.defineProperty(e,l,{configurable:!0,set(t){const s=h;s!==t&&(h=t,m&&m.set&&m.set.call(e,t),(0,a.Q)(h)&&(h=(0,r.s)(h),h.on("change."+d.join("."),c)),c(l,s,h))},get:()=>m&&m.get?m.get.call(e):h})}))};(0,n.T)(s.hookStatus)?s.hookStatus(i.f.ready,m):m(s)}}},55186(t,e,s){"use strict";s.d(e,{J(){return l}});var i=s(17352),r=s(42448),o=s(9823),n=s(59101),a=s(97369);class l{constructor(){throw Error("Dom is static module")}static detach(t){for(;t&&t.firstChild;)t.removeChild(t.firstChild)}static wrapInline(t,e,s){let i,r=t,n=t;s.s.save();let a=!1;do{a=!1,i=r.previousSibling,i&&!l.isBlock(i)&&(a=!0,r=i)}while(a);do{a=!1,i=n.nextSibling,i&&!l.isBlock(i)&&(a=!0,n=i)}while(a);const c=(0,o.Kg)(e)?s.createInside.element(e):e;r.parentNode&&r.parentNode.insertBefore(c,r);let u=r;for(;u&&(u=r.nextSibling,c.appendChild(r),r!==n&&u);)r=u;return s.s.restore(),c}static wrap(t,e,s){const i=(0,o.Kg)(e)?s.element(e):e;if(l.isNode(t)){if(!t.parentNode)throw(0,a.error)("Element should be in DOM");t.parentNode.insertBefore(i,t),i.appendChild(t)}else{const e=t.extractContents();t.insertNode(i),i.appendChild(e)}return i}static unwrap(t){const e=t.parentNode;if(e){for(;t.firstChild;)e.insertBefore(t.firstChild,t);l.safeRemove(t)}}static between(t,e,s){let i=t;for(;i&&i!==e&&(t===i||!s(i));){let t=i.firstChild||i.nextSibling;if(!t){for(;i&&!i.nextSibling;)i=i.parentNode;t=i?.nextSibling}i=t}}static replace(t,e,s,i=!1,n=!1){(0,o.AH)(e)&&(e=s.fromHTML(e));const a=(0,o.Kg)(e)?s.element(e):e;if(!n)for(;t.firstChild;)a.appendChild(t.firstChild);return i&&l.isElement(t)&&l.isElement(a)&&(0,r.$)(t.attributes).forEach((t=>{a.setAttribute(t.name,t.value)})),t.parentNode&&t.parentNode.replaceChild(a,t),a}static isEmptyTextNode(t){return l.isText(t)&&(!t.nodeValue||0===t.nodeValue.replace(i.INVISIBLE_SPACE_REG_EXP(),"").trim().length)}static isEmptyContent(t){return l.each(t,(t=>l.isEmptyTextNode(t)))}static isContentEditable(t,e){return l.isNode(t)&&!l.closest(t,(t=>l.isElement(t)&&"false"===t.getAttribute("contenteditable")),e)}static isEmpty(t,e=i.NO_EMPTY_TAGS){if(!t)return!0;let s;s=(0,o.Tn)(e)?e:t=>e.has(t.nodeName.toLowerCase());const r=t=>null==t.nodeValue||0===(0,n.Bq)(t.nodeValue).length;return l.isText(t)?r(t):!(l.isElement(t)&&s(t))&&l.each(t,(t=>{if(l.isText(t)&&!r(t)||l.isElement(t)&&s(t))return!1}))}static isNode(t){return!!(t&&(0,o.Kg)(t.nodeName)&&"number"==typeof t.nodeType&&t.childNodes&&(0,o.Tn)(t.appendChild))}static isCell(t){return l.isNode(t)&&("TD"===t.nodeName||"TH"===t.nodeName)}static isList(t){return l.isTag(t,i.LIST_TAGS)}static isLeaf(t){return l.isTag(t,"li")}static isImage(t){return l.isNode(t)&&/^(img|svg|picture|canvas)$/i.test(t.nodeName)}static isBlock(t){return!(0,o.Rd)(t)&&"object"==typeof t&&l.isNode(t)&&i.IS_BLOCK.test(t.nodeName)}static isText(t){return!(!t||t.nodeType!==Node.TEXT_NODE)}static isComment(t){return!(!t||t.nodeType!==Node.COMMENT_NODE)}static isElement(t){if(!l.isNode(t))return!1;const e=t.ownerDocument?.defaultView;return!(!e||t.nodeType!==Node.ELEMENT_NODE)}static isFragment(t){if(!l.isNode(t))return!1;const e=t.ownerDocument?.defaultView;return!(!e||t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE)}static isHTMLElement(t){if(!l.isNode(t))return!1;const e=t.ownerDocument?.defaultView;return!!(e&&t instanceof e.HTMLElement)}static isInlineBlock(t){return l.isElement(t)&&!/^(BR|HR)$/i.test(t.tagName)&&-1!==["inline","inline-block"].indexOf(""+(0,a.css)(t,"display"))}static canSplitBlock(t){return!(0,o.Rd)(t)&&l.isHTMLElement(t)&&l.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&void 0!==t.style&&!/^(fixed|absolute)/i.test(t.style.position)}static last(t,e){let s=t?.lastChild;if(!s)return null;do{if(e(s))return s;let i=s.lastChild;if(i||(i=s.previousSibling),!i&&s.parentNode!==t){do{s=s.parentNode}while(s&&!s?.previousSibling&&s.parentNode!==t);i=s?.previousSibling}s=i}while(s);return null}static prev(t,e,s,i=!0){return l.find(t,e,s,!1,i)}static next(t,e,s,i=!0){return l.find(t,e,s,!0,i)}static prevWithClass(t,e){return l.prev(t,(t=>l.isElement(t)&&t.classList.contains(e)),t.parentNode)}static nextWithClass(t,e){return l.next(t,(t=>l.isElement(t)&&t.classList.contains(e)),t.parentNode)}static find(t,e,s,i=!0,r=!0){const o=this.nextGen(t,s,i,r);let n=o.next();for(;!n.done;){if(e(n.value))return n.value;n=o.next()}return null}static*nextGen(t,e,s=!0,i=!0){const r=[];let o=t;do{let e=s?o.nextSibling:o.previousSibling;for(;e;)r.unshift(e),e=s?e.nextSibling:e.previousSibling;yield*this.runInStack(t,r,s,i),o=o.parentNode}while(o&&o!==e);return null}static each(t,e,s=!0){const i=this.eachGen(t,s);let r=i.next();for(;!r.done;){if(!1===e(r.value))return!1;r=i.next()}return!0}static eachGen(t,e=!0){return this.runInStack(t,[t],e)}static*runInStack(t,e,s,i=!0){for(;e.length;){const r=e.pop();if(i){let t=s?r.lastChild:r.firstChild;for(;t;)e.push(t),t=s?t.previousSibling:t.nextSibling}t!==r&&(yield r)}}static findWithCurrent(t,e,s,i="nextSibling",r="firstChild"){let o=t;do{if(e(o))return o||null;if(r&&o&&o[r]){const t=l.findWithCurrent(o[r],e,o,i,r);if(t)return t}for(;o&&!o[i]&&o!==s;)o=o.parentNode;o&&o[i]&&o!==s&&(o=o[i])}while(o&&o!==s);return null}static findSibling(t,e=!0,s=(t=>!l.isEmptyTextNode(t))){let i=l.sibling(t,e);for(;i&&!s(i);)i=l.sibling(i,e);return i&&s(i)?i:null}static findNotEmptySibling(t,e){return l.findSibling(t,e,(t=>!l.isEmptyTextNode(t)&&!!(!l.isText(t)||t.nodeValue?.length&&(0,n.Bq)(t.nodeValue))))}static findNotEmptyNeighbor(t,e,s){return(0,a.call)(e?l.prev:l.next,t,(t=>!(!t||(l.isText(t)||l.isComment(t))&&!(0,n.Bq)(t?.nodeValue||"").length)),s)}static sibling(t,e){return e?t.previousSibling:t.nextSibling}static up(t,e,s,i=!1){let r=t;if(!r)return null;do{if(e(r))return r;if(r===s||!r.parentNode)break;r=r.parentNode}while(r&&r!==s);return r===s&&i&&e(r)?r:null}static closest(t,e,s){let i;const r=t=>t.toLowerCase();if((0,o.Tn)(e))i=e;else if((0,o.cy)(e)||(0,o.vM)(e)){const t=(0,o.vM)(e)?e:new Set(e.map(r));i=e=>!(!e||!t.has(r(e.nodeName)))}else i=t=>!(!t||r(e)!==r(t.nodeName));return l.up(t,i,s)}static furthest(t,e,s){let i=null,r=t?.parentElement;for(;r&&r!==s;)e(r)&&(i=r),r=r?.parentElement;return i}static appendChildFirst(t,e){const s=t.firstChild;s?s!==e&&t.insertBefore(e,s):t.appendChild(e)}static after(t,e){const{parentNode:s}=t;s&&(s.lastChild===t?s.appendChild(e):s.insertBefore(e,t.nextSibling))}static before(t,e){const{parentNode:s}=t;s&&s.insertBefore(e,t)}static prepend(t,e){t.insertBefore(e,t.firstChild)}static append(t,e){(0,o.cy)(e)?e.forEach((e=>{this.append(t,e)})):t.appendChild(e)}static moveContent(t,e,s=!1,i=(()=>!0)){const o=(t.ownerDocument||document).createDocumentFragment();(0,r.$)(t.childNodes).filter((t=>!!i(t)||(l.safeRemove(t),!1))).forEach((t=>{o.appendChild(t)})),s&&e.firstChild?e.insertBefore(o,e.firstChild):e.appendChild(o)}static isOrContains(t,e,s=!1){return t===e?!s:!!(e&&t&&this.up(e,(e=>e===t),t,!0))}static safeRemove(...t){t.forEach((t=>l.isNode(t)&&t.parentNode&&t.parentNode.removeChild(t)))}static safeInsertNode(t,e){t.collapsed||t.deleteContents();const s=l.isFragment(e)?e.lastChild:e;t.startContainer===t.endContainer&&t.collapsed&&l.isTag(t.startContainer,i.INSEPARABLE_TAGS)?l.after(t.startContainer,e):(t.insertNode(e),s&&t.setStartBefore(s)),t.collapse(!0),[e.nextSibling,e.previousSibling].forEach((t=>l.isText(t)&&!t.nodeValue&&l.safeRemove(t)))}static hide(t){t&&((0,a.dataBind)(t,"__old_display",t.style.display),t.style.display="none")}static show(t){if(!t)return;const e=(0,a.dataBind)(t,"__old_display");"none"===t.style.display&&(t.style.display=e||"")}static isTag(t,e){if(!this.isElement(t))return!1;const s=t.tagName.toLowerCase(),i=t.tagName.toUpperCase();if(e instanceof Set)return e.has(s)||e.has(i);if(Array.isArray(e))throw new TypeError("Dom.isTag does not support array");return s===e||i===e}static markTemporary(t,e){return e&&(0,a.attr)(t,e),(0,a.attr)(t,i.TEMP_ATTR,!0),t}static isTemporary(t){return!!l.isElement(t)&&((0,o.rg)(t)||"true"===(0,a.attr)(t,i.TEMP_ATTR))}static replaceTemporaryFromString(t){return t.replace(/<([a-z]+)[^>]+data-jodit-temp[^>]+>(.+?)<\/\1>/gi,"$2")}static temporaryList(t){return(0,a.$$)(`[${i.TEMP_ATTR}]`,t)}}},71842(t,e,s){"use strict";s.d(e,{J(){return i.J},p(){return r.p}});var i=s(55186),r=s(8453)},8453(t,e,s){"use strict";s.d(e,{p(){return a}});var i=s(31635),r=s(22664),o=s(55186),n=s(43431);class a extends n.h{setWork(t){return this.isWorked&&this.break(),this.workNodes=o.J.eachGen(t,!this.options.reverse),this.isFinished=!1,this.startIdleRequest(),this}constructor(t,e={}){super(),this.async=t,this.options=e,this.workNodes=null,this.hadAffect=!1,this.isWorked=!1,this.isFinished=!1,this.idleId=0}startIdleRequest(){this.idleId=this.async.requestIdleCallback(this.workPerform,{timeout:this.options.timeout??10})}break(t){this.isWorked&&(this.stop(),this.emit("break",t))}end(){this.isWorked&&(this.stop(),this.emit("end",this.hadAffect),this.hadAffect=!1)}stop(){this.isWorked=!1,this.isFinished=!0,this.workNodes=null,this.async.cancelIdleCallback(this.idleId)}destruct(){super.destruct(),this.stop()}workPerform(t){if(this.workNodes){this.isWorked=!0;let e=0;const s=this.options.timeoutChunkSize??50;for(;!this.isFinished&&(t.timeRemaining()>0||t.didTimeout&&s>=e);){const t=this.workNodes.next();if(e+=1,this.visitNode(t.value)&&(this.hadAffect=!0),t.done)return void this.end()}}else this.end();this.isFinished||this.startIdleRequest()}visitNode(t){return!(!t||void 0!==this.options.whatToShow&&t.nodeType!==this.options.whatToShow)&&(this.emit("visit",t)??!1)}}(0,i.Cg)([r.autobind],a.prototype,"workPerform",null)},50658(t,e,s){"use strict";s.d(e,{b(){return u}});var i=s(17352),r=s(42589),o=s(37923),n=s(69052),a=s(98253),l=s(50156),c=s(10004);class u{mute(t){return this.__mutedEvents.add(t??"*"),this}isMuted(t){return!(!t||!this.__mutedEvents.has(t))||this.__mutedEvents.has("*")}unmute(t){return this.__mutedEvents.delete(t??"*"),this}__eachEvent(t,e){(0,r.u)(t).map((t=>t.trim())).forEach((t=>{const s=t.split(".");e.call(this,s[0],s[1]||c.X)}))}__getStore(t){if(!t)throw(0,l.z3)("Need subject");if(void 0===t[this.__key]){const e=new c.d;Object.defineProperty(t,this.__key,{enumerable:!1,configurable:!0,writable:!0,value:e})}return t[this.__key]}__removeStoreFromSubject(t){void 0!==t[this.__key]&&Object.defineProperty(t,this.__key,{enumerable:!1,configurable:!0,writable:!0,value:void 0})}__triggerNativeEvent(t,e){const s=this.__doc.createEvent("HTMLEvents");(0,a.K)(e)?s.initEvent(e,!0,!0):(s.initEvent(e.type,e.bubbles,e.cancelable),["screenX","screenY","clientX","clientY","target","srcElement","currentTarget","timeStamp","which","keyCode"].forEach((t=>{Object.defineProperty(s,t,{value:e[t],enumerable:!0})})),Object.defineProperty(s,"originalEvent",{value:e,enumerable:!0})),t.dispatchEvent(s)}get current(){return this.currents[this.currents.length-1]}on(t,e,s,r){let c,u,h,p;if((0,a.K)(t)||(0,a.B)(t)?(c=this,u=t,h=e,p=s):(c=t,u=e,h=s,p=r),!(0,a.K)(u)&&!(0,a.B)(u)||0===u.length)throw(0,l.z3)("Need events names");if(!(0,n.T)(h))throw(0,l.z3)("Need event handler");if((0,o.c)(c))return c.forEach((t=>{this.on(t,u,h,p)})),this;const m=c,g=this.__getStore(m),f=this;let v=function(t,...e){if(!f.isMuted(t))return h&&h.call(this,...e)};return d(m)&&(v=function(t){if(!f.isMuted(t.type))return f.__prepareEvent(t),h&&!1===h.call(this,t)?(t.preventDefault(),t.stopImmediatePropagation(),!1):void 0}),this.__eachEvent(u,((t,e)=>{if(0===t.length)throw(0,l.z3)("Need event name");if(!1===g.indexOf(t,e,h)&&(g.set(t,e,{event:t,originalCallback:h,syntheticCallback:v},p?.top),d(m))){const e=i.PASSIVE_EVENTS.has(t)?{passive:!0,capture:p?.capture??!1}:p?.capture??!1;v.options=e,m.addEventListener(t,v,e),this.__memoryDOMSubjectToHandler(m,v)}})),this}__memoryDOMSubjectToHandler(t,e){const s=this.__domEventsMap.get(t)||new Set;s.add(e),this.__domEventsMap.set(t,s)}__unmemoryDOMSubjectToHandler(t,e){const s=this.__domEventsMap,i=s.get(t)||new Set;i.delete(e),i.size?s.set(t,i):s.delete(t)}one(t,e,s,i){let r,o,n,l;(0,a.K)(t)||(0,a.B)(t)?(r=this,o=t,n=e,l=s):(r=t,o=e,n=s,l=i);const c=(...t)=>(this.off(r,o,c),n(...t));return this.on(r,o,c,l),this}off(t,e,s){let i,r,l;if((0,a.K)(t)||(0,a.B)(t)?(i=this,r=t,l=e):(i=t,r=e,l=s),(0,o.c)(i))return i.forEach((t=>{this.off(t,r,l)})),this;const u=i,h=this.__getStore(u);if(!(0,a.K)(r)&&!(0,a.B)(r)||0===r.length)return h.namespaces().forEach((t=>{this.off(u,"."+t)})),this.__removeStoreFromSubject(u),this;const p=t=>{d(u)&&(u.removeEventListener(t.event,t.syntheticCallback,t.syntheticCallback.options??!1),this.__unmemoryDOMSubjectToHandler(u,t.syntheticCallback))},m=(t,e)=>{if(""===t)return void h.events(e).forEach((t=>{""!==t&&m(t,e)}));const s=h.get(t,e);if(s&&s.length)if((0,n.T)(l)){const i=h.indexOf(t,e,l);!1!==i&&(p(s[i]),s.splice(i,1),s.length||h.clearEvents(e,t))}else s.forEach(p),s.length=0,h.clearEvents(e,t)};return this.__eachEvent(r,((t,e)=>{e===c.X?h.namespaces().forEach((e=>{m(t,e)})):m(t,e)})),h.isEmpty()&&this.__removeStoreFromSubject(u),this}stopPropagation(t,e){const s=(0,a.K)(t)?this:t,i=(0,a.K)(t)?t:e;if("string"!=typeof i)throw(0,l.z3)("Need event names");const r=this.__getStore(s);this.__eachEvent(i,((t,e)=>{const i=r.get(t,e);i&&this.__stopped.push(i),e===c.X&&r.namespaces(!0).forEach((e=>this.stopPropagation(s,t+"."+e)))}))}__removeStop(t){if(t){const e=this.__stopped.indexOf(t);-1!==e&&this.__stopped.splice(0,e+1)}}__isStopped(t){return void 0!==t&&-1!==this.__stopped.indexOf(t)}fire(t,e,...s){let i,r;const o=(0,a.K)(t)?this:t,n=(0,a.K)(t)?t:e,u=(0,a.K)(t)?[e,...s]:s;if(!d(o)&&!(0,a.K)(n))throw(0,l.z3)("Need events names");const h=this.__getStore(o);return!(0,a.K)(n)&&d(o)?this.__triggerNativeEvent(o,e):this.__eachEvent(n,((t,e)=>{if(d(o))this.__triggerNativeEvent(o,t);else{const s=h.get(t,e);if(s)try{[...s].every((e=>!this.__isStopped(s)&&(this.currents.push(t),r=e.syntheticCallback.call(o,t,...u),this.currents.pop(),void 0!==r&&(i=r),!0)))}finally{this.__removeStop(s)}e!==c.X||d(o)||h.namespaces().filter((t=>t!==e)).forEach((e=>{const s=this.fire.call(this,o,t+"."+e,...u);void 0!==s&&(i=s)}))}})),i}constructor(t){this.__domEventsMap=new Map,this.__mutedEvents=new Set,this.__key="__JoditEventEmitterNamespaces",this.__doc=document,this.__prepareEvent=t=>{t.cancelBubble||(t.composed&&(0,n.T)(t.composedPath)&&t.composedPath()[0]&&Object.defineProperty(t,"target",{value:t.composedPath()[0],configurable:!0,enumerable:!0}),t.type.match(/^touch/)&&t.changedTouches&&t.changedTouches.length&&["clientX","clientY","pageX","pageY"].forEach((e=>{Object.defineProperty(t,e,{value:t.changedTouches[0][e],configurable:!0,enumerable:!0})})),t.originalEvent||(t.originalEvent=t),"paste"===t.type&&void 0===t.clipboardData&&this.__doc.defaultView.clipboardData&&Object.defineProperty(t,"clipboardData",{get:()=>this.__doc.defaultView.clipboardData,configurable:!0,enumerable:!0}))},this.currents=[],this.__stopped=[],this.__isDestructed=!1,t&&(this.__doc=t),this.__key+=(new Date).getTime()}destruct(){this.__isDestructed||(this.__isDestructed=!0,this.__domEventsMap.forEach(((t,e)=>{this.off(e)})),this.__domEventsMap.clear(),this.__mutedEvents.clear(),this.currents.length=0,this.__stopped.length=0,this.off(this),this.__getStore(this).clear(),this.__removeStoreFromSubject(this))}}function d(t){return(0,n.T)(t.addEventListener)}},43431(t,e,s){"use strict";s.d(e,{h(){return i}});class i{constructor(){this.__map=new Map}on(t,e){return this.__map.has(t)||this.__map.set(t,new Set),this.__map.get(t)?.add(e),this}off(t,e){return this.__map.has(t)&&this.__map.get(t)?.delete(e),this}destruct(){this.__map.clear()}emit(t,...e){let s;return this.__map.has(t)&&this.__map.get(t)?.forEach((t=>{s=t(...e)})),s}}},50025(t,e,s){"use strict";s.d(e,{Xr(){return n.X},bk(){return i.b},d$(){return n.d},h5(){return r.h},sH(){return o.s}});var i=s(50658),r=s(43431),o=s(32332),n=s(10004)},32332(t,e,s){"use strict";s.d(e,{s(){return c}});var i=s(66927),r=s(37923),o=s(69810),n=s(25376);const a=Symbol("observable-object");function l(t){return void 0!==t[a]}function c(t){if(l(t))return t;const e={},s={},c=(e,i)=>(0,r.c)(e)?(e.map((t=>c(t,i))),t):(s[e]||(s[e]=[]),s[e].push(i),t),u=(i,...o)=>{if((0,r.c)(i))i.map((t=>u(t,...o)));else try{!e[i]&&s[i]&&(e[i]=!0,s[i].forEach((e=>e.call(t,...o))))}finally{e[i]=!1}},d=(e,s=[])=>{const r={};l(e)||(Object.defineProperty(e,a,{enumerable:!1,value:!0}),Object.keys(e).forEach((a=>{const l=a,c=s.concat(l).filter((t=>t.length));r[l]=e[l];const h=(0,i.N)(e,l);Object.defineProperty(e,l,{set(e){const s=r[l];if(!(0,o.P)(r[l],e)){u(["beforeChange","beforeChange."+c.join(".")],l,e),(0,n.Q)(e)&&d(e,c),h&&h.set?h.set.call(t,e):r[l]=e;const i=[];u(["change",...c.reduce(((t,e)=>(i.push(e),t.push("change."+i.join(".")),t)),[])],c.join("."),s,e?.valueOf?e.valueOf():e)}},get(){return h&&h.get?h.get.call(t):r[l]},enumerable:!0,configurable:!0}),(0,n.Q)(r[l])&&d(r[l],c)})),Object.defineProperty(t,"on",{value:c}))};return d(t),t}},10004(t,e,s){"use strict";s.d(e,{X(){return r},d(){return o}});var i=s(42448);s(28712);const r="JoditEventDefaultNamespace";class o{constructor(){this.__store=new Map}get(t,e){if(this.__store.has(e))return this.__store.get(e)[t]}indexOf(t,e,s){const i=this.get(t,e);if(i)for(let t=0;i.length>t;t+=1)if(i[t].originalCallback===s)return t;return!1}namespaces(t=!1){const e=(0,i.$)(this.__store.keys());return t?e.filter((t=>t!==r)):e}events(t){const e=this.__store.get(t);return e?Object.keys(e):[]}set(t,e,s,i=!1){let r=this.__store.get(e);r||(r={},this.__store.set(e,r)),void 0===r[t]&&(r[t]=[]),i?r[t].unshift(s):r[t].push(s)}clear(){this.__store.clear()}clearEvents(t,e){const s=this.__store.get(t);s&&s[e]&&(delete s[e],Object.keys(s).length||this.__store.delete(t))}isEmpty(){return 0===this.__store.size}}},56298(t,e,s){"use strict";s.d(e,{JW(){return b},My(){return _},RR(){return w},VF(){return h},av(){return v},fg(){return f},w9(){return g}});var i=s(83044),r=s(98253),o=s(12041),n=s(449),a=s(75766),l=s(77402),c=s(17352),u=s(71842),d=s(50025);const h={};let p=1;const m=new Set;function g(){function t(){return p+=10*(Math.random()+1),Math.round(p).toString(16)}let e=t();for(;m.has(e);)e=t();return m.add(e),e}const f=new l.$,v={},b=t=>{Object.keys(t).forEach((e=>{c.lang[e]?Object.assign(c.lang[e],t[e]):c.lang[e]=t[e]}))},y=new WeakMap;function _(t,e,s="div",l=!1){const c=(0,r.K)(e)?e:e?(0,a.u)(e.prototype):"jodit-utils",d=y.get(t)||{},h=c+s,p=(0,o.h)(t)?t:t.j;if(!d[h]){let e=p.c,r=(0,i.y)(t)&&t.o.shadowRoot?t.o.shadowRoot:t.od.body;if(l&&(0,i.y)(t)&&t.od!==t.ed){e=t.createInside;const o="style"===s?t.ed.head:t.ed.body;r=(0,i.y)(t)&&t.o.shadowRoot?t.o.shadowRoot:o}const o=e.element(s,{className:`jodit jodit-${(0,n.k)(c)}-container jodit-box`});o.classList.add("jodit_theme_"+(p.o.theme||"default")),r.appendChild(o),d[h]=o,t.hookStatus("beforeDestruct",(()=>{u.J.safeRemove(o),delete d[h],Object.keys(d).length&&y.delete(t)})),y.set(t,d)}return d[h].classList.remove("jodit_theme_default","jodit_theme_dark"),d[h].classList.add("jodit_theme_"+(p.o.theme||"default")),d[h]}const w=new d.bk},82317(t,e,s){"use strict";s.d(e,{_(){return r}});var i=s(37923);const r=t=>(0,i.c)(t)?t:[t]},32709(t,e,s){"use strict";s.d(e,{$r(){return o.$},_j(){return i._},uM(){return r.u}});var i=s(82317),r=s(42589),o=s(42448)},42589(t,e,s){"use strict";function i(t){return Array.isArray(t)?t:t.split(/[,\s]+/)}s.d(e,{u(){return i}})},42448(t,e,s){"use strict";s.d(e,{$(){return o}});var i=s(34796),r=s(44210);const o=(...t)=>((0,i.a)(Array.from)?Array.from:(0,r.c)("Array.from")??Array.from).apply(Array,t)},89044(t,e,s){"use strict";s.d(e,{D(){return i.D},w(){return i.w}});var i=s(59146)},59146(t,e,s){"use strict";function i(t,e,...s){return e?window.setTimeout(t,e,...s):(t.call(null,...s),0)}function r(t){window.clearTimeout(t)}s.d(e,{D(){return r},w(){return i}})},78479(t,e,s){"use strict";function i(){let t=!0;try{const e=document.createElement("input");e.type="color",e.value="!",t="color"===e.type&&"!"!==e.value}catch(e){t=!1}return t}s.d(e,{k(){return i}})},9823(t,e,s){"use strict";s.d(e,{AH(){return c.A},Bo(){return C.B},CE(){return u.C},E6(){return h.E},Et(){return v.E},Gp(){return d.n4},Kg(){return C.K},Lm(){return n.L},Mj(){return m.M},P5(){return a.P},Qd(){return y.Q},Rd(){return E.R},Tn(){return l.T},a3(){return f.a},cy(){return o.c},hH(){return T.h},kC(){return i.k},kO(){return d.kO},kf(){return b.k},l6(){return x.l},mv(){return k.m},n4(){return a.n},pV(){return d.pV},rg(){return g.r},uV(){return S.u},vM(){return w.v},y0(){return p.y},yL(){return _.y},zf(){return r.z}});var i=s(78479),r=s(99951),o=s(37923),n=s(9810),a=s(69810),l=s(69052),c=s(53701),u=s(21811),d=s(10058),h=s(3947),p=s(83044),m=s(82201),g=s(71274),f=s(34796),v=s(2461),b=s(12461),y=s(25376),_=s(92039),w=s(53470),C=s(98253),k=s(6939),S=s(59082),T=s(12041),E=s(35642),x=s(76776)},99951(t,e,s){"use strict";function i(t){return!!t&&t instanceof DOMException&&"AbortError"===t.name}s.d(e,{z(){return i}})},37923(t,e,s){"use strict";function i(t){return Array.isArray(t)}s.d(e,{c(){return i}})},9810(t,e,s){"use strict";function i(t){return"boolean"==typeof t}s.d(e,{L(){return i}})},69810(t,e,s){"use strict";s.d(e,{P(){return o},n(){return r}});var i=s(28616);function r(t,e){return t===e||(0,i.A)(t)===(0,i.A)(e)}function o(t,e){return t===e}},69052(t,e,s){"use strict";function i(t){return"function"==typeof t}s.d(e,{T(){return i}})},21811(t,e,s){"use strict";function i(t){return-1!==t.search(//)||-1!==t.search(//)||-1!==t.search(/style="[^"]*mso-/)&&-1!==t.search(/(0,i.K)(t)&&/<([A-Za-z][A-Za-z0-9]*)\b[^>]*>(.*?)<\/\1>/m.test(t.replace(/[\r\n]/g,""))},10058(t,e,s){"use strict";s.d(e,{kO(){return l},n4(){return n},pV(){return a}});var i=s(55186),r=s(69052),o=s(35642);function n(t){return!(0,o.R)(t)&&(0,r.T)(t.init)}function a(t){return!(0,o.R)(t)&&(0,r.T)(t.destruct)}function l(t){return!(0,o.R)(t)&&i.J.isElement(t.container)}},3947(t,e,s){"use strict";s.d(e,{E(){return o}});var i=s(12461),r=s(98253);function o(t){return(0,r.K)(t)&&(0,i.k)(t)&&(t=parseFloat(t)),"number"==typeof t&&Number.isFinite(t)&&!(t%1)}},83044(t,e,s){"use strict";s.d(e,{y(){return r}});var i=s(69052);function r(t){return!!(t&&t instanceof Object&&(0,i.T)(t.constructor)&&("undefined"!=typeof Jodit&&t instanceof Jodit||t.isJodit))}},82201(t,e,s){"use strict";s.d(e,{M(){return r}});var i=s(98253);const r=t=>(0,i.K)(t)&&23===t.length&&/^[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{5}$/i.test(t)},71274(t,e,s){"use strict";s.d(e,{r(){return o}});var i=s(17352),r=s(55186);function o(t){return r.J.isNode(t)&&r.J.isTag(t,"span")&&t.hasAttribute("data-"+i.MARKER_CLASS)}},34796(t,e,s){"use strict";function i(t){return!!t&&"function"===(typeof t).toLowerCase()&&(t===Function.prototype||/^\s*function\s*(\b[a-z$_][a-z0-9$_]*\b)*\s*\((|([a-z$_][a-z0-9$_]*)(\s*,[a-z$_][a-z0-9$_]*)*)\)\s*{\s*\[native code]\s*}\s*$/i.test(t+""))}s.d(e,{a(){return i}})},2461(t,e,s){"use strict";function i(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}s.d(e,{E(){return i}})},12461(t,e,s){"use strict";s.d(e,{k(){return r}});var i=s(98253);function r(t){if((0,i.K)(t)){if(!t.match(/^([+-])?[0-9]+(\.?)([0-9]+)?(e[0-9]+)?$/))return!1;t=parseFloat(t)}return"number"==typeof t&&!isNaN(t)&&isFinite(t)}},25376(t,e,s){"use strict";s.d(e,{Q(){return r}});var i=s(76776);function r(t){return!(!t||"object"!=typeof t||t.nodeType||(0,i.l)(t)||t.constructor&&!{}.hasOwnProperty.call(t.constructor.prototype,"isPrototypeOf"))}},92039(t,e,s){"use strict";function i(t){return t&&"function"==typeof t.then}s.d(e,{y(){return i}})},53470(t,e,s){"use strict";s.d(e,{v(){return r}});var i=s(69052);function r(t){return!!t&&(0,i.T)(t.has)&&(0,i.T)(t.add)&&(0,i.T)(t.delete)}},98253(t,e,s){"use strict";s.d(e,{B(){return o},K(){return r}});var i=s(37923);function r(t){return"string"==typeof t}function o(t){return(0,i.c)(t)&&r(t[0])}},6939(t,e,s){"use strict";function i(t){if(t.includes(" "))return!1;if("undefined"!=typeof URL)try{const e=new URL(t);return["https:","http:","ftp:","file:","rtmp:"].includes(e.protocol)}catch(t){return!1}const e=document.createElement("a");return e.href=t,!!e.hostname}s.d(e,{m(){return i}})},59082(t,e,s){"use strict";function i(t){return!!t.length&&!/[^0-9A-Za-zа-яА-ЯЁё\w\-_. ]/.test(t)&&t.trim().length>0}s.d(e,{u(){return i}})},12041(t,e,s){"use strict";s.d(e,{h(){return r}});var i=s(69052);function r(t){return!!(t&&t instanceof Object&&(0,i.T)(t.constructor)&&t.isView)}},35642(t,e,s){"use strict";function i(t){return null==t}s.d(e,{R(){return i}})},76776(t,e,s){"use strict";function i(t){return null!=t&&t===t.window}s.d(e,{l(){return i}})},96768(t,e,s){"use strict";s.d(e,{s(){return i}});const i=t=>{if("rgba(0, 0, 0, 0)"===t||""===t)return!1;if(!t)return"#000000";if("#"===t.substr(0,1))return t;const e=/([\s\n\t\r]*?)rgb\((\d+), (\d+), (\d+)\)/.exec(t)||/([\s\n\t\r]*?)rgba\((\d+), (\d+), (\d+), ([\d.]+)\)/.exec(t);if(!e)return"#000000";const s=parseInt(e[2],10),i=parseInt(e[3],10);let r=(parseInt(e[4],10)|i<<8|s<<16).toString(16).toUpperCase();for(;6>r.length;)r="0"+r;return e[1]+"#"+r}},93495(t,e,s){"use strict";s.d(e,{s(){return i.s}});var i=s(96768)},56176(t,e,s){"use strict";s.d(e,{Z(){return l}});var i=s(17352),r=s(55186),o=s(59101),n=s(58720);function a(t){return t.replace(/mso-[a-z-]+:[\s]*[^;]+;/gi,"").replace(/mso-[a-z-]+:[\s]*[^";']+$/gi,"").replace(/border[a-z-]*:[\s]*[^;]+;/gi,"").replace(/([0-9.]+)(pt|cm)/gi,((t,e,s)=>{switch(s.toLowerCase()){case"pt":return(1.328*parseFloat(e)).toFixed(0)+"px";case"cm":return(.02645833*parseFloat(e)).toFixed(0)+"px"}return t}))}function l(t){if(-1===t.indexOf("")+7);const e=document.createElement("iframe");e.style.display="none",document.body.appendChild(e);let s="",l=[];try{const c=e.contentDocument||(e.contentWindow?e.contentWindow.document:null);if(c){c.open(),c.write(t),c.close();try{for(let t=0;c.styleSheets.length>t;t+=1){const e=c.styleSheets[t].cssRules;for(let t=0;e.length>t;t+=1)""!==e[t].selectorText&&(l=(0,n.$$)(e[t].selectorText,c.body),l.forEach((s=>{s.style.cssText=a(e[t].style.cssText+";"+s.style.cssText)})))}}catch(t){if(!i.IS_PROD)throw t}r.J.each(c.body,(t=>{if(r.J.isElement(t)){const e=t,s=e.getAttribute("style");s&&(e.style.cssText=a(s)),e.hasAttribute("style")&&!e.getAttribute("style")&&e.removeAttribute("style")}})),s=c.firstChild?(0,o.Bq)(c.body.innerHTML):""}}catch{}finally{r.J.safeRemove(e)}return s&&(t=s),(0,o.Bq)(t.replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g,"").replace(//i);-1!==e&&(t=t.substring(e+20));const s=t.search(//i);return-1!==s&&(t=t.substring(0,s)),t})(s)),e.s.insertHTML(s)}function l(t){const e=t.types;let s="";if((0,o.cy)(e)||"[object DOMStringList]"==={}.toString.call(e))for(let t=0;e.length>t;t+=1)s+=e[t]+";";else s=(e||i.TEXT_PLAIN)+";";return s}function c(t,e,s,i,r){if(!1===t.e.fire("beforeOpenPasteDialog",e,s,i,r))return;const o=t.confirm(`
${t.i18n(e)}
`,t.i18n(s)),a=r.map((({text:e,value:s})=>(0,n.$n)(t,{text:e,name:e.toLowerCase(),tabIndex:0}).onAction((()=>{o.close(),i(s)}))));o.e.one(o,"afterClose",(()=>{t.s.isFocused()||t.s.focus()}));const l=(0,n.$n)(t,{text:"Cancel",tabIndex:0}).onAction((()=>{o.close()}));return o.setFooter([...a,l]),a[0].focus(),a[0].state.variant="primary",t.e.fire("afterOpenPasteDialog",o,e,s,i,r),o}},13861(t,e,s){"use strict";var i=s(31635),r=s(17352),o=s(22664),n=s(55186),a=s(56298),l=s(65147),c=s(29866),u=(s(70674),s(90823));class d extends c.k{constructor(){super(...arguments),this.pasteStack=new l.LimitedStack(20),this._isDialogOpened=!1}afterInit(t){t.e.on("paste.paste",this.onPaste).on("pasteStack.paste",(t=>this.pasteStack.push(t))),t.o.nl2brInPlainText&&this.j.e.on("processPaste.paste",this.onProcessPasteReplaceNl2Br)}beforeDestruct(t){t.e.off("paste.paste",this.onPaste).off("processPaste.paste",this.onProcessPasteReplaceNl2Br).off(".paste")}onPaste(t){try{if(!1===this.customPasteProcess(t)||!1===this.j.e.fire("beforePaste",t))return t.preventDefault(),!1;this.defaultPasteProcess(t)}finally{this.j.e.fire("afterPaste",t)}}customPasteProcess(t){if(!this.j.o.processPasteHTML)return;const e=(0,l.getDataTransfer)(t),s=[e?.getData(r.TEXT_PLAIN),e?.getData(r.TEXT_HTML),e?.getData(r.TEXT_RTF)];for(const e of s)if((0,l.isHTML)(e)&&(this.j.e.fire("processHTML",t,e,{plain:s[0],html:s[1],rtf:s[2]})||this.processHTML(t,e)))return!1}defaultPasteProcess(t){const e=(0,l.getDataTransfer)(t);let s=e?.getData(r.TEXT_HTML)||e?.getData(r.TEXT_PLAIN);if(e&&s&&""!==(0,l.trim)(s)){const i=this.j.e.fire("processPaste",t,s,(0,u.DI)(e));void 0!==i&&(s=i),((0,l.isString)(s)||n.J.isNode(s))&&this.__insertByType(t,s,this.j.o.defaultActionOnPaste),t.preventDefault(),t.stopPropagation()}}processHTML(t,e){if(!this.j.o.askBeforePasteHTML)return!1;if(this.j.o.memorizeChoiceWhenPasteFragment){const s=this.pasteStack.find((t=>t.html===e));if(s)return this.__insertByType(t,e,s.action||this.j.o.defaultActionOnPaste),!0}if(this._isDialogOpened)return!0;const s=(0,u.PU)(this.j,"Your code is similar to HTML. Keep as HTML?","Paste as HTML",(s=>{this._isDialogOpened=!1,this.__insertByType(t,e,s)}),this.j.o.pasteHTMLActionList);return s&&(this._isDialogOpened=!0,s.e.on("beforeClose",(()=>{this._isDialogOpened=!1}))),!0}__insertByType(t,e,s){if(this.pasteStack.push({html:e,action:s}),(0,l.isString)(e))switch(this.j.buffer.set(r.CLIPBOARD_ID,e),s){case r.INSERT_CLEAR_HTML:e=(0,l.cleanFromWord)(e);break;case r.INSERT_ONLY_TEXT:e=(0,l.stripTags)(e,this.j.ed,new Set(this.j.o.pasteExcludeStripTags));break;case r.INSERT_AS_TEXT:e=(0,l.htmlspecialchars)(e)}(0,u.sX)(t,this.j,e)}onProcessPasteReplaceNl2Br(t,e,s){if(s===r.TEXT_PLAIN+";"&&!(0,l.isHTML)(e))return(0,l.nl2br)(e)}}(0,i.Cg)([o.autobind],d.prototype,"onPaste",null),(0,i.Cg)([o.autobind],d.prototype,"onProcessPasteReplaceNl2Br",null),a.fg.add("paste",d)},50248(t,e,s){"use strict";var i=s(36115);i.T.prototype.showPlaceholder=!0,i.T.prototype.placeholder="Type something",i.T.prototype.useInputsPlaceholder=!0},225(t,e,s){"use strict";var i=s(31635),r=s(17352),o=s(22664),n=s(55186),a=s(56298),l=s(71274),c=s(26150),u=s(38322),d=s(29866);s(50248);class h extends d.k{constructor(){super(...arguments),this.addNativeListeners=()=>{this.j.e.off(this.j.editor,"input.placeholder keydown.placeholder").on(this.j.editor,"input.placeholder keydown.placeholder",this.toggle)},this.addEvents=()=>{const t=this.j;t.o.useInputsPlaceholder&&t.element.hasAttribute("placeholder")&&(this.placeholderElm.innerHTML=(0,c.C)(t.element,"placeholder")||""),t.e.fire("placeholder",this.placeholderElm.innerHTML),t.e.off(".placeholder").on("changePlace.placeholder",this.addNativeListeners).on("change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder mousedown.placeholder afterSetMode.placeholder changePlace.placeholder",this.toggle).on(window,"load",this.toggle),this.addNativeListeners(),this.toggle()}}afterInit(t){t.o.showPlaceholder&&(this.placeholderElm=t.c.fromHTML(``),"rtl"===t.o.direction&&(this.placeholderElm.style.right="0px",this.placeholderElm.style.direction="rtl"),t.e.on("readonly",(t=>{t?this.hide():this.toggle()})).on("changePlace",this.addEvents),this.addEvents())}show(){const t=this.j;if(t.o.readonly)return;let e=0,s=0;const i=t.s.current(),r=i&&n.J.closest(i,n.J.isBlock,t.editor)||t.editor,o=t.ew.getComputedStyle(r),a=t.ew.getComputedStyle(t.editor);t.workplace.appendChild(this.placeholderElm);const{firstChild:c}=t.editor;if(n.J.isElement(c)&&!(0,l.r)(c)){const i=t.ew.getComputedStyle(c);e=parseInt(i.getPropertyValue("margin-top"),10),s=parseInt(i.getPropertyValue("margin-left"),10),this.placeholderElm.style.fontSize=parseInt(i.getPropertyValue("font-size"),10)+"px",this.placeholderElm.style.lineHeight=i.getPropertyValue("line-height")}else this.placeholderElm.style.fontSize=parseInt(o.getPropertyValue("font-size"),10)+"px",this.placeholderElm.style.lineHeight=o.getPropertyValue("line-height");(0,u.A)(this.placeholderElm,{display:"block",textAlign:o.getPropertyValue("text-align"),paddingTop:parseInt(a.paddingTop,10)+"px",paddingLeft:parseInt(a.paddingLeft,10)+"px",paddingRight:parseInt(a.paddingRight,10)+"px",marginTop:Math.max(parseInt(o.getPropertyValue("margin-top"),10),e),marginLeft:Math.max(parseInt(o.getPropertyValue("margin-left"),10),s)})}hide(){n.J.safeRemove(this.placeholderElm)}toggle(){const t=this.j;t.editor&&!t.isInDestruct&&(t.getRealMode()===r.MODE_WYSIWYG&&(t=>{if(!t.firstChild)return!0;const e=t.firstChild;if(r.INSEPARABLE_TAGS.has(e.nodeName?.toLowerCase())||/^(TABLE)$/i.test(e.nodeName))return!1;const s=n.J.next(e,(t=>t&&!n.J.isEmptyTextNode(t)),t);return n.J.isText(e)&&!s?n.J.isEmptyTextNode(e):!s&&n.J.each(e,(t=>!(n.J.isLeaf(t)||n.J.isList(t))&&(n.J.isEmpty(t)||n.J.isTag(t,"br"))))})(t.editor)?this.show():this.hide())}beforeDestruct(t){this.hide(),t.e.off(".placeholder").off(window,"load",this.toggle)}}(0,i.Cg)([(0,o.debounce)((t=>t.defaultTimeout/10),!0)],h.prototype,"toggle",null),a.fg.add("placeholder",h)},81089(t,e,s){"use strict";s(56298).fg.add("poweredByJodit",(t=>{const{o:e}=t;e.hidePoweredByJodit||e.inline||!(e.showCharsCounter||e.showWordsCounter||e.showXPathInStatusbar)||t.hookStatus("ready",(()=>{t.statusbar.append(t.create.fromHTML('\n\t\t\t\t\t\t\tPowered by Jodit\n\t\t\t\t\t\t'),!0)}))}))},44921(t,e,s){"use strict";var i=s(17352),r=s(56298),o=s(98434);s(36115).T.prototype.controls.preview={icon:"eye",command:"preview",mode:i.MODE_SOURCE+i.MODE_WYSIWYG,tooltip:"Preview"},r.fg.add("preview",(t=>{t.registerButton({name:"preview"}),t.registerCommand("preview",((e,s,i)=>{const r=t.dlg();r.setSize(1024,600).open("",t.i18n("Preview")).setModal(!0);const[,n]=(0,o.u)(t,i,"px",r.getElm("content"));r.e.on(r,"afterClose",n)}))}))},11131(t,e,s){"use strict";s.d(e,{Y(){return r}});var i=s(42448);function r(t){const e=(t,e=t.ownerDocument.styleSheets)=>(0,i.$)(e).map((t=>{try{return(0,i.$)(t.cssRules)}catch{}return[]})).flat().filter((e=>{try{return!(!e||!t.matches(e.selectorText))}catch{}return!1}));class s{constructor(s,i,r){this.css={};const o=r||{},n=e=>{const s=e.selectorText.split(",").map((t=>t.trim())).sort().join(",");0==!!this.css[s]&&(this.css[s]={});const i=e.style.cssText.split(/;(?![A-Za-z0-9])/);for(let e=0;i.length>e;e++){if(!i[e])continue;const r=i[e].split(":");r[0]=r[0].trim(),r[1]=r[1].trim(),this.css[s][r[0]]=r[1].replace(/var\(([^)]+)\)/g,((e,s)=>{const[i,r]=s.split(",");return(t.ew.getComputedStyle(t.editor).getPropertyValue(i.trim())||r||e).trim()}))}};(()=>{const r=s.innerHeight,a=i.createTreeWalker(t.editor,NodeFilter.SHOW_ELEMENT,(()=>NodeFilter.FILTER_ACCEPT));for(;a.nextNode();){const t=a.currentNode;if(r>t.getBoundingClientRect().top||o.scanFullPage){const s=e(t);if(s)for(let t=0;s.length>t;t++)n(s[t])}}})()}generateCSS(){let t="";for(const e in this.css)if(!/:not\(/.test(e)){t+=e+" { ";for(const s in this.css[e])t+=s+": "+this.css[e][s]+"; ";t+="}\n"}return t}}try{return new s(t.ew,t.ed,{scanFullPage:!0}).generateCSS()}catch{}return""}},78757(t,e,s){"use strict";var i=s(17352),r=s(71842),o=s(56298),n=s(17527),a=s(98434),l=s(931),c=s(11131),u=s(59827),d=s.n(u),h=s(36115);l.I.set("print",d()),h.T.prototype.controls.print={exec(t){const e=t.create.element("iframe");Object.assign(e.style,{position:"fixed",right:0,bottom:0,width:0,height:0,border:0}),(0,o.My)(t,h.T).appendChild(e);const s=()=>{t.e.off(t.ow,"mousemove",s),r.J.safeRemove(e)},i=e.contentWindow;if(i){t.e.on(i,"onbeforeunload onafterprint",s).on(t.ow,"mousemove",s),t.o.iframe?(t.e.fire("generateDocumentStructure.iframe",i.document,t),i.document.body.innerHTML=t.value):(i.document.write('"),i.document.close(),(0,a.u)(t,void 0,"px",i.document.body));const e=i.document.createElement("style");e.innerHTML="@media print {\n\t\t\t\t\tbody {\n\t\t\t\t\t\t\t-webkit-print-color-adjust: exact;\n\t\t\t\t\t}\n\t\t\t}",i.document.head.appendChild(e),i.focus(),i.print()}},mode:i.MODE_SOURCE+i.MODE_WYSIWYG,tooltip:"Print"},o.fg.add("print",(t=>{t.registerButton({name:"print"})}))},60189(t,e,s){"use strict";var i=s(17352),r=s(56298),o=s(29866),n=s(931),a=s(34045),l=s.n(a),c=s(39199),u=s.n(c),d=s(36115);n.I.set("redo",l()).set("undo",u()),d.T.prototype.controls.redo={mode:i.MODE_SPLIT,isDisabled(t){return!t.history.canRedo()},tooltip:"Redo"},d.T.prototype.controls.undo={mode:i.MODE_SPLIT,isDisabled(t){return!t.history.canUndo()},tooltip:"Undo"},r.fg.add("redoUndo",class h extends o.k{constructor(){super(...arguments),this.buttons=[{name:"undo",group:"history"},{name:"redo",group:"history"}]}beforeDestruct(){}afterInit(t){const e=e=>(t.history[e](),!1);t.registerCommand("redo",{exec:e,hotkeys:["ctrl+y","ctrl+shift+z","cmd+y","cmd+shift+z"]}),t.registerCommand("undo",{exec:e,hotkeys:["ctrl+z","cmd+z"]})}})},36001(t,e,s){"use strict";s(36115).T.prototype.tableAllowCellResize=!0},39147(t,e,s){"use strict";var i=s(31635),r=s(17352),o=s(22664),n=s(55186),a=s(56298),l=s(65147),c=s(37435);s(36001);const u="table_processor_observer-resize";class d extends c.Plugin{constructor(){super(...arguments),this.selectMode=!1,this.resizeDelta=0,this.createResizeHandle=()=>{this.resizeHandler||(this.resizeHandler=this.j.c.div("jodit-table-resizer"),this.j.e.on(this.resizeHandler,"mousedown.table touchstart.table",this.onHandleMouseDown).on(this.resizeHandler,"mouseenter.table",(()=>{this.j.async.clearTimeout(this.hideTimeout)})))},this.hideTimeout=0,this.drag=!1,this.minX=0,this.maxX=0,this.startX=0}get module(){return this.j.getInstance("Table",this.j.o)}get isRTL(){return"rtl"===this.j.o.direction}showResizeHandle(){this.j.async.clearTimeout(this.hideTimeout),this.j.workplace.appendChild(this.resizeHandler)}hideResizeHandle(){this.hideTimeout=this.j.async.setTimeout((()=>{n.J.safeRemove(this.resizeHandler)}),{timeout:this.j.defaultTimeout,label:"hideResizer"})}onHandleMouseDown(t){if(this.j.isLocked)return;this.drag=!0,this.j.e.on(this.j.ow,"mouseup.resize-cells touchend.resize-cells",this.onMouseUp).on(this.j.ew,"mousemove.table touchmove.table",this.onMouseMove),this.startX=t.clientX,this.j.lock(u),this.resizeHandler.classList.add("jodit-table-resizer_moved");let e,s=this.workTable.getBoundingClientRect();if(this.minX=0,this.maxX=1e6,null!=this.wholeTable)s=this.workTable.parentNode.getBoundingClientRect(),this.minX=s.left,this.maxX=this.minX+s.width;else{const t=this.module.formalCoordinate(this.workTable,this.workCell,!0);this.module.formalMatrix(this.workTable,((s,i,o)=>{t[1]===o&&(e=s.getBoundingClientRect(),this.minX=Math.max(e.left+r.NEARBY/2,this.minX)),t[1]+(this.isRTL?-1:1)===o&&(e=s.getBoundingClientRect(),this.maxX=Math.min(e.left+e.width-r.NEARBY/2,this.maxX))}))}return!1}onMouseMove(t){if(!this.drag)return;this.j.e.fire("closeAllPopups");let e=t.clientX;const s=(0,l.offset)(this.resizeHandler.parentNode||this.j.od.documentElement,this.j,this.j.od,!0);this.minX>e&&(e=this.minX),e>this.maxX&&(e=this.maxX),this.resizeDelta=e-this.startX+(this.j.o.iframe?s.left:0),this.resizeHandler.style.left=e-(this.j.o.iframe?0:s.left)+"px";const i=this.j.s.sel;i&&i.removeAllRanges()}onMouseUp(t){(this.selectMode||this.drag)&&(this.selectMode=!1,this.j.unlock()),this.resizeHandler&&this.drag&&(this.drag=!1,this.j.e.off(this.j.ew,"mousemove.table touchmove.table",this.onMouseMove),this.resizeHandler.classList.remove("jodit-table-resizer_moved"),this.startX!==t.clientX&&(null==this.wholeTable?this.resizeColumns():this.resizeTable()),this.j.synchronizeValues(),this.j.s.focus())}resizeColumns(){const t=this.resizeDelta,e=[],s=this.module;s.setColumnWidthByDelta(this.workTable,s.formalCoordinate(this.workTable,this.workCell,!0)[1],t,!0,e);const i=(0,l.call)(this.isRTL?n.J.prev:n.J.next,this.workCell,n.J.isCell,this.workCell.parentNode);s.setColumnWidthByDelta(this.workTable,s.formalCoordinate(this.workTable,i)[1],-t,!1,e)}resizeTable(){const t=this.resizeDelta*(this.isRTL?-1:1),e=this.workTable.offsetWidth,s=(0,l.getContentWidth)(this.workTable.parentNode,this.j.ew),i=!this.wholeTable;if(this.isRTL?!i:i)this.workTable.style.width=(e+t)/s*100+"%";else{const i=this.isRTL?"marginRight":"marginLeft",r=parseInt(this.j.ew.getComputedStyle(this.workTable)[i]||"0",10);this.workTable.style.width=(e-t)/s*100+"%",this.workTable.style[i]=(r+t)/s*100+"%"}}setWorkCell(t,e=null){this.wholeTable=e,this.workCell=t,this.workTable=n.J.up(t,(t=>n.J.isTag(t,"table")),this.j.editor)}calcHandlePosition(t,e,s=0,i=0){const o=(0,l.offset)(e,this.j,this.j.ed);if(s>r.NEARBY&&o.width-r.NEARBY>s)return void this.hideResizeHandle();const a=(0,l.offset)(this.j.workplace,this.j,this.j.od,!0),c=(0,l.offset)(t,this.j,this.j.ed);if(this.resizeHandler.style.left=(s>r.NEARBY?o.left+o.width:o.left)-a.left+i+"px",Object.assign(this.resizeHandler.style,{height:c.height+"px",top:c.top-a.top+"px"}),this.showResizeHandle(),s>r.NEARBY){const t=(0,l.call)(this.isRTL?n.J.prev:n.J.next,e,n.J.isCell,e.parentNode);this.setWorkCell(e,!!t&&null)}else{const t=(0,l.call)(this.isRTL?n.J.next:n.J.prev,e,n.J.isCell,e.parentNode);this.setWorkCell(t||e,!t||null)}}afterInit(t){t.o.tableAllowCellResize&&t.e.off(this.j.ow,".resize-cells").off(".resize-cells").on("change.resize-cells afterCommand.resize-cells afterSetMode.resize-cells",(()=>{(0,l.$$)("table",t.editor).forEach(this.observe)})).on(this.j.ow,"scroll.resize-cells",(()=>{if(!this.drag)return;const e=n.J.up(this.workCell,(t=>n.J.isTag(t,"table")),t.editor);if(e){const t=e.getBoundingClientRect();this.resizeHandler.style.top=t.top+"px"}})).on("beforeSetMode.resize-cells",(()=>{const e=this.module;e.getAllSelectedCells().forEach((s=>{e.removeSelection(s),e.normalizeTable(n.J.closest(s,"table",t.editor))}))}))}observe(t){(0,l.dataBind)(t,u)||((0,l.dataBind)(t,u,!0),this.j.e.on(t,"mouseleave.resize-cells",(t=>{this.resizeHandler&&this.resizeHandler!==t.relatedTarget&&this.hideResizeHandle()})).on(t,"mousemove.resize-cells touchmove.resize-cells",this.j.async.throttle((e=>{if(this.j.isLocked)return;const s=n.J.up(e.target,n.J.isCell,t);s&&this.calcHandlePosition(t,s,e.offsetX)}),{timeout:this.j.defaultTimeout})),this.createResizeHandle())}beforeDestruct(t){t.events&&(t.e.off(this.j.ow,".resize-cells"),t.e.off(".resize-cells"))}}(0,i.Cg)([o.autobind],d.prototype,"onHandleMouseDown",null),(0,i.Cg)([o.autobind],d.prototype,"onMouseMove",null),(0,i.Cg)([o.autobind],d.prototype,"onMouseUp",null),(0,i.Cg)([o.autobind],d.prototype,"observe",null),a.fg.add("resizeCells",d)},57362(t,e,s){"use strict";var i=s(36115);i.T.prototype.allowResizeX=!1,i.T.prototype.allowResizeY=!0},76693(t,e,s){"use strict";var i=s(31635),r=s(22664),o=s(71842),n=s(56298),a=s(71005),l=s(53048);s(57362);let c=class t extends a.k{constructor(){super(...arguments),this.isResized=!1,this.start={x:0,y:0,w:0,h:0},this.handle=this.j.c.div("jodit-editor__resize",l.In.get("resize_handler"))}afterInit(t){const{height:e,width:s,allowResizeX:i}=t.o;let{allowResizeY:r}=t.o;"auto"===e&&"auto"!==s&&(r=!1),"auto"===e&&"auto"===s||!i&&!r||(t.statusbar.setMod("resize-handle",!0),t.e.on("toggleFullSize.resizeHandler",(()=>{this.handle.style.display=t.isFullSize?"none":"block"})).on(this.handle,"mousedown touchstart",this.onHandleResizeStart).on(t.ow,"mouseup touchend",this.onHandleResizeEnd),t.container.appendChild(this.handle))}onHandleResizeStart(t){this.isResized=!0,this.start.x=t.clientX,this.start.y=t.clientY,this.start.w=this.j.container.offsetWidth,this.start.h=this.j.container.offsetHeight,this.j.lock(),this.j.e.on(this.j.ow,"mousemove touchmove",this.onHandleResize),t.preventDefault()}onHandleResize(t){this.isResized&&(this.j.o.allowResizeY&&this.j.e.fire("setHeight",this.start.h+t.clientY-this.start.y),this.j.o.allowResizeX&&this.j.e.fire("setWidth",this.start.w+t.clientX-this.start.x),this.j.e.fire("resize"))}onHandleResizeEnd(){this.isResized&&(this.isResized=!1,this.j.e.off(this.j.ow,"mousemove touchmove",this.onHandleResize),this.j.unlock())}beforeDestruct(){o.J.safeRemove(this.handle),this.j.e.off(this.j.ow,"mouseup touchsend",this.onHandleResizeEnd)}};c.requires=["size"],c=(0,i.Cg)([r.autobind],c),n.fg.add("resizeHandler",c)},69505(t,e,s){"use strict";var i=s(36115);i.T.prototype.allowResizeTags=new Set(["img","iframe","table","jodit"]),i.T.prototype.resizer={showSize:!0,hideSizeTimeout:1e3,forImageChangeAttributes:!0,min_width:10,min_height:10,useAspectRatio:new Set(["img"])}},6857(t,e,s){"use strict";var i=s(31635),r=s(17352),o=s(22664),n=s(55186),a=s(56298),l=s(65147),c=s(29866);s(69505);const u="__jodit-resizer_binded";class d extends c.k{constructor(){super(...arguments),this.LOCK_KEY="resizer",this.element=null,this.isResizeMode=!1,this.isShown=!1,this.startX=0,this.startY=0,this.width=0,this.height=0,this.ratio=0,this.rect=this.j.c.fromHTML(`
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t100x100\n\t\t\t
`),this.sizeViewer=this.rect.getElementsByTagName("span")[0],this.pointerX=0,this.pointerY=0,this.isAltMode=!1,this.onClickElement=t=>{this.isResizeMode||this.element===t&&this.isShown||(this.element=t,this.show(),n.J.isTag(this.element,"img")&&!this.element.complete&&this.j.e.one(this.element,"load",this.updateSize))},this.updateSize=()=>{if(!this.isInDestruct&&this.isShown&&this.element&&this.rect){const t=this.getWorkplacePosition(),e=(0,l.offset)(this.element,this.j,this.j.ed),s=parseInt(this.rect.style.left||"0",10),i=e.top-t.top,r=e.left-t.left;parseInt(this.rect.style.top||"0",10)===i&&s===r&&this.rect.offsetWidth===this.element.offsetWidth&&this.rect.offsetHeight===this.element.offsetHeight||((0,l.css)(this.rect,{top:i,left:r,width:this.element.offsetWidth,height:this.element.offsetHeight}),this.j.events&&(this.j.e.fire(this.element,"changesize"),isNaN(s)||this.j.e.fire("resize")))}},this.hideSizeViewer=()=>{this.sizeViewer.style.opacity="0"}}afterInit(t){(0,l.$$)("div",this.rect).forEach((e=>{t.e.on(e,"mousedown.resizer touchstart.resizer",this.onStartResizing.bind(this,e))})),a.RR.on("hideHelpers",this.hide),t.e.on("readonly",(t=>{t&&this.hide()})).on("afterInit changePlace",this.addEventListeners.bind(this)).on("afterGetValueFromEditor.resizer",(t=>{const e=/]+data-jodit_iframe_wrapper[^>]+>(.*?]*>.*?<\/iframe>.*?)<\/jodit>/gi;e.test(t.value)&&(t.value=t.value.replace(e,"$1"))})),this.addEventListeners(),this.__onChangeEditor()}onEditorClick(t){let e=t.target;const{editor:s,options:{allowResizeTags:i}}=this.j;for(;e&&e!==s;){if(n.J.isTag(e,i))return this.__bind(e),void this.onClickElement(e);e=e.parentNode}}addEventListeners(){const t=this.j;t.e.off(t.editor,".resizer").off(t.ow,".resizer").on(t.editor,"keydown.resizer",(t=>{this.isShown&&t.key===r.KEY_DELETE&&this.element&&!n.J.isTag(this.element,"table")&&this.onDelete(t)})).on(t.ow,"resize.resizer",this.updateSize).on("resize.resizer",this.updateSize).on([t.ow,t.editor],"scroll.resizer",(()=>{this.isShown&&!this.isResizeMode&&this.hide()})).on(t.ow,"keydown.resizer",this.onKeyDown).on(t.ow,"keyup.resizer",this.onKeyUp).on(t.ow,"mouseup.resizer touchend.resizer",this.onClickOutside)}onStartResizing(t,e){if(!this.element||!this.element.parentNode)return this.hide(),!1;this.handle=t,e.cancelable&&e.preventDefault(),e.stopImmediatePropagation(),this.width=this.element.offsetWidth,this.height=this.element.offsetHeight,this.ratio=this.width/this.height,this.isResizeMode=!0,this.startX=e.clientX,this.startY=e.clientY,this.pointerX=e.clientX,this.pointerY=e.clientY;const{j:s}=this;s.e.fire("hidePopup"),s.lock(this.LOCK_KEY),s.e.on(s.ow,"mousemove.resizer touchmove.resizer",this.onResize)}onEndResizing(){const{j:t}=this;t.unlock(),this.isResizeMode=!1,this.isAltMode=!1,t.synchronizeValues(),t.e.off(t.ow,"mousemove.resizer touchmove.resizer",this.onResize)}onResize(t){if(this.isResizeMode){if(!this.element)return;let e,s;if(this.pointerX=t.clientX,this.pointerY=t.clientY,this.j.options.iframe){const i=this.getWorkplacePosition();e=t.clientX+i.left-this.startX,s=t.clientY+i.top-this.startY}else e=this.pointerX-this.startX,s=this.pointerY-this.startY;const i=this.handle.className;let r=0,o=0;const a=this.j.o.resizer.useAspectRatio;!this.isAltMode&&(!0===a||a&&n.J.isTag(this.element,a))?(e?(r=this.width+(i.match(/left/)?-1:1)*e,o=Math.round(r/this.ratio)):(o=this.height+(i.match(/top/)?-1:1)*s,r=Math.round(o*this.ratio)),r>(0,l.innerWidth)(this.j.editor,this.j.ow)&&(r=(0,l.innerWidth)(this.j.editor,this.j.ow),o=Math.round(r/this.ratio))):(r=this.width+(i.match(/left/)?-1:1)*e,o=this.height+(i.match(/top/)?-1:1)*s),r>this.j.o.resizer.min_width&&this.applySize(this.element,"width",this.rect.parentNode.offsetWidth>r?r:"100%"),o>this.j.o.resizer.min_height&&this.applySize(this.element,"height",o),this.updateSize(),this.showSizeViewer(this.element.offsetWidth,this.element.offsetHeight),t.stopImmediatePropagation()}}onKeyDown(t){this.isAltMode=t.key===r.KEY_ALT,!this.isAltMode&&this.isResizeMode&&this.onEndResizing()}onKeyUp(){this.isAltMode&&this.isResizeMode&&this.element&&(this.width=this.element.offsetWidth,this.height=this.element.offsetHeight,this.ratio=this.width/this.height,this.startX=this.pointerX,this.startY=this.pointerY),this.isAltMode=!1}onClickOutside(t){if(this.isShown){if(!this.isResizeMode)return this.hide();t.stopImmediatePropagation(),this.onEndResizing()}}getWorkplacePosition(){return(0,l.offset)(this.rect.parentNode||this.j.od.documentElement,this.j,this.j.od,!0)}applySize(t,e,s){const i=n.J.isImage(t)&&this.j.o.resizer.forImageChangeAttributes;i&&(0,l.attr)(t,e,s),i&&!t.style[e]||(0,l.css)(t,e,s)}onDelete(t){this.element&&("JODIT"!==this.element.tagName?this.j.s.select(this.element):(n.J.safeRemove(this.element),this.hide(),t.preventDefault()))}__onChangeEditor(){this.isShown&&(this.element&&this.element.parentNode?this.updateSize():this.hide()),(0,l.$$)("iframe",this.j.editor).forEach(this.__bind)}__bind(t){if(!n.J.isHTMLElement(t)||!this.j.o.allowResizeTags.has(t.tagName.toLowerCase())||(0,l.dataBind)(t,u))return;let e;if((0,l.dataBind)(t,u,!0),n.J.isTag(t,"iframe")){const s=t;n.J.isHTMLElement(t.parentNode)&&(0,l.attr)(t.parentNode,"-jodit_iframe_wrapper")?t=t.parentNode:(e=this.j.createInside.element("jodit",{"data-jodit-temp":1,contenteditable:!1,draggable:!0,"data-jodit_iframe_wrapper":1}),(0,l.attr)(e,"style",(0,l.attr)(t,"style")),(0,l.css)(e,{display:"inline-block"===t.style.display?"inline-block":"block",width:t.offsetWidth,height:t.offsetHeight}),t.parentNode&&t.parentNode.insertBefore(e,t),e.appendChild(t),this.j.e.on(e,"click",(()=>{(0,l.attr)(e,"data-jodit-wrapper_active",!0)})),t=e),this.j.e.off(t,"mousedown.select touchstart.select").on(t,"mousedown.select touchstart.select",(()=>{this.j.s.select(t)})).off(t,"changesize").on(t,"changesize",(()=>{s.setAttribute("width",t.offsetWidth+"px"),s.setAttribute("height",t.offsetHeight+"px")}))}this.j.e.on(t,"dragstart",this.hide),!r.IS_ES_NEXT&&r.IS_IE&&this.j.e.on(t,"mousedown",(e=>{n.J.isTag(t,"img")&&e.preventDefault()}))}showSizeViewer(t,e){this.j.o.resizer.showSize&&(this.sizeViewer.offsetWidth>t||this.sizeViewer.offsetHeight>e?this.hideSizeViewer():(this.sizeViewer.style.opacity="1",this.sizeViewer.textContent=`${t} x ${e}`,this.j.async.setTimeout(this.hideSizeViewer,{timeout:this.j.o.resizer.hideSizeTimeout,label:"hideSizeViewer"})))}show(){this.j.o.readonly||this.isShown||(this.isShown=!0,this.rect.parentNode||((0,l.markOwner)(this.j,this.rect),this.j.workplace.appendChild(this.rect)),this.j.isFullSize&&(this.rect.style.zIndex=""+(0,l.css)(this.j.container,"zIndex")),this.updateSize())}hide(){this.isResizeMode||(this.isResizeMode=!1,this.isShown=!1,this.element=null,n.J.safeRemove(this.rect),(0,l.$$)("[data-jodit-wrapper_active='true']",this.j.editor).forEach((t=>(0,l.attr)(t,"data-jodit-wrapper_active",!1))))}beforeDestruct(t){this.hide(),a.RR.off("hideHelpers",this.hide),t.e.off(this.j.ow,".resizer").off(".resizer")}}(0,i.Cg)([(0,o.watch)(":click")],d.prototype,"onEditorClick",null),(0,i.Cg)([o.autobind],d.prototype,"onStartResizing",null),(0,i.Cg)([o.autobind],d.prototype,"onEndResizing",null),(0,i.Cg)([o.autobind],d.prototype,"onResize",null),(0,i.Cg)([o.autobind],d.prototype,"onKeyDown",null),(0,i.Cg)([o.autobind],d.prototype,"onKeyUp",null),(0,i.Cg)([o.autobind],d.prototype,"onClickOutside",null),(0,i.Cg)([(0,o.watch)(":change")],d.prototype,"__onChangeEditor",null),(0,i.Cg)([o.autobind],d.prototype,"__bind",null),(0,i.Cg)([o.autobind,(0,o.watch)(":hideResizer")],d.prototype,"hide",null),a.fg.add("resizer",d)},78593(t,e,s){"use strict";var i=s(931),r=s(21917),o=s.n(r),n=s(36115);n.T.prototype.useSearch=!0,n.T.prototype.search={lazyIdleTimeout:0,useCustomHighlightAPI:void 0!==window.Highlight},i.I.set("search",o()),n.T.prototype.controls.find={tooltip:"Find",icon:"search",exec(t,e,{control:s}){switch(s.args&&s.args[0]){case"findPrevious":t.e.fire("searchPrevious");break;case"findNext":t.e.fire("searchNext");break;case"replace":t.execCommand("openReplaceDialog");break;default:t.execCommand("openSearchDialog")}},list:{search:"Find",findNext:"Find Next",findPrevious:"Find Previous",replace:"Replace"},childTemplate(t,e,s){return s}}},89568(t,e,s){"use strict";s.d(e,{IJ(){return l},Tz(){return c},_B(){return n},zy(){return a}});var i=s(55186),r=s(58720);const o="jd-tmp-selection";function n(t,e,s,r,n){if(null==e.startContainer.nodeValue||null==e.endContainer.nodeValue)return;if(t.o.search.useCustomHighlightAPI&&void 0!==window.Highlight){const i=[e,...s].map((e=>{const s=t.selection.createRange();return s.setStart(e.startContainer,e.startOffset),s.setEnd(e.endContainer,e.endOffset),s})),r=new Highlight(...i);return CSS.highlights.clear(),CSS.highlights.set("jodit-search-result",r),void(s.length=0)}const a=r.element("span",{[o]:!0});i.J.markTemporary(a);const l=e.startContainer.nodeValue;let c=0;if(0!==e.startOffset){const t=r.text(l.substring(0,e.startOffset));e.startContainer.nodeValue=l.substring(e.startOffset),i.J.before(e.startContainer,t),e.startContainer===e.endContainer&&(c=e.startOffset,e.endOffset-=c),e.startOffset=0}const u=e.endContainer.nodeValue;if(e.endOffset!==u.length){const t=r.text(u.substring(e.endOffset));e.endContainer.nodeValue=u.substring(0,e.endOffset),i.J.after(e.endContainer,t);for(const i of s){if(i.startContainer!==e.endContainer)break;i.startContainer=t,i.startOffset=i.startOffset-e.endOffset-c,i.endContainer===e.endContainer&&(i.endContainer=t,i.endOffset=i.endOffset-e.endOffset-c)}e.endOffset=e.endContainer.nodeValue.length}let d=e.startContainer;do{if(!d)break;if(!i.J.isText(d)||i.J.isElement(h=d.parentNode)&&h.hasAttribute(o)||i.J.wrap(d,a.cloneNode(),r),d===e.endContainer)break;let t=d.firstChild||d.nextSibling;if(!t){for(;d&&!d.nextSibling&&d!==n;)d=d.parentNode;t=d?.nextSibling}d=t}while(d&&d!==n);var h}function a(t){return(0,r.$$)(`[${o}]`,t)}function l(t){a(t).forEach((t=>i.J.unwrap(t)))}function c(t){return t.replace(RegExp(`]+${o}[^>]+>(.*?)`,"g"),"$1")}},78817(t,e,s){"use strict";s.d(e,{IJ(){return i.IJ},QN(){return r.Q},Tz(){return i.Tz},_B(){return i._B},zy(){return i.zy}});var i=s(89568),r=s(30621)},30621(t,e,s){"use strict";s.d(e,{Q(){return r}});var i=s(67975);class r{constructor(t=i.H){this.searchIndex=t,this.queue=[],this.value=""}add(t){const e=(t.nodeValue??"").toLowerCase();if(!e.length)return;const s=this.value.length;this.queue.push({startIndex:s,endIndex:s+e.length,node:t}),this.value+=e}ranges(t,e=0){const s=[];let i=e,r=0,o=0;do{if([i,r]=this.searchIndex(t,this.value,i),-1!==i){let t,e,n=0,a=0;for(let s=o;this.queue.length>s;s+=1)if(!t&&this.queue[s].endIndex>i&&(t=this.queue[s].node,n=i-this.queue[s].startIndex),t&&this.queue[s].endIndex>=i+r){e=this.queue[s].node,a=i+r-this.queue[s].startIndex,o=s;break}t&&e&&s.push({startContainer:t,startOffset:n,endContainer:e,endOffset:a}),i+=r}}while(-1!==i);return 0===s.length?null:s}}},17343(t,e,s){"use strict";var i=s(31635),r=(s(17352),s(22664)),o=s(71842),n=s(56298),a=s(65147),l=s(71005),c=(s(78593),s(78817)),u=s(63064);class d extends l.k{constructor(){super(...arguments),this.buttons=[{name:"find",group:"search"}],this.previousQuery="",this.drawPromise=null,this.walker=null,this.walkerCount=null,this.cache={},this.wrapFrameRequest=0}get ui(){return new u.F(this.j)}async updateCounters(){this.ui.isOpened&&(this.ui.count=await this.calcCounts(this.ui.query))}onPressReplaceButton(){this.findAndReplace(this.ui.query),this.updateCounters()}tryScrollToElement(t){let e=o.J.closest(t,o.J.isElement,this.j.editor);e||(e=o.J.prev(t,o.J.isElement,this.j.editor)),e&&e!==this.j.editor&&(0,a.scrollIntoViewIfNeeded)(e,this.j.editor,this.j.ed)}async calcCounts(t){return(await this.findQueryBounds(t,"walkerCount")).length}async findQueryBounds(t,e){let s=this[e];return s&&s.break(),s=new o.p(this.j.async,{timeout:this.j.o.search.lazyIdleTimeout}),this[e]=s,this.find(s,t).catch((t=>[]))}async findAndReplace(t){const e=await this.findQueryBounds(t,"walker");if(!e.length)return!1;let s=this.findCurrentIndexInRanges(e,this.j.s.range);-1===s&&(s=0);const i=e[s];if(i){try{const e=this.j.ed.createRange();e.setStart(i.startContainer,i.startOffset),e.setEnd(i.endContainer,i.endOffset),e.deleteContents();const r=this.j.createInside.text(this.ui.replace);o.J.safeInsertNode(e,r),(0,c.IJ)(this.j.editor),this.j.s.setCursorAfter(r),this.tryScrollToElement(r),this.cache={},this.ui.currentIndex=s,await this.findAndSelect(t,!0).catch((t=>null))}finally{this.j.synchronizeValues()}return this.j.e.fire("afterFindAndReplace"),!0}return!1}async findAndSelect(t,e){const s=await this.findQueryBounds(t,"walker");if(!s.length)return!1;this.previousQuery===t&&(0,c.zy)(this.j.editor).length||(this.drawPromise?.rejectCallback(),this.j.async.cancelAnimationFrame(this.wrapFrameRequest),(0,c.IJ)(this.j.editor),this.drawPromise=this.__drawSelectionRanges(s)),this.previousQuery=t;let i=this.ui.currentIndex-1;i=-1===i?0:e?i===s.length-1?0:i+1:0===i?s.length-1:i-1,this.ui.currentIndex=i+1;const r=s[i];if(r){const t=this.j.ed.createRange();try{t.setStart(r.startContainer,r.startOffset),t.setEnd(r.endContainer,r.endOffset),this.j.s.selectRange(t)}catch(t){}return this.tryScrollToElement(r.startContainer),await this.updateCounters(),await this.drawPromise,this.j.e.fire("afterFindAndSelect"),!0}return!1}findCurrentIndexInRanges(t,e){return t.findIndex((t=>t.startContainer===e.startContainer&&t.startOffset===e.startOffset&&t.endContainer===e.startContainer&&t.endOffset===e.endOffset))}async isValidCache(t){return(await t).every((t=>t.startContainer.isConnected&&(t.startContainer.nodeValue?.length??0)>=t.startOffset&&t.endContainer.isConnected&&(t.endContainer.nodeValue?.length??0)>=t.endOffset))}async find(t,e){if(!e.length)return[];const s=this.cache[e];return s&&await this.isValidCache(s)?s:(this.cache[e]=this.j.async.promise((s=>{const i=new c.QN(this.j.o.search.fuzzySearch);t.on("break",(()=>{s([])})).on("visit",(t=>(o.J.isText(t)&&i.add(t),!1))).on("end",(()=>{s(i.ranges(e)??[])})).setWork(this.j.editor)})),this.cache[e])}__drawSelectionRanges(t){const{async:e,createInside:s,editor:i}=this.j;e.cancelAnimationFrame(this.wrapFrameRequest);const r=[...t];let o,n=0;return e.promise((t=>{const a=()=>{do{o=r.shift(),o&&(0,c._B)(this.j,o,r,s,i),n+=1}while(o&&5>=n);r.length?this.wrapFrameRequest=e.requestAnimationFrame(a):t()};a()}))}onAfterGetValueFromEditor(t){t.value=(0,c.Tz)(t.value)}afterInit(t){if(t.o.useSearch){const e=this;t.e.on("beforeSetMode.search",(()=>{this.ui.close()})).on(this.ui,"afterClose",(()=>{(0,c.IJ)(t.editor),this.ui.currentIndex=0,this.ui.count=0,this.cache={}})).on("click",(()=>{this.ui.currentIndex=0,(0,c.IJ)(t.editor)})).on("change.search",(()=>{this.cache={}})).on("keydown.search mousedown.search",t.async.debounce((()=>{this.ui.selInfo&&(t.s.removeMarkers(),this.ui.selInfo=null),this.ui.isOpened&&this.updateCounters()}),t.defaultTimeout)).on("searchNext.search searchPrevious.search",(()=>(this.ui.isOpened||this.ui.open(),e.findAndSelect(e.ui.query,"searchNext"===t.e.current).catch((t=>{}))))).on("search.search",((t,s=!0)=>(this.ui.currentIndex=0,e.findAndSelect(t||"",s).catch((t=>{}))))),t.registerCommand("search",{exec(t,s,i=!0){return s&&e.findAndSelect(s,i).catch((t=>{})),!1}}).registerCommand("openSearchDialog",{exec(t,s){return e.ui.open(s),!1},hotkeys:["ctrl+f","cmd+f"]}).registerCommand("openReplaceDialog",{exec(s,i,r){return t.o.readonly||e.ui.open(i,r,!0),!1},hotkeys:["ctrl+h","cmd+h"]})}}beforeDestruct(t){this.ui.destruct(),t.e.off(".search")}}(0,i.Cg)([r.cache],d.prototype,"ui",null),(0,i.Cg)([(0,r.watch)("ui:needUpdateCounters")],d.prototype,"updateCounters",null),(0,i.Cg)([(0,r.watch)("ui:pressReplaceButton")],d.prototype,"onPressReplaceButton",null),(0,i.Cg)([r.autobind],d.prototype,"findQueryBounds",null),(0,i.Cg)([r.autobind],d.prototype,"findAndReplace",null),(0,i.Cg)([r.autobind],d.prototype,"findAndSelect",null),(0,i.Cg)([r.autobind],d.prototype,"find",null),(0,i.Cg)([(0,r.watch)(":afterGetValueFromEditor")],d.prototype,"onAfterGetValueFromEditor",null),n.fg.add("search",d)},63064(t,e,s){"use strict";s.d(e,{F(){return c}});var i=s(31635),r=s(17352),o=s(22664),n=s(71842),a=s(65147),l=s(53048);let c=class t extends l.D${className(){return"UISearch"}render(){return`
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t0/0\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
`}get currentIndex(){return this._currentIndex}set currentIndex(t){this._currentIndex=t,this.currentBox.innerText=""+t}set count(t){this.countBox.innerText=""+t}get query(){return this.queryInput.value}get replace(){return this.replaceInput.value}constructor(t){super(t),this.selInfo=null,this._currentIndex=0,this.isOpened=!1;const{query:e,replace:s,cancel:i,next:o,prev:n,replaceBtn:l,current:c,count:u}=(0,a.refs)(this.container);this.queryInput=e,this.replaceInput=s,this.closeButton=i,this.replaceButton=l,this.currentBox=c,this.countBox=u,t.e.on(this.closeButton,"pointerdown",(()=>(this.close(),!1))).on(this.queryInput,"input",(()=>{this.currentIndex=0})).on(this.queryInput,"pointerdown",(()=>{t.s.isFocused()&&(t.s.removeMarkers(),this.selInfo=t.s.save())})).on(this.replaceButton,"pointerdown",(()=>(t.e.fire(this,"pressReplaceButton"),!1))).on(o,"pointerdown",(()=>(t.e.fire("searchNext"),!1))).on(n,"pointerdown",(()=>(t.e.fire("searchPrevious"),!1))).on(this.queryInput,"input",(()=>{this.setMod("empty-query",!(0,a.trim)(this.queryInput.value).length)})).on(this.queryInput,"keydown",this.j.async.debounce((e=>{e.key===r.KEY_ENTER?(e.preventDefault(),e.stopImmediatePropagation(),t.e.fire("searchNext")&&this.close()):t.e.fire(this,"needUpdateCounters")}),this.j.defaultTimeout))}onEditorKeyDown(t){if(!this.isOpened)return;const{j:e}=this;if(e.getRealMode()===r.MODE_WYSIWYG)switch(t.key){case r.KEY_ESC:this.close();break;case r.KEY_F3:this.queryInput.value&&(e.e.fire(t.shiftKey?"searchPrevious":"searchNext"),t.preventDefault())}}open(t,e,s=!1){this.isOpened||(this.j.workplace.appendChild(this.container),this.isOpened=!0),this.calcSticky(this.j.e.fire("getStickyState.sticky")||!1),this.j.e.fire("hidePopup"),this.setMod("replace",s);const i=t??""+(this.j.s.sel||"");i&&(this.queryInput.value=i),e&&(this.replaceInput.value=e),this.setMod("empty-query",!i.length),this.j.e.fire(this,"needUpdateCounters"),i?this.queryInput.select():this.queryInput.focus()}close(){this.isOpened&&(this.j.s.restore(),n.J.safeRemove(this.container),this.isOpened=!1,this.j.e.fire(this,"afterClose"))}calcSticky(t){if(this.isOpened)if(this.setMod("sticky",t),t){const t=(0,a.position)(this.j.toolbarContainer);(0,a.css)(this.container,{top:t.top+t.height,left:t.left+t.width})}else(0,a.css)(this.container,{top:null,left:null})}};(0,i.Cg)([(0,o.watch)([":keydown","queryInput:keydown"])],c.prototype,"onEditorKeyDown",null),(0,i.Cg)([o.autobind],c.prototype,"open",null),(0,i.Cg)([o.autobind],c.prototype,"close",null),(0,i.Cg)([(0,o.watch)(":toggleSticky")],c.prototype,"calcSticky",null),c=(0,i.Cg)([o.component],c)},29581(t,e,s){"use strict";s(36115).T.prototype.tableAllowCellSelection=!0},46939(t,e,s){"use strict";var i=s(31635),r=s(17352),o=s(22664),n=s(55186),a=s(56298),l=s(65147),c=s(71005),u=s(11648);s(29581);const d="table_processor_observer",h="onMoveTableSelectCell";class p extends c.k{constructor(){super(...arguments),this.__selectedCell=null,this.__isSelectionMode=!1}get __tableModule(){return this.j.getInstance(u.X,this.j.o)}afterInit(t){t.o.tableAllowCellSelection&&t.e.on("keydown.select-cells",(t=>{t.key===r.KEY_TAB&&this.unselectCells()})).on("beforeCommand.select-cells",this.onExecCommand).on("afterCommand.select-cells",this.onAfterCommand).on(["clickEditor","mousedownTd","mousedownTh","touchstartTd","touchstartTh"].map((t=>t+".select-cells")).join(" "),this.onStartSelection).on("clickTr clickTbody",(()=>{const t=this.__tableModule.getAllSelectedCells().length;if(t)return t>1&&this.j.s.sel?.removeAllRanges(),!1}))}onStartSelection(t){if(this.j.o.readonly)return;if(this.unselectCells(),t===this.j.editor)return;const e=n.J.closest(t,"table",this.j.editor);return t&&e?(t.firstChild||t.appendChild(this.j.createInside.element("br")),this.__isSelectionMode=!0,this.__selectedCell=t,this.__tableModule.addSelection(t),this.j.e.on(e,"mousemove.select-cells touchmove.select-cells",this.j.async.throttle(this.__onMove.bind(this,e),{label:h,timeout:this.j.defaultTimeout/2})).on(e,"mouseup.select-cells touchend.select-cells",this.__onStopSelection.bind(this,e)),!1):void 0}onOutsideClick(){this.__selectedCell=null,this.__onRemoveSelection()}onChange(){this.j.isLocked||this.__isSelectionMode||this.__onRemoveSelection()}__onMove(t,e){if(this.j.o.readonly&&!this.j.isLocked)return;if(this.j.isLockedNotBy(d))return;const s=this.j.ed.elementFromPoint(e.clientX,e.clientY);if(!s)return;const i=n.J.closest(s,["td","th"],t);if(!i||!this.__selectedCell)return;i!==this.__selectedCell&&this.j.lock(d),this.unselectCells();const r=this.__tableModule.getSelectedBound(t,[i,this.__selectedCell]),o=this.__tableModule.formalMatrix(t);for(let t=r[0][0];r[1][0]>=t;t+=1)for(let e=r[0][1];r[1][1]>=e;e+=1)this.__tableModule.addSelection(o[t][e]);this.__tableModule.getAllSelectedCells().length>1&&this.j.s.sel?.removeAllRanges(),this.j.e.fire("hidePopup"),e.stopPropagation(),(()=>{const t=this.j.createInside.fromHTML('
 
');i.appendChild(t),this.j.async.setTimeout((()=>{t.parentNode?.removeChild(t)}),this.j.defaultTimeout/5)})()}__onRemoveSelection(t){if(!t?.buffer?.actionTrigger&&!this.__selectedCell&&this.__tableModule.getAllSelectedCells().length)return this.j.unlock(),this.unselectCells(),void this.j.e.fire("hidePopup","cells");this.__isSelectionMode=!1,this.__selectedCell=null}__onStopSelection(t,e){if(!this.__selectedCell)return;this.__isSelectionMode=!1,this.j.unlock();const s=this.j.ed.elementFromPoint(e.clientX,e.clientY);if(!s)return;const i=n.J.closest(s,["td","th"],t);if(!i)return;const r=n.J.closest(i,"table",t);if(r&&r!==t)return;const o=this.__tableModule.getSelectedBound(t,[i,this.__selectedCell]),a=this.__tableModule.formalMatrix(t),c=a[o[1][0]][o[1][1]],u=a[o[0][0]][o[0][1]];this.j.e.fire("showPopup",t,(()=>{const t=(0,l.position)(u,this.j),e=(0,l.position)(c,this.j);return{left:t.left,top:t.top,width:e.left-t.left+e.width,height:e.top-t.top+e.height}}),"cells"),(0,l.$$)("table",this.j.editor).forEach((t=>{this.j.e.off(t,"mousemove.select-cells touchmove.select-cells mouseup.select-cells touchend.select-cells")})),this.j.async.clearTimeout(h)}unselectCells(t){const e=this.__tableModule,s=e.getAllSelectedCells();s.length&&s.forEach((s=>{t&&t===s||e.removeSelection(s)}))}onExecCommand(t){if(/table(splitv|splitg|merge|empty|bin|binrow|bincolumn|addcolumn|addrow)/.test(t)){t=t.replace("table","");const e=this.__tableModule.getAllSelectedCells();if(e.length){const[s]=e;if(!s)return;const i=n.J.closest(s,"table",this.j.editor);if(!i)return;switch(t){case"splitv":this.__tableModule.splitVertical(i);break;case"splitg":this.__tableModule.splitHorizontal(i);break;case"merge":this.__tableModule.mergeSelected(i);break;case"empty":e.forEach((t=>n.J.detach(t)));break;case"bin":n.J.safeRemove(i);break;case"binrow":new Set(e.map((t=>t.parentNode))).forEach((t=>{this.__tableModule.removeRow(i,t.rowIndex)}));break;case"bincolumn":{const t=new Set;e.reduce(((e,s)=>(t.has(s.cellIndex)||(e.push(s),t.add(s.cellIndex)),e)),[]).forEach((t=>{this.__tableModule.removeColumn(i,t.cellIndex)}))}break;case"addcolumnafter":case"addcolumnbefore":this.__tableModule.appendColumn(i,s.cellIndex,"addcolumnafter"===t);break;case"addrowafter":case"addrowbefore":this.__tableModule.appendRow(i,s.parentNode,"addrowafter"===t)}}return!1}}onAfterCommand(t){/^justify/.test(t)&&this.__tableModule.getAllSelectedCells().forEach((e=>(0,l.alignElement)(t,e)))}beforeDestruct(t){this.__onRemoveSelection(),t.e.off(".select-cells")}}p.requires=["select"],(0,i.Cg)([o.autobind],p.prototype,"onStartSelection",null),(0,i.Cg)([(0,o.watch)(":outsideClick")],p.prototype,"onOutsideClick",null),(0,i.Cg)([(0,o.watch)(":change")],p.prototype,"onChange",null),(0,i.Cg)([o.autobind],p.prototype,"__onRemoveSelection",null),(0,i.Cg)([o.autobind],p.prototype,"__onStopSelection",null),(0,i.Cg)([o.autobind],p.prototype,"onExecCommand",null),(0,i.Cg)([o.autobind],p.prototype,"onAfterCommand",null),a.fg.add("selectCells",p)},41133(t,e,s){"use strict";s(36115).T.prototype.select={normalizeSelectionBeforeCutAndCopy:!1,normalizeTripleClick:!0}},35523(t,e,s){"use strict";var i=s(31635),r=s(22664),o=s(55186),n=s(56298),a=s(83260),l=s(71005),c=s(53048);s(41133);class u extends l.k{constructor(){super(...arguments),this.proxyEventsList=["click","mousedown","touchstart","mouseup","touchend"]}afterInit(t){this.proxyEventsList.forEach((e=>{t.e.on(e+".select",this.onStartSelection)}))}beforeDestruct(t){this.proxyEventsList.forEach((e=>{t.e.on(e+".select",this.onStartSelection)}))}onStartSelection(t){const{j:e}=this;let s,i=t.target;for(;void 0===s&&i&&i!==e.editor;)s=e.e.fire((0,a.x)(t.type+"_"+i.nodeName.toLowerCase()),i,t),i=i.parentElement;"click"===t.type&&void 0===s&&i===e.editor&&e.e.fire(t.type+"Editor",i,t)}onOutsideClick(t){const e=t.target;o.J.up(e,(t=>t===this.j.editor))||c.D$.closestElement(e,c.zD)||this.j.e.fire("outsideClick",t)}beforeCommandCut(){const{s:t}=this.j;if(!t.isCollapsed()){const e=t.current();e&&o.J.isOrContains(this.j.editor,e)&&this.onCopyNormalizeSelectionBound()}}beforeCommandSelectAll(){const{s:t}=this.j;return t.focus(),t.select(this.j.editor,!0),t.expandSelection(),!1}onTripleClickNormalizeSelection(t){if(3!==t.detail||!this.j.o.select.normalizeTripleClick)return;const{s:e}=this.j,{startContainer:s,startOffset:i}=e.range;0===i&&o.J.isText(s)&&e.select(o.J.closest(s,o.J.isBlock,this.j.editor)||s,!0)}onCopyNormalizeSelectionBound(t){const{s:e,editor:s,o:i}=this.j;i.select.normalizeSelectionBeforeCutAndCopy&&!e.isCollapsed()&&(!t||t.isTrusted&&o.J.isNode(t.target)&&o.J.isOrContains(s,t.target))&&this.jodit.s.expandSelection()}}(0,i.Cg)([r.autobind],u.prototype,"onStartSelection",null),(0,i.Cg)([(0,r.watch)("ow:click")],u.prototype,"onOutsideClick",null),(0,i.Cg)([(0,r.watch)([":beforeCommandCut"])],u.prototype,"beforeCommandCut",null),(0,i.Cg)([(0,r.watch)([":beforeCommandSelectall"])],u.prototype,"beforeCommandSelectAll",null),(0,i.Cg)([(0,r.watch)([":click"])],u.prototype,"onTripleClickNormalizeSelection",null),(0,i.Cg)([(0,r.watch)([":copy",":cut"])],u.prototype,"onCopyNormalizeSelectionBound",null),n.fg.add("select",u)},78134(t,e,s){"use strict";var i=s(36115);i.T.prototype.minWidth=200,i.T.prototype.maxWidth="100%",i.T.prototype.minHeight=200,i.T.prototype.maxHeight="auto",i.T.prototype.saveHeightInStorage=!1},69077(t,e,s){"use strict";var i=s(31635),r=s(22664),o=s(56298),n=s(2461),a=s(38322),l=s(29866);s(78134);let c=class t extends l.k{constructor(){super(...arguments),this.__resizeWorkspaces=this.j.async.debounce(this.__resizeWorkspaceImd,this.j.defaultTimeout,!0)}afterInit(t){t.e.on("setHeight.size",this.__setHeight).on("setWidth.size",this.__setWidth).on("afterInit.size changePlace.size",this.__initialize,{top:!0}).on(t.ow,"load.size",this.__resizeWorkspaces).on("afterInit.size resize.size afterUpdateToolbar.size scroll.size afterResize.size",this.__resizeWorkspaces).on("toggleFullSize.size toggleToolbar.size",this.__resizeWorkspaceImd),this.__initialize()}__initialize(){const{j:t}=this;if(t.o.inline)return;let{height:e}=t.o;if(t.o.saveHeightInStorage&&"auto"!==e){const s=t.storage.get("height");s&&(e=s)}(0,a.A)(t.editor,{minHeight:"100%"}),(0,a.A)(t.container,{minHeight:t.o.minHeight,maxHeight:t.o.maxHeight,minWidth:t.o.minWidth,maxWidth:t.o.maxWidth}),t.isFullSize||(this.__setHeight(e),this.__setWidth(t.o.width))}__setHeight(t){if((0,n.E)(t)){const{minHeight:e,maxHeight:s}=this.j.o;(0,n.E)(e)&&e>t&&(t=e),(0,n.E)(s)&&t>s&&(t=s)}(0,a.A)(this.j.container,"height",t),this.j.o.saveHeightInStorage&&this.j.storage.set("height",t),this.__resizeWorkspaceImd()}__setWidth(t){if((0,n.E)(t)){const{minWidth:e,maxWidth:s}=this.j.o;(0,n.E)(e)&&e>t&&(t=e),(0,n.E)(s)&&t>s&&(t=s)}(0,a.A)(this.j.container,"width",t),this.__resizeWorkspaceImd()}__getNotWorkHeight(){return(this.j.toolbarContainer?.offsetHeight||0)+(this.j.statusbar?.getHeight()||0)+2}__resizeWorkspaceImd(){if(!this.j||this.j.isDestructed||!this.j.o||this.j.o.inline)return;if(!this.j.container||!this.j.container.parentNode)return;const t=((0,a.A)(this.j.container,"minHeight")||0)-this.__getNotWorkHeight();if((0,n.E)(t)&&t>0&&([this.j.workplace,this.j.iframe,this.j.editor].map((e=>{e&&(0,a.A)(e,"minHeight",t)})),this.j.e.fire("setMinHeight",t)),(0,n.E)(this.j.o.maxHeight)){const t=this.j.o.maxHeight-this.__getNotWorkHeight();[this.j.workplace,this.j.iframe,this.j.editor].map((e=>{e&&(0,a.A)(e,"maxHeight",t)})),this.j.e.fire("setMaxHeight",t)}this.j.container&&(0,a.A)(this.j.workplace,"height","auto"!==this.j.o.height||this.j.isFullSize?this.j.container.offsetHeight-this.__getNotWorkHeight():"auto")}beforeDestruct(t){t.e.off(t.ow,"load.size",this.__resizeWorkspaces).off(".size")}};(0,i.Cg)([(0,r.throttle)()],c.prototype,"__initialize",null),(0,i.Cg)([r.autobind],c.prototype,"__resizeWorkspaceImd",null),c=(0,i.Cg)([r.autobind],c),o.fg.add("size",c)},90722(t,e,s){"use strict";var i=s(17352),r=s(931),o=s(9103),n=s.n(o),a=s(36115);a.T.prototype.beautifyHTML=!i.IS_IE,a.T.prototype.sourceEditor="ace",a.T.prototype.sourceEditorNativeOptions={showGutter:!0,theme:"ace/theme/idle_fingers",mode:"ace/mode/html",wrap:!0,highlightActiveLine:!0},a.T.prototype.sourceEditorCDNUrlsJS=["https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.2/ace.js"],a.T.prototype.beautifyHTMLCDNUrlsJS=["https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.4/beautify.min.js","https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.4/beautify-html.min.js"],r.I.set("source",n()),a.T.prototype.controls.source={mode:i.MODE_SPLIT,exec(t){t.toggleMode()},isActive(t){return t.getRealMode()===i.MODE_SOURCE},tooltip:"Change mode"}},5533(t,e,s){"use strict";s.d(e,{p(){return n}});var i=s(17352),r=s(65147),o=s(53380);class n extends o.F{constructor(){super(...arguments),this.className="jodit_ace_editor",this.proxyOnBlur=t=>{this.j.e.fire("blur",t)},this.proxyOnFocus=t=>{this.j.e.fire("focus",t)},this.proxyOnMouseDown=t=>{this.j.e.fire("mousedown",t)}}aceExists(){return void 0!==this.j.ow.ace}getLastColumnIndex(t){return this.instance.session.getLine(t).length}getLastColumnIndices(){const t=this.instance.session.getLength(),e=[];let s=0;for(let i=0;t>i;i++)s+=this.getLastColumnIndex(i),i>0&&(s+=1),e[i]=s;return e}getRowColumnIndices(t){const e=this.getLastColumnIndices();if(e[0]>=t)return{row:0,column:t};let s=1;for(let i=1;e.length>i;i++)t>e[i]&&(s=i+1);return{row:s,column:t-e[s-1]-1}}setSelectionRangeIndices(t,e){const s=this.getRowColumnIndices(t),i=this.getRowColumnIndices(e);this.instance.getSelection().setSelectionRange({start:s,end:i})}getIndexByRowColumn(t,e){return this.getLastColumnIndices()[t]-this.getLastColumnIndex(t)+e}init(t){const e=()=>{if(void 0!==this.instance||!this.aceExists())return;const e=this.j.c.div("jodit-source__mirror-fake");this.container.appendChild(e),this.instance=t.ow.ace.edit(e),this.instance.setTheme(t.o.sourceEditorNativeOptions.theme),this.instance.renderer.setShowGutter(t.o.sourceEditorNativeOptions.showGutter),this.instance.getSession().setMode(t.o.sourceEditorNativeOptions.mode),this.instance.setHighlightActiveLine(t.o.sourceEditorNativeOptions.highlightActiveLine),this.instance.getSession().setUseWrapMode(!0),this.instance.setOption("indentedSoftWrap",!1),this.instance.setOption("wrap",t.o.sourceEditorNativeOptions.wrap),this.instance.getSession().setUseWorker(!1),this.instance.$blockScrolling=1/0,this.instance.on("change",this.toWYSIWYG),this.instance.on("focus",this.proxyOnFocus),this.instance.on("mousedown",this.proxyOnMouseDown),this.instance.on("blur",this.proxyOnBlur),t.getRealMode()!==i.MODE_WYSIWYG&&this.setValue(this.getValue());const s=this.j.async.debounce((()=>{t.isInDestruct||(this.instance.setOption("maxLines","auto"!==t.o.height?t.workplace.offsetHeight/this.instance.renderer.lineHeight:1/0),this.instance.resize())}),2*this.j.defaultTimeout);t.e.on("afterResize afterSetMode",s),s(),this.onReady()};t.e.on("afterSetMode",(()=>{t.getRealMode()!==i.MODE_SOURCE&&t.getMode()!==i.MODE_SPLIT||(this.fromWYSIWYG(),e())})),e(),this.aceExists()||(0,r.loadNext)(t,t.o.sourceEditorCDNUrlsJS).then((()=>{t.isInDestruct||e()})).catch((()=>null))}destruct(){this.instance.off("change",this.toWYSIWYG),this.instance.off("focus",this.proxyOnFocus),this.instance.off("mousedown",this.proxyOnMouseDown),this.instance.destroy(),this.j?.events?.off("aceInited.source")}setValue(t){if(!this.j.o.editHTMLDocumentMode&&this.j.o.beautifyHTML){const e=this.j.e.fire("beautifyHTML",t);(0,r.isString)(e)&&(t=e)}this.instance.setValue(t),this.instance.clearSelection()}getValue(){return this.instance.getValue()}setReadOnly(t){this.instance.setReadOnly(t)}get isFocused(){return this.instance.isFocused()}focus(){this.instance.focus()}blur(){this.instance.blur()}getSelectionStart(){const t=this.instance.selection.getRange();return this.getIndexByRowColumn(t.start.row,t.start.column)}getSelectionEnd(){const t=this.instance.selection.getRange();return this.getIndexByRowColumn(t.end.row,t.end.column)}selectAll(){this.instance.selection.selectAll()}insertRaw(t){const e=this.instance.selection.getCursor(),s=this.instance.session.insert(e,t);this.instance.selection.setRange({start:e,end:s},!1)}setSelectionRange(t,e){this.setSelectionRangeIndices(t,e)}setPlaceHolder(t){}replaceUndoManager(){const{history:t}=this.jodit;this.instance.commands.addCommand({name:"Undo",bindKey:{win:"Ctrl-Z",mac:"Command-Z"},exec(){t.undo()}}),this.instance.commands.addCommand({name:"Redo",bindKey:{win:"Ctrl-Shift-Z",mac:"Command-Shift-Z"},exec(){t.redo()}})}}},55265(t,e,s){"use strict";s.d(e,{S(){return n}});var i=s(55186),r=s(38322),o=s(53380);class n extends o.F{constructor(){super(...arguments),this.autosize=this.j.async.debounce((()=>{this.instance.style.height="auto",this.instance.style.height=this.instance.scrollHeight+"px"}),this.j.defaultTimeout)}init(t){this.instance=t.c.element("textarea",{class:"jodit-source__mirror"}),this.container.appendChild(this.instance),t.e.on(this.instance,"mousedown keydown touchstart input",t.async.debounce(this.toWYSIWYG,t.defaultTimeout)).on("setMinHeight.source",(t=>{(0,r.A)(this.instance,"minHeight",t)})).on(this.instance,"change keydown mousedown touchstart input",this.autosize).on("afterSetMode.source",this.autosize).on(this.instance,"mousedown focus",(e=>{t.e.fire(e.type,e)})),this.autosize(),this.onReady()}destruct(){i.J.safeRemove(this.instance)}getValue(){return this.instance.value}setValue(t){this.instance.value=t}insertRaw(t){const e=this.getValue();if(0>this.getSelectionStart())this.setValue(e+t);else{const s=this.getSelectionStart(),i=this.getSelectionEnd();this.setValue(e.substring(0,s)+t+e.substring(i,e.length))}}getSelectionStart(){return this.instance.selectionStart}getSelectionEnd(){return this.instance.selectionEnd}setSelectionRange(t,e=t){this.instance.setSelectionRange(t,e)}get isFocused(){return this.instance===this.j.od.activeElement}focus(){this.instance.focus()}blur(){this.instance.blur()}setPlaceHolder(t){this.instance.setAttribute("placeholder",t)}setReadOnly(t){t?this.instance.setAttribute("readonly","true"):this.instance.removeAttribute("readonly")}selectAll(){this.instance.select()}replaceUndoManager(){const{history:t}=this.jodit;this.j.e.on(this.instance,"keydown",(e=>{if((e.ctrlKey||e.metaKey)&&"z"===e.key)return e.shiftKey?t.redo():t.undo(),this.setSelectionRange(this.getValue().length),!1}))}}},76134(t,e,s){"use strict";s.d(e,{S(){return r.S},p(){return i.p}});var i=s(5533),r=s(55265)},1992(t,e,s){"use strict";s.d(e,{b(){return o}});var i=s(65147),r=s(76134);function o(t,e,s,o,n){let a;if((0,i.isFunction)(t))a=t(e);else switch(t){case"ace":if(!e.o.shadowRoot){a=new r.p(e,s,o,n);break}default:a=new r.S(e,s,o,n)}return a.init(e),a.onReadyAlways((()=>{a.setReadOnly(e.o.readonly)})),a}},53380(t,e,s){"use strict";s.d(e,{F(){return i}});class i{constructor(t,e,s,i){this.jodit=t,this.container=e,this.toWYSIWYG=s,this.fromWYSIWYG=i,this.className="",this.isReady=!1}get j(){return this.jodit}onReady(){this.replaceUndoManager(),this.isReady=!0,this.j.e.fire(this,"ready")}onReadyAlways(t){this.isReady?t():this.j.events?.on(this,"ready",t)}}},93669(t,e,s){"use strict";var i=s(31635),r=s(17352),o=s(22664),n=s(55186),a=s(56298),l=s(65147),c=s(71005),u=(s(90722),s(1992));class d extends c.k{constructor(){super(...arguments),this.buttons=[{name:"source",group:"source"}],this.__lock=!1,this.__oldMirrorValue="",this.tempMarkerStart="{start-jodit-selection}",this.tempMarkerStartReg=/{start-jodit-selection}/g,this.tempMarkerEnd="{end-jodit-selection}",this.tempMarkerEndReg=/{end-jodit-selection}/g,this.getSelectionStart=()=>this.sourceEditor?.getSelectionStart()??0,this.getSelectionEnd=()=>this.sourceEditor?.getSelectionEnd()??0}onInsertHTML(t){if(!this.j.o.readonly&&!this.j.isEditorMode())return this.sourceEditor?.insertRaw(t),this.toWYSIWYG(),!1}fromWYSIWYG(t=!1){if(!this.__lock||!0===t){this.__lock=!0;const t=this.j.getEditorValue(!1,r.SOURCE_CONSUMER);t!==this.getMirrorValue()&&this.setMirrorValue(t),this.__lock=!1}}toWYSIWYG(){if(this.__lock)return;const t=this.getMirrorValue();t!==this.__oldMirrorValue&&(this.__lock=!0,this.j.value=t,this.__lock=!1,this.__oldMirrorValue=t)}getNormalPosition(t,e){for(e=e.replace(/<(script|style|iframe)[^>]*>[^]*?<\/\1>/im,(t=>{let e="";for(let s=0;t.length>s;s+=1)e+=r.INVISIBLE_SPACE;return e}));t>0&&e[t]===r.INVISIBLE_SPACE;)t--;let s=t;for(;s>0;){if(s--,"<"===e[s]&&void 0!==e[s+1]&&e[s+1].match(/[\w/]+/i))return s;if(">"===e[s])return t}return t}clnInv(t){return t.replace(r.INVISIBLE_SPACE_REG_EXP(),"")}onSelectAll(t){if("selectall"===t.toLowerCase()&&this.j.getRealMode()===r.MODE_SOURCE)return this.sourceEditor?.selectAll(),!1}getMirrorValue(){return this.sourceEditor?.getValue()||""}setMirrorValue(t){this.sourceEditor?.setValue(t)}setFocusToMirror(){this.sourceEditor?.focus()}saveSelection(){if(this.j.getRealMode()===r.MODE_WYSIWYG)this.j.s.save(),this.j.synchronizeValues(),this.fromWYSIWYG(!0);else{if(this.j.o.editHTMLDocumentMode)return;const t=this.getMirrorValue();if(this.getSelectionStart()===this.getSelectionEnd()){const e=this.j.s.marker(!0),s=this.getNormalPosition(this.getSelectionStart(),this.getMirrorValue());this.setMirrorValue(t.substring(0,s)+this.clnInv(e.outerHTML)+t.substring(s))}else{const e=this.j.s.marker(!0),s=this.j.s.marker(!1),i=this.getNormalPosition(this.getSelectionStart(),t),r=this.getNormalPosition(this.getSelectionEnd(),t);this.setMirrorValue(t.slice(0,i)+this.clnInv(e.outerHTML)+t.slice(i,r)+this.clnInv(s.outerHTML)+t.slice(r))}this.toWYSIWYG()}}removeSelection(){if(this.j.getRealMode()===r.MODE_WYSIWYG)return this.__lock=!0,this.j.s.restore(),void(this.__lock=!1);let t=this.getMirrorValue(),e=0,s=0;try{if(t=t.replace(/]+data-jodit-selection_marker=(["'])start\1[^>]*>[<>]*?<\/span>/gim,this.tempMarkerStart).replace(/]+data-jodit-selection_marker=(["'])end\1[^>]*>[<>]*?<\/span>/gim,this.tempMarkerEnd),!this.j.o.editHTMLDocumentMode&&this.j.o.beautifyHTML){const e=this.j.e.fire("beautifyHTML",t);(0,l.isString)(e)&&(t=e)}if(e=t.indexOf(this.tempMarkerStart),s=e,t=t.replace(this.tempMarkerStartReg,""),-1!==e){const e=t.indexOf(this.tempMarkerEnd);-1!==e&&(s=e)}t=t.replace(this.tempMarkerEndReg,"")}finally{t=t.replace(this.tempMarkerEndReg,"").replace(this.tempMarkerStartReg,"")}this.setMirrorValue(t),this.setMirrorSelectionRange(e,s),this.toWYSIWYG(),this.setFocusToMirror()}setMirrorSelectionRange(t,e){this.sourceEditor?.setSelectionRange(t,e)}onReadonlyReact(){this.sourceEditor?.setReadOnly(this.j.o.readonly)}afterInit(t){if(this.mirrorContainer=t.c.div("jodit-source"),t.workplace.appendChild(this.mirrorContainer),t.e.on("afterAddPlace changePlace afterInit",(()=>{t.workplace.appendChild(this.mirrorContainer)})),this.sourceEditor=(0,u.b)("area",t,this.mirrorContainer,this.toWYSIWYG,this.fromWYSIWYG),t.e.on(t.ow,"keydown",(t=>{t.key===r.KEY_ESC&&this.sourceEditor?.isFocused&&this.sourceEditor.blur()})),this.onReadonlyReact(),t.e.on("placeholder.source",(t=>{this.sourceEditor?.setPlaceHolder(t)})).on("change.source",this.syncValueFromWYSIWYG).on("beautifyHTML",(t=>t)),t.o.beautifyHTML){const e=()=>{if(t.isInDestruct)return!1;const e=t.ow.html_beautify;return!(!e||t.isInDestruct||(t.events?.off("beautifyHTML").on("beautifyHTML",(t=>e(t))),0))};e()||(0,l.loadNext)(t,t.o.beautifyHTMLCDNUrlsJS).then(e,(()=>null))}this.syncValueFromWYSIWYG(!0),this.initSourceEditor(t)}syncValueFromWYSIWYG(t=!1){const e=this.j;e.getMode()!==r.MODE_SPLIT&&e.getMode()!==r.MODE_SOURCE||this.fromWYSIWYG(t)}initSourceEditor(t){if("area"!==t.o.sourceEditor){const e=(0,u.b)(t.o.sourceEditor,t,this.mirrorContainer,this.toWYSIWYG,this.fromWYSIWYG);e.onReadyAlways((()=>{this.sourceEditor?.destruct(),this.sourceEditor=e,this.syncValueFromWYSIWYG(!0),t.events?.fire("sourceEditorReady",t)}))}else this.sourceEditor?.onReadyAlways((()=>{this.syncValueFromWYSIWYG(!0),t.events?.fire("sourceEditorReady",t)}))}beforeDestruct(){this.sourceEditor&&(this.sourceEditor.destruct(),delete this.sourceEditor),n.J.safeRemove(this.mirrorContainer)}}(0,i.Cg)([(0,o.watch)(":insertHTML.source")],d.prototype,"onInsertHTML",null),(0,i.Cg)([o.autobind],d.prototype,"fromWYSIWYG",null),(0,i.Cg)([o.autobind],d.prototype,"toWYSIWYG",null),(0,i.Cg)([o.autobind],d.prototype,"getNormalPosition",null),(0,i.Cg)([(0,o.watch)(":beforeCommand.source")],d.prototype,"onSelectAll",null),(0,i.Cg)([(0,o.watch)(":beforeSetMode.source")],d.prototype,"saveSelection",null),(0,i.Cg)([(0,o.watch)(":afterSetMode.source")],d.prototype,"removeSelection",null),(0,i.Cg)([o.autobind],d.prototype,"setMirrorSelectionRange",null),(0,i.Cg)([(0,o.watch)(":readonly.source")],d.prototype,"onReadonlyReact",null),(0,i.Cg)([o.autobind],d.prototype,"syncValueFromWYSIWYG",null),a.fg.add("source",d)},78703(t,e,s){"use strict";var i=s(931),r=s(49989),o=s.n(r),n=s(36115);n.T.prototype.spellcheck=!1,i.I.set("spellcheck",o()),n.T.prototype.controls.spellcheck={isActive:t=>t.o.spellcheck,icon:o(),name:"spellcheck",command:"toggleSpellcheck",tooltip:"Spellcheck"}},82602(t){"use strict";t.exports={Spellcheck:"التدقيق الإملائي"}},24575(t){"use strict";t.exports={Spellcheck:"Kontrola pravopisu"}},37414(t){"use strict";t.exports={Spellcheck:"Rechtschreibprüfung"}},82333(t){"use strict";t.exports={Spellcheck:"Corrección ortográfica"}},80124(t){"use strict";t.exports={Spellcheck:"غلطیابی املایی"}},96516(t){"use strict";t.exports={Spellcheck:"Oikeinkirjoituksen tarkistus"}},30965(t){"use strict";t.exports={Spellcheck:"Vérification Orthographique"}},80194(t){"use strict";t.exports={Spellcheck:"בדיקת איות"}},49458(t){"use strict";t.exports={Spellcheck:"Helyesírás-ellenőrzés"}},8916(t){"use strict";t.exports={Spellcheck:"Spellchecking"}},11995(t,e,s){"use strict";s.r(e),s.d(e,{ar(){return i},cs_cz(){return r},de(){return o},es(){return n},fa(){return a},fi(){return l},fr(){return c},he(){return u},hu(){return d},id(){return h},it(){return p},ja(){return m},ko(){return g},mn(){return f},nl(){return v},pl(){return b},pt_br(){return y},ru(){return _},tr(){return w},zh_cn(){return C},zh_tw(){return k}});var i=s(82602),r=s(24575),o=s(37414),n=s(82333),a=s(80124),l=s(96516),c=s(30965),u=s(80194),d=s(49458),h=s(8916),p=s(43268),m=s(11968),g=s(12715),f=s(45698),v=s(40119),b=s(92657),y=s(68648),_=s(70420),w=s(98439),C=s(55835),k=s(34747)},43268(t){"use strict";t.exports={Spellcheck:"Controllo ortografico"}},11968(t){"use strict";t.exports={Spellcheck:"スペルチェック"}},12715(t){"use strict";t.exports={Spellcheck:"맞춤법 검사"}},45698(t){"use strict";t.exports={Spellcheck:"Дүрмийн алдаа шалгах"}},40119(t){"use strict";t.exports={Spellcheck:"Spellingcontrole"}},92657(t){"use strict";t.exports={Spellcheck:"Sprawdzanie pisowni"}},68648(t){"use strict";t.exports={Spellcheck:"Verificação ortográfica"}},70420(t){"use strict";t.exports={Spellcheck:"Проверка орфографии"}},98439(t){"use strict";t.exports={Spellcheck:"Yazım denetimi"}},55835(t){"use strict";t.exports={Spellcheck:"拼写检查"}},34747(t){"use strict";t.exports={Spellcheck:"拼字檢查"}},97179(t,e,s){"use strict";var i=s(31635),r=s(22664),o=s(56298),n=s(26150),a=s(71005),l=(s(78703),s(11995));class c extends a.k{constructor(t){super(t),this.buttons=[{group:"state",name:"spellcheck"}],(0,o.JW)(l)}afterInit(t){t.e.on("afterInit afterAddPlace prepareWYSIWYGEditor",this.toggleSpellcheck),this.toggleSpellcheck(),t.registerCommand("toggleSpellcheck",(()=>{this.jodit.o.spellcheck=!this.jodit.o.spellcheck,this.toggleSpellcheck(),this.j.e.fire("updateToolbar")}))}toggleSpellcheck(){(0,n.C)(this.jodit.editor,"spellcheck",this.jodit.o.spellcheck)}beforeDestruct(t){}}(0,i.Cg)([r.autobind],c.prototype,"toggleSpellcheck",null),o.fg.add("spellcheck",c)},27195(t,e,s){"use strict";var i=s(36115);i.T.prototype.showCharsCounter=!0,i.T.prototype.countHTMLChars=!1,i.T.prototype.showWordsCounter=!0},65199(t,e,s){"use strict";var i=s(17352),r=s(55186),o=s(56298),n=s(29866);s(27195),o.fg.add("stat",class a extends n.k{constructor(){super(...arguments),this.charCounter=null,this.wordCounter=null,this.reInit=()=>{this.j.o.showCharsCounter&&this.charCounter&&this.j.statusbar.append(this.charCounter,!0),this.j.o.showWordsCounter&&this.wordCounter&&this.j.statusbar.append(this.wordCounter,!0),this.j.e.off("change keyup",this.calc).on("change keyup",this.calc),this.calc()},this.calc=this.j.async.throttle((()=>{const t=this.j.text;if(this.j.o.showCharsCounter&&this.charCounter){const e=this.j.o.countHTMLChars?this.j.value:t.replace((0,i.SPACE_REG_EXP)(),"");this.charCounter.textContent=this.j.i18n("Chars: %d",e.length)}this.j.o.showWordsCounter&&this.wordCounter&&(this.wordCounter.textContent=this.j.i18n("Words: %d",t.replace((0,i.INVISIBLE_SPACE_REG_EXP)(),"").split((0,i.SPACE_REG_EXP)()).filter((t=>t.length)).length))}),this.j.defaultTimeout)}afterInit(){this.charCounter=this.j.c.span(),this.wordCounter=this.j.c.span(),this.j.e.on("afterInit changePlace afterAddPlace",this.reInit),this.reInit()}beforeDestruct(){r.J.safeRemove(this.charCounter),r.J.safeRemove(this.wordCounter),this.j.e.off("afterInit changePlace afterAddPlace",this.reInit),this.charCounter=null,this.wordCounter=null}})},63400(t,e,s){"use strict";var i=s(36115);i.T.prototype.toolbarSticky=!0,i.T.prototype.toolbarDisableStickyForMobile=!0,i.T.prototype.toolbarStickyOffset=0},1677(t,e,s){"use strict";var i=s(31635),r=s(17352),o=s(22664),n=s(55186),a=s(56298),l=s(65147),c=s(29866);s(63400);const u=!r.IS_ES_NEXT&&r.IS_IE;class d extends c.k{constructor(){super(...arguments),this.__isToolbarStuck=!1,this.__createDummy=t=>{this.__dummyBox=this.j.c.div(),this.__dummyBox.classList.add("jodit_sticky-dummy_toolbar"),this.j.container.insertBefore(this.__dummyBox,t)},this.addSticky=t=>{this.__isToolbarStuck||(u&&!this.__dummyBox&&this.__createDummy(t),this.j.container.classList.add("jodit_sticky"),this.__isToolbarStuck=!0),(0,l.css)(t,{top:this.j.o.toolbarStickyOffset||null,width:this.j.container.offsetWidth-2}),this.__dummyBox&&(0,l.css)(this.__dummyBox,{height:t.offsetHeight})},this.removeSticky=t=>{this.__isToolbarStuck&&((0,l.css)(t,{width:"",top:""}),this.j.container.classList.remove("jodit_sticky"),this.__isToolbarStuck=!1)}}afterInit(t){t.e.on(t.ow,"scroll.sticky wheel.sticky mousewheel.sticky resize.sticky",this.__onScroll).on("getStickyState.sticky",(()=>this.__isToolbarStuck))}__onScroll(){const{jodit:t}=this;if(!t.o.toolbarSticky||!t.o.toolbar)return;const e=t.ow.pageYOffset||t.od.documentElement&&t.od.documentElement.scrollTop||0,s=(0,l.offset)(t.container,t,t.od,!0),i=t.getMode()===r.MODE_WYSIWYG&&e+t.o.toolbarStickyOffset>s.top&&s.top+s.height>e+t.o.toolbarStickyOffset&&!(t.o.toolbarDisableStickyForMobile&&this.__isMobile());if(this.__isToolbarStuck===i)return;const o=t.toolbarContainer;o&&(i?this.addSticky(o):this.removeSticky(o)),t.e.fire("toggleSticky",i)}__isMobile(){const{j:t}=this;return t&&t.options&&t.container&&t.options.sizeSM>=t.container.offsetWidth}beforeDestruct(t){n.J.safeRemove(this.__dummyBox),t.e.off(t.ow,"scroll.sticky wheel.sticky mousewheel.sticky resize.sticky",this.__onScroll).off(".sticky")}}(0,i.Cg)([(0,o.throttle)()],d.prototype,"__onScroll",null),a.fg.add("sticky",d)},61964(t,e,s){"use strict";var i=s(931),r=s(81875),o=s.n(r),n=s(36115);n.T.prototype.usePopupForSpecialCharacters=!1,n.T.prototype.specialCharacters=["!",""","#","$","%","&","'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","€","‘","’","“","”","–","—","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","»","¬","®","¯","°","²","³","´","µ","¶","·","¸","¹","º","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ý","þ","ÿ","Œ","œ","Ŵ","Ŷ","ŵ","ŷ","‚","‛","„","…","™","►","•","→","⇒","⇔","♦","≈"],i.I.set("symbols",o()),n.T.prototype.controls.symbols={hotkeys:["ctrl+shift+i","cmd+shift+i"],tooltip:"Insert Special Character",popup(t,e,s){const i=t.e.fire("generateSpecialCharactersTable.symbols");if(i){if(t.o.usePopupForSpecialCharacters){const e=t.c.div();return e.classList.add("jodit-symbols"),e.appendChild(i),t.e.on(i,"close_dialog",s),e}{t.alert(i,"Select Special Character",void 0,"jodit-symbols").bindDestruct(t);const e=i.querySelector("a");e&&e.focus()}}}}},37605(t){"use strict";t.exports={symbols:"رمز"}},4726(t){"use strict";t.exports={symbols:"symbol"}},68349(t){"use strict";t.exports={symbols:"Symbol"}},88146(t){"use strict";t.exports={symbols:"Símbolo"}},11799(t){"use strict";t.exports={symbols:"سمبل"}},1311(t){"use strict";t.exports={symbols:"Symbolit"}},96282(t){"use strict";t.exports={symbols:"caractère"}},87809(t){"use strict";t.exports={symbols:"תו מיוחד"}},60817(t){"use strict";t.exports={symbols:"Szimbólum"}},48207(t){"use strict";t.exports={symbols:"simbol"}},84182(t,e,s){"use strict";s.r(e),s.d(e,{ar(){return i},cs_cz(){return r},de(){return o},es(){return n},fa(){return a},fi(){return l},fr(){return c},he(){return u},hu(){return d},id(){return h},it(){return p},ja(){return m},ko(){return g},mn(){return f},nl(){return v},pl(){return b},pt_br(){return y},ru(){return _},tr(){return w},zh_cn(){return C},zh_tw(){return k}});var i=s(37605),r=s(4726),o=s(68349),n=s(88146),a=s(11799),l=s(1311),c=s(96282),u=s(87809),d=s(60817),h=s(48207),p=s(1663),m=s(37107),g=s(73948),f=s(12333),v=s(82556),b=s(56114),y=s(47321),_=s(9407),w=s(98376),C=s(47238),k=s(72386)},1663(t){"use strict";t.exports={symbols:"Simbolo"}},37107(t){"use strict";t.exports={symbols:"symbol"}},73948(t){"use strict";t.exports={symbols:"기호"}},12333(t){"use strict";t.exports={symbols:"тэмдэгт"}},82556(t){"use strict";t.exports={symbols:"symbool"}},56114(t){"use strict";t.exports={symbols:"symbol"}},47321(t){"use strict";t.exports={symbols:"Símbolo"}},9407(t){"use strict";t.exports={symbols:"символ"}},98376(t){"use strict";t.exports={symbols:"Sembol"}},47238(t){"use strict";t.exports={symbols:"符号"}},72386(t){"use strict";t.exports={symbols:"符號"}},35541(t,e,s){"use strict";var i=s(17352),r=s(55186),o=s(56298),n=s(97369),a=s(29866),l=(s(61964),s(84182));o.fg.add("symbols",class c extends a.k{constructor(t){super(t),this.buttons=[{name:"symbols",group:"insert"}],this.countInRow=17,(0,o.JW)(l)}afterInit(t){t.e.on("generateSpecialCharactersTable.symbols",(()=>{const e=t.c.fromHTML('
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
'),s=e.querySelector(".jodit-symbols__preview"),o=e.querySelector("table").tBodies[0],a=[];for(let e=0;t.o.specialCharacters.length>e;){const s=t.c.element("tr");for(let i=0;this.countInRow>i&&t.o.specialCharacters.length>e;i+=1,e+=1){const r=t.c.element("td"),o=t.c.fromHTML(`${t.o.specialCharacters[e]}`);a.push(o),r.appendChild(o),s.appendChild(r)}o.appendChild(s)}const l=this;return t.e.on(a,"focus",(function(){s.innerHTML=this.innerHTML})).on(a,"mousedown",(function(e){r.J.isTag(this,"a")&&(t.s.focus(),t.s.insertHTML(this.innerHTML),t.e.fire(this,"close_dialog"),e&&e.preventDefault(),e&&e.stopImmediatePropagation())})).on(a,"mouseenter",(function(){r.J.isTag(this,"a")&&this.focus()})).on(a,"keydown",(e=>{const s=e.target;if(r.J.isTag(s,"a")){const r=parseInt((0,n.attr)(s,"-index")||"0",10),o=parseInt((0,n.attr)(s,"data-index-j")||"0",10);let c;switch(e.key){case i.KEY_UP:case i.KEY_DOWN:c=e.key===i.KEY_UP?r-l.countInRow:r+l.countInRow,void 0===a[c]&&(c=e.key===i.KEY_UP?Math.floor(a.length/l.countInRow)*l.countInRow+o:o,c>a.length-1&&(c-=l.countInRow)),a[c]&&a[c].focus();break;case i.KEY_RIGHT:case i.KEY_LEFT:c=e.key===i.KEY_LEFT?r-1:r+1,void 0===a[c]&&(c=e.key===i.KEY_LEFT?a.length-1:0),a[c]&&a[c].focus();break;case i.KEY_ENTER:t.e.fire(s,"mousedown"),e.stopImmediatePropagation(),e.preventDefault()}}})),e}))}beforeDestruct(t){t.e.off("generateSpecialCharactersTable.symbols")}})},48840(t,e,s){"use strict";s.d(e,{O(){return i.O}});var i=s(86572)},86572(t,e,s){"use strict";s.d(e,{O(){return r}});var i=s(55186);function r(t,e=!1){if(!t.o.tab.tabInsideLiInsertNewList)return!1;const[s,r]=(t=>{const e=t.createInside.fake(),s=t.createInside.fake(),i=t.s.range.cloneRange();i.collapse(!0),i.insertNode(e);const r=t.s.range.cloneRange();return r.collapse(!1),r.insertNode(s),[e,s]})(t);try{const r=((t,e,s)=>{const r=i.J.closest(e,"li",t.editor);return!!r&&!(!s&&!i.J.isLeaf(r.previousElementSibling))&&!(s&&!i.J.closest(r,"li",t.editor))&&r})(t,s,e);if(!r)return!1;if(!((t,e,s)=>{const r=i.J.closest(s,"li",e.editor);return!(!r||r!==t&&!t.contains(r))})(r,t,s))return!1;const o=i.J.closest(r,["ol","ul"],t.editor);return!(!o||e&&!i.J.closest(o,"li",t.editor)||(e?((t,e,s)=>{const r=i.J.closest(e,"li",t.editor),o=Array.from(e.children).filter((t=>i.J.isLeaf(t)));i.J.after(r,s);const n=o.indexOf(s);if(0!==n&&1!==o.length||i.J.safeRemove(e),n!==o.length-1){const t=e.cloneNode();i.J.append(s,t);for(let e=n+1;o.length>e;e+=1)i.J.append(t,o[e])}})(t,o,r):((t,e,s)=>{const r=s.previousElementSibling,o=r.lastElementChild,n=i.J.isTag(o,e.tagName)?o:t.createInside.element(e.tagName,Array.from(e.attributes).reduce(((t,e)=>(t[e.name]=e.value,t)),{}));n.appendChild(s),o!==n&&r.appendChild(n)})(t,o,r),0))}finally{const e=t.s.createRange();e.setStartAfter(s),e.setEndBefore(r),t.s.selectRange(e),i.J.safeRemove(s),i.J.safeRemove(r)}return!1}s(28712)},50974(t,e,s){"use strict";s(36115).T.prototype.tab={tabInsideLiInsertNewList:!0}},59965(t,e,s){"use strict";var i=s(31635),r=s(17352),o=s(22664),n=s(56298),a=s(71005),l=(s(50974),s(48840));class c extends a.k{afterInit(t){}__onTab(t){if(t.key===r.KEY_TAB&&this.__onShift(t.shiftKey))return!1}__onCommand(t){if(("indent"===t||"outdent"===t)&&this.__onShift("outdent"===t))return!1}__onShift(t){const e=(0,l.O)(this.j,t);return e&&this.j.e.fire("afterTab",t),e}beforeDestruct(t){}}(0,i.Cg)([(0,o.watch)(":keydown.tab")],c.prototype,"__onTab",null),(0,i.Cg)([(0,o.watch)(":beforeCommand.tab")],c.prototype,"__onCommand",null),n.fg.add("tab",c)},2533(t,e,s){"use strict";var i=s(17352),r=s(55186),o=s(56298),n=s(65147),a=s(11648);const l=new Set([i.KEY_TAB,i.KEY_LEFT,i.KEY_RIGHT,i.KEY_UP,i.KEY_DOWN]);o.fg.add("tableKeyboardNavigation",(t=>{t.e.off(".tableKeyboardNavigation").on("keydown.tableKeyboardNavigation",(e=>{const{key:s}=e;if(!l.has(s))return;const o=t.s.current();if(!o)return;const c=r.J.up(o,r.J.isCell,t.editor);if(!c)return;const{range:u}=t.s;if(s!==i.KEY_TAB&&o!==c){const t=s===i.KEY_RIGHT||s===i.KEY_DOWN,e=(0,n.call)(t?r.J.next:r.J.prev,o,(t=>s===i.KEY_UP||s===i.KEY_DOWN?r.J.isTag(t,"br"):!!t),c);if(!t&&(e||s!==i.KEY_UP&&r.J.isText(o)&&0!==u.startOffset)||t&&(e||s!==i.KEY_DOWN&&r.J.isText(o)&&o.nodeValue&&u.startOffset!==o.nodeValue.length))return}const d=t.getInstance(a.X,t.o),h=r.J.closest(c,"table",t.editor);let p=null;const m=s===i.KEY_LEFT||e.shiftKey,g=()=>(0,n.call)(m?r.J.prev:r.J.next,c,r.J.isCell,h);switch(s){case i.KEY_TAB:case i.KEY_LEFT:p=g(),p||(d.appendRow(h,!!m&&h.querySelector("tr"),!m),p=g());break;case i.KEY_UP:case i.KEY_DOWN:{const t=d.formalMatrix(h),[e,r]=d.formalCoordinate(h,c);s===i.KEY_UP?void 0!==t[e-1]&&(p=t[e-1][r]):void 0!==t[e+1]&&(p=t[e+1][r])}}if(p){if(t.e.fire("hidePopup hideResizer"),p.firstChild)s===i.KEY_TAB?t.s.select(p,!0):t.s.setCursorIn(p,s===i.KEY_RIGHT||s===i.KEY_DOWN);else{const e=t.createInside.element("br");p.appendChild(e),t.s.setCursorBefore(e)}return t.synchronizeValues(),!1}}))}))},94291(t,e,s){"use strict";var i=s(71842),r=s(65147),o=s(97369),n=s(931),a=s(67447),l=s.n(a),c=s(36115);c.T.prototype.table={selectionCellStyle:"border: 1px double #1e88e5 !important;",useExtraClassesOptions:!1},n.I.set("table",l()),c.T.prototype.controls.table={data:{cols:10,rows:10,classList:{"table table-bordered":"Bootstrap Bordered","table table-striped":"Bootstrap Striped","table table-dark":"Bootstrap Dark"}},popup(t,e,s,n){const a=n.control,l=a.data&&a.data.rows?a.data.rows:10,c=a.data&&a.data.cols?a.data.cols:10,u=t.c.fromHTML('
'+(()=>{if(!t.o.table.useExtraClassesOptions)return"";const e=[];if(a.data){const t=a.data.classList;Object.keys(t).forEach((s=>{e.push(``)}))}return e.join("")})()+'
'),d=u.querySelectorAll("span")[0],h=u.querySelectorAll("span")[1],p=u.querySelector(".jodit-form__container"),m=u.querySelector(".jodit-form__options"),g=[],f=l*c;for(let e=0;f>e;e+=1)g[e]||g.push(t.c.element("span",{dataIndex:e}));if(t.e.on(p,"mousemove",((t,e)=>{const s=t.target;if(!i.J.isTag(s,"span"))return;const r=void 0===e||isNaN(e)?parseInt((0,o.attr)(s,"-index")||"0",10):e||0,n=Math.ceil((r+1)/c),a=r%c+1;for(let t=0;g.length>t;t+=1)g[t].className=t%c+1>a||Math.ceil((t+1)/c)>n?"":"jodit_hovered";h.textContent=""+a,d.textContent=""+n})).on(p,"touchstart mousedown",(e=>{const n=e.target;if(e.preventDefault(),e.stopImmediatePropagation(),!i.J.isTag(n,"span"))return;const a=parseInt((0,o.attr)(n,"-index")||"0",10),l=Math.ceil((a+1)/c),u=a%c+1,d=t.createInside,h=d.element("tbody"),p=d.element("table");p.appendChild(h);let g,f,v=null;for(let t=1;l>=t;t+=1){g=d.element("tr");for(let t=1;u>=t;t+=1)f=d.element("td"),v||(v=f),(0,r.css)(f,"width",(100/u).toFixed(4)+"%"),f.appendChild(d.element("br")),g.appendChild(d.text("\n")),g.appendChild(d.text("\t")),g.appendChild(f);h.appendChild(d.text("\n")),h.appendChild(g)}(0,r.$$)("input[type=checkbox]:checked",m).forEach((t=>{t.value.split(/[\s]+/).forEach((t=>{p.classList.add(t)}))})),t.editor.firstChild&&t.s.insertNode(d.text("\n"),!1,!1),t.s.insertNode(p,!1),v&&(t.s.setCursorIn(v),(0,r.scrollIntoViewIfNeeded)(v,t.editor,t.ed)),s()})),n&&n.parentElement){for(let e=0;l>e;e+=1){const s=t.c.div();for(let t=0;c>t;t+=1)s.appendChild(g[e*c+t]);p.appendChild(s)}g[0]&&(g[0].className="hovered")}return u},tooltip:"Insert table"}},76385(t,e,s){"use strict";var i=s(56298);s(94291),i.fg.add("table",(t=>{t.registerButton({name:"table",group:"insert"})}))},31686(t,e,s){"use strict";var i=s(65147),r=s(35265),o=s(20703),n=s(931),a=s(16116),l=s(36339),c=s.n(l),u=s(36115);n.I.set("video",c()),u.T.prototype.controls.video={popup(t,e,s){const n=new o.XV(t,[new o.Yh(t,[new o.tS(t,{name:"url",required:!0,label:"URL",placeholder:"https://",validators:["url"]})]),new o.Yh(t,[(0,r.$n)(t,"","Insert","primary").onAction((()=>n.submit()))])]),l=new o.XV(t,[new o.Yh(t,[new o.F0(t,{name:"code",required:!0,label:"Embed code"})]),new o.Yh(t,[(0,r.$n)(t,"","Insert","primary").onAction((()=>l.submit()))])]),c=[],u=e=>{t.s.restore(),t.s.insertHTML(e),s()};return t.s.save(),c.push({icon:"link",name:"Link",content:n.container},{icon:"source",name:"Code",content:l.container}),n.onSubmit((t=>{u((0,i.convertMediaUrlToVideoEmbed)(t.url))})),l.onSubmit((t=>{u(t.code)})),(0,a.Zg)(t,c)},tags:["iframe"],tooltip:"Insert youtube/vimeo video"}},38309(t,e,s){"use strict";var i=s(56298);s(31686),i.fg.add("video",(t=>{t.registerButton({name:"video",group:"media"})}))},2805(t,e,s){"use strict";s(36115).T.prototype.wrapNodes={exclude:new Set(["hr","style","br"]),emptyBlockAfterInit:!0}},14367(t,e,s){"use strict";var i=s(31635),r=s(22664),o=s(71842),n=s(56298),a=s(98253),l=s(71005);s(2805);class c extends l.k{constructor(){super(...arguments),this.isSuitableStart=t=>o.J.isText(t)&&(0,a.K)(t.nodeValue)&&(/[^\s]/.test(t.nodeValue)||t.parentNode?.firstChild===t&&this.isSuitable(t.nextSibling))||this.isNotWrapped(t)&&!o.J.isTemporary(t),this.isSuitable=t=>o.J.isText(t)||this.isNotWrapped(t),this.isNotWrapped=t=>o.J.isElement(t)&&!(o.J.isBlock(t)||o.J.isTag(t,this.j.o.wrapNodes.exclude))}afterInit(t){"br"!==t.o.enter.toLowerCase()&&t.e.on("drop.wtn focus.wtn keydown.wtn mousedown.wtn afterInit.wtn backSpaceAfterDelete.wtn",this.preprocessInput,{top:!0}).on("afterInit.wtn postProcessSetEditorValue.wtn afterCommitStyle.wtn backSpaceAfterDelete.wtn",this.postProcessSetEditorValue)}beforeDestruct(t){t.e.off(".wtn")}postProcessSetEditorValue(){const{jodit:t}=this;if(!t.isEditorMode())return;let e=t.editor.firstChild,s=!1;for(;e;){if(e=u(e,t),this.isSuitableStart(e)){s||t.s.save(),s=!0;const i=t.createInside.element(t.o.enter);for(o.J.before(e,i);e&&this.isSuitable(e);){const t=e.nextSibling;i.appendChild(e),e=t}i.normalize(),e=i}e=e&&e.nextSibling}s&&(t.s.restore(),"afterInit"===t.e.current&&t.e.fire("internalChange"))}preprocessInput(){const{jodit:t}=this,e="afterInit"===t.e.current;if(!t.isEditorMode()||t.editor.firstChild||!t.o.wrapNodes.emptyBlockAfterInit&&e)return;const s=t.createInside.element(t.o.enter),i=t.createInside.element("br");o.J.append(s,i),o.J.append(t.editor,s),t.s.isFocused()&&t.s.setCursorBefore(i),t.e.fire("internalChange")}}function u(t,e){let s=t,i=t;do{if(!o.J.isElement(i)||!o.J.isLeaf(i)||o.J.isList(i.parentElement))break;{const t=o.J.findNotEmptySibling(i,!1);o.J.isTag(s,"ul")?s.appendChild(i):s=o.J.wrap(i,"ul",e.createInside),i=t}}while(i);return s}(0,i.Cg)([r.autobind],c.prototype,"postProcessSetEditorValue",null),(0,i.Cg)([r.autobind],c.prototype,"preprocessInput",null),n.fg.add("wrapNodes",c)},88850(t,e,s){"use strict";s(36115).T.prototype.showXPathInStatusbar=!0},36133(t,e,s){"use strict";var i=s(17352),r=s(71842),o=s(56298),n=s(65147),a=s(71005),l=s(34248),c=s(8809);s(88850),o.fg.add("xpath",class u extends a.k{constructor(){super(...arguments),this.onContext=(t,e)=>(this.menu||(this.menu=new l.t(this.j)),this.menu.show(e.clientX,e.clientY,[{icon:"bin",title:t===this.j.editor?"Clear":"Remove",exec:()=>{t!==this.j.editor?r.J.safeRemove(t):this.j.value="",this.j.synchronizeValues()}},{icon:"select-all",title:"Select",exec:()=>{this.j.s.select(t)}}]),!1),this.onSelectPath=(t,e)=>{this.j.s.focus();const s=(0,n.attr)(e.target,"-path")||"/";if("/"===s)return this.j.execCommand("selectall"),!1;try{const t=this.j.ed.evaluate(s,this.j.editor,null,XPathResult.ANY_TYPE,null).iterateNext();if(t)return this.j.s.select(t),!1}catch{}return this.j.s.select(t),!1},this.tpl=(t,e,s,i)=>{const r=this.j.c.fromHTML(`${(0,n.trim)(s)}`),o=r.firstChild;return this.j.e.on(o,"click",this.onSelectPath.bind(this,t)).on(o,"contextmenu",this.onContext.bind(this,t)),r},this.removeSelectAll=()=>{this.selectAllButton&&(this.selectAllButton.destruct(),delete this.selectAllButton)},this.appendSelectAll=()=>{this.removeSelectAll(),this.selectAllButton=(0,c.BJ)(this.j,{name:"selectall",...this.j.o.controls.selectall}),this.selectAllButton.state.size="tiny",this.container&&this.container.insertBefore(this.selectAllButton.container,this.container.firstChild)},this.calcPathImd=()=>{if(this.isDestructed)return;const t=this.j.s.current();if(this.container&&(this.container.innerHTML=i.INVISIBLE_SPACE),t){let e,s,i;r.J.up(t,(t=>{!t||this.j.editor===t||r.J.isText(t)||r.J.isComment(t)||(e=t.nodeName.toLowerCase(),s=(0,n.getXPathByElement)(t,this.j.editor).replace(/^\//,""),i=this.tpl(t,s,e,this.j.i18n("Select %s",e)),this.container&&this.container.insertBefore(i,this.container.firstChild))}),this.j.editor)}this.appendSelectAll()},this.calcPath=this.j.async.debounce(this.calcPathImd,2*this.j.defaultTimeout)}afterInit(){this.j.o.showXPathInStatusbar&&(this.container=this.j.c.div("jodit-xpath"),this.j.e.off(".xpath").on("mouseup.xpath change.xpath keydown.xpath changeSelection.xpath",this.calcPath).on("afterSetMode.xpath afterInit.xpath changePlace.xpath",(()=>{this.j.o.showXPathInStatusbar&&this.container&&(this.j.statusbar.append(this.container),this.j.getRealMode()===i.MODE_WYSIWYG?this.calcPath():(this.container&&(this.container.innerHTML=i.INVISIBLE_SPACE),this.appendSelectAll()))})),this.calcPath())}beforeDestruct(){this.j&&this.j.events&&this.j.e.off(".xpath"),this.removeSelectAll(),this.menu&&this.menu.destruct(),r.J.safeRemove(this.container),delete this.menu,delete this.container}})},79721(t,e,s){"use strict";s.r(e),s.d(e,{angle_down(){return r.a},angle_left(){return n.a},angle_right(){return l.a},angle_up(){return u.a},bin(){return h.a},cancel(){return m.a},center(){return f.a},check(){return b.a},chevron(){return _.a},dots(){return C.a},eye(){return S.a},file(){return E.a},folder(){return I.a},info_circle(){return z.a},left(){return A.a},lock(){return P.a},ok(){return N.a},pencil(){return D.a},plus(){return O.a},resize_handler(){return H.a},right(){return V.a},save(){return $.a},settings(){return K.a},unlock(){return G.a},update(){return Z.a},upload(){return tt.a},valign(){return st.a}});var i=s(88497),r=s.n(i),o=s(91882),n=s.n(o),a=s(14305),l=s.n(a),c=s(58446),u=s.n(c),d=s(39858),h=s.n(d),p=s(70881),m=s.n(p),g=s(60636),f=s.n(g),v=s(32013),b=s.n(v),y=s(45512),_=s.n(y),w=s(80347),C=s.n(w),k=s(95134),S=s.n(k),T=s(70697),E=s.n(T),x=s(49983),I=s.n(x),j=s(98964),z=s.n(j),L=s(8136),A=s.n(L),M=s(94806),P=s.n(M),R=s(31365),N=s.n(R),B=s(44636),D=s.n(B),q=s(36327),O=s.n(q),J=s(53328),H=s.n(J),F=s(98711),V=s.n(F),W=s(53808),$=s.n(W),U=s(20784),K=s.n(U),Y=s(70999),G=s.n(Y),X=s(45244),Z=s.n(X),Q=s(99876),tt=s.n(Q),et=s(14006),st=s.n(et)},57741(t){t.exports.default=["إبدأ في الكتابة...","حول جوديت","محرر جوديت","دليل مستخدم جوديت","يحتوي على مساعدة مفصلة للاستخدام","للحصول على معلومات حول الترخيص، يرجى الذهاب لموقعنا:","شراء النسخة الكاملة","حقوق الطبع والنشر © XDSoft.net - Chupurnov Valeriy. كل الحقوق محفوظة.","مِرْساة","فتح في نافذة جديدة","فتح المحرر في الحجم الكامل","مسح التنسيق","ملء اللون أو تعيين لون النص","إعادة","تراجع","عريض","مائل","إدراج قائمة غير مرتبة","إدراج قائمة مرتبة","محاذاة للوسط","محاذاة مثبتة","محاذاة لليسار","محاذاة لليمين","إدراج خط أفقي","إدراج صورة","ادخال الملف","إدراج فيديو يوتيوب/فيميو ","إدراج رابط","حجم الخط","نوع الخط","إدراج كتلة تنسيق","عادي","عنوان 1","عنوان 2","عنوان 3","عنوان 4","إقتباس","كود","إدراج","إدراج جدول","تقليل المسافة البادئة","زيادة المسافة البادئة","تحديد أحرف خاصة","إدراج حرف خاص","تنسيق الرسم","تغيير الوضع","هوامش","أعلى","يمين","أسفل","يسار","الأنماط","الطبقات","محاذاة","اليمين","الوسط","اليسار","--غير مضبوط--","Src","العنوان","العنوان البديل","الرابط","افتح الرابط في نافذة جديدة","الصورة","ملف","متقدم","خصائص الصورة","إلغاء","حسنا","متصفح الملفات","حدث خطأ في تحميل القائمة ","حدث خطأ في تحميل المجلدات","هل أنت واثق؟","أدخل اسم المجلد","إنشاء مجلد","أكتب إسم","إسقاط صورة","إسقاط الملف","أو أنقر","النص البديل","رفع","تصفح","الخلفية","نص","أعلى","الوسط","الأسفل","إدراج عمود قبل","إدراج عمود بعد","إدراج صف أعلى","إدراج صف أسفل","حذف الجدول","حذف الصف","حذف العمود","خلية فارغة","%d حرف","%d كلام","اضرب من خلال","أكد","حرف فوقي","مخطوطة","قطع الاختيار","اختر الكل","استراحة","البحث عن","استبدل ب","محل","معجون","اختر محتوى للصق","مصدر","بالخط العريض","مائل","شغل","صلة","إلغاء","كرر","طاولة","صورة","نظيف","فقرة","حجم الخط","فيديو","الخط","حول المحرر","طباعة","أكد","شطب","المسافة البادئة","نتوء","ملء الشاشة","الحجم التقليدي","الخط","قائمة","قائمة مرقمة","قطع","اختر الكل","قانون","فتح الرابط","تعديل الرابط","سمة Nofollow","إزالة الرابط","تحديث","لتحرير","مراجعة","URL","تحرير","محاذاة أفقية","فلتر","عن طريق التغيير","بالاسم","حسب الحجم","إضافة مجلد","إعادة","احتفظ","حفظ باسم","تغيير الحجم","حجم القطع","عرض","ارتفاع","حافظ على النسب","أن","لا","حذف","تميز","تميز %s","محاذاة عمودية","انشق، مزق","اذهب","أضف العمود","اضف سطر","رخصة %s","حذف","انقسام عمودي","تقسيم أفقي","الحدود","يشبه الكود الخاص بك HTML. تبقي كما HTML؟","الصق ك HTML","احتفظ","إدراج كنص","إدراج النص فقط","يمكنك فقط تحرير صورك الخاصة. تحميل هذه الصورة على المضيف؟","تم تحميل الصورة بنجاح على الخادم!","لوحة","لا توجد ملفات في هذا الدليل.","إعادة تسمية","أدخل اسم جديد","معاينة","تحميل","لصق من الحافظة","متصفحك لا يدعم إمكانية الوصول المباشر إلى الحافظة.","نسخ التحديد","نسخ","دائرة نصف قطرها الحدود","عرض كل","تطبيق","يرجى ملء هذا المجال","يرجى إدخال عنوان ويب","الافتراضي","دائرة","نقطة","المربعة","البحث","تجد السابقة","تجد التالي","للصق المحتوى قادم من Microsoft Word/Excel الوثيقة. هل تريد أن تبقي شكل أو تنظيفه ؟ ","كلمة لصق الكشف عن","نظيفة","أدخل اسم الفصل","اضغط البديل لتغيير حجم مخصص"]},56014(t){t.exports.default=["Napiš něco","O Jodit","Editor Jodit","Jodit Uživatelská příručka","obsahuje detailní nápovědu","Pro informace o licenci, prosím, přejděte na naši stránku:","Koupit plnou verzi","Copyright © XDSoft.net - Chupurnov Valeriy. Všechna práva vyhrazena.","Anchor","Otevřít v nové záložce","Otevřít v celoobrazovkovém režimu","Vyčistit formátování","Barva výplně a písma","Vpřed","Zpět","Tučné","Kurzíva","Odrážky","Číslovaný seznam","Zarovnat na střed","Zarovnat do bloku","Zarovnat vlevo","Zarovnat vpravo","Vložit horizontální linku","Vložit obrázek","Vložit soubor","Vložit video (YT/Vimeo)","Vložit odkaz","Velikost písma","Typ písma","Formátovat blok","Normální text","Nadpis 1","Nadpis 2","Nadpis 3","Nadpis 4","Citát","Kód","Vložit","Vložit tabulku","Zmenšit odsazení","Zvětšit odsazení","Vybrat speciální symbol","Vložit speciální symbol","Použít formát","Změnit mód","Okraje","horní","pravý","spodní","levý","Styly","Třídy","Zarovnání","Vpravo","Na střed","Vlevo","--nenastaveno--","src","Titulek","Alternativní text (alt)","Link","Otevřít link v nové záložce","Obrázek","soubor","Rozšířené","Vlastnosti obrázku","Zpět","Ok","Prohlížeč souborů","Chyba při načítání seznamu souborů","Chyba při načítání složek","Jste si jistý(á)?","Název složky","Vytvořit složku","název","Přetáhněte sem obrázek","Přetáhněte sem soubor","nebo klikněte","Alternativní text","Nahrát","Server","Pozadí","Text","Nahoru","Na střed","Dolu","Vložit sloupec před","Vložit sloupec za","Vložit řádek nad","Vložit řádek pod","Vymazat tabulku","Vymazat řádku","Vymazat sloupec","Vyčistit buňku","Znaky: %d","Slova: %d","Přeškrtnuto","Podtrženo","Horní index","Dolní index","Vyjmout označené","Označit vše","Zalomení","Najdi","Nahradit za","Vyměňte","Vložit","Vyber obsah pro vložení","HTML","tučně","kurzíva","štětec","odkaz","zpět","vpřed","tabulka","obrázek","guma","odstavec","velikost písma","video","písmo","о editoru","tisk","podtrženo","přeškrtnuto","zvětšit odsazení","zmenšit odsazení","celoobrazovkový režim","smrsknout","Linka","Odrážka","Číslovaný seznam","Vyjmout","Označit vše","Kód","Otevřít odkaz","Upravit odkaz","Atribut no-follow","Odstranit odkaz","Aktualizovat","Chcete-li upravit","Zobrazit","URL","Editovat","Horizontální zarovnání","Filtr","Dle poslední změny","Dle názvu","Dle velikosti","Přidat složku","Reset","Uložit","Uložit jako...","Změnit rozměr","Ořezat","Šířka","Výška","Ponechat poměr","Ano","Ne","Vyjmout","Označit","Označit %s","Vertikální zarovnání","Rozdělit","Spojit","Přidat sloupec","Přidat řádek","Licence: %s","Vymazat","Rozdělit vertikálně","Rozdělit horizontálně","Okraj","Váš text se podobá HTML. Vložit ho jako HTML?","Vložit jako HTML","Ponechat originál","Vložit jako TEXT","Vložit pouze TEXT","Můžete upravovat pouze své obrázky. Načíst obrázek?","Obrázek byl úspěšně nahrán!","paleta","V tomto adresáři nejsou žádné soubory.","přejmenovat","Zadejte nový název","náhled","Stažení","Vložit ze schránky","Váš prohlížeč nepodporuje přímý přístup do schránky.","Kopírovat výběr","kopírování","Border radius","Zobrazit všechny","Platí","Prosím, vyplňte toto pole","Prosím, zadejte webovou adresu","Výchozí","Kruh","Dot","Quadrate","Najít","Najít Předchozí","Najít Další","Obsah, který vkládáte, je pravděpodobně z Microsoft Word / Excel. Chcete ponechat formát nebo vložit pouze text?","Detekován fragment z Wordu nebo Excelu","Vyčistit","Vložte název třídy","Stiskněte Alt pro vlastní změnu velikosti"]},95461(t){t.exports.default=["Bitte geben Sie einen Text ein","Über Jodit","Jodit Editor","Das Jodit Benutzerhandbuch","beinhaltet ausführliche Informationen wie Sie den Editor verwenden können.","Für Informationen zur Lizenz, besuchen Sie bitte unsere Web-Präsenz:","Vollversion kaufen","Copyright © XDSoft.net - Chupurnov Valeriy. Alle Rechte vorbehalten.","Anker","In neuer Registerkarte öffnen","Editor in voller Größe öffnen","Formatierung löschen","Füllfarbe oder Textfarbe ändern","Wiederholen","Rückgängig machen","Fett","Kursiv","Unsortierte Liste einfügen","Nummerierte Liste einfügen","Mittig ausrichten","Blocksatz","Links ausrichten","Rechts ausrichten","Horizontale Linie einfügen","Bild einfügen","Datei einfügen","Youtube/vimeo Video einfügen","Link einfügen","Schriftgröße","Schriftfamilie","Formatblock einfügen","Normal","Überschrift 1","Überschrift 2","Überschrift 3","Überschrift 4","Zitat","Code","Einfügen","Tabelle einfügen","Einzug verkleinern","Einzug vergrößern","Sonderzeichen auswählen","Sonderzeichen einfügen","Format kopieren","Änderungsmodus","Ränder","Oben","Rechts","Unten","Links","CSS Stil","CSS Klassen","Ausrichtung","Rechts","Zentriert","Links","Keine","Pfad","Titel","Alternativer Text","Link","Link in neuem Tab öffnen","Bild","Datei","Fortgeschritten","Bildeigenschaften","Abbrechen","OK","Dateibrowser","Fehler beim Laden der Liste","Fehler beim Laden der Ordner","Sind Sie sicher?","Geben Sie den Verzeichnisnamen ein","Verzeichnis erstellen","Typname","Bild hier hinziehen","Datei löschen","oder hier klicken","Alternativtext","Hochladen","Auswählen","Hintergrund","Text","Oben","Mittig","Unten","Spalte davor einfügen","Spalte danach einfügen","Zeile oberhalb einfügen","Zeile unterhalb einfügen","Tabelle löschen","Zeile löschen","Spalte löschen","Zelle leeren","Zeichen: %d","Wörter: %d","Durchstreichen","Unterstreichen","Hochstellen","Tiefstellen","Auswahl ausschneiden","Alles markieren","Pause","Suche nach","Ersetzen durch","Ersetzen","Einfügen","Wählen Sie den Inhalt zum Einfügen aus","HTML","Fett gedruckt","Kursiv","Bürste","Verknüpfung","Rückgängig machen","Wiederholen","Tabelle","Bild","Radiergummi","Absatz","Schriftgröße","Video","Schriftart","Über","Drucken","Unterstreichen","Durchstreichen","Einzug","Herausstellen","Vollgröße","Schrumpfen","die Linie","Liste von","Nummerierte Liste","Schneiden","Wählen Sie Alle aus","Code einbetten","Link öffnen","Link bearbeiten","Nofollow-Attribut","Link entfernen","Aktualisieren","Bearbeiten","Ansehen","URL","Bearbeiten","Horizontale Ausrichtung","Filter","Sortieren nach geändert","Nach Name sortieren","Nach Größe sortiert","Ordner hinzufügen","Wiederherstellen","Speichern","Speichern als","Größe ändern","Größe anpassen","Breite","Höhe","Seitenverhältnis beibehalten","Ja","Nein","Entfernen","Markieren","Markieren: %s","Vertikale Ausrichtung","Unterteilen","Vereinen","Spalte hinzufügen","Zeile hinzufügen",null,"Löschen","Vertikal unterteilen","Horizontal unterteilen","Rand","Ihr Text ähnelt HTML-Code. Als HTML beibehalten?","Als HTML einfügen?","Original speichern","Als Text einfügen","Nur Text einfügen","Sie können nur Ihre eigenen Bilder bearbeiten. Dieses Bild auf den Host herunterladen?","Das Bild wurde erfolgreich auf den Server hochgeladen!","Palette","In diesem Verzeichnis befinden sich keine Dateien.","Umbenennen","Geben Sie einen neuen Namen ein","Vorschau","Herunterladen","Aus Zwischenablage einfügen","Ihr Browser unterstützt keinen direkten Zugriff auf die Zwischenablage.","Auswahl kopieren","Kopieren","Radius für abgerundete Ecken","Alle anzeigen","Anwenden","Bitte füllen Sie dieses Feld aus","Bitte geben Sie eine Web-Adresse ein","Standard","Kreis","Punkte","Quadrate","Suchen","Suche vorherige","Weitersuchen","Der Inhalt, den Sie einfügen, stammt aus einem Microsoft Word / Excel-Dokument. Möchten Sie das Format erhalten oder bereinigen?","In Word formatierter Text erkannt","Säubern","className (CSS) einfügen","Drücken Sie Alt für benutzerdefinierte Größenanpassung"]},63837(t){t.exports.default={"Type something":"Start writing...",pencil:"Edit",Quadrate:"Square"}},39386(t){t.exports.default=["Escriba algo...","Acerca de Jodit","Jodit Editor","Guía de usuario Jodit","contiene ayuda detallada para el uso.","Para información sobre la licencia, por favor visite nuestro sitio:","Compre la versión completa","Copyright © XDSoft.net - Chupurnov Valeriy. Todos los derechos reservados.","Anclar","Abrir en nueva pestaña","Abrir editor en pantalla completa","Limpiar formato","Color de relleno o de letra","Rehacer","Deshacer","Negrita","Cursiva","Insertar lista no ordenada","Insertar lista ordenada","Alinear Centrado","Alinear Justificado","Alinear Izquierda","Alinear Derecha","Insertar línea horizontal","Insertar imagen","Insertar archivo","Insertar video de Youtube/vimeo","Insertar vínculo","Tamaño de letra","Familia de letra","Insertar bloque","Normal","Encabezado 1","Encabezado 2","Encabezado 3","Encabezado 4","Cita","Código","Insertar","Insertar tabla","Disminuir sangría","Aumentar sangría","Seleccionar caracter especial","Insertar caracter especial","Copiar formato","Cambiar modo","Márgenes","arriba","derecha","abajo","izquierda","Estilos CSS","Clases CSS","Alinear","Derecha","Centrado","Izquierda","--No Establecido--","Fuente","Título","Texto Alternativo","Vínculo","Abrir vínculo en nueva pestaña","Imagen","Archivo","Avanzado","Propiedades de imagen","Cancelar","Aceptar","Buscar archivo","Error al cargar la lista","Error al cargar las carpetas","¿Está seguro?","Entre nombre de carpeta","Crear carpeta","Entre el nombre","Soltar imagen","Soltar archivo","o click","Texto alternativo","Subir","Buscar","Fondo","Texto","Arriba","Centro","Abajo","Insertar columna antes","Interar columna después","Insertar fila arriba","Insertar fila debajo","Borrar tabla","Borrar fila","Borrar columna","Vaciar celda","Caracteres: %d","Palabras: %d","Tachado","Subrayado","superíndice","subíndice","Cortar selección","Seleccionar todo","Pausa","Buscar","Reemplazar con","Reemplazar","Pegar","Seleccionar contenido para pegar","HTML","negrita","cursiva","Brocha","Vínculo","deshacer","rehacer","Tabla","Imagen","Borrar","Párrafo","Tamaño de letra","Video","Letra","Acerca de","Imprimir","subrayar","tachar","sangría","quitar sangría","Tamaño completo","encoger","línea horizontal","lista sin ordenar","lista ordenada","Cortar","Seleccionar todo","Incluir código","Abrir vínculo","Editar vínculo","No seguir","Desvincular","Actualizar","Para editar","Ver","URL","Editar","Alineación horizontal","Filtrar","Ordenar por fecha modificación","Ordenar por nombre","Ordenar por tamaño","Agregar carpeta","Resetear","Guardar","Guardar como...","Redimensionar","Recortar","Ancho","Alto","Mantener relación de aspecto","Si","No","Quitar","Seleccionar","Seleccionar: %s","Alineación vertical","Dividir","Mezclar","Agregar columna","Agregar fila",null,"Borrar","Dividir vertical","Dividir horizontal","Borde","El código es similar a HTML. ¿Mantener como HTML?","Pegar como HTML?","Mantener","Insertar como texto","Insertar solo texto","Solo puedes editar tus propias imágenes. ¿Descargar esta imagen en el servidor?","¡La imagen se ha subido correctamente al servidor!","paleta","No hay archivos en este directorio.","renombrar","Ingresa un nuevo nombre","avance","Descargar","Pegar desde el portapapeles","Su navegador no soporta el acceso directo en el portapapeles.","Selección de copia","copia","Radio frontera","Mostrar todos los","Aplicar","Por favor, rellene este campo","Por favor, introduzca una dirección web","Predeterminado","Círculo","Punto","Cuadro","Encontrar","Buscar Anterior","Buscar Siguiente","El contenido pegado proviene de un documento de Microsoft Word/Excel. ¿Desea mantener el formato o limpiarlo?","Pegado desde Word detectado","Limpiar","Insertar nombre de clase","Presione Alt para cambiar el tamaño personalizado"]},62327(t){t.exports.default=["Kirjoita jotain...","Tietoja Jodit:ista","Jodit Editor","Jodit käyttäjän ohje","sisältää tarkempaa tietoa käyttämiseen","Tietoa lisensoinnista, vieraile verkkosivuillamme:","Osta täysi versio","Copyright © XDSoft.net - Chupurnov Valeriy. Kaikki oikeudet pidätetään.","Ankkuri","Avaa uudessa välilehdessä","Avaa täysikokoisena","Poista muotoilu","Täytä värillä tai aseta tekstin väri","Tee uudelleen","Peruuta","Lihavoitu","Kursiivi","Lisää järjestämätön lista","Lisää järjestetty lista","Asemoi keskelle","Asemoi tasavälein","Asemoi vasemmalle","Asemoi oikealle","Lisää vaakasuuntainen viiva","Lisää kuva","Lisää tiedosto","Lisää Youtube-/vimeo- video","Lisää linkki","Kirjasimen koko","Kirjasimen nimi","Lisää muotoilualue","Normaali","Otsikko 1","Otsikko 2","Otsikko 3","Otsikko 4","Lainaus","Koodi","Lisää","Lisää taulukko","Pienennä sisennystä","Lisää sisennystä","Valitse erikoismerkki","Lisää erikoismerkki","Maalaa muotoilu","Vaihda tilaa","Marginaalit","ylös","oikealle","alas","vasemmalle","CSS-tyylit","CSS-luokat","Asemointi","Oikea","Keskellä","Vasen","--Ei asetettu--","Fuente","Otsikko","Vaihtoehtoinen teksti","Linkki","Avaa uudessa välilehdessä","Kuva","Tiedosto","Avanzado","Kuvan ominaisuudet","Peruuta","Ok","Tiedostoselain","Virhe listan latauksessa","Virhe kansioiden latauksessa","Oletko varma?","Syötä hakemiston nimi","Luo hakemisto","Syötä nimi","Pudota kuva","Pudota tiedosto","tai klikkaa","Vaihtoehtoinen teksti","Lataa","Selaa","Tausta","Teksti","Ylös","Keskelle","Alas","Lisää sarake ennen","Lisää sarake jälkeen","Lisää rivi ylös","Lisää rivi alle","Poista taulukko","Poista rivi","Poista sarake","Tyhjennä solu","Merkit: %d","Sanat: %d","Yliviivaus","Alleviivaus","yläviite","alaviite","Leikkaa valinta","Valitse kaikki","Vaihto","Etsi arvoa","Korvaa arvolla","Korvaa","Liitä","Valitse liitettävä sisältö","HTML","lihavoitu","kursiivi","sivellin","linkki","peruuta","tee uudelleen","taulukko","kuva","pyyhekumi","kappale","tekstin koko","video","kirjasin","tietoja","tulosta","alleviivaa","yliviivaa","sisennä","pienennä sisennystä","täysikokoinen","pienennä","vaakaviiva","järjestetty lista","järjestämätön lista","leikkaa","valitse kaikki","Sisällytä koodi","Avaa linkki","Muokkaa linkkiä","Älä seuraa","Pura linkki","Päivitä","Muokkaa","Ver","URL","Muokkaa","Vaaka-asemointi","Suodatin","Järjestä muuttuneilla","Järjestä nimellä","Järjestä koolla","Lisää kansio","Nollaa","Tallenna","Tallenna nimellä ...","Muuta kokoa","Rajaa","Leveys","Korkeus","Säilytä kuvasuhde","Kyllä","Ei","Poista","Valitse","Valitse: %s","Pystyasemointi","Jaa","Yhdistä","Lisää sarake","Lisää rivi",null,"Poista","Jaa pystysuuntaisesti","Jaa vaakasuuntaisesti","Reuna","Koodi on HTML:n tapaista. Säilytetäänkö HTML?","Liitä HTML:nä?","Säilytä","Lisää tekstinä","Lisää vain teksti","Voit muokata vain omia kuvia. Lataa tämä kuva palvelimelle?","Kuva on onnistuneesti ladattu palvelimelle!","paletti","Tiedostoja ei ole","Nimeä uudelleen","Syötä uusi nimi","esikatselu","Lataa","Liitä leikepöydältä","Selaimesi ei tue suoraa pääsyä leikepöydälle.","Kopioi valinta","kopioi","Reunan pyöristys","Näytä kaikki","Käytä","Täytä tämä kenttä","Annan web-osoite","Oletus","Ympyrä","Piste","Neliö","Hae","Hae edellinen","Hae seuraava","Liitetty sisältö tulee Microsoft Word-/Excel- tiedostosta. Haluatko säilyttää muotoilun vai poistaa sen?","Word liittäminen havaittu","Tyhjennä","Lisää luokkanimi","Paina Alt muokattuun koon muuttamiseen"]},25090(t){t.exports.default=["Ecrivez ici","A propos de Jodit","Editeur Jodit","Guide de l'utilisateur","Aide détaillée à l'utilisation","Consulter la licence sur notre site web:","Acheter la version complète","Copyright © XDSoft.net - Chupurnov Valeriy. Tous droits réservés.","Ancre","Ouvrir dans un nouvel onglet","Ouvrir l'éditeur en pleine page","Supprimer le formattage","Modifier la couleur du fond ou du texte","Refaire","Défaire","Gras","Italique","Liste non ordonnée","Liste ordonnée","Centrer","Justifier","Aligner à gauche ","Aligner à droite","Insérer une ligne horizontale","Insérer une image","Insérer un fichier","Insérer une vidéo","Insérer un lien","Taille des caractères","Famille des caractères","Bloc formatté","Normal","Titre 1","Titre 2","Titre 3","Titre 4","Citation","Code","Insérer","Insérer un tableau","Diminuer le retrait","Retrait plus","Sélectionnez un caractère spécial","Insérer un caractère spécial","Cloner le format","Mode wysiwyg <-> code html","Marges","haut","droite","Bas","gauche","Styles","Classes","Alignement","Droite","Centre","Gauche","--Non disponible--","Source","Titre","Alternative","Lien","Ouvrir le lien dans un nouvel onglet","Image","fichier","Avancé","Propriétés de l'image","Annuler","OK","Explorateur de fichiers","Erreur de liste de chargement","Erreur de dossier de chargement","Etes-vous sûrs ?","Entrer le nom de dossier","Créer un dossier","type de fichier","Coller une image","Déposer un fichier","ou cliquer","Texte de remplacemement","Charger","Chercher","Arrière-plan","Texte","Haut","Milieu","Bas","Insérer une colonne avant","Insérer une colonne après","Insérer une ligne au dessus","Insérer une ligne en dessous","Supprimer le tableau","Supprimer la ligne","Supprimer la colonne","Vider la cellule","Symboles: %d","Mots: %d","Barrer","Souligner","exposant","indice","Couper la sélection","Tout sélectionner","Pause","Rechercher","Remplacer par","Remplacer","Coller","Choisissez le contenu à coller","la source","gras","italique","pinceau","lien","annuler","refaire","tableau","image","gomme","clause","taille de police","Video","police","à propos de l'éditeur","impression","souligné","barré","indentation","retrait","taille réelle","taille conventionnelle","la ligne","Liste","Liste numérotée","Couper","Sélectionner tout",null,"Ouvrir le lien","Modifier le lien","Attribut Nofollow","Supprimer le lien","Mettre à jour","Pour éditer","Voir","URL",null,"Alignement horizontal","Filtre","Trier par modification","Trier par nom","Trier par taille","Créer le dossier","Restaurer","Sauvegarder","Enregistrer sous","Changer la taille","Taille de garniture","Largeur","Hauteur","Garder les proportions","Oui","Non","Supprimer","Mettre en évidence","Mettre en évidence: %s","Alignement vertical","Split","aller","Ajouter une colonne","Ajouter une rangée",null,"Effacer","Split vertical","Split horizontal","Bordure","Votre texte que vous essayez de coller est similaire au HTML. Collez-le en HTML?","Coller en HTML?","Sauvegarder l'original","Coller en tant que texte","Coller le texte seulement","Vous ne pouvez éditer que vos propres images. Téléchargez cette image sur l'hôte?","L'image a été téléchargée avec succès sur le serveur!","Palette","Il n'y a aucun fichier dans ce répertoire.","renommer","Entrez un nouveau nom","Aperçu","Télécharger","Coller à partir du presse-papiers","Votre navigateur ne prend pas en charge l'accès direct au presse-papiers.","Copier la sélection","copie","Rayon des bordures","Afficher tous","Appliquer","Veuillez remplir ce champ","Veuillez entrer une adresse web","Par défaut","Cercle","Point","Quadratique","Trouver","Précédent","Suivant","Le contenu que vous insérez provient d'un document Microsoft Word / Excel. Voulez-vous enregistrer le format ou l'effacer?","C'est peut-être un fragment de Word ou Excel","Nettoyer","Insérer un nom de classe","Appuyez sur Alt pour un redimensionnement personnalisé"]},53113(t){t.exports.default=["הקלד משהו...","About Jodit","Jodit Editor","Jodit User's Guide","contains detailed help for using.","For information about the license, please go to our website:","Buy full version","Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.","מקום עיגון","פתח בכרטיסיה חדשה","פתח את העורך בחלון חדש","נקה עיצוב","שנה צבע טקסט או רקע","בצע שוב","בטל","מודגש","נטוי","הכנס רשימת תבליטים","הכנס רשימה ממוספרת","מרכז","ישר ","ישר לשמאל","ישר לימין","הכנס קו אופקי","הכנס תמונה","הכנס קובץ","הכנס סרטון וידאו מYouTube/Vimeo","הכנס קישור","גודל גופן","גופן","מעוצב מראש","רגיל","כותרת 1","כותרת 2","כותרת 3","כותרת 4","ציטוט","קוד","הכנס","הכנס טבלה","הקטן כניסה","הגדל כניסה","בחר תו מיוחד","הכנס תו מיוחד","העתק עיצוב","החלף מצב","ריווח","עליון","ימין","תחתון","שמאל","עיצוב CSS","מחלקת CSS","יישור","ימין","מרכז","שמאל","--לא נקבע--","מקור","כותרת","כיתוב חלופי","קישור","פתח בכרטיסיה חדשה","תמונה","קובץ","מתקדם","מאפייני תמונה","ביטול","אישור","סייר הקבצים","שגיאה בזמן טעינת רשימה","שגיאה בזמן טעינת תקיות","האם אתה בטוח?","הכנס שם תקיה","צור תקיה","סוג הקובץ","הסר תמונה","הסר קובץ","או לחץ","כיתוב חלופי","העלה","סייר","רקע","טקסט","עליון","מרכז","תחתון","הכנס עמודה לפני","הכנס עמודה אחרי","הכנס שורה מעל","הכנס שורה מתחת","מחק טבלה","מחק שורה","מחק עמודה","רוקן תא","תווים: %d","מילים: %d","קו חוצה","קו תחתון","superscript","subscript","גזור בחירה","בחר הכל","שבירת שורה","חפש","החלף ב","להחליף","הדבק","בחר תוכן להדבקה","HTML","מודגש","נטוי","מברשת","קישור","בטל","בצע שוב","טבלה","תמונה","מחק","פסקה","גודל גופן","וידאו","גופן","עלינו","הדפס","קו תחתון","קו חוצה","הגדל כניסה","הקטן כניסה","גודל מלא","כווץ","קו אופקי","רשימת תבליטים","רשימה ממוספרת","חתוך","בחר הכל","הוסף קוד","פתח קישור","ערוך קישור","ללא מעקב","בטל קישור","עדכן","כדי לערוך","הצג","כתובת","ערוך","יישור אופקי","סנן","מין לפי שינוי","מיין לפי שם","מיין לפי גודל","הוסף תקייה","אפס","שמור","שמור בשם...","שנה גודל","חתוך","רוחב","גובה","שמור יחס","כן","לא","הסר","בחר","נבחר: %s","יישור אנכי","פיצול","מזג","הוסף עמודה","הוסף שורה",null,"מחק","פיצול אנכי","פיצול אופקי","מסגרת","הקוד דומה לHTML, האם להשאיר כHTML","הדבק כHTML","השאר","הכנס כטקסט","הכנס טקסט בלבד","רק קבצים המשוייכים שלך ניתנים לעריכה. האם להוריד את הקובץ?","התמונה עלתה בהצלחה!","לוח","אין קבצים בספריה זו.","הונגרית","הזן שם חדש","תצוגה מקדימה","הורד","להדביק מהלוח","הדפדפן שלך לא תומך גישה ישירה ללוח.","העתק בחירה","העתק","רדיוס הגבול","הצג את כל","החל","נא למלא שדה זה","אנא הזן כתובת אינטרנט","ברירת המחדל","מעגל","נקודה","הריבוע הזה","למצוא","מצא את הקודם","חפש את הבא","התוכן המודבק מגיע ממסמך וורד/אקסל. האם ברצונך להשאיר את העיצוב או לנקותו",'זוהתה הדבקה מ"וורד"',"נקה","הכנס את שם הכיתה","לחץ על אלט לשינוי גודל מותאם אישית"]},81321(t){t.exports.default=["Írjon be valamit","Joditról","Jodit Editor","Jodit útmutató","további segítséget tartalmaz","További licence információkért látogassa meg a weboldalunkat:","Teljes verzió megvásárlása","Copyright © XDSoft.net - Chupurnov Valeriy. Minden jog fenntartva.","Horgony","Megnyitás új lapon","Megnyitás teljes méretben","Formázás törlése","Háttér/szöveg szín","Újra","Visszavon","Félkövér","Dőlt","Pontozott lista","Számozott lista","Középre zárt","Sorkizárt","Balra zárt","Jobbra zárt","Vízszintes vonal beszúrása","Kép beszúrás","Fájl beszúrás","Youtube videó beszúrása","Link beszúrás","Betűméret","Betűtípus","Formázott blokk beszúrása","Normál","Fejléc 1","Fejléc 2","Fejléc 3","Fejléc 4","Idézet","Kód","Beszúr","Táblázat beszúrása","Behúzás csökkentése","Behúzás növelése","Speciális karakter kiválasztása","Speciális karakter beszúrása","Kép formázása","Nézet váltása","Szegélyek","felső","jobb","alsó","bal","CSS stílusok","CSS osztályok","Igazítás","Jobbra","Középre","Balra","Nincs","Forrás","Cím","Helyettesítő szöveg","Link","Link megnyitása új lapon","Kép","Fájl","Haladó","Kép tulajdonságai","Mégsem","OK","Fájl tallózó","Hiba a lista betöltése közben","Hiba a mappák betöltése közben","Biztosan ezt szeretné?","Írjon be egy mappanevet","Mappa létrehozása","írjon be bevet","Húzza ide a képet","Húzza ide a fájlt","vagy kattintson","Helyettesítő szöveg","Feltölt","Tallóz","Háttér","Szöveg","Fent","Középen","Lent","Oszlop beszúrás elé","Oszlop beszúrás utána","Sor beszúrás fölé","Sor beszúrás alá","Táblázat törlése","Sor törlése","Oszlop törlése","Cella tartalmának törlése","Karakterek száma: %d","Szavak száma: %d","Áthúzott","Aláhúzott","Felső index","Alsó index","Kivágás","Összes kijelölése","Szünet","Keresés","Csere erre","Cserélje ki","Beillesztés","Válasszon tartalmat a beillesztéshez","HTML","Félkövér","Dőlt","Ecset","Link","Visszavon","Újra","Táblázat","Kép","Törlés","Paragráfus","Betűméret","Videó","Betű","Rólunk","Nyomtat","Aláhúzott","Áthúzott","Behúzás","Aussenseiter","Teljes méret","Összenyom","Egyenes vonal","Lista","Számozott lista","Kivág","Összes kijelölése","Beágyazott kód","Link megnyitása","Link szerkesztése","Nincs követés","Link leválasztása","Frissít","Szerkesztés","felülvizsgálat","URL","Szerkeszt","Vízszintes igazítás","Szűrő","Rendezés módosítás szerint","Rendezés név szerint","Rendezés méret szerint","Mappa hozzáadás","Visszaállít","Mentés","Mentés másként...","Átméretezés","Kivág","Szélesség","Magasság","Képarány megtartása","Igen","Nem","Eltávolít","Kijelöl","Kijelöl: %s","Függőleges igazítás","Felosztás","Összevonás","Oszlop hozzáadás","Sor hozzáadás",null,"Törlés","Függőleges felosztás","Vízszintes felosztás","Szegély","A beillesztett szöveg HTML-nek tűnik. Megtartsuk HTML-ként?","Beszúrás HTML-ként","Megtartás","Beszúrás szövegként","Csak szöveg beillesztése","Csak a saját képeit tudja szerkeszteni. Letölti ezt a képet?","Kép sikeresen feltöltve!","Palette","Er zijn geen bestanden in deze map.","átnevezés","Adja meg az új nevet","előnézet","Letöltés","Illessze be a vágólap","A böngésző nem támogatja a közvetlen hozzáférést biztosít a vágólapra.","Másolás kiválasztása","másolás","Határ sugár","Összes","Alkalmazni","Kérjük, töltse ki ezt a mezőt,","Kérjük, írja be a webcímet","Alapértelmezett","Kör","Pont","Quadrate","Találni","Megtalálja Előző","Következő Keresése","A beillesztett tartalom Microsoft Word/Excel dokumentumból származik. Meg szeretné tartani a formátumát?","Word-ből másolt szöveg","Elvetés","Helyezze be az osztály nevét","Nyomja meg az Alt egyéni átméretezés"]},4679(t){t.exports.default=["Ketik sesuatu","Tentang Jodit","Editor Jodit","Panduan Pengguna Jodit","mencakup detail bantuan penggunaan","Untuk informasi tentang lisensi, silakan kunjungi website:","Beli versi lengkap","Hak Cipta © XDSoft.net - Chupurnov Valeriy. Hak cipta dilindungi undang-undang.","Tautan","Buka di tab baru","Buka editor dalam ukuran penuh","Hapus Pemformatan","Isi warna atau atur warna teks","Ulangi","Batalkan","Tebal","Miring","Sisipkan Daftar Tidak Berurut","Sisipkan Daftar Berurut","Tengah","Penuh","Kiri","Kanan","Sisipkan Garis Horizontal","Sisipkan Gambar","Sisipkan Berkas","Sisipkan video youtube/vimeo","Sisipkan tautan","Ukuran font","Keluarga font","Sisipkan blok format","Normal","Heading 1","Heading 2","Heading 3","Heading 4","Kutip","Kode","Sisipkan","Sisipkan tabel","Kurangi Indentasi","Tambah Indentasi","Pilih Karakter Spesial","Sisipkan Karakter Spesial","Formar warna","Ubah mode","Batas","atas","kanan","bawah","kiri","Gaya","Class","Rata","Kanan","Tengah","Kiri","--Tidak diset--","Src","Judul","Teks alternatif","Tautan","Buka tautan di tab baru","Gambar","berkas","Lanjutan","Properti gambar","Batal","Ya","Penjelajah Berkas","Error ketika memuat list","Error ketika memuat folder","Apakah Anda yakin?","Masukkan nama Direktori","Buat direktori","ketik nama","Letakkan gambar","Letakkan berkas","atau klik","Teks alternatif","Unggah","Jelajahi","Latar Belakang","Teks","Atas","Tengah","Bawah","Sisipkan kolom sebelumnya","Sisipkan kolom setelahnya","Sisipkan baris di atasnya","Sisipkan baris di bawahnya","Hapus tabel","Hapus baris","Hapus kolom","Kosongkan cell","Karakter: %d","Kata: %d","Coret","Garis Bawah","Superskrip","Subskrip","Potong pilihan","Pilih semua","Berhenti","Mencari","Ganti dengan","Mengganti","Paste","Pilih konten untuk dipaste","sumber","tebal","miring","sikat","tautan","batalkan","ulangi","tabel","gambar","penghapus","paragraf","ukuran font","video","font","tentang","cetak","garis bawah","coret","menjorok ke dalam","menjorok ke luar","ukuran penuh","menyusut","hr","ul","ol","potong","Pilih semua","Kode embed","Buka tautan","Edit tautan","No follow","Hapus tautan","Perbarui","pensil","Mata","URL","Edit","Perataan horizontal","Filter","Urutkan berdasarkan perubahan","Urutkan berdasarkan nama","Urutkan berdasarkan ukuran","Tambah folder","Reset","Simpan","Simpan sebagai...","Ubah ukuran","Crop","Lebar","Tinggi","Jaga aspek rasio","Ya","Tidak","Copot","Pilih","Pilih %s","Rata vertikal","Bagi","Gabungkan","Tambah kolom","tambah baris","Lisensi: %s","Hapus","Bagi secara vertikal","Bagi secara horizontal","Bingkai","Kode Anda cenderung ke HTML. Biarkan sebagai HTML?","Paste sebagai HTML","Jaga","Sisipkan sebagai teks","Sisipkan hanya teks","Anda hanya dapat mengedit gambar Anda sendiri. Unduh gambar ini di host?","Gambar telah sukses diunggah ke host!","palet","Tidak ada berkas","ganti nama","Masukkan nama baru","pratinjau","Unduh","Paste dari clipboard","Browser anda tidak mendukung akses langsung ke clipboard.","Copy seleksi","copy","Border radius","Tampilkan semua","Menerapkan","Silahkan mengisi kolom ini","Silahkan masukkan alamat web","Default","Lingkaran","Dot","Kuadrat","Menemukan","Menemukan Sebelumnya","Menemukan Berikutnya","Konten dipaste dari dokumen Microsoft Word/Excel. Apakah Anda ingin tetap menjaga format atau membersihkannya?","Terdeteksi paste dari Word","Bersih","Masukkan nama kelas","Tekan Alt untuk mengubah ukuran kustom"]},31927(t){t.exports.default=["Scrivi qualcosa...","A proposito di Jodit","Jodit Editor","Guida utente di Jodit","contiene una guida dettagliata per l'uso.","Per informazioni sulla licenza, si prega di visitare il nostro sito web:","Acquista la versione completa","Copyright © XDSoft.net - Chupurnov Valeriy. Tutti i diritti riservati.","Link","Apri in una nuova scheda","Apri l'editor a schermo intero","Pulisci Formattazione","Colore di sfondo o del testo","Ripristina","Annulla","Grassetto","Corsivo","Inserisci lista non ordinata","Inserisci lista ordinata","Allinea al centro","Allineamento Giustificato","Allinea a Sinistra","Allinea a Destra","Inserisci una linea orizzontale","Inserisci immagine","Inserisci un file","Inserisci video Youtube/Vimeo","Inserisci link","Dimensione carattere","Tipo di font","Inserisci blocco","Normale","Intestazione 1","Intestazione 2","Intestazione 3","Intestazione 4","Citazione","Codice","Inserisci","Inserisci tabella","Riduci il rientro","Aumenta il rientro","Seleziona un carattere speciale","Inserisci un carattere speciale","Copia formato","Cambia modalita'","Margini","su","destra","giù","sinistra","Stili CSS","Classi CSS","Allinea","Destra","Centro","Sinistra","--Non Impostato--","Fonte","Titolo","Testo Alternativo","Link","Apri il link in una nuova scheda","Immagine","Archivio","Avanzato","Proprietà dell'immagine","Annulla","Accetta","Cerca file","Errore durante il caricamento dell'elenco","Errore durante il caricamento delle cartelle","Sei sicuro?","Inserisci il nome della cartella","Crea cartella","Digita il nome","Cancella immagine","Cancella file","o clicca","Testo alternativo","Carica","Sfoglia","Sfondo","Testo","Su","Centro","Sotto","Inserisci la colonna prima","Inserisci la colonna dopo","Inserisci la riga sopra","Inserisci la riga sotto","Elimina tabella","Elimina riga","Elimina colonna","Cella vuota","Caratteri: %d","Parole: %d","Barrato","Sottolineato","indice","pedice","Taglia selezione","Seleziona tutto","Pausa","Cerca per","Sostituisci con","Sostituisci","Incolla","Seleziona il contenuto da incollare","risorsa","Grassetto","Corsivo","Pennello","Link","Annulla","Ripristina","Tabella","Immagine","Gomma","Paragrafo","Dimensione del carattere","Video","Font","Approposito di","Stampa","Sottolineato","Barrato","aumenta rientro","riduci rientro","espandi","comprimi","linea orizzontale","lista non ordinata","lista ordinata","Taglia","Seleziona tutto","Includi codice","Apri link","Modifica link","Non seguire","Rimuovi link","Aggiorna","Per modificare","Recensione"," URL","Modifica","Allineamento orizzontale","Filtro","Ordina per data di modifica","Ordina per nome","Ordina per dimensione","Aggiungi cartella","Reset","Salva","Salva con nome...","Ridimensiona","Ritaglia","Larghezza","Altezza","Mantieni le proporzioni","Si","No","Rimuovi","Seleziona","Seleziona: %s","Allineamento verticala","Dividi","Fondi","Aggiungi colonna","Aggiungi riga",null,"Cancella","Dividi verticalmente","Dividi orizzontale","Bordo","Il codice è simile all'HTML. Mantieni come HTML?","Incolla come HTML","Mantieni","Inserisci come testo","Inserisci solo il testo","Puoi modificare solo le tue immagini. Vuoi scaricare questa immagine dal server?","L'immagine è stata caricata correttamente sul server!","tavolozza","Non ci sono file in questa directory.","Rinomina","Inserisci un nuovo nome","anteprima","Scarica","Incolla dagli appunti","Il tuo browser non supporta l'accesso diretto agli appunti.","Copia selezione","copia","Border radius","Mostra tutti","Applica","Si prega di compilare questo campo","Si prega di inserire un indirizzo web","Default","Cerchio","Punto","Quadrato","Trova","Trova Precedente","Trova Successivo","Il contenuto incollato proviene da un documento Microsoft Word / Excel. Vuoi mantenere il formato o pulirlo?","Incolla testo da Word rilevato","Pulisci","Inserisci il nome della classe","Premere Alt per il ridimensionamento personalizzato"]},21195(t){t.exports.default=["なにかタイプしてください","Joditについて","Jodit Editor","Jodit ユーザーズ・ガイド","詳しい使い方","ライセンス詳細についてはJodit Webサイトを確認ください:","フルバージョンを購入","Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.","Anchor","新しいタブで開く","エディターのサイズ(フル/ノーマル)","書式をクリア","テキストの色","やり直し","元に戻す","太字","斜体","箇条書き","番号付きリスト","中央揃え","両端揃え","左揃え","右揃え","区切り線を挿入","画像を挿入","ファイルを挿入","Youtube/Vimeo 動画","リンクを挿入","フォントサイズ","フォント","テキストのスタイル","指定なし","タイトル1","タイトル2","タイトル3","タイトル4","引用","コード","挿入","表を挿入","インデント減","インデント増","特殊文字を選択","特殊文字を挿入","書式を貼付け","編集モード切替え","マージン","上","右","下","左","スタイル","クラス","配置","右寄せ","中央寄せ","左寄せ","指定なし","ソース","タイトル","代替テキスト","リンク","新しいタブで開く","画像","ファイル","高度な設定","画像のプロパティー","キャンセル","確定","File Browser","Error on load list","Error on load folders","Are you sure?","Enter Directory name","Create directory","type name","ここに画像をドロップ","ここにファイルをドロップ","or クリック","代替テキスト","アップロード","ブラウズ","背景","文字","上","中央","下","左に列を挿入","右に列を挿入","上に行を挿入","下に行を挿入","表を削除","行を削除","列を削除","セルを空にする","文字数: %d","単語数: %d","取り消し線","下線","上付き文字","下付き文字","切り取り","すべて選択","Pause","検索","置換","交換","貼付け","選択した内容を貼付け","source","bold","italic","brush","link","undo","redo","table","image","eraser","paragraph","fontsize","video","font","about","print","underline","strikethrough","indent","outdent","fullsize","shrink","分割線","箇条書き","番号付きリスト","切り取り","すべて選択","埋め込みコード","リンクを開く","リンクを編集","No follow","リンク解除","更新","鉛筆","サイトを確認","URL","編集","水平方向の配置","Filter","Sort by changed","Sort by name","Sort by size","Add folder","リセット","保存","Save as ...","リサイズ","Crop","幅","高さ","縦横比を保持","はい","いいえ","移除","選択","選択: %s","垂直方向の配置","分割","セルの結合","列を追加","行を追加",null,"削除","セルの分割(垂直方向)","セルの分割(水平方向)","境界線","HTMLコードを保持しますか?","HTMLで貼付け","HTMLを保持","HTMLをテキストにする","テキストだけ","You can only edit your own images. Download this image on the host?","The image has been successfully uploaded to the host!","パレット","There are no files","Rename","Enter new name","プレビュー","ダウンロード","貼り付け","お使いのブラウザはクリップボードを使用できません","コピー","copy","角の丸み","全て表示","適用","まだこの分野","を入力してくださいウェブアドレス","デフォルト","白丸","黒丸","四角","見","探前","由来","The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?","Word Paste Detected","Clean","クラス名を挿入","カスタムサイズ変更のためのAltキーを押します"]},53414(t){t.exports.default=["Type something","About Jodit","Jodit Editor","Jodit User's Guide","contains detailed help for using","For information about the license, please go to our website:","Buy full version","Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.","Anchor","Open in new tab","Open in fullsize","Clear Formatting","Fill color or set the text color","Redo","Undo","Bold","Italic","Insert Unordered List","Insert Ordered List","Align Center","Align Justify","Align Left","Align Right","Insert Horizontal Line","Insert Image","Insert file","Insert youtube/vimeo video","Insert link","Font size","Font family","Insert format block","Normal","Heading 1","Heading 2","Heading 3","Heading 4","Quote","Code","Insert","Insert table","Decrease Indent","Increase Indent","Select Special Character","Insert Special Character","Paint format","Change mode","Margins","top","right","bottom","left","Styles","Classes","Align","Right","Center","Left","--Not Set--","Src","Title","Alternative","Link","Open link in new tab","Image","file","Advanced","Image properties","Cancel","Ok","File Browser","Error on load list","Error on load folders","Are you sure?","Enter Directory name","Create directory","type name","Drop image","Drop file","or click","Alternative text","Upload","Browse","Background","Text","Top","Middle","Bottom","Insert column before","Insert column after","Insert row above","Insert row below","Delete table","Delete row","Delete column","Empty cell","Chars: %d","Words: %d","Strike through","Underline","superscript","subscript","Cut selection","Select all","Break","Search for","Replace with","Replace","Paste","Choose Content to Paste","source","bold","italic","brush","link","undo","redo","table","image","eraser","paragraph","fontsize","video","font","about","print","underline","strikethrough","indent","outdent","fullsize","shrink","hr","ul","ol","cut","selectall","Embed code","Open link","Edit link","No follow","Unlink","Update","pencil","Eye"," URL","Edit","Horizontal align","Filter","Sort by changed","Sort by name","Sort by size","Add folder","Reset","Save","Save as ...","Resize","Crop","Width","Height","Keep Aspect Ratio","Yes","No","Remove","Select","Select %s","Vertical align","Split","Merge","Add column","Add row","License: %s","Delete","Split vertical","Split horizontal","Border","Your code is similar to HTML. Keep as HTML?","Paste as HTML","Keep","Insert as Text","Insert only Text","You can only edit your own images. Download this image on the host?","The image has been successfully uploaded to the host!","palette","There are no files","Rename","Enter new name","preview","download","Paste from clipboard","Your browser doesn't support direct access to the clipboard.","Copy selection","copy","Border radius","Show all","Apply","Please fill out this field","Please enter a web address","Default","Circle","Dot","Quadrate","Find","Find Previous","Find Next","The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?","Word Paste Detected","Clean","Insert className","Press Alt for custom resizing"]},11012(t){t.exports.default=["무엇이든 입력하세요","Jodit에 대하여","Jodit Editor","Jodit 사용자 안내서","자세한 도움말이 들어있어요","라이센스에 관해서는 Jodit 웹 사이트를 방문해주세요:","풀 버전 구입하기","© XDSoft.net - Chupurnov Valeriy. 에게 저작권과 모든 권리가 있습니다.","Anchor","새 탭에서 열기","전체 크기로 보기","서식 지우기","글씨 색상","재실행","실행 취소","굵게","기울임","글머리 목록","번호 목록","가운데 정렬","양쪽 정렬","왼쪽 정렬","오른쪽 정렬","수평 구분선 넣기","이미지 넣기","파일 넣기","Youtube/Vimeo 동영상","링크 넣기","글꼴 크기","글꼴","블록 요소 넣기","일반 텍스트","제목 1","제목 2","제목 3","제목 4","인용","코드","붙여 넣기","테이블","들여쓰기 감소","들여쓰기 증가","특수문자 선택","특수문자 입력","페인트 형식","편집모드 변경","마진","위","오른쪽","아래","왼쪽","스타일","클래스","정렬","오른쪽으로","가운데로","왼쪽으로","--지정 안 함--","경로(src)","제목","대체 텍스트(alt)","링크","새 탭에서 열기",null,"파일","고급","이미지 속성","취소","확인","파일 탐색기","목록 불러오기 에러","폴더 불러오기","정말 진행할까요?","디렉토리 이름 입력","디렉토리 생성","이름 입력","이미지 드래그","파일 드래그","혹은 클릭","대체 텍스트","업로드","탐색","배경","텍스트","위","중앙","아래","이전 열에 삽입","다음 열에 삽입","위 행에 삽입","아래 행에 삽입","테이블 삭제","행 삭제","열 삭제","빈 셀","문자수: %d","단어수: %d","취소선","밑줄","윗첨자","아래첨자","선택 잘라내기","모두 선택","구분자","검색","대체하기","대체","붙여넣기","붙여넣을 내용 선택","HTML 소스","볼드","이탤릭","브러시","링크","실행 취소","재실행","테이블","이미지","지우개","문단","글꼴 크기","비디오","글꼴","편집기 정보","프린트","밑줄","취소선","들여쓰기","내어쓰기","전체 화면","일반 화면","구분선","글머리 목록","번호 목록","잘라내기","모두 선택","Embed 코드","링크 열기","링크 편집","No follow","링크 제거","갱신","연필","사이트 확인","URL","편집","수평 정렬","필터","변경일 정렬","이름 정렬","크기 정렬","새 폴더","초기화","저장","새로 저장하기 ...","리사이즈","크롭","가로 길이","세로 높이","비율 유지하기","네","아니오","제거","선택","선택: %s","수직 정렬","분할","셀 병합","열 추가","행 추가","라이센스: %s","삭제","세로 셀 분할","가로 셀 분할","외곽선","HTML 코드로 감지했어요. 코드인채로 붙여넣을까요?","HTML로 붙여넣기","원본 유지","텍스트로 넣기","텍스트만 넣기","외부 이미지는 편집할 수 없어요. 외부 이미지를 다운로드 할까요?","이미지를 무사히 업로드 했어요!","팔레트","파일이 없어요","이름 변경","새 이름 입력","미리보기","다운로드","클립보드 붙여넣기","사용중인 브라우저가 클립보드 접근을 지원하지 않아요.","선택 복사","복사","둥근 테두리","모두 보기","적용","이 항목을 입력해주세요!","웹 URL을 입력해주세요.","기본","원","점","정사각형","찾기","이전 찾기","다음 찾기","Microsoft Word/Excel 문서로 감지했어요. 서식을 유지한채로 붙여넣을까요?","Word 붙여넣기 감지","지우기","className 입력","사용자 지정 크기 조정에 대 한 고도 누르십시오"]},87061(t){t.exports.default=["Бичээд үзээрэй","Jodit-ын талаар ","Jodit програм","Jodit гарын авлага","хэрэглээний талаар дэлгэрэнгүй мэдээллийг агуулна","Лицензийн мэдээллийг манай вэб хуудаснаас авна уу:","Бүрэн хувилбар худалдан авах","Зохиогчийн эрх хамгаалагдсан © XDSoft.net - Chupurnov Valeriy. Бүх эрхийг эзэмшинэ.","Холбоо барих","Шинэ табаар нээх","Бүтэн дэлгэцээр нээх","Форматыг арилгах","Өнгөөр будах эсвэл текстийн өнгө сонгох","Дахих","Буцаах","Тод","Налуу","Тэмдэгт жагсаалт нэмэх","Дугаарт жагсаалт нэмэх","Голлож байрлуулах","Тэгшитгэн байрлуулах","Зүүнд байрлуулах","Баруунд байрлуулах","Хэвтээ зураас нэмэх","Зураг нэмэх","Файл нэмэх","Youtube/Vimeo видео нэмэх","Холбоос нэмэх","Фонтын хэмжээ","Фонтын бүл","Блок нэмэх","Хэвийн","Гарчиг 1","Гарчиг 2","Гарчиг 3","Гарчиг 4","Ишлэл","Код","Оруулах","Хүснэгт оруулах","Доголын зай хасах","Доголын зай нэмэх","Тусгай тэмдэгт сонгох","Тусгай тэмдэгт нэмэх","Зургийн формат","Горим өөрчлөх","Цаасны зай","Дээрээс","Баруунаас","Доороос","Зүүнээс","CSS стиль","CSS анги","Байрлуулах","Баруун","Төв","Зүүн","--Тодорхойгүй--","Эх үүсвэр","Гарчиг","Алтернатив текст","Холбоос","Холбоосыг шинэ хавтсанд нээх","Зураг","Файл","Дэвшилтэт","Зургийн үзүүлэлт","Цуцлах","Ok","Файлын цонх","Жагсаалт татах үед алдаа гарлаа","Хавтас татах үед алдаа гарлаа","Итгэлтэй байна уу?","Хавтсын нэр оруулах","Хавтас үүсгэх","Нэр бичих","Зураг буулгах","Файл буулгах","эсвэл товш","Алтернатив текст","Байршуулах","Үзэх","Арын зураг","Текст","Дээр","Дунд","Доор","Урд нь багана нэмэх","Ард нь багана нэмэх","Дээр нь мөр нэмэх","Доор нь мөр нэмэх","Хүснэгт устгах","Мөр устгах","Багана устгах","Нүд цэвэрлэх","Тэмдэгт: %d","Үг: %d","Дээгүүр зураас","Доогуур зураас","Дээд индекс","Доод индекс","Сонголтыг таслах","Бүгдийг сонго","Мөрийг таслах","Хайх","Үүгээр солих","Солих","Буулгах","Буулгах агуулгаа сонгоно уу","Эх үүсвэр","Тод","Налуу","Будах","Холбоос","Буцаах","Дахих","Хүснэгт","Зураг","Баллуур","Параграф","Фонтын хэмжээ","Видео","Фонт","Тухай","Хэвлэх","Доогуур зураас","Дээгүүр зураас","Догол нэмэх","Догол багасгах","Бүтэн дэлгэц","Багасга","Хаалт","Тэмдэгт жагсаалт","Дугаарласан жагсаалт","Таслах","Бүгдийг сонго","Код оруулах","Холбоос нээх","Холбоос засах","Nofollow özelliği","Холбоос салгах","Шинэчлэх","Засах","Нүд","URL","Засах","Хэвтээ эгнүүлэх","Шүүх","Сүүлд өөрчлөгдсөнөөр жагсаах","Нэрээр жагсаах","Хэмжээгээр жагсаах","Хавтас нэмэх","Буцаах","Хадгалах","Өөрөөр хадгалах","Хэмжээг өөрчил","Тайрах","Өргөн","Өндөр","Харьцааг хадгал","Тийм","Үгүй","Арилга","Сонго","Сонго: %s","Босоо эгнүүлэх","Задлах","Нэгтгэх","Багана нэмэх","Мөр нэмэх",null,"Устгах","Баганаар задлах","Мөрөөр задлах","Хүрээ","Таны код HTML кодтой адил байна. HTML форматаар үргэлжлүүлэх үү?","HTML байдлаар буулгах","Хадгалах","Текст байдлаар нэмэх","Зөвхөн текст оруулах","Та зөвхөн өөрийн зургуудаа янзлах боломжтой. Энэ зургийг өөр лүүгээ татмаар байна уу?","Зургийг хост руу амжилттай хадгалсан","Палет","Энд ямар нэг файл алга","Шинээр нэрлэх","Шинэ нэр оруулна уу","Урьдчилан харах","Татах","Самбараас хуулах ","Энэ вэб хөтчөөс самбарт хандах эрх алга.","Сонголтыг хуул","Хуулах","Хүрээний радиус","Бүгдийг харуулах","Хэрэгжүүл","Энэ талбарыг бөглөнө үү","Вэб хаягаа оруулна уу","Үндсэн","Дугуй","Цэг","Дөрвөлжин","Хайх","Өмнөхийг ол","Дараагийнхийг ол","Буулгасан агуулга Microsoft Word/Excel форматтай байна. Энэ форматыг хэвээр хадгалах уу эсвэл арилгах уу?","Word байдлаар буулгасан байна","Цэвэрлэх","Бүлгийн нэрээ оруулна уу","Хэмжээсийг шинээр өөчрлөхийн тулд Alt товчин дээр дарна уу"]},3268(t){t.exports.default=["Begin met typen..","Over Jodit","Jodit Editor","Jodit gebruikershandleiding","bevat gedetailleerde informatie voor gebruik.","Voor informatie over de licentie, ga naar onze website:","Volledige versie kopen","Copyright © XDSoft.net - Chupurnov Valeriy. Alle rechten voorbehouden.","Anker","Open in nieuwe tab","Editor in volledig scherm openen","Opmaak verwijderen","Vulkleur of tekstkleur aanpassen","Opnieuw","Ongedaan maken","Vet","Cursief","Geordende list invoegen","Ongeordende lijst invoegen","Centreren","Uitlijnen op volledige breedte","Links uitlijnen","Rechts uitlijnen","Horizontale lijn invoegen","Afbeelding invoegen","Bestand invoegen","Youtube/Vimeo video invoegen","Link toevoegen","Tekstgrootte","Lettertype","Format blok invoegen","Normaal","Koptekst 1","Koptekst 2","Koptekst 3","Koptekst 4","Citaat","Code","Invoegen","Tabel invoegen","Inspringing verkleinen","Inspringing vergroten","Symbool selecteren","Symbool invoegen","Opmaak kopieren","Modus veranderen","Marges","Boven","Rechts","Onder","Links","CSS styles","CSS classes","Uitlijning","Rechts","Gecentreerd","Links","--Leeg--","Src","Titel","Alternatieve tekst","Link","Link in nieuwe tab openen","Afbeelding","Bestand","Geavanceerd","Afbeeldingseigenschappen","Annuleren","OK","Bestandsbrowser","Fout bij het laden van de lijst","Fout bij het laden van de mappenlijst","Weet je het zeker?","Geef de map een naam","Map aanmaken","Type naam","Sleep hier een afbeelding naartoe","Sleep hier een bestand naartoe","of klik","Alternatieve tekst","Uploaden","Bladeren","Achtergrond","Tekst","Boven","Midden","Onder","Kolom invoegen (voor)","Kolom invoegen (na)","Rij invoegen (boven)","Rij invoegen (onder)","Tabel verwijderen","Rij verwijderen","Kolom verwijderen","Cel leegmaken","Tekens: %d","Woorden: %d","Doorstrepen","Onderstrepen","Superscript","Subscript","Selectie knippen","Selecteer alles","Enter","Zoek naar","Vervangen door","Vervangen","Plakken","Kies content om te plakken","Broncode","vet","cursief","kwast","link","ongedaan maken","opnieuw","tabel","afbeelding","gum","paragraaf","lettergrootte","video","lettertype","over","afdrukken","onderstreept","doorgestreept","inspringen","minder inspringen","volledige grootte","kleiner maken","horizontale lijn","lijst","genummerde lijst","knip","alles selecteren","Embed code","Link openen","Link aanpassen","Niet volgen","link verwijderen","Updaten","Om te bewerken","Recensie"," URL","Bewerken","Horizontaal uitlijnen","Filteren","Sorteren op wijzigingsdatum","Sorteren op naam","Sorteren op grootte","Map toevoegen","Herstellen","Opslaan","Opslaan als ...","Grootte aanpassen","Bijknippen","Breedte","Hoogte","Verhouding behouden","Ja","Nee","Verwijderen","Selecteren","Selecteer: %s","Verticaal uitlijnen","Splitsen","Samenvoegen","Kolom toevoegen","Rij toevoegen",null,"Verwijderen","Verticaal splitsen","Horizontaal splitsen","Rand","Deze code lijkt op HTML. Als HTML behouden?","Invoegen als HTML","Origineel behouden","Als tekst invoegen","Als onopgemaakte tekst invoegen","Je kunt alleen je eigen afbeeldingen aanpassen. Deze afbeelding downloaden?","De afbeelding is succesvol geüploadet!","Palette","Er zijn geen bestanden in deze map.","Hernoemen","Voer een nieuwe naam in","Voorvertoning","Download","Plakken van klembord","Uw browser ondersteunt geen directe toegang tot het klembord.","Selectie kopiëren","kopiëren","Border radius","Toon alle","Toepassen","Vul dit veld in","Voer een webadres in","Standaard","Cirkel","Punt","Kwadraat","Zoeken","Vorige Zoeken","Volgende Zoeken","De geplakte tekst is afkomstig van een Microsoft Word/Excel document. Wil je de opmaak behouden of opschonen?","Word-tekst gedetecteerd","Opschonen","Voeg de klassenaam in","Druk op Alt voor aangepaste grootte"]},97834(t){t.exports.default=["Napisz coś","O Jodit","Edytor Jodit","Instrukcja Jodit","zawiera szczegółowe informacje dotyczące użytkowania.","Odwiedź naszą stronę, aby uzyskać więcej informacji na temat licencji:","Zakup pełnej wersji","Copyright © XDSoft.net - Chupurnov Valeriy. Wszystkie prawa zastrzeżone.","Kotwica","Otwórz w nowej zakładce","Otwórz edytor w pełnym rozmiarze","Wyczyść formatowanie","Kolor wypełnienia lub ustaw kolor tekstu","Ponów","Cofnij","Pogrubienie","Kursywa","Wstaw listę wypunktowaną","Wstaw listę numeryczną","Wyśrodkuj","Wyjustuj","Wyrównaj do lewej","Wyrównaj do prawej","Wstaw linię poziomą","Wstaw grafikę","Wstaw plik","Wstaw film Youtube/vimeo","Wstaw link","Rozmiar tekstu","Krój czcionki","Wstaw formatowanie","Normalne","Nagłówek 1","Nagłówek 2","Nagłówek 3","Nagłówek 4","Cytat","Kod","Wstaw","Wstaw tabelę","Zmniejsz wcięcie","Zwiększ wcięcie","Wybierz znak specjalny","Wstaw znak specjalny","Malarz formatów","Zmień tryb","Marginesy","Górny","Prawy","Dolny","Levy","Style CSS","Klasy CSS","Wyrównanie","Prawa","środek","Lewa","brak","Źródło","Tytuł","Tekst alternatywny","Link","Otwórz w nowej zakładce","Grafika","Plik","Zaawansowane","Właściwości grafiki","Anuluj","OK","Przeglądarka plików","Błąd ładowania listy plików","Błąd ładowania folderów","Czy jesteś pewien?","Wprowadź nazwę folderu","Utwórz folder","wprowadź nazwę","Upuść plik graficzny","Upuść plik","lub kliknij tu","Tekst alternatywny","Wczytaj","Przeglądaj","Tło","Treść","Góra","Środek","Dół","Wstaw kolumnę przed","Wstaw kolumnę po","Wstaw wiersz przed","Wstaw wiersz po","Usuń tabelę","Usuń wiersz","Usuń kolumnę","Wyczyść komórkę","Znaki: %d","Słowa: %d","Przekreślenie","Podkreślenie","indeks górny","index dolny","Wytnij zaznaczenie","Wybierz wszystko","Przerwa","Szukaj","Zamień na","Wymienić","Wklej","Wybierz zawartość do wklejenia","HTML","pogrubienie","kursywa","pędzel","link","cofnij","ponów","tabela","grafika","wyczyść","akapit","rozmiar czcionki","wideo","czcionka","O programie","drukuj","podkreślenie","przekreślenie","wcięcie","wycięcie","pełen rozmiar","przytnij","linia pozioma","lista","lista numerowana","wytnij","zaznacz wszystko","Wstaw kod","otwórz link","edytuj link","Atrybut no-follow","Usuń link","Aktualizuj","edytuj","szukaj","URL","Edytuj","Wyrównywanie w poziomie","Filtruj","Sortuj wg zmiany","Sortuj wg nazwy","Sortuj wg rozmiaru","Dodaj folder","wyczyść","zapisz","zapisz jako","Zmień rozmiar","Przytnij","Szerokość","Wysokość","Zachowaj proporcje","Tak","Nie","Usuń","Wybierz","Wybierz: %s","Wyrównywanie w pionie","Podziel","Scal","Dodaj kolumnę","Dodaj wiersz",null,"Usuń","Podziel w pionie","Podziel w poziomie","Obramowanie","Twój kod wygląda jak HTML. Zachować HTML?","Wkleić jako HTML?","Oryginalny tekst","Wstaw jako tekst","Wstaw tylko treść","Możesz edytować tylko swoje grafiki. Czy chcesz pobrać tą grafikę?","Grafika została pomyślnienie dodana na serwer","Paleta","Brak plików.","zmień nazwę","Wprowadź nową nazwę","podgląd","pobierz","Wklej ze schowka","Twoja przeglądarka nie obsługuje schowka","Kopiuj zaznaczenie","kopiuj","Zaokrąglenie krawędzi","Pokaż wszystkie","Zastosuj","Proszę wypełnić to pole","Proszę, wpisz adres sieci web","Domyślnie","Koło","Punkt","Kwadrat","Znaleźć","Znaleźć Poprzednie","Znajdź Dalej","Wklejany tekst pochodzi z dokumentu Microsoft Word/Excel. Chcesz zachować ten format czy wyczyścić go? ","Wykryto tekst w formacie Word","Wyczyść","Wstaw nazwę zajęć","Naciśnij Alt, aby zmienić rozmiar"]},86433(t){t.exports.default=["Escreva algo...","Sobre o Jodit","Editor Jodit","Guia de usuário Jodit","contém ajuda detalhada para o uso.","Para informação sobre a licença, por favor visite nosso site:","Compre a versão completa","Copyright © XDSoft.net - Chupurnov Valeriy. Todos os direitos reservados.","Link","Abrir em nova aba","Abrir editor em tela cheia","Limpar formatação","Cor de preenchimento ou cor do texto","Refazer","Desfazer","Negrito","Itálico","Inserir lista não ordenada","Inserir lista ordenada","Centralizar","Justificar","Alinhar à Esquerda","Alinhar à Direita","Inserir linha horizontal","Inserir imagem","Inserir arquivo","Inserir vídeo do Youtube/vimeo","Inserir link","Tamanho da letra","Fonte","Inserir bloco","Normal","Cabeçalho 1","Cabeçalho 2","Cabeçalho 3","Cabeçalho 4","Citação","Código","Inserir","Inserir tabela","Diminuir recuo","Aumentar recuo","Selecionar caractere especial","Inserir caractere especial","Copiar formato","Mudar modo","Margens","cima","direta","baixo","esquerda","Estilos CSS","Classes CSS","Alinhamento","Direita","Centro","Esquerda","--Não Estabelecido--","Fonte","Título","Texto Alternativo","Link","Abrir link em nova aba","Imagem","Arquivo","Avançado","Propriedades da imagem","Cancelar","Ok","Procurar arquivo","Erro ao carregar a lista","Erro ao carregar as pastas","Você tem certeza?","Escreva o nome da pasta","Criar pasta","Escreva seu nome","Soltar imagem","Soltar arquivo","ou clique","Texto alternativo","Upload","Explorar","Fundo","Texto","Cima","Meio","Baixo","Inserir coluna antes","Inserir coluna depois","Inserir linha acima","Inserir linha abaixo","Excluir tabela","Excluir linha","Excluir coluna","Limpar célula","Caracteres: %d","Palavras: %d","Tachado","Sublinhar","sobrescrito","subscrito","Cortar seleção","Selecionar tudo","Pausa","Procurar por","Substituir com","Substituir","Colar","Escolher conteúdo para colar","HTML","negrito","itálico","pincel","link","desfazer","refazer","tabela","imagem","apagar","parágrafo","tamanho da letra","vídeo","fonte","Sobre de","Imprimir","sublinhar","tachado","recuar","diminuir recuo","Tamanho completo","diminuir","linha horizontal","lista não ordenada","lista ordenada","Cortar","Selecionar tudo","Incluir código","Abrir link","Editar link","Não siga","Remover link","Atualizar","Editar","Visualizar","URL","Editar","Alinhamento horizontal","filtrar","Ordenar por modificação","Ordenar por nome","Ordenar por tamanho","Adicionar pasta","Resetar","Salvar","Salvar como...","Redimensionar","Recortar","Largura","Altura","Manter a proporção","Sim","Não","Remover","Selecionar","Selecionar: %s","Alinhamento vertical","Dividir","Mesclar","Adicionar coluna","Adicionar linha",null,"Excluir","Dividir vertical","Dividir horizontal","Borda","Seu código é similar ao HTML. Manter como HTML?","Colar como HTML?","Manter","Inserir como Texto","Inserir somente o Texto","Você só pode editar suas próprias imagens. Baixar essa imagem pro servidor?","A imagem foi enviada com sucesso para o servidor!","Palette","Não há arquivos nesse diretório.","Húngara","Digite um novo nome","preview","Baixar","Colar da área de transferência","O seu navegador não oferece suporte a acesso direto para a área de transferência.","Selecção de cópia","cópia","Border radius","Mostrar todos os","Aplicar","Por favor, preencha este campo","Por favor introduza um endereço web","Padrão","Círculo","Ponto","Quadro","Encontrar","Encontrar Anteriores","Localizar Próxima","O conteúdo colado veio de um documento Microsoft Word/Excel. Você deseja manter o formato ou limpa-lo?","Colado do Word Detectado","Limpar","Insira o nome da classe","Pressione Alt para redimensionamento personalizado"]},28359(t){t.exports.default=["Напишите что-либо","О Jodit","Редактор Jodit","Jodit Руководство пользователя","содержит детальную информацию по использованию","Для получения сведений о лицензии , пожалуйста, перейдите на наш сайт:","Купить полную версию","Авторские права © XDSoft.net - Чупурнов Валерий. Все права защищены.","Анкор","Открывать ссылку в новой вкладке","Открыть редактор в полном размере","Очистить форматирование","Цвет заливки или цвет текста","Повтор","Отмена","Жирный","Наклонный","Вставка маркированного списка","Вставить нумерованный список","Выровнять по центру","Выровнять по ширине","Выровнять по левому краю","Выровнять по правому краю","Вставить горизонтальную линию","Вставить изображение","Вставить файл","Вставьте видео","Вставить ссылку","Размер шрифта","Шрифт","Вставить блочный элемент","Нормальный текст","Заголовок 1","Заголовок 2","Заголовок 3","Заголовок 4","Цитата","Код","Вставить","Вставить таблицу","Уменьшить отступ","Увеличить отступ","Выберите специальный символ","Вставить специальный символ","Формат краски","Источник","Отступы","сверху","справа","снизу","слева","Стили","Классы","Выравнивание","По правому краю","По центру","По левому краю","--не устанавливать--","src","Заголовок","Альтернативный текст (alt)","Ссылка","Открывать ссылку в новом окне",null,"Файл","Расширенные","Свойства изображения","Отмена","Ок","Браузер файлов","Ошибка при загрузке списка изображений","Ошибка при загрузке списка директорий","Вы уверены?","Введите название директории","Создать директорию","введите название","Перетащите сюда изображение","Перетащите сюда файл","или нажмите","Альтернативный текст","Загрузка","Сервер","Фон","Текст"," К верху","По середине","К низу","Вставить столбец до","Вставить столбец после","Вставить ряд выше","Вставить ряд ниже","Удалить таблицу","Удалять ряд","Удалить столбец","Очистить ячейку","Символов: %d","Слов: %d","Перечеркнуть","Подчеркивание","верхний индекс","индекс","Вырезать","Выделить все","Разделитель","Найти","Заменить на","Заменить","Вставить","Выбрать контент для вставки","HTML","жирный","курсив","заливка","ссылка","отменить","повторить","таблица","Изображение","очистить","параграф","размер шрифта","видео","шрифт","о редакторе","печать","подчеркнутый","перечеркнутый","отступ","выступ","во весь экран","обычный размер","линия","Список","Нумерованный список","Вырезать","Выделить все","Код","Открыть ссылку","Редактировать ссылку","Атрибут nofollow","Убрать ссылку","Обновить","Редактировать","Просмотр","URL","Редактировать","Горизонтальное выравнивание","Фильтр","По изменению","По имени","По размеру","Добавить папку","Восстановить","Сохранить","Сохранить как","Изменить размер","Обрезать размер","Ширина","Высота","Сохранять пропорции","Да","Нет","Удалить","Выделить","Выделить: %s","Вертикальное выравнивание","Разделить","Объединить в одну","Добавить столбец","Добавить строку","Лицензия: %s","Удалить","Разделить по вертикали","Разделить по горизонтали","Рамка","Ваш текст, который вы пытаетесь вставить похож на HTML. Вставить его как HTML?","Вставить как HTML?","Сохранить оригинал","Вставить как текст","Вставить только текст","Вы можете редактировать только свои собственные изображения. Загрузить это изображение на ваш сервер?","Изображение успешно загружено на сервер!","палитра","В данном каталоге нет файлов","Переименовать","Введите новое имя","Предпросмотр","Скачать","Вставить из буфера обмена","Ваш браузер не поддерживает прямой доступ к буферу обмена.","Скопировать выделенное","копия","Радиус границы","Показать все","Применить","Пожалуйста, заполните это поле","Пожалуйста, введите веб-адрес","По умолчанию","Круг","Точка","Квадрат","Найти","Найти Предыдущие","Найти Далее","Контент который вы вставляете поступает из документа Microsoft Word / Excel. Вы хотите сохранить формат или очистить его?","Возможно это фрагмент Word или Excel","Почистить","Вставить название класса","Нажмите Alt для изменения пользовательского размера"]},68368(t){t.exports.default=["Bir şeyler yaz","Jodit Hakkında","Jodit Editor","Jodit Kullanım Kılavuzu","kullanım için detaylı bilgiler içerir","Lisans hakkında bilgi için lütfen web sitemize gidin:","Tam versiyonunu satın al","Copyright © XDSoft.net - Chupurnov Valeriy. Tüm hakları saklıdır.","Bağlantı","Yeni sekmede aç","Editörü tam ekranda aç","Stili temizle","Renk doldur veya yazı rengi seç","Yinele","Geri Al","Kalın","İtalik","Sırasız Liste Ekle","Sıralı Liste Ekle","Ortala","Kenarlara Yasla","Sola Yasla","Sağa Yasla","Yatay Çizgi Ekle","Resim Ekle","Dosya Ekle","Youtube/Vimeo Videosu Ekle","Bağlantı Ekle","Font Boyutu","Font Ailesi","Blok Ekle","Normal","Başlık 1","Başlık 2","Başlık 3","Başlık 4","Alıntı","Kod","Ekle","Tablo Ekle","Girintiyi Azalt","Girintiyi Arttır","Özel Karakter Seç","Özel Karakter Ekle","Resim Biçimi","Mod Değiştir","Boşluklar","Üst","Sağ","Alt","Sol","CSS Stilleri","CSS Sınıfları","Hizalama","Sağ","Ortalı","Sol","Belirsiz","Kaynak","Başlık","Alternatif Yazı","Link","Bağlantıyı yeni sekmede aç","Resim","Dosya","Gelişmiş","Resim özellikleri","İptal","Tamam","Dosya Listeleyici","Liste yüklenirken hata oluştu","Klasörler yüklenirken hata oluştur","Emin misiniz?","Dizin yolu giriniz","Dizin oluştur","İsim yaz","Resim bırak","Dosya bırak","veya tıkla","Alternatif yazı","Yükle","Gözat","Arka plan","Yazı","Üst","Orta","Aşağı","Öncesine kolon ekle","Sonrasına kolon ekle","Üstüne satır ekle","Altına satır ekle","Tabloyu sil","Satırı sil","Kolonu sil","Hücreyi temizle","Harfler: %d","Kelimeler: %d","Üstü çizili","Alt çizgi","Üst yazı","Alt yazı","Seçilimi kes","Tümünü seç","Satır sonu","Ara","Şununla değiştir","Değiştir","Yapıştır","Yapıştırılacak içerik seç","Kaynak","Kalın","italik","Fırça","Bağlantı","Geri al","Yinele","Tablo","Resim","Silgi","Paragraf","Font boyutu","Video","Font","Hakkında","Yazdır","Alt çizgi","Üstü çizili","Girinti","Çıkıntı","Tam ekran","Küçült","Ayraç","Sırasız liste","Sıralı liste","Kes","Tümünü seç","Kod ekle","Bağlantıyı aç","Bağlantıyı düzenle","Nofollow özelliği","Bağlantıyı kaldır","Güncelle","Düzenlemek için","Yorumu","URL","Düzenle","Yatay hizala","Filtre","Değişime göre sırala","İsme göre sırala","Boyuta göre sırala","Klasör ekle","Sıfırla","Kaydet","Farklı kaydet","Boyutlandır","Kırp","Genişlik","Yükseklik","En boy oranını koru","Evet","Hayır","Sil","Seç","Seç: %s","Dikey hizala","Ayır","Birleştir","Kolon ekle","Satır ekle",null,"Sil","Dikey ayır","Yatay ayır","Kenarlık","Kodunuz HTML koduna benziyor. HTML olarak devam etmek ister misiniz?","HTML olarak yapıştır","Sakla","Yazı olarak ekle","Sadece yazıyı ekle","Sadece kendi resimlerinizi düzenleyebilirsiniz. Bu görseli kendi hostunuza indirmek ister misiniz?","Görsel başarıyla hostunuza yüklendi","Palet","Bu dizinde dosya yok","Yeniden isimlendir","Yeni isim girin","Ön izleme","İndir","Panodan yapıştır ","Tarayıcınız panoya doğrudan erişimi desteklemiyor.","Seçimi kopyala","Kopyala","Sınır yarıçapı","Tümünü Göster","Uygula","Lütfen bu alanı doldurun","Lütfen bir web adresi girin","Varsayılan","Daire","Nokta","Kare","Bul","Öncekini Bul","Sonrakini Bul","Der Inhalt, den Sie einfügen, stammt aus einem Microsoft Word / Excel-Dokument. Möchten Sie das Format erhalten oder löschen?","Word biçiminde yapıştırma algılandı","Temizle","Sınıf adı girin","Özel yeniden boyutlandırma için Alt tuşuna basın"]},25182(t){t.exports.default=["输入一些内容","关于Jodit","Jodit Editor","开发者指南","使用帮助","有关许可证的信息,请访问我们的网站:","购买完整版本","Copyright © XDSoft.net - Chupurnov Valeriy. 版权所有","Anchor","在新窗口打开","全屏编辑","清除样式","颜色","重做","撤销","粗体","斜体","符号列表","编号","居中","对齐文本","左对齐","右对齐","分割线","图片","文件","视频","链接","字号","字体","格式块","默认","标题1","标题2","标题3","标题4","引用","代码","插入","表格","减少缩进","增加缩进","选择特殊符号","特殊符号","格式复制","改变模式","外边距(Margins)","top","right","bottom","left","样式","Classes","对齐方式","居右","居中","居左","无","Src","Title","Alternative","Link","在新窗口打开链接","图片","file","高级","图片属性","取消","确定","文件管理","加载list错误","加载folders错误","你确定吗?","输入路径","创建路径","type name","拖动图片到此","拖动文件到此","或点击","Alternative text","上传","浏览","背景色","文字","顶部","中间","底部","在之前插入列","在之后插入列","在之前插入行","在之后插入行","删除表格","删除行","删除列","清除内容","字符数: %d","单词数: %d","删除线","下划线","上标","下标","剪切","全选","Break","查找","替换为","替换","粘贴","选择内容并粘贴","源码","粗体","斜体","颜色","链接","撤销","重做","表格","图片","橡皮擦","段落","字号","视频","字体","关于","打印","下划线","上出现","增加缩进","减少缩进","全屏","收缩","分割线","无序列表","顺序列表","剪切","全选","嵌入代码","打开链接","编辑链接","No follow","取消链接","更新","铅笔","预览","URL","编辑","水平对齐","筛选","修改时间排序","名称排序","大小排序","新建文件夹","重置","保存","保存为","调整大小","剪切","宽","高","保持长宽比","是","不","移除","选择","选择: %s","垂直对齐","拆分","合并","添加列","添加行",null,"删除","垂直拆分","水平拆分","边框","你粘贴的文本是一段html代码,是否保留源格式","html粘贴","保留源格式","把html代码视为普通文本","只保留文本","你只能编辑你自己的图片。Download this image on the host?","图片上传成功","调色板","此目录中沒有文件。","重命名","输入新名称","预览","下载","粘贴从剪贴板","你浏览器不支持直接访问的剪贴板。","复制选中内容","复制","边界半径","显示所有","应用","请填写这个字段","请输入一个网址","默认","圆圈","点","方形","搜索","查找上一个","查找下一个","正在粘贴 Word/Excel 的文本,是否保留源格式?","文本粘贴","匹配目标格式","插入班级名称","按Alt自定义调整大小"]},44906(t){t.exports.default=["輸入一些內容","關於Jodit","Jodit Editor","開發者指南","使用幫助","相關授權條款資訊,請造訪我們的網站:","購買完整版本","Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.","錨點","在新分頁開啟","全螢幕編輯","清除樣式","顏色","取消復原","復原","粗體","斜體","項目符號清單","編號清單","置中","文字對齊","靠左","靠右","分割線","圖片","檔案","插入 youtube/vimeo 影片","插入連結","文字大小","字型","格式化區塊","內文","標題1","標題2","標題3","標題4","引文","程式碼","插入","表格","減少縮排","增加縮排","選擇特殊符號","特殊符號","格式複製","檢視原始碼","邊距","上","右","下","左","樣式","Classes","對齊方式","靠右","置中","靠左","無","Src","Title","替代","Link","在新分頁開啟連結","圖片","檔案","進階","圖片屬性","取消","確定","檔案瀏覽","清單載入錯誤","資料夾載入錯誤","您確定嗎?","輸入路徑","創建路徑","type name","拖曳圖片至此","拖曳檔案至此","或點擊","替代文字","上傳","瀏覽","背景色","文字","頂部","中間","底部","插入左方欄","插入右方欄","插入上方列","插入下方列","刪除表格","刪除整列","刪除整欄","清除內容","字元數: %d","單字數: %d","刪除線","底線","上標","下標","剪下","全選","斷行","尋找","取代為","取代","貼上","選擇內容並貼上","原始碼","粗體","斜體","顏色","連結","復原","取消復原","表格","圖片","橡皮擦","段落","文字大小","影片","字型","關於","列印","底線","刪除線","增加縮排","減少縮排","全螢幕","縮減","分隔線","項目符號清單","編號清單","剪下","全選","嵌入程式碼","打開連結","編輯連結","No follow","取消連結","更新","鉛筆","查看","URL",null,"水平對齊","篩選","修改時間排序","名稱排序","大小排序","新增資料夾","重設","儲存","另存為...","調整大小","裁切","寬","高","維持長寬比","是","否","移除","選擇","選擇: %s","垂直對齊","分割","合併","新增欄","新增列",null,"刪除","垂直分割","水平分割","邊框","您的程式碼與 HTML 類似,是否貼上 HTML 格式?","貼上 HTML","保留原始格式","以純文字貼上","僅貼上內文","您只能編輯您自己的圖片。是否下載此圖片?","圖片上傳成功","調色盤","沒有檔案","重新命名","輸入新名稱","預覽","下載","從剪貼簿貼上","瀏覽器無法存取剪貼簿。","複製已選取項目","複製","邊框圓角","顯示全部","應用","請輸入此欄位","請輸入網址","預設","圓圈","點","方形","尋找","尋找上一個","尋找下一個","正在貼上 Word/Excel 文件的內容,是否保留原始格式?","貼上 Word 格式","清除格式","插入 class 名稱","按住 Alt 以調整自訂大小"]},928(t){t.exports=' '},31230(t){t.exports=' '},54522(t){t.exports=' '},17995(t){t.exports=' '},86634(t){t.exports=' '},91115(t){t.exports=' '},1916(t){t.exports=' '},52450(t){t.exports=' '},41111(t){t.exports=' '},49972(t){t.exports=' '},45062(t){t.exports=' '},18605(t){t.exports=' '},83389(t){t.exports=' '},93267(t){t.exports=' '},71948(t){t.exports=' '},51457(t){t.exports=' '},23602(t){t.exports=' '},86899(t){t.exports=' '},95320(t){t.exports=' '},45674(t){t.exports=' '},3843(t){t.exports=' '},48842(t){t.exports=' '},25501(t){t.exports=' '},29348(t){t.exports=''},24772(t){t.exports=' '},66547(t){t.exports=' '},89097(t){t.exports=' '},64831(t){t.exports=' '},67176(t){t.exports=' '},14017(t){t.exports=' '},38681(t){t.exports=' '},64637(t){t.exports=' '},94190(t){t.exports=' '},51957(t){t.exports=' '},71940(t){t.exports=' '},48007(t){t.exports=' '},43218(t){t.exports=' '},80515(t){t.exports=' '},223(t){t.exports=' '},95032(t){t.exports=' '},73533(t){t.exports=' '},40037(t){t.exports=' '},83207(t){t.exports=' '},59827(t){t.exports=' '},34045(t){t.exports=' '},39199(t){t.exports=' '},21917(t){t.exports=' '},9103(t){t.exports=' '},49989(t){t.exports=' '},81875(t){t.exports=' '},67447(t){t.exports=' '},36339(t){t.exports=' '},88497(t){t.exports=' '},91882(t){t.exports=' '},14305(t){t.exports=' '},58446(t){t.exports=' '},39858(t){t.exports=' '},70881(t){t.exports=' '},60636(t){t.exports=' '},32013(t){t.exports=' '},45512(t){t.exports=' '},80347(t){t.exports=' '},95134(t){t.exports=' '},70697(t){t.exports=' '},49983(t){t.exports=' '},98964(t){t.exports=' '},8136(t){t.exports=' '},94806(t){t.exports=''},31365(t){t.exports=' '},44636(t){t.exports=''},36327(t){t.exports=''},53328(t){t.exports=' '},98711(t){t.exports=' '},53808(t){t.exports=' '},20784(t){t.exports=' '},70999(t){t.exports=' '},45244(t){t.exports=' '},99876(t){t.exports=' '},14006(t){t.exports=' '},28712(t){"use strict";t.exports={assert(){}}},31635(t,e,s){"use strict";function i(t,e,s,i){var r,o=arguments.length,n=3>o?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,s,i);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(n=(3>o?r(n):o>3?r(e,s,n):r(e,s))||n);return o>3&&n&&Object.defineProperty(e,s,n),n}s.d(e,{Cg(){return i}}),"function"==typeof SuppressedError&&SuppressedError}},s={};function i(t){var r=s[t];if(void 0!==r)return r.exports;var o=s[t]={exports:{}};return e[t](o,o.exports,i),o.exports}i.m=e,t=[],i.O=(e,s,r,o)=>{if(!s){var n=1/0;for(u=0;t.length>u;u++){s=t[u][0],r=t[u][1],o=t[u][2];for(var a=!0,l=0;s.length>l;l++)(!1&o||n>=o)&&Object.keys(i.O).every((t=>i.O[t](s[l])))?s.splice(l--,1):(a=!1,n>o&&(n=o));if(a){t.splice(u--,1);var c=r();void 0!==c&&(e=c)}}return e}o=o||0;for(var u=t.length;u>0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[s,r,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t={521:0};i.O.j=e=>0===t[e];var e=(e,s)=>{var r,o,n=s[0],a=s[1],l=s[2],c=0;if(n.some((e=>0!==t[e]))){for(r in a)i.o(a,r)&&(i.m[r]=a[r]);if(l)var u=l(i)}for(e&&e(s);n.length>c;c++)i.o(t,o=n[c])&&t[o]&&t[o][0](),t[o]=0;return i.O(u)},s=self.webpackChunkjodit=self.webpackChunkjodit||[];s.forEach(e.bind(null,0)),s.push=e.bind(null,s.push.bind(s))})();var r={};return(()=>{"use strict";i.r(r),i.d(r,{CommitMode(){return u},Jodit(){return a.x}});var t=i(9823),e=(i(88222),i(17352)),s=i(22664),o=i(37435),n=i(79721),a=i(46173),l=i(74470);Object.keys(e).forEach((t=>{a.x[t]=e[t]}));const c=t=>"__esModule"!==t;Object.keys(n).filter(c).forEach((t=>{o.Icon.set(t.replace("_","-"),n[t])})),Object.keys(o).filter(c).forEach((e=>{const s=o[e],i=(0,t.Tn)(s.prototype?.className)?s.prototype.className():e;(0,t.Kg)(i)&&(a.x.modules[i]=s)})),Object.keys(s).filter(c).forEach((t=>{a.x.decorators[t]=s[t]})),["Confirm","Alert","Prompt"].forEach((t=>{a.x[t]=o[t]})),Object.keys(l.A).filter(c).forEach((t=>{a.x.lang[t]=l.A[t]}));class u{}})(),i.O(r)}()})); diff --git a/Wino.Mail/JS/Quill/reader.html b/Wino.Mail/JS/reader.html similarity index 63% rename from Wino.Mail/JS/Quill/reader.html rename to Wino.Mail/JS/reader.html index f5e54fe9..e2a43ac6 100644 --- a/Wino.Mail/JS/Quill/reader.html +++ b/Wino.Mail/JS/reader.html @@ -1,8 +1,25 @@ - - - + + + + + + + - - -
-
- +
diff --git a/Wino.Mail/Styles/FontIcons.xaml b/Wino.Mail/Styles/FontIcons.xaml index b749b31a..002f136d 100644 --- a/Wino.Mail/Styles/FontIcons.xaml +++ b/Wino.Mail/Styles/FontIcons.xaml @@ -22,6 +22,7 @@ M32,192C23.3333,192 15.8333,188.833 9.5,182.5C3.16667,176.167 0,168.667 0,160C0,151.333 3.16667,143.833 9.5,137.5C15.8333,131.167 23.3333,128 32,128L992,128C1000.67,128 1008.17,131.167 1014.5,137.5C1020.83,143.833 1024,151.333 1024,160C1024,168.667 1020.83,176.167 1014.5,182.5C1008.17,188.833 1000.67,192 992,192ZM32,512C23.3333,512 15.8333,508.833 9.5,502.5C3.16667,496.167 0,488.667 0,480C0,471.333 3.16667,463.833 9.5,457.5C15.8333,451.167 23.3333,448 32,448L992,448C1000.67,448 1008.17,451.167 1014.5,457.5C1020.83,463.833 1024,471.333 1024,480C1024,488.667 1020.83,496.167 1014.5,502.5C1008.17,508.833 1000.67,512 992,512ZM32,832C23.3333,832 15.8333,828.833 9.5,822.5C3.16667,816.167 0,808.667 0,800C0,791.333 3.16667,783.833 9.5,777.5C15.8333,771.167 23.3333,768 32,768L992,768C1000.67,768 1008.17,771.167 1014.5,777.5C1020.83,783.833 1024,791.333 1024,800C1024,808.667 1020.83,816.167 1014.5,822.5C1008.17,828.833 1000.67,832 992,832Z F1 M 0 10 C 0 9.082031 0.118815 8.196615 0.356445 7.34375 C 0.594076 6.490886 0.93099 5.694987 1.367188 4.956055 C 1.803385 4.217123 2.325846 3.543295 2.93457 2.93457 C 3.543294 2.325848 4.217122 1.803387 4.956055 1.367188 C 5.694986 0.93099 6.490885 0.594076 7.34375 0.356445 C 8.196614 0.118816 9.082031 0 10 0 C 10.917969 0 11.803385 0.118816 12.65625 0.356445 C 13.509114 0.594076 14.305013 0.93099 15.043945 1.367188 C 15.782877 1.803387 16.456705 2.325848 17.06543 2.93457 C 17.674152 3.543295 18.196613 4.217123 18.632812 4.956055 C 19.06901 5.694987 19.405924 6.490886 19.643555 7.34375 C 19.881184 8.196615 20 9.082031 20 10 C 20 10.917969 19.881184 11.803386 19.643555 12.65625 C 19.405924 13.509115 19.06901 14.305014 18.632812 15.043945 C 18.196613 15.782878 17.674152 16.456705 17.06543 17.06543 C 16.456705 17.674154 15.782877 18.196615 15.043945 18.632812 C 14.305013 19.06901 13.509114 19.405924 12.65625 19.643555 C 11.803385 19.881186 10.917969 20 10 20 C 9.082031 20 8.196614 19.881186 7.34375 19.643555 C 6.490885 19.405924 5.694986 19.06901 4.956055 18.632812 C 4.217122 18.196615 3.543294 17.674154 2.93457 17.06543 C 2.325846 16.456705 1.803385 15.782878 1.367188 15.043945 C 0.93099 14.305014 0.594076 13.509115 0.356445 12.65625 C 0.118815 11.803386 0 10.917969 0 10 Z M 18.75 10 C 18.75 9.199219 18.645832 8.426107 18.4375 7.680664 C 18.229166 6.935222 17.93457 6.238607 17.553711 5.59082 C 17.172852 4.943035 16.715494 4.352215 16.181641 3.818359 C 15.647785 3.284506 15.056965 2.827148 14.40918 2.446289 C 13.761393 2.06543 13.064778 1.770834 12.319336 1.5625 C 11.573893 1.354168 10.800781 1.25 10 1.25 C 9.192708 1.25 8.416341 1.354168 7.670898 1.5625 C 6.925456 1.770834 6.228841 2.06543 5.581055 2.446289 C 4.933268 2.827148 4.344075 3.282879 3.813477 3.813477 C 3.282877 4.344076 2.827148 4.933269 2.446289 5.581055 C 2.06543 6.228842 1.770833 6.925457 1.5625 7.670898 C 1.354167 8.416342 1.25 9.192709 1.25 10 C 1.25 10.807292 1.354167 11.583659 1.5625 12.329102 C 1.770833 13.074545 2.06543 13.771159 2.446289 14.418945 C 2.827148 15.066732 3.282877 15.655925 3.813477 16.186523 C 4.344075 16.717123 4.933268 17.172852 5.581055 17.553711 C 6.228841 17.93457 6.925456 18.229166 7.670898 18.4375 C 8.416341 18.645834 9.192708 18.75 10 18.75 C 10.807291 18.75 11.583658 18.645834 12.329102 18.4375 C 13.074543 18.229166 13.771158 17.93457 14.418945 17.553711 C 15.066731 17.172852 15.655924 16.717123 16.186523 16.186523 C 16.717121 15.655925 17.172852 15.066732 17.553711 14.418945 C 17.93457 13.771159 18.229166 13.074545 18.4375 12.329102 C 18.645832 11.583659 18.75 10.807292 18.75 10 Z M 5.625 8.125 C 5.625 7.949219 5.657552 7.786459 5.722656 7.636719 C 5.78776 7.486979 5.877278 7.355144 5.991211 7.241211 C 6.105143 7.127279 6.236979 7.037761 6.386719 6.972656 C 6.536458 6.907553 6.699219 6.875001 6.875 6.875 C 7.044271 6.875001 7.205403 6.907553 7.358398 6.972656 C 7.511393 7.037761 7.644856 7.127279 7.758789 7.241211 C 7.872721 7.355144 7.962239 7.488607 8.027344 7.641602 C 8.092447 7.794598 8.125 7.95573 8.125 8.125 C 8.125 8.300781 8.092447 8.463542 8.027344 8.613281 C 7.962239 8.763021 7.872721 8.894857 7.758789 9.008789 C 7.644856 9.122722 7.513021 9.21224 7.363281 9.277344 C 7.213542 9.342448 7.050781 9.375 6.875 9.375 C 6.699219 9.375 6.534831 9.342448 6.381836 9.277344 C 6.228841 9.21224 6.097005 9.12435 5.986328 9.013672 C 5.875651 8.902995 5.78776 8.771159 5.722656 8.618164 C 5.657552 8.46517 5.625 8.300781 5.625 8.125 Z M 11.875 8.125 C 11.875 7.949219 11.907552 7.786459 11.972656 7.636719 C 12.03776 7.486979 12.127277 7.355144 12.241211 7.241211 C 12.355143 7.127279 12.486979 7.037761 12.636719 6.972656 C 12.786457 6.907553 12.949218 6.875001 13.125 6.875 C 13.294271 6.875001 13.455403 6.907553 13.608398 6.972656 C 13.761393 7.037761 13.894856 7.127279 14.008789 7.241211 C 14.122721 7.355144 14.212238 7.488607 14.277344 7.641602 C 14.342447 7.794598 14.375 7.95573 14.375 8.125 C 14.375 8.300781 14.342447 8.463542 14.277344 8.613281 C 14.212238 8.763021 14.122721 8.894857 14.008789 9.008789 C 13.894856 9.122722 13.763021 9.21224 13.613281 9.277344 C 13.463541 9.342448 13.30078 9.375 13.125 9.375 C 12.949218 9.375 12.78483 9.342448 12.631836 9.277344 C 12.478841 9.21224 12.347005 9.12435 12.236328 9.013672 C 12.12565 8.902995 12.03776 8.771159 11.972656 8.618164 C 11.907552 8.46517 11.875 8.300781 11.875 8.125 Z M 5.3125 13.4375 C 5.3125 13.268229 5.374349 13.121745 5.498047 12.998047 C 5.621745 12.87435 5.768229 12.8125 5.9375 12.8125 C 6.041666 12.8125 6.123046 12.827148 6.181641 12.856445 C 6.240234 12.885742 6.305338 12.932943 6.376953 12.998047 C 6.669922 13.245443 6.948242 13.463542 7.211914 13.652344 C 7.475586 13.841146 7.747396 14.000651 8.027344 14.130859 C 8.307291 14.261068 8.606771 14.360352 8.925781 14.428711 C 9.244791 14.49707 9.602864 14.53125 10 14.53125 C 10.572916 14.53125 11.101888 14.448242 11.586914 14.282227 C 12.071939 14.116211 12.542317 13.860678 12.998047 13.515625 C 13.108724 13.43099 13.212891 13.346354 13.310547 13.261719 C 13.408203 13.177084 13.512369 13.089193 13.623047 12.998047 C 13.694661 12.939453 13.759766 12.893881 13.818359 12.861328 C 13.876953 12.828776 13.958333 12.8125 14.0625 12.8125 C 14.231771 12.8125 14.378255 12.87435 14.501953 12.998047 C 14.62565 13.121745 14.6875 13.268229 14.6875 13.4375 C 14.6875 13.528646 14.671224 13.606771 14.638672 13.671875 C 14.606119 13.736979 14.560546 13.805339 14.501953 13.876953 C 14.397786 14.000651 14.269205 14.125977 14.116211 14.25293 C 13.963215 14.379883 13.800455 14.501953 13.62793 14.619141 C 13.455403 14.736328 13.282877 14.845378 13.110352 14.946289 C 12.937825 15.047201 12.779947 15.133464 12.636719 15.205078 C 12.226562 15.413412 11.798502 15.561523 11.352539 15.649414 C 10.906575 15.737305 10.455729 15.78125 10 15.78125 C 9.53125 15.78125 9.070638 15.73405 8.618164 15.639648 C 8.165689 15.545248 7.731119 15.390625 7.314453 15.175781 C 7.229817 15.136719 7.122396 15.079753 6.992188 15.004883 C 6.861979 14.930014 6.723632 14.84375 6.577148 14.746094 C 6.430664 14.648438 6.282552 14.544271 6.132812 14.433594 C 5.983073 14.322917 5.846354 14.210612 5.722656 14.09668 C 5.598958 13.982748 5.499674 13.868815 5.424805 13.754883 C 5.349935 13.640951 5.3125 13.535156 5.3125 13.4375 Z F1 M 5.625 15 C 4.85026 15 4.121094 14.851889 3.4375 14.555664 C 2.753906 14.25944 2.158203 13.857422 1.650391 13.349609 C 1.142578 12.841797 0.74056 12.246094 0.444336 11.5625 C 0.148112 10.878906 0 10.14974 0 9.375 C 0 8.600261 0.148112 7.871094 0.444336 7.1875 C 0.74056 6.503906 1.142578 5.908203 1.650391 5.400391 C 2.158203 4.892578 2.753906 4.490561 3.4375 4.194336 C 4.121094 3.898113 4.85026 3.75 5.625 3.75 L 8.125 3.75 C 8.294271 3.75 8.440755 3.81185 8.564453 3.935547 C 8.68815 4.059246 8.75 4.20573 8.75 4.375 C 8.75 4.544271 8.68815 4.690756 8.564453 4.814453 C 8.440755 4.938152 8.294271 5.000001 8.125 5 L 5.625 5 C 5.019531 5.000001 4.451497 5.113934 3.920898 5.341797 C 3.390299 5.569662 2.926432 5.882162 2.529297 6.279297 C 2.132161 6.676434 1.819661 7.140301 1.591797 7.670898 C 1.363932 8.201498 1.25 8.769531 1.25 9.375 C 1.25 9.980469 1.363932 10.548503 1.591797 11.079102 C 1.819661 11.609701 2.132161 12.073568 2.529297 12.470703 C 2.926432 12.867839 3.390299 13.180339 3.920898 13.408203 C 4.451497 13.636068 5.019531 13.75 5.625 13.75 L 8.125 13.75 C 8.294271 13.75 8.440755 13.81185 8.564453 13.935547 C 8.68815 14.059245 8.75 14.205729 8.75 14.375 C 8.75 14.544271 8.68815 14.690756 8.564453 14.814453 C 8.440755 14.938151 8.294271 15 8.125 15 Z M 11.875 15 C 11.705729 15 11.559244 14.938151 11.435547 14.814453 C 11.311849 14.690756 11.25 14.544271 11.25 14.375 C 11.25 14.205729 11.311849 14.059245 11.435547 13.935547 C 11.559244 13.81185 11.705729 13.75 11.875 13.75 L 14.375 13.75 C 14.980469 13.75 15.548502 13.636068 16.079102 13.408203 C 16.609699 13.180339 17.073566 12.867839 17.470703 12.470703 C 17.867838 12.073568 18.180338 11.609701 18.408203 11.079102 C 18.636066 10.548503 18.75 9.980469 18.75 9.375 C 18.75 8.769531 18.636066 8.201498 18.408203 7.670898 C 18.180338 7.140301 17.867838 6.676434 17.470703 6.279297 C 17.073566 5.882162 16.609699 5.569662 16.079102 5.341797 C 15.548502 5.113934 14.980469 5.000001 14.375 5 L 11.875 5 C 11.705729 5.000001 11.559244 4.938152 11.435547 4.814453 C 11.311849 4.690756 11.25 4.544271 11.25 4.375 C 11.25 4.20573 11.311849 4.059246 11.435547 3.935547 C 11.559244 3.81185 11.705729 3.75 11.875 3.75 L 14.375 3.75 C 15.149739 3.75 15.878906 3.898113 16.5625 4.194336 C 17.246094 4.490561 17.841797 4.892578 18.349609 5.400391 C 18.857422 5.908203 19.259439 6.503906 19.555664 7.1875 C 19.851887 7.871094 20 8.600261 20 9.375 C 20 10.14974 19.851887 10.878906 19.555664 11.5625 C 19.259439 12.246094 18.857422 12.841797 18.349609 13.349609 C 17.841797 13.857422 17.246094 14.25944 16.5625 14.555664 C 15.878906 14.851889 15.149739 15 14.375 15 Z M 5.556641 10 C 5.38737 10 5.252278 9.934896 5.151367 9.804688 C 5.050456 9.674479 5 9.53125 5 9.375 C 5 9.21875 5.050456 9.075521 5.151367 8.945312 C 5.252278 8.815104 5.38737 8.75 5.556641 8.75 L 14.443359 8.75 C 14.61263 8.75 14.747721 8.815104 14.848633 8.945312 C 14.949543 9.075521 14.999999 9.21875 15 9.375 C 14.999999 9.53125 14.949543 9.674479 14.848633 9.804688 C 14.747721 9.934896 14.61263 10 14.443359 10 Z + F1 M 10.625 4.501953 C 10.625 5.263673 10.460611 5.984701 10.131836 6.665039 C 9.80306 7.345378 9.342447 7.923178 8.75 8.398438 L 8.75 16.943359 C 8.75 17.366537 8.665364 17.763672 8.496094 18.134766 C 8.326822 18.505859 8.098958 18.829752 7.8125 19.106445 C 7.526041 19.383139 7.19401 19.601236 6.816406 19.760742 C 6.438802 19.920248 6.041667 20 5.625 20 C 5.188802 20 4.781901 19.918619 4.404297 19.755859 C 4.026692 19.5931 3.696289 19.370117 3.413086 19.086914 C 3.129883 18.803711 2.906901 18.473307 2.744141 18.095703 C 2.58138 17.7181 2.5 17.311197 2.5 16.875 L 2.5 8.398438 C 1.907552 7.923178 1.44694 7.345378 1.118164 6.665039 C 0.789388 5.984701 0.625 5.263673 0.625 4.501953 C 0.625 4.065756 0.681966 3.634441 0.795898 3.208008 C 0.909831 2.781576 1.074219 2.37793 1.289062 1.99707 C 1.503906 1.616211 1.76595 1.267904 2.075195 0.952148 C 2.38444 0.636395 2.734375 0.37435 3.125 0.166016 C 3.229167 0.113934 3.330078 0.073242 3.427734 0.043945 C 3.52539 0.014648 3.632812 0 3.75 0 C 3.925781 0 4.088542 0.032553 4.238281 0.097656 C 4.388021 0.162762 4.519856 0.252279 4.633789 0.366211 C 4.747721 0.480145 4.837239 0.61198 4.902344 0.761719 C 4.967448 0.911459 5 1.074219 5 1.25 L 5 3.876953 L 6.25 3.876953 L 6.25 1.25 C 6.25 1.074219 6.282552 0.911459 6.347656 0.761719 C 6.41276 0.61198 6.502278 0.480145 6.616211 0.366211 C 6.730143 0.252279 6.861979 0.162762 7.011719 0.097656 C 7.161458 0.032553 7.324218 0 7.5 0 C 7.617187 0 7.724609 0.014648 7.822266 0.043945 C 7.919921 0.073242 8.020833 0.113934 8.125 0.166016 C 8.509114 0.37435 8.855794 0.636395 9.165039 0.952148 C 9.474283 1.267904 9.736328 1.616211 9.951172 1.99707 C 10.166016 2.37793 10.332031 2.783203 10.449219 3.212891 C 10.566406 3.642578 10.625 4.072267 10.625 4.501953 Z M 17.5 10.625 L 17.5 16.943359 C 17.5 17.366537 17.415363 17.763672 17.246094 18.134766 C 17.076822 18.505859 16.848957 18.829752 16.5625 19.106445 C 16.276041 19.383139 15.94401 19.601236 15.566406 19.760742 C 15.188801 19.920248 14.791666 20 14.375 20 C 13.958333 20 13.561197 19.920248 13.183594 19.760742 C 12.805989 19.601236 12.473958 19.383139 12.1875 19.106445 C 11.901041 18.829752 11.673177 18.505859 11.503906 18.134766 C 11.334635 17.763672 11.25 17.366537 11.25 16.943359 L 11.25 10.625 C 11.25 10.481771 11.277669 10.369467 11.333008 10.288086 C 11.388346 10.206706 11.459961 10.144857 11.547852 10.102539 C 11.635742 10.060222 11.733398 10.032553 11.84082 10.019531 C 11.948242 10.006511 12.057291 10 12.167969 10 L 12.5 10 L 12.5 3.896484 C 12.460938 3.824871 12.407227 3.725586 12.338867 3.598633 C 12.270508 3.47168 12.202148 3.339844 12.133789 3.203125 C 12.06543 3.066406 12.005208 2.93457 11.953125 2.807617 C 11.901041 2.680664 11.875 2.578125 11.875 2.5 C 11.875 2.428387 11.904297 2.296551 11.962891 2.104492 C 12.021484 1.912436 12.086588 1.707357 12.158203 1.489258 C 12.229817 1.27116 12.301432 1.062826 12.373047 0.864258 C 12.44466 0.665691 12.496744 0.520834 12.529297 0.429688 C 12.568359 0.30599 12.644856 0.203451 12.758789 0.12207 C 12.872721 0.040691 12.994791 0 13.125 0 L 15.625 0 C 15.761719 0 15.883789 0.039062 15.991211 0.117188 C 16.098633 0.195312 16.175129 0.29948 16.220703 0.429688 C 16.246744 0.520834 16.297199 0.665691 16.37207 0.864258 C 16.446939 1.062826 16.520182 1.27116 16.591797 1.489258 C 16.66341 1.707357 16.728516 1.912436 16.787109 2.104492 C 16.845703 2.296551 16.875 2.428387 16.875 2.5 C 16.875 2.578125 16.848957 2.680664 16.796875 2.807617 C 16.744791 2.93457 16.68457 3.066406 16.616211 3.203125 C 16.547852 3.339844 16.479492 3.47168 16.411133 3.598633 C 16.342773 3.725586 16.289062 3.824871 16.25 3.896484 L 16.25 10 L 16.582031 10 C 16.692707 10 16.801758 10.006511 16.90918 10.019531 C 17.016602 10.032553 17.114258 10.060222 17.202148 10.102539 C 17.290039 10.144857 17.361652 10.206706 17.416992 10.288086 C 17.47233 10.369467 17.5 10.481771 17.5 10.625 Z M 7.5 7.744141 C 7.792968 7.581381 8.055013 7.382812 8.286133 7.148438 C 8.517252 6.914062 8.714192 6.656901 8.876953 6.376953 C 9.039713 6.097006 9.163411 5.797526 9.248047 5.478516 C 9.332682 5.159506 9.375 4.833985 9.375 4.501953 C 9.375 3.81185 9.210611 3.185223 8.881836 2.62207 C 8.55306 2.05892 8.092447 1.601562 7.5 1.25 L 7.5 5.126953 L 3.75 5.126953 L 3.75 1.25 C 3.157552 1.601562 2.69694 2.05892 2.368164 2.62207 C 2.039388 3.185223 1.875 3.81185 1.875 4.501953 C 1.875 4.833985 1.917318 5.159506 2.001953 5.478516 C 2.086588 5.797526 2.210286 6.097006 2.373047 6.376953 C 2.535807 6.656901 2.732747 6.914062 2.963867 7.148438 C 3.194987 7.382812 3.457031 7.581381 3.75 7.744141 L 3.75 16.875 C 3.75 17.128906 3.798828 17.369791 3.896484 17.597656 C 3.99414 17.825521 4.129231 18.025717 4.301758 18.198242 C 4.474284 18.370768 4.674479 18.505859 4.902344 18.603516 C 5.130208 18.701172 5.371094 18.75 5.625 18.75 C 5.878906 18.75 6.119791 18.701172 6.347656 18.603516 C 6.575521 18.505859 6.775716 18.370768 6.948242 18.198242 C 7.120768 18.025717 7.255859 17.825521 7.353516 17.597656 C 7.451171 17.369791 7.5 17.128906 7.5 16.875 Z M 13.75 10 L 15 10 L 15 3.75 C 14.999999 3.652344 15.022785 3.557943 15.068359 3.466797 L 15.576172 2.451172 L 15.175781 1.25 L 13.574219 1.25 L 13.173828 2.451172 L 13.681641 3.466797 C 13.727213 3.557943 13.75 3.652344 13.75 3.75 Z M 12.5 11.25 L 12.5 12.5 L 16.25 12.5 L 16.25 11.25 Z M 16.25 16.875 L 16.25 13.75 L 12.5 13.75 L 12.5 16.875 C 12.5 17.128906 12.548828 17.369791 12.646484 17.597656 C 12.744141 17.825521 12.879231 18.025717 13.051758 18.198242 C 13.224283 18.370768 13.424479 18.505859 13.652344 18.603516 C 13.880208 18.701172 14.121094 18.75 14.375 18.75 C 14.628906 18.75 14.869791 18.701172 15.097656 18.603516 C 15.32552 18.505859 15.525715 18.370768 15.698242 18.198242 C 15.870768 18.025717 16.005859 17.825521 16.103516 17.597656 C 16.201172 17.369791 16.25 17.128906 16.25 16.875 Z M1024,317.5L1024,507C1014.67,495.333 1004.67,484.167 994,473.5C983.333,462.833 972,453 960,444L960,320C960,311.333 958.333,303.083 955,295.25C951.667,287.417 947.083,280.583 941.25,274.75C935.417,268.917 928.583,264.333 920.75,261C912.917,257.667 904.667,256 896,256L522,256L458,298.5C436,312.833 412.333,320 387,320L64,320L64,832C64,841 65.6667,849.417 69,857.25C72.3333,865.083 76.8333,871.833 82.5,877.5C88.1667,883.167 94.9167,887.667 102.75,891C110.583,894.333 119,896 128,896L404.5,896C410.167,907.333 416.25,918.333 422.75,929C429.25,939.667 436.333,950 444,960L125.5,960C108.833,960 92.9167,956.583 77.75,949.75C62.5833,942.917 49.25,933.75 37.75,922.25C26.25,910.75 17.0833,897.417 10.25,882.25C3.41667,867.083 0,851.167 0,834.5L0,189.5C0,172.833 3.41667,156.917 10.25,141.75C17.0833,126.583 26.25,113.25 37.75,101.75C49.25,90.25 62.5833,81.0834 77.75,74.25C92.9167,67.4167 108.833,64.0001 125.5,64L368,64C388,64.0001 407.167,68.5001 425.5,77.5C443.833,86.5001 458.833,99.0001 470.5,115L528,192L898.5,192C915.167,192 931.083,195.417 946.25,202.25C961.417,209.083 974.75,218.25 986.25,229.75C997.75,241.25 1006.92,254.583 1013.75,269.75C1020.58,284.917 1024,300.833 1024,317.5ZM466,216L419,153.5C413,145.5 405.5,139.25 396.5,134.75C387.5,130.25 378,128 368,128L128,128C119,128 110.667,129.667 103,133C95.3333,136.333 88.5833,140.917 82.75,146.75C76.9167,152.583 72.3333,159.333 69,167C65.6667,174.667 64,183 64,192L64,256L387,256C394.333,256 401.5,254.667 408.5,252C415.5,249.333 422.25,246 428.75,242C435.25,238 441.583,233.667 447.75,229C453.917,224.333 460,220 466,216ZM1024,736C1024,775.667 1016.42,813 1001.25,848C986.083,883 965.5,913.5 939.5,939.5C913.5,965.5 883,986.083 848,1001.25C813,1016.42 775.667,1024 736,1024C696,1024 658.5,1016.5 623.5,1001.5C588.5,986.5 558,966 532,940C506,914 485.5,883.5 470.5,848.5C455.5,813.5 448,776 448,736C448,696.333 455.583,659 470.75,624C485.917,589 506.5,558.5 532.5,532.5C558.5,506.5 589,485.917 624,470.75C659,455.583 696.333,448 736,448C762.333,448 787.75,451.417 812.25,458.25C836.75,465.083 859.667,474.75 881,487.25C902.333,499.75 921.833,514.833 939.5,532.5C957.167,550.167 972.25,569.667 984.75,591C997.25,612.333 1006.92,635.25 1013.75,659.75C1020.58,684.25 1024,709.667 1024,736ZM896,576C896,567.333 892.833,559.833 886.5,553.5C880.167,547.167 872.667,544 864,544C857.667,544 852.5,545.167 848.5,547.5C844.5,549.833 841.25,552.917 838.75,556.75C836.25,560.583 834.5,565 833.5,570C832.5,575 832,580.167 832,585.5C816.333,577.167 800.917,570.833 785.75,566.5C770.583,562.167 754,560 736,560C724,560 711.75,561.25 699.25,563.75C686.75,566.25 674.5,569.917 662.5,574.75C650.5,579.583 639.083,585.417 628.25,592.25C617.417,599.083 608,607 600,616C597,619.333 594.667,622.75 593,626.25C591.333,629.75 590.5,633.833 590.5,638.5C590.5,647.5 593.667,655.167 600,661.5C606.333,667.833 614,671 623,671C628.667,671 634.75,668.583 641.25,663.75C647.75,658.917 655.333,653.5 664,647.5C672.667,641.5 682.75,636.083 694.25,631.25C705.75,626.417 719.333,624 735,624C746.667,624 757.5,625.25 767.5,627.75C777.5,630.25 787.667,634.333 798,640L785,640C779,640 773.083,640.25 767.25,640.75C761.417,641.25 756.167,642.583 751.5,644.75C746.833,646.917 743.083,650.167 740.25,654.5C737.417,658.833 736,664.667 736,672C736,680.667 739.167,688.167 745.5,694.5C751.833,700.833 759.333,704 768,704L864,704C872.667,704 880.167,700.833 886.5,694.5C892.833,688.167 896,680.667 896,672ZM881.5,833C881.5,824.333 878.333,816.833 872,810.5C865.667,804.167 858.167,801 849.5,801C842.833,801 836.333,803.417 830,808.25C823.667,813.083 816.333,818.5 808,824.5C799.667,830.5 789.833,835.917 778.5,840.75C767.167,845.583 753.333,848 737,848C725.333,848 714.5,846.75 704.5,844.25C694.5,841.75 684.333,837.667 674,832L687,832C692.667,832 698.417,831.75 704.25,831.25C710.083,830.75 715.333,829.417 720,827.25C724.667,825.083 728.5,821.833 731.5,817.5C734.5,813.167 736,807.333 736,800C736,791.333 732.833,783.833 726.5,777.5C720.167,771.167 712.667,768 704,768L608,768C599.333,768 591.833,771.167 585.5,777.5C579.167,783.833 576,791.333 576,800L576,896C576,904.667 579.167,912.167 585.5,918.5C591.833,924.833 599.333,928 608,928C614.333,928 619.5,926.833 623.5,924.5C627.5,922.167 630.75,919.083 633.25,915.25C635.75,911.417 637.5,907 638.5,902C639.5,897 640,891.833 640,886.5C655.667,894.833 671.083,901.167 686.25,905.5C701.417,909.833 718,912 736,912C748,912 760.333,910.75 773,908.25C785.667,905.75 797.917,902.083 809.75,897.25C821.583,892.417 832.833,886.583 843.5,879.75C854.167,872.917 863.667,865 872,856C878.333,849.333 881.5,841.667 881.5,833Z diff --git a/Wino.Mail/Views/ComposePage.xaml b/Wino.Mail/Views/ComposePage.xaml index 6724d7ac..54d4cd0d 100644 --- a/Wino.Mail/Views/ComposePage.xaml +++ b/Wino.Mail/Views/ComposePage.xaml @@ -151,13 +151,25 @@ OverflowButtonVisibility="Collapsed"> + LabelPosition="Collapsed" + ToolTipService.ToolTip="Light Theme" + Visibility="{x:Bind IsComposerDarkMode, Mode=OneWay}"> + + + + + + + @@ -186,281 +198,220 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + +
+ + + - + - - - - + + + + + + - + - - - - + + + + + + - + - - + + + +
+
- + - - - - - - - + + + + + + - - - - - - - + + + + + + + - + + + + + - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + CornerRadius="7"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Wino.Mail/Views/ComposePage.xaml.cs b/Wino.Mail/Views/ComposePage.xaml.cs index 35b27bd6..989fe529 100644 --- a/Wino.Mail/Views/ComposePage.xaml.cs +++ b/Wino.Mail/Views/ComposePage.xaml.cs @@ -9,6 +9,7 @@ using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.WinUI.Controls; using EmailValidation; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Toolkit.Uwp.Helpers; using Microsoft.UI.Xaml.Controls; using Microsoft.Web.WebView2.Core; using MimeKit; @@ -26,6 +27,7 @@ using Wino.Core.Domain; using Wino.Core.Domain.Entities; using Wino.Core.Domain.Enums; using Wino.Core.Domain.Interfaces; +using Wino.Core.Domain.Models.Requests; using Wino.Core.Messages.Mails; using Wino.Core.Messages.Shell; using Wino.Extensions; @@ -121,7 +123,7 @@ namespace Wino.Views private void OnFileDropGridDragOver(object sender, DragEventArgs e) { - ViewModel.IsDraggingOverDropZone = true; + ViewModel.IsDraggingOverFilesDropZone = true; e.AcceptedOperation = DataPackageOperation.Copy; e.DragUIOverride.Caption = Translator.ComposerAttachmentsDragDropAttach_Message; @@ -132,21 +134,94 @@ namespace Wino.Views private void OnFileDropGridDragLeave(object sender, DragEventArgs e) { - ViewModel.IsDraggingOverDropZone = false; + ViewModel.IsDraggingOverFilesDropZone = false; } private async void OnFileDropGridFileDropped(object sender, DragEventArgs e) { + try + { + if (e.DataView.Contains(StandardDataFormats.StorageItems)) + { + var storageItems = await e.DataView.GetStorageItemsAsync(); + var files = storageItems.OfType(); + + await AttachFiles(files); + } + } + // State should be reset even when an exception occurs, otherwise the UI will be stuck in a dragging state. + finally + { + ViewModel.IsDraggingOverComposerGrid = false; + ViewModel.IsDraggingOverFilesDropZone = false; + } + } + private void OnImageDropGridDragEnter(object sender, DragEventArgs e) + { + bool isValid = false; if (e.DataView.Contains(StandardDataFormats.StorageItems)) { - var storageItems = await e.DataView.GetStorageItemsAsync(); - var files = storageItems.OfType(); + // We can't use async/await here because DragUIOverride becomes inaccessible. + // https://github.com/microsoft/microsoft-ui-xaml/issues/9296 + var files = e.DataView.GetStorageItemsAsync().GetAwaiter().GetResult().OfType(); - await AttachFiles(files); + foreach (var file in files) + { + if (ValidateImageFile(file)) + { + isValid = true; + } + } } - ViewModel.IsDraggingOverComposerGrid = false; - ViewModel.IsDraggingOverDropZone = false; + e.AcceptedOperation = isValid ? DataPackageOperation.Copy : DataPackageOperation.None; + + if (isValid) + { + ViewModel.IsDraggingOverImagesDropZone = true; + e.DragUIOverride.Caption = Translator.ComposerAttachmentsDragDropAttach_Message; + e.DragUIOverride.IsCaptionVisible = true; + e.DragUIOverride.IsGlyphVisible = true; + e.DragUIOverride.IsContentVisible = true; + } + } + + private void OnImageDropGridDragLeave(object sender, DragEventArgs e) + { + ViewModel.IsDraggingOverImagesDropZone = false; + } + + private async void OnImageDropGridImageDropped(object sender, DragEventArgs e) + { + try + { + if (e.DataView.Contains(StandardDataFormats.StorageItems)) + { + var storageItems = await e.DataView.GetStorageItemsAsync(); + var files = storageItems.OfType(); + + var imageDataURLs = new List(); + + foreach (var file in files) + { + if (ValidateImageFile(file)) + imageDataURLs.Add(await GetDataURL(file)); + } + + await InvokeScriptSafeAsync($"insertImages({JsonConvert.SerializeObject(imageDataURLs)});"); + } + } + // State should be reset even when an exception occurs, otherwise the UI will be stuck in a dragging state. + finally + { + ViewModel.IsDraggingOverComposerGrid = false; + ViewModel.IsDraggingOverImagesDropZone = false; + } + + static async Task GetDataURL(StorageFile file) + { + return $"data:image/{file.FileType.Replace(".", "")};base64,{Convert.ToBase64String(await file.ReadBytesAsync())}"; + } } private async Task AttachFiles(IEnumerable files) @@ -165,49 +240,52 @@ namespace Wino.Views } } + private bool ValidateImageFile(StorageFile file) + { + string[] allowedTypes = new string[] { ".jpg", ".jpeg", ".png" }; + var fileType = file.FileType.ToLower(); + + return allowedTypes.Contains(fileType); + } + private async void BoldButtonClicked(object sender, RoutedEventArgs e) { - await InvokeScriptSafeAsync("document.getElementById('boldButton').click();"); + await InvokeScriptSafeAsync("editor.execCommand('bold')"); } private async void ItalicButtonClicked(object sender, RoutedEventArgs e) { - await InvokeScriptSafeAsync("document.getElementById('italicButton').click();"); + await InvokeScriptSafeAsync("editor.execCommand('italic')"); } private async void UnderlineButtonClicked(object sender, RoutedEventArgs e) { - await InvokeScriptSafeAsync("document.getElementById('underlineButton').click();"); + await InvokeScriptSafeAsync("editor.execCommand('underline')"); } private async void StrokeButtonClicked(object sender, RoutedEventArgs e) { - await InvokeScriptSafeAsync("document.getElementById('strikeButton').click();"); + await InvokeScriptSafeAsync("editor.execCommand('strikethrough')"); } private async void BulletListButtonClicked(object sender, RoutedEventArgs e) { - await InvokeScriptSafeAsync("document.getElementById('bulletListButton').click();"); + await InvokeScriptSafeAsync("editor.execCommand('insertunorderedlist')"); } private async void OrderedListButtonClicked(object sender, RoutedEventArgs e) { - await InvokeScriptSafeAsync("document.getElementById('orderedListButton').click();"); + await InvokeScriptSafeAsync("editor.execCommand('insertorderedlist')"); } private async void IncreaseIndentClicked(object sender, RoutedEventArgs e) { - await InvokeScriptSafeAsync("document.getElementById('increaseIndentButton').click();"); + await InvokeScriptSafeAsync("editor.execCommand('indent')"); } private async void DecreaseIndentClicked(object sender, RoutedEventArgs e) { - await InvokeScriptSafeAsync("document.getElementById('decreaseIndentButton').click();"); - } - - private async void DirectionButtonClicked(object sender, RoutedEventArgs e) - { - await InvokeScriptSafeAsync("document.getElementById('directionButton').click();"); + await InvokeScriptSafeAsync("editor.execCommand('outdent')"); } private async void AlignmentChanged(object sender, SelectionChangedEventArgs e) @@ -218,20 +296,26 @@ namespace Wino.Views switch (alignment) { case "left": - await InvokeScriptSafeAsync("document.getElementById('ql-align-left').click();"); + await InvokeScriptSafeAsync("editor.execCommand('justifyleft')"); break; case "center": - await InvokeScriptSafeAsync("document.getElementById('ql-align-center').click();"); + await InvokeScriptSafeAsync("editor.execCommand('justifycenter')"); break; case "right": - await InvokeScriptSafeAsync("document.getElementById('ql-align-right').click();"); + await InvokeScriptSafeAsync("editor.execCommand('justifyright')"); break; case "justify": - await InvokeScriptSafeAsync("document.getElementById('ql-align-justify').click();"); + await InvokeScriptSafeAsync("editor.execCommand('justifyfull')"); break; } } + private async void WebViewToggleButtonClicked(object sender, RoutedEventArgs e) + { + var enable = WebviewToolBarButton.IsChecked == true ? "true" : "false"; + await InvokeScriptSafeAsync($"toggleToolbar('{enable}');"); + } + public async Task ExecuteScriptFunctionAsync(string functionName, params object[] parameters) { string script = functionName + "("; @@ -252,21 +336,24 @@ namespace Wino.Views { try { - return await Chromium.ExecuteScriptAsync(function); + return await Chromium?.ExecuteScriptAsync(function); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); } - catch (Exception) { } return string.Empty; } private async void AddImageClicked(object sender, RoutedEventArgs e) { - await InvokeScriptSafeAsync("document.getElementById('addImageButton').click();"); + await InvokeScriptSafeAsync("imageInput.click();"); } private async Task FocusEditorAsync() { - await InvokeScriptSafeAsync("quill.focus();"); + await InvokeScriptSafeAsync("editor.selection.focus();"); Chromium.Focus(FocusState.Keyboard); Chromium.Focus(FocusState.Programmatic); @@ -279,24 +366,6 @@ namespace Wino.Views await FocusEditorAsync(); } - private async Task TryGetSelectedTextAsync() - { - try - { - return await Chromium.ExecuteScriptAsync("getSelectedText();"); - } - catch (Exception) { } - - return string.Empty; - } - - private async void LinkButtonClicked(object sender, RoutedEventArgs e) - { - // Get selected text from Quill. - - HyperlinkTextBox.Text = await TryGetSelectedTextAsync(); - } - public async Task UpdateEditorThemeAsync() { await DOMLoadedTask.Task; @@ -346,7 +415,7 @@ namespace Wino.Views if (Chromium.CoreWebView2 != null) { Chromium.CoreWebView2.DOMContentLoaded -= DOMLoaded; - Chromium.CoreWebView2.WebMessageReceived -= ScriptMessageRecieved; + Chromium.CoreWebView2.WebMessageReceived -= ScriptMessageReceived; } Chromium.Close(); @@ -379,9 +448,9 @@ namespace Wino.Views ViewModel.GetHTMLBodyFunction = new Func>(async () => { - var quillContent = await InvokeScriptSafeAsync("GetHTMLContent();"); + var editorContent = await InvokeScriptSafeAsync("GetHTMLContent();"); - return JsonConvert.DeserializeObject(quillContent); + return JsonConvert.DeserializeObject(editorContent); }); var underlyingThemeService = App.Current.Services.GetService(); @@ -391,60 +460,66 @@ namespace Wino.Views private async void ChromiumInitialized(Microsoft.UI.Xaml.Controls.WebView2 sender, Microsoft.UI.Xaml.Controls.CoreWebView2InitializedEventArgs args) { - var editorBundlePath = (await ViewModel.NativeAppService.GetQuillEditorBundlePathAsync()).Replace("full.html", string.Empty); + var editorBundlePath = (await ViewModel.NativeAppService.GetEditorBundlePathAsync()).Replace("editor.html", string.Empty); - Chromium.CoreWebView2.SetVirtualHostNameToFolderMapping("app.example", editorBundlePath, CoreWebView2HostResourceAccessKind.Allow); - Chromium.Source = new Uri("https://app.example/full.html"); + Chromium.CoreWebView2.SetVirtualHostNameToFolderMapping("app.editor", editorBundlePath, CoreWebView2HostResourceAccessKind.Allow); + Chromium.Source = new Uri("https://app.editor/editor.html"); Chromium.CoreWebView2.DOMContentLoaded -= DOMLoaded; Chromium.CoreWebView2.DOMContentLoaded += DOMLoaded; - Chromium.CoreWebView2.WebMessageReceived -= ScriptMessageRecieved; - Chromium.CoreWebView2.WebMessageReceived += ScriptMessageRecieved; + Chromium.CoreWebView2.WebMessageReceived -= ScriptMessageReceived; + Chromium.CoreWebView2.WebMessageReceived += ScriptMessageReceived; } - private void ScriptMessageRecieved(CoreWebView2 sender, CoreWebView2WebMessageReceivedEventArgs args) + private void ScriptMessageReceived(CoreWebView2 sender, CoreWebView2WebMessageReceivedEventArgs args) { - var change = JsonConvert.DeserializeObject(args.WebMessageAsJson); + var change = JsonConvert.DeserializeObject(args.WebMessageAsJson); - bool isEnabled = change.EndsWith("ql-active"); - - if (change.StartsWith("ql-bold")) - BoldButton.IsChecked = isEnabled; - else if (change.StartsWith("ql-italic")) - ItalicButton.IsChecked = isEnabled; - else if (change.StartsWith("ql-underline")) - UnderlineButton.IsChecked = isEnabled; - else if (change.StartsWith("ql-strike")) - StrokeButton.IsChecked = isEnabled; - else if (change.StartsWith("orderedListButton")) - OrderedListButton.IsChecked = isEnabled; - else if (change.StartsWith("bulletListButton")) - BulletListButton.IsChecked = isEnabled; - else if (change.StartsWith("ql-direction")) - DirectionButton.IsChecked = isEnabled; - else if (change.StartsWith("ql-align-left")) + if (change.type == "bold") { - AlignmentListView.SelectionChanged -= AlignmentChanged; - AlignmentListView.SelectedIndex = 0; - AlignmentListView.SelectionChanged += AlignmentChanged; + BoldButton.IsChecked = change.value == "true"; } - else if (change.StartsWith("ql-align-center")) + else if (change.type == "italic") { - AlignmentListView.SelectionChanged -= AlignmentChanged; - AlignmentListView.SelectedIndex = 1; - AlignmentListView.SelectionChanged += AlignmentChanged; + ItalicButton.IsChecked = change.value == "true"; } - else if (change.StartsWith("ql-align-right")) + else if (change.type == "underline") { - AlignmentListView.SelectionChanged -= AlignmentChanged; - AlignmentListView.SelectedIndex = 2; - AlignmentListView.SelectionChanged += AlignmentChanged; + UnderlineButton.IsChecked = change.value == "true"; } - else if (change.StartsWith("ql-align-justify")) + else if (change.type == "strikethrough") { + StrokeButton.IsChecked = change.value == "true"; + } + else if (change.type == "ol") + { + OrderedListButton.IsChecked = change.value == "true"; + } + else if (change.type == "ul") + { + BulletListButton.IsChecked = change.value == "true"; + } + else if (change.type == "indent") + { + IncreaseIndentButton.IsEnabled = change.value == "disabled" ? false : true; + } + else if (change.type == "outdent") + { + DecreaseIndentButton.IsEnabled = change.value == "disabled" ? false : true; + } + else if (change.type == "alignment") + { + var parsedValue = change.value switch + { + "jodit-icon_left" => 0, + "jodit-icon_center" => 1, + "jodit-icon_right" => 2, + "jodit-icon_justify" => 3, + _ => 0 + }; AlignmentListView.SelectionChanged -= AlignmentChanged; - AlignmentListView.SelectedIndex = 3; + AlignmentListView.SelectedIndex = parsedValue; AlignmentListView.SelectionChanged += AlignmentChanged; } } @@ -464,14 +539,6 @@ namespace Wino.Views await RenderInternalAsync(message.RenderModel.RenderHtml); } - private async void HyperlinkAddClicked(object sender, RoutedEventArgs e) - { - await InvokeScriptSafeAsync($"addHyperlink('{LinkUrlTextBox.Text}')"); - - LinkUrlTextBox.Text = string.Empty; - HyperlinkFlyout.Hide(); - } - private void BarDynamicOverflowChanging(CommandBar sender, DynamicOverflowItemsChangingEventArgs args) { if (args.Action == CommandBarDynamicOverflowAction.AddingToOverflow) diff --git a/Wino.Mail/Views/MailRenderingPage.xaml b/Wino.Mail/Views/MailRenderingPage.xaml index 159697cd..6ec59c42 100644 --- a/Wino.Mail/Views/MailRenderingPage.xaml +++ b/Wino.Mail/Views/MailRenderingPage.xaml @@ -371,7 +371,7 @@ Grid.Row="1" Background="{ThemeResource WinoContentZoneBackgroud}" BorderBrush="{StaticResource CardStrokeColorDefaultBrush}" - BorderThickness="0" + BorderThickness="1" CornerRadius="7"> diff --git a/Wino.Mail/Views/MailRenderingPage.xaml.cs b/Wino.Mail/Views/MailRenderingPage.xaml.cs index 9cb2243f..f9fe4cca 100644 --- a/Wino.Mail/Views/MailRenderingPage.xaml.cs +++ b/Wino.Mail/Views/MailRenderingPage.xaml.cs @@ -184,7 +184,7 @@ namespace Wino.Views { if (Chromium.CoreWebView2 == null) return; - var editorBundlePath = (await ViewModel.NativeAppService.GetQuillEditorBundlePathAsync()).Replace("full.html", string.Empty); + var editorBundlePath = (await ViewModel.NativeAppService.GetEditorBundlePathAsync()).Replace("editor.html", string.Empty); Chromium.CoreWebView2.SetVirtualHostNameToFolderMapping("app.reader", editorBundlePath, CoreWebView2HostResourceAccessKind.Allow); diff --git a/Wino.Mail/Wino.Mail.csproj b/Wino.Mail/Wino.Mail.csproj index 5ac3fdd4..a18c003d 100644 --- a/Wino.Mail/Wino.Mail.csproj +++ b/Wino.Mail/Wino.Mail.csproj @@ -754,22 +754,14 @@ - - - - - - - - - - - - - + + + + - - + + + @@ -782,7 +774,6 @@ - @@ -817,9 +808,7 @@ Windows Desktop Extensions for the UWP - - - + 14.0 @@ -895,4 +884,4 @@ --> - + \ No newline at end of file