diff --git a/Wino.Mail.WinUI/Dialogs/AccountPickerDialog.xaml b/Wino.Mail.WinUI/Dialogs/AccountPickerDialog.xaml index 11bdb0de..b47c5adf 100644 --- a/Wino.Mail.WinUI/Dialogs/AccountPickerDialog.xaml +++ b/Wino.Mail.WinUI/Dialogs/AccountPickerDialog.xaml @@ -5,15 +5,21 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:domain="using:Wino.Core.Domain" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:shared="using:Wino.Core.Domain.Entities.Shared" Title="{x:Bind domain:Translator.AccountPickerDialog_Title}" PrimaryButtonText="{x:Bind domain:Translator.Buttons_Cancel}" Style="{StaticResource WinoDialogStyle}" mc:Ignorable="d"> + SelectionMode="None"> + + + + + + diff --git a/Wino.Mail.WinUI/Styles/DataTemplates.xaml b/Wino.Mail.WinUI/Styles/DataTemplates.xaml index 7653aefb..27725268 100644 --- a/Wino.Mail.WinUI/Styles/DataTemplates.xaml +++ b/Wino.Mail.WinUI/Styles/DataTemplates.xaml @@ -20,20 +20,7 @@ - - - - - - - - + diff --git a/Wino.Mail.WinUI/Views/Account/AccountManagementPage.xaml b/Wino.Mail.WinUI/Views/Account/AccountManagementPage.xaml index f92ff116..179c0ee7 100644 --- a/Wino.Mail.WinUI/Views/Account/AccountManagementPage.xaml +++ b/Wino.Mail.WinUI/Views/Account/AccountManagementPage.xaml @@ -19,7 +19,20 @@ mc:Ignorable="d"> - + + + + + + + + @@ -29,7 +42,7 @@ @@ -139,8 +139,8 @@ VerticalAlignment="Stretch" Background="Transparent" BorderThickness="0" - Command="{Binding ElementName=root, Path=ViewModel.RemoveAttachmentCommand}" - CommandParameter="{Binding}"> + Click="RemoveAttachment_Click" + CommandParameter="{x:Bind}"> @@ -83,7 +83,7 @@ @@ -91,7 +91,7 @@ diff --git a/Wino.Mail.WinUI/Views/MailRenderingPage.xaml.cs b/Wino.Mail.WinUI/Views/MailRenderingPage.xaml.cs index 26232aac..fb1e5fdb 100644 --- a/Wino.Mail.WinUI/Views/MailRenderingPage.xaml.cs +++ b/Wino.Mail.WinUI/Views/MailRenderingPage.xaml.cs @@ -298,6 +298,30 @@ public sealed partial class MailRenderingPage : MailRenderingPageAbstract, } } + private void CopyAddress_Click(object sender, RoutedEventArgs e) + { + if (sender is HyperlinkButton button && button.CommandParameter is string address) + { + ViewModel.CopyClipboardCommand.Execute(address); + } + } + + private void OpenAttachment_Click(object sender, RoutedEventArgs e) + { + if (sender is MenuFlyoutItem item && item.CommandParameter is MailAttachmentViewModel attachment) + { + ViewModel.OpenAttachmentCommand.Execute(attachment); + } + } + + private void SaveAttachment_Click(object sender, RoutedEventArgs e) + { + if (sender is MenuFlyoutItem item && item.CommandParameter is MailAttachmentViewModel attachment) + { + ViewModel.SaveAttachmentCommand.Execute(attachment); + } + } + protected override void RegisterRecipients() { base.RegisterRecipients(); diff --git a/Wino.Mail.WinUI/Views/SettingOptionsPage.xaml b/Wino.Mail.WinUI/Views/SettingOptionsPage.xaml index 994c2f8a..1f802790 100644 --- a/Wino.Mail.WinUI/Views/SettingOptionsPage.xaml +++ b/Wino.Mail.WinUI/Views/SettingOptionsPage.xaml @@ -20,7 +20,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Controls/MailItemDisplayInformationControl.xaml.cs b/Wino.Mail/Controls/MailItemDisplayInformationControl.xaml.cs deleted file mode 100644 index 52fe43c6..00000000 --- a/Wino.Mail/Controls/MailItemDisplayInformationControl.xaml.cs +++ /dev/null @@ -1,218 +0,0 @@ -using System.Linq; -using System.Numerics; -using System.Windows.Input; -using CommunityToolkit.WinUI; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain; -using Wino.Core.Domain.Entities.Mail; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Models.MailItem; -using Wino.Extensions; -using Wino.Mail.ViewModels.Data; - -namespace Wino.Controls; - -public sealed partial class MailItemDisplayInformationControl : UserControl -{ - public ImagePreviewControl GetImagePreviewControl() => ContactImage; - - public bool IsRunningHoverAction { get; set; } - - public static readonly DependencyProperty DisplayModeProperty = DependencyProperty.Register(nameof(DisplayMode), typeof(MailListDisplayMode), typeof(MailItemDisplayInformationControl), new PropertyMetadata(MailListDisplayMode.Spacious)); - public static readonly DependencyProperty ShowPreviewTextProperty = DependencyProperty.Register(nameof(ShowPreviewText), typeof(bool), typeof(MailItemDisplayInformationControl), new PropertyMetadata(true)); - public static readonly DependencyProperty IsCustomFocusedProperty = DependencyProperty.Register(nameof(IsCustomFocused), typeof(bool), typeof(MailItemDisplayInformationControl), new PropertyMetadata(false)); - public static readonly DependencyProperty IsAvatarVisibleProperty = DependencyProperty.Register(nameof(IsAvatarVisible), typeof(bool), typeof(MailItemDisplayInformationControl), new PropertyMetadata(true)); - public static readonly DependencyProperty IsSubjectVisibleProperty = DependencyProperty.Register(nameof(IsSubjectVisible), typeof(bool), typeof(MailItemDisplayInformationControl), new PropertyMetadata(true)); - public static readonly DependencyProperty ConnectedExpanderProperty = DependencyProperty.Register(nameof(ConnectedExpander), typeof(WinoExpander), typeof(MailItemDisplayInformationControl), new PropertyMetadata(null)); - public static readonly DependencyProperty LeftHoverActionProperty = DependencyProperty.Register(nameof(LeftHoverAction), typeof(MailOperation), typeof(MailItemDisplayInformationControl), new PropertyMetadata(MailOperation.None)); - public static readonly DependencyProperty CenterHoverActionProperty = DependencyProperty.Register(nameof(CenterHoverAction), typeof(MailOperation), typeof(MailItemDisplayInformationControl), new PropertyMetadata(MailOperation.None)); - public static readonly DependencyProperty RightHoverActionProperty = DependencyProperty.Register(nameof(RightHoverAction), typeof(MailOperation), typeof(MailItemDisplayInformationControl), new PropertyMetadata(MailOperation.None)); - public static readonly DependencyProperty HoverActionExecutedCommandProperty = DependencyProperty.Register(nameof(HoverActionExecutedCommand), typeof(ICommand), typeof(MailItemDisplayInformationControl), new PropertyMetadata(null)); - public static readonly DependencyProperty MailItemProperty = DependencyProperty.Register(nameof(MailItem), typeof(IMailItem), typeof(MailItemDisplayInformationControl), new PropertyMetadata(null, new PropertyChangedCallback(OnMailItemChanged))); - public static readonly DependencyProperty IsHoverActionsEnabledProperty = DependencyProperty.Register(nameof(IsHoverActionsEnabled), typeof(bool), typeof(MailItemDisplayInformationControl), new PropertyMetadata(true)); - public static readonly DependencyProperty Prefer24HourTimeFormatProperty = DependencyProperty.Register(nameof(Prefer24HourTimeFormat), typeof(bool), typeof(MailItemDisplayInformationControl), new PropertyMetadata(false)); - public static readonly DependencyProperty IsThreadExpanderVisibleProperty = DependencyProperty.Register(nameof(IsThreadExpanderVisible), typeof(bool), typeof(MailItemDisplayInformationControl), new PropertyMetadata(false)); - public static readonly DependencyProperty IsThreadExpandedProperty = DependencyProperty.Register(nameof(IsThreadExpanded), typeof(bool), typeof(MailItemDisplayInformationControl), new PropertyMetadata(false)); - public static readonly DependencyProperty IsThumbnailUpdatedProperty = DependencyProperty.Register(nameof(IsThumbnailUpdated), typeof(bool), typeof(MailItemDisplayInformationControl), new PropertyMetadata(false)); - - public bool IsThumbnailUpdated - { - get { return (bool)GetValue(IsThumbnailUpdatedProperty); } - set { SetValue(IsThumbnailUpdatedProperty, value); } - } - - public bool IsThreadExpanded - { - get { return (bool)GetValue(IsThreadExpandedProperty); } - set { SetValue(IsThreadExpandedProperty, value); } - } - - public bool IsThreadExpanderVisible - { - get { return (bool)GetValue(IsThreadExpanderVisibleProperty); } - set { SetValue(IsThreadExpanderVisibleProperty, value); } - } - - public bool Prefer24HourTimeFormat - { - get { return (bool)GetValue(Prefer24HourTimeFormatProperty); } - set { SetValue(Prefer24HourTimeFormatProperty, value); } - } - - public bool IsHoverActionsEnabled - { - get { return (bool)GetValue(IsHoverActionsEnabledProperty); } - set { SetValue(IsHoverActionsEnabledProperty, value); } - } - - public IMailItem MailItem - { - get { return (IMailItem)GetValue(MailItemProperty); } - set { SetValue(MailItemProperty, value); } - } - - public ICommand HoverActionExecutedCommand - { - get { return (ICommand)GetValue(HoverActionExecutedCommandProperty); } - set { SetValue(HoverActionExecutedCommandProperty, value); } - } - - public MailOperation LeftHoverAction - { - get { return (MailOperation)GetValue(LeftHoverActionProperty); } - set { SetValue(LeftHoverActionProperty, value); } - } - - public MailOperation CenterHoverAction - { - get { return (MailOperation)GetValue(CenterHoverActionProperty); } - set { SetValue(CenterHoverActionProperty, value); } - } - - public MailOperation RightHoverAction - { - get { return (MailOperation)GetValue(RightHoverActionProperty); } - set { SetValue(RightHoverActionProperty, value); } - } - - public WinoExpander ConnectedExpander - { - get { return (WinoExpander)GetValue(ConnectedExpanderProperty); } - set { SetValue(ConnectedExpanderProperty, value); } - } - - public bool IsSubjectVisible - { - get { return (bool)GetValue(IsSubjectVisibleProperty); } - set { SetValue(IsSubjectVisibleProperty, value); } - } - - public bool IsAvatarVisible - { - get { return (bool)GetValue(IsAvatarVisibleProperty); } - set { SetValue(IsAvatarVisibleProperty, value); } - } - - public bool IsCustomFocused - { - get { return (bool)GetValue(IsCustomFocusedProperty); } - set { SetValue(IsCustomFocusedProperty, value); } - } - - public bool ShowPreviewText - { - get { return (bool)GetValue(ShowPreviewTextProperty); } - set { SetValue(ShowPreviewTextProperty, value); } - } - - public MailListDisplayMode DisplayMode - { - get { return (MailListDisplayMode)GetValue(DisplayModeProperty); } - set { SetValue(DisplayModeProperty, value); } - } - - public MailItemDisplayInformationControl() - { - this.InitializeComponent(); - - var compositor = this.Visual().Compositor; - - var leftBackgroundVisual = compositor.CreateSpriteVisual(); - RootContainerVisualWrapper.SetChildVisual(leftBackgroundVisual); - MainContentContainer.EnableImplicitAnimation(VisualPropertyType.Offset, 400); - - RootContainer.EnableImplicitAnimation(VisualPropertyType.Offset, 400); - ContentGrid.EnableImplicitAnimation(VisualPropertyType.Offset, 400); - ContentStackpanel.EnableImplicitAnimation(VisualPropertyType.Offset, 400); - IconsContainer.EnableImplicitAnimation(VisualPropertyType.Offset, 400); - - RootContainerVisualWrapper.SizeChanged += (s, e) => leftBackgroundVisual.Size = e.NewSize.ToVector2(); - } - - private static void OnMailItemChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is MailItemDisplayInformationControl control) - { - control.UpdateInformation(); - } - } - - private void UpdateInformation() - { - if (MailItem == null) return; - - TitleText.Text = string.IsNullOrWhiteSpace(MailItem.Subject) ? Translator.MailItemNoSubject : MailItem.Subject; - } - - private void ControlPointerEntered(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e) - { - if (IsHoverActionsEnabled) - { - HoverActionButtons.Visibility = Visibility.Visible; - UnreadContainer.Visibility = Visibility.Collapsed; - } - } - - private void ControlPointerExited(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e) - { - if (IsHoverActionsEnabled) - { - HoverActionButtons.Visibility = Visibility.Collapsed; - UnreadContainer.Visibility = Visibility.Visible; - } - } - - private void ExecuteHoverAction(MailOperation operation) - { - IsRunningHoverAction = true; - - MailOperationPreperationRequest package = null; - - if (MailItem is MailCopy mailCopy) - package = new MailOperationPreperationRequest(operation, mailCopy, toggleExecution: true); - else if (MailItem is ThreadMailItemViewModel threadMailItemViewModel) - package = new MailOperationPreperationRequest(operation, threadMailItemViewModel.GetMailCopies(), toggleExecution: true); - else if (MailItem is ThreadMailItem threadMailItem) - package = new MailOperationPreperationRequest(operation, threadMailItem.ThreadItems.Cast().Select(a => a.MailCopy), toggleExecution: true); - - if (package == null) return; - - HoverActionExecutedCommand?.Execute(package); - } - - private void FirstActionClicked(object sender, RoutedEventArgs e) - { - ExecuteHoverAction(LeftHoverAction); - } - - private void SecondActionClicked(object sender, RoutedEventArgs e) - { - ExecuteHoverAction(CenterHoverAction); - } - - private void ThirdActionClicked(object sender, RoutedEventArgs e) - { - ExecuteHoverAction(RightHoverAction); - } -} diff --git a/Wino.Mail/Controls/SettingsMenuItemControl.cs b/Wino.Mail/Controls/SettingsMenuItemControl.cs deleted file mode 100644 index d316c964..00000000 --- a/Wino.Mail/Controls/SettingsMenuItemControl.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Windows.Input; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; - -namespace Wino.Controls; - -/// -/// Templated button for each setting in Settings Dialog. -/// -public partial class SettingsMenuItemControl : Control -{ - public string Title - { - get { return (string)GetValue(TitleProperty); } - set { SetValue(TitleProperty, value); } - } - - public string Description - { - get { return (string)GetValue(DescriptionProperty); } - set { SetValue(DescriptionProperty, value); } - } - - public FrameworkElement Icon - { - get { return (FrameworkElement)GetValue(IconProperty); } - set { SetValue(IconProperty, value); } - } - - - public ICommand Command - { - get { return (ICommand)GetValue(CommandProperty); } - set { SetValue(CommandProperty, value); } - } - - - - public object CommandParameter - { - get { return (object)GetValue(CommandParameterProperty); } - set { SetValue(CommandParameterProperty, value); } - } - - public bool IsClickable - { - get { return (bool)GetValue(IsClickableProperty); } - set { SetValue(IsClickableProperty, value); } - } - - public bool IsNavigateIconVisible - { - get { return (bool)GetValue(IsNavigateIconVisibleProperty); } - set { SetValue(IsNavigateIconVisibleProperty, value); } - } - - public FrameworkElement SideContent - { - get { return (FrameworkElement)GetValue(SideContentProperty); } - set { SetValue(SideContentProperty, value); } - } - - public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register(nameof(CommandParameter), typeof(object), typeof(SettingsMenuItemControl), new PropertyMetadata(null)); - public static readonly DependencyProperty SideContentProperty = DependencyProperty.Register(nameof(SideContent), typeof(FrameworkElement), typeof(SettingsMenuItemControl), new PropertyMetadata(null)); - public static readonly DependencyProperty IsClickableProperty = DependencyProperty.Register(nameof(IsClickable), typeof(bool), typeof(SettingsMenuItemControl), new PropertyMetadata(true)); - public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(nameof(Command), typeof(ICommand), typeof(SettingsMenuItemControl), new PropertyMetadata(null)); - public static readonly DependencyProperty IconProperty = DependencyProperty.Register(nameof(Icon), typeof(FrameworkElement), typeof(SettingsMenuItemControl), new PropertyMetadata(null)); - public static readonly DependencyProperty DescriptionProperty = DependencyProperty.Register(nameof(Description), typeof(string), typeof(SettingsMenuItemControl), new PropertyMetadata(string.Empty)); - public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(nameof(Title), typeof(string), typeof(SettingsMenuItemControl), new PropertyMetadata(string.Empty)); - public static readonly DependencyProperty IsNavigateIconVisibleProperty = DependencyProperty.Register(nameof(IsNavigateIconVisible), typeof(bool), typeof(SettingsMenuItemControl), new PropertyMetadata(true)); -} diff --git a/Wino.Mail/Controls/WebViewEditorControl.cs b/Wino.Mail/Controls/WebViewEditorControl.cs deleted file mode 100644 index b7c5b75c..00000000 --- a/Wino.Mail/Controls/WebViewEditorControl.cs +++ /dev/null @@ -1,357 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Threading.Tasks; -using CommunityToolkit.WinUI; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.UI.Xaml.Controls; -using Microsoft.Web.WebView2.Core; -using Windows.UI.ViewManagement.Core; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain; -using Wino.Core.Domain.Interfaces; -using Wino.Core.Domain.Models; -using Wino.Core.Domain.Models.Reader; -using Wino.Core.UWP; -using Wino.Core.UWP.Extensions; - -namespace Wino.Mail.Controls; -public sealed partial class WebViewEditorControl : Control, IDisposable -{ - private readonly INativeAppService _nativeAppService = App.Current.Services.GetService(); - private readonly IFontService _fontService = App.Current.Services.GetService(); - private readonly IPreferencesService _preferencesService = App.Current.Services.GetService(); - - [GeneratedDependencyProperty] - public partial bool IsEditorDarkMode { get; set; } - async partial void OnIsEditorDarkModeChanged(bool newValue) - { - await UpdateEditorThemeAsync(); - } - - [GeneratedDependencyProperty] - public partial bool IsEditorBold { get; set; } - private bool _isEditorBoldInternal; - async partial void OnIsEditorBoldChanged(bool newValue) - { - if (newValue != _isEditorBoldInternal) - { - await _chromium.ExecuteScriptFunctionSafeAsync("editor.execCommand", JsonSerializer.Serialize("bold", BasicTypesJsonContext.Default.String)); - } - } - - [GeneratedDependencyProperty] - public partial bool IsEditorItalic { get; set; } - private bool _isEditorItalicInternal; - async partial void OnIsEditorItalicChanged(bool newValue) - { - if (newValue != _isEditorItalicInternal) - { - await _chromium.ExecuteScriptFunctionSafeAsync("editor.execCommand", JsonSerializer.Serialize("italic", BasicTypesJsonContext.Default.String)); - } - } - - [GeneratedDependencyProperty] - public partial bool IsEditorUnderline { get; set; } - private bool _isEditorUnderlineInternal; - async partial void OnIsEditorUnderlineChanged(bool newValue) - { - if (newValue != _isEditorUnderlineInternal) - { - await _chromium.ExecuteScriptFunctionSafeAsync("editor.execCommand", JsonSerializer.Serialize("underline", BasicTypesJsonContext.Default.String)); - } - } - - [GeneratedDependencyProperty] - public partial bool IsEditorStrikethrough { get; set; } - private bool _isEditorStrikethroughInternal; - async partial void OnIsEditorStrikethroughChanged(bool newValue) - { - if (newValue != _isEditorStrikethroughInternal) - { - await _chromium.ExecuteScriptFunctionSafeAsync("editor.execCommand", JsonSerializer.Serialize("strikethrough", BasicTypesJsonContext.Default.String)); - } - } - - [GeneratedDependencyProperty] - public partial bool IsEditorOl { get; set; } - private bool _isEditorOlInternal; - async partial void OnIsEditorOlChanged(bool newValue) - { - if (newValue != _isEditorOlInternal) - { - await _chromium.ExecuteScriptFunctionSafeAsync("editor.execCommand", JsonSerializer.Serialize("insertorderedlist", BasicTypesJsonContext.Default.String)); - } - } - - [GeneratedDependencyProperty] - public partial bool IsEditorUl { get; set; } - private bool _isEditorUlInternal; - async partial void OnIsEditorUlChanged(bool newValue) - { - if (newValue != _isEditorUlInternal) - { - await _chromium.ExecuteScriptFunctionSafeAsync("editor.execCommand", JsonSerializer.Serialize("insertunorderedlist", BasicTypesJsonContext.Default.String)); - } - } - - [GeneratedDependencyProperty(DefaultValue = true)] - public partial bool IsEditorIndentEnabled { get; private set; } - - [GeneratedDependencyProperty] - public partial bool IsEditorOutdentEnabled { get; private set; } - - [GeneratedDependencyProperty] - public partial int EditorAlignmentSelectedIndex { get; set; } - private int _editorAlignmentSelectedIndexInternal; - async partial void OnEditorAlignmentSelectedIndexChanged(int newValue) - { - if (newValue != _editorAlignmentSelectedIndexInternal) - { - var alignmentAction = newValue switch - { - 0 => "justifyleft", - 1 => "justifycenter", - 2 => "justifyright", - 3 => "justifyfull", - _ => throw new ArgumentOutOfRangeException(nameof(newValue)) - }; - - await _chromium.ExecuteScriptFunctionSafeAsync("editor.execCommand", JsonSerializer.Serialize(alignmentAction, BasicTypesJsonContext.Default.String)); - } - } - - [GeneratedDependencyProperty] - public partial bool IsEditorWebViewEditor { get; set; } - - async partial void OnIsEditorWebViewEditorChanged(bool newValue) - { - await _chromium.ExecuteScriptFunctionSafeAsync("toggleToolbar", JsonSerializer.Serialize(newValue, BasicTypesJsonContext.Default.Boolean)); - } - - private const string PART_WebView = "WebView"; - private WebView2 _chromium; - private bool _disposedValue; - private readonly TaskCompletionSource _domLoadedTask = new(); - - public WebViewEditorControl() - { - this.DefaultStyleKey = typeof(WebViewEditorControl); - - IsEditorDarkMode = WinoApplication.Current.UnderlyingThemeService.IsUnderlyingThemeDark(); - } - - protected override async void OnApplyTemplate() - { - base.OnApplyTemplate(); - - _chromium = GetTemplateChild(PART_WebView) as WebView2; - - await InitializeComponent(); - } - - private async Task InitializeComponent() - { - Environment.SetEnvironmentVariable("WEBVIEW2_DEFAULT_BACKGROUND_COLOR", "00FFFFFF"); - Environment.SetEnvironmentVariable("WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS", "--enable-features=OverlayScrollbar,msOverlayScrollbarWinStyle,msOverlayScrollbarWinStyleAnimation"); - _chromium.CoreWebView2Initialized += ChromiumInitialized; - - await _chromium.EnsureCoreWebView2Async(); - } - - public async void EditorIndentAsync() - { - await _chromium.ExecuteScriptFunctionSafeAsync("editor.execCommand", JsonSerializer.Serialize("indent", BasicTypesJsonContext.Default.String)); - } - - public async void EditorOutdentAsync() - { - await _chromium.ExecuteScriptFunctionSafeAsync("editor.execCommand", JsonSerializer.Serialize("outdent", BasicTypesJsonContext.Default.String)); - } - - public void ToggleEditorTheme() - { - IsEditorDarkMode = !IsEditorDarkMode; - } - - public async Task GetHtmlBodyAsync() - { - var editorContent = await _chromium.ExecuteScriptFunctionSafeAsync("GetHTMLContent"); - - return JsonSerializer.Deserialize(editorContent, BasicTypesJsonContext.Default.String); - } - - public async void ShowImagePicker() - { - await _chromium.ExecuteScriptFunctionSafeAsync("imageInput.click"); - } - - public async Task InsertImagesAsync(List images) - { - await _chromium.ExecuteScriptFunctionSafeAsync("insertImages", JsonSerializer.Serialize(images, DomainModelsJsonContext.Default.ListImageInfo)); - } - - public async void ShowEmojiPicker() - { - CoreInputView.GetForCurrentView().TryShow(CoreInputViewKind.Emoji); - - await FocusEditorAsync(focusControlAsWell: true); - } - - public WebView2 GetUnderlyingWebView() => _chromium; - - public async Task RenderHtmlAsync(string htmlBody) - { - await _domLoadedTask.Task; - - await UpdateEditorThemeAsync(); - await InitializeEditorAsync(); - - await _chromium.ExecuteScriptFunctionAsync("RenderHTML", parameters: JsonSerializer.Serialize(string.IsNullOrEmpty(htmlBody) ? " " : htmlBody, BasicTypesJsonContext.Default.String)); - } - - private async Task InitializeEditorAsync() - { - var fonts = _fontService.GetFonts(); - var composerFont = _preferencesService.ComposerFont; - int composerFontSize = _preferencesService.ComposerFontSize; - var readerFont = _preferencesService.ReaderFont; - int readerFontSize = _preferencesService.ReaderFontSize; - return await _chromium.ExecuteScriptFunctionAsync("initializeJodit", false, - JsonSerializer.Serialize(fonts, BasicTypesJsonContext.Default.ListString), - JsonSerializer.Serialize(composerFont, BasicTypesJsonContext.Default.String), - JsonSerializer.Serialize(composerFontSize, BasicTypesJsonContext.Default.Int32), - JsonSerializer.Serialize(readerFont, BasicTypesJsonContext.Default.String), - JsonSerializer.Serialize(readerFontSize, BasicTypesJsonContext.Default.Int32)); - } - - private async void ChromiumInitialized(WebView2 sender, CoreWebView2InitializedEventArgs args) - { - var editorBundlePath = (await _nativeAppService.GetEditorBundlePathAsync()).Replace("editor.html", string.Empty); - - _chromium.CoreWebView2.SetVirtualHostNameToFolderMapping("app.editor", editorBundlePath, CoreWebView2HostResourceAccessKind.Allow); - _chromium.Source = new Uri("https://app.editor/editor.html"); - - _chromium.CoreWebView2.DOMContentLoaded += DomLoaded; - - _chromium.CoreWebView2.WebMessageReceived += ScriptMessageReceived; - } - - public async Task UpdateEditorThemeAsync() - { - await _domLoadedTask.Task; - - if (IsEditorDarkMode) - { - _chromium.CoreWebView2.Profile.PreferredColorScheme = CoreWebView2PreferredColorScheme.Dark; - await _chromium.ExecuteScriptFunctionSafeAsync("SetDarkEditor"); - } - else - { - _chromium.CoreWebView2.Profile.PreferredColorScheme = CoreWebView2PreferredColorScheme.Light; - await _chromium.ExecuteScriptFunctionSafeAsync("SetLightEditor"); - } - } - - /// - /// Places the cursor in the composer. - /// - /// Whether control itself should be focused as well or not. - public async Task FocusEditorAsync(bool focusControlAsWell) - { - await _chromium.ExecuteScriptSafeAsync("editor.selection.setCursorIn(editor.editor.firstChild, true)"); - - if (focusControlAsWell) - { - _chromium.Focus(FocusState.Keyboard); - _chromium.Focus(FocusState.Programmatic); - } - } - - private void ScriptMessageReceived(CoreWebView2 sender, CoreWebView2WebMessageReceivedEventArgs args) - { - var change = JsonSerializer.Deserialize(args.WebMessageAsJson, DomainModelsJsonContext.Default.WebViewMessage); - - if (change.Type == "bold") - { - _isEditorBoldInternal = change.Value == "true"; - IsEditorBold = _isEditorBoldInternal; - } - else if (change.Type == "italic") - { - _isEditorItalicInternal = change.Value == "true"; - IsEditorItalic = _isEditorItalicInternal; - } - else if (change.Type == "underline") - { - _isEditorUnderlineInternal = change.Value == "true"; - IsEditorUnderline = _isEditorUnderlineInternal; - } - else if (change.Type == "strikethrough") - { - _isEditorStrikethroughInternal = change.Value == "true"; - IsEditorStrikethrough = _isEditorStrikethroughInternal; - } - else if (change.Type == "ol") - { - _isEditorOlInternal = change.Value == "true"; - IsEditorOl = _isEditorOlInternal; - } - else if (change.Type == "ul") - { - _isEditorUlInternal = change.Value == "true"; - IsEditorUl = _isEditorUlInternal; - } - else if (change.Type == "indent") - { - IsEditorIndentEnabled = change.Value != "disabled"; - } - else if (change.Type == "outdent") - { - IsEditorOutdentEnabled = change.Value != "disabled"; - } - 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 - }; - _editorAlignmentSelectedIndexInternal = parsedValue; - EditorAlignmentSelectedIndex = _editorAlignmentSelectedIndexInternal; - } - } - - private void DomLoaded(CoreWebView2 sender, CoreWebView2DOMContentLoadedEventArgs args) => _domLoadedTask.TrySetResult(true); - - private void Dispose(bool disposing) - { - if (!_disposedValue) - { - if (disposing && _chromium != null) - { - _chromium.CoreWebView2Initialized -= ChromiumInitialized; - - if (_chromium.CoreWebView2 != null) - { - _chromium.CoreWebView2.DOMContentLoaded -= DomLoaded; - _chromium.CoreWebView2.WebMessageReceived -= ScriptMessageReceived; - } - - _chromium.Close(); - } - _disposedValue = true; - } - } - - public void Dispose() - { - // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method - Dispose(disposing: true); - GC.SuppressFinalize(this); - } -} diff --git a/Wino.Mail/Controls/WinoExpander.cs b/Wino.Mail/Controls/WinoExpander.cs deleted file mode 100644 index 057d3996..00000000 --- a/Wino.Mail/Controls/WinoExpander.cs +++ /dev/null @@ -1,128 +0,0 @@ -using CommunityToolkit.Diagnostics; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Hosting; -using Windows.UI.Xaml.Markup; - -namespace Wino.Controls; - -[ContentProperty(Name = nameof(Content))] -public partial class WinoExpander : Control -{ - private const string PART_HeaderGrid = "HeaderGrid"; - private const string PART_ContentAreaWrapper = "ContentAreaWrapper"; - private const string PART_ContentArea = "ContentArea"; - - private ContentControl HeaderGrid; - private ContentControl ContentArea; - private Grid ContentAreaWrapper; - - public static readonly DependencyProperty HeaderProperty = DependencyProperty.Register(nameof(Header), typeof(UIElement), typeof(WinoExpander), new PropertyMetadata(null)); - public static readonly DependencyProperty ContentProperty = DependencyProperty.Register(nameof(Content), typeof(UIElement), typeof(WinoExpander), new PropertyMetadata(null)); - public static readonly DependencyProperty IsExpandedProperty = DependencyProperty.Register(nameof(IsExpanded), typeof(bool), typeof(WinoExpander), new PropertyMetadata(false, new PropertyChangedCallback(OnIsExpandedChanged))); - public static readonly DependencyProperty TemplateSettingsProperty = DependencyProperty.Register(nameof(TemplateSettings), typeof(WinoExpanderTemplateSettings), typeof(WinoExpander), new PropertyMetadata(new WinoExpanderTemplateSettings())); - - public UIElement Content - { - get { return (UIElement)GetValue(ContentProperty); } - set { SetValue(ContentProperty, value); } - } - - public WinoExpanderTemplateSettings TemplateSettings - { - get { return (WinoExpanderTemplateSettings)GetValue(TemplateSettingsProperty); } - set { SetValue(TemplateSettingsProperty, value); } - } - - public bool IsExpanded - { - get { return (bool)GetValue(IsExpandedProperty); } - set { SetValue(IsExpandedProperty, value); } - } - - public UIElement Header - { - get { return (UIElement)GetValue(HeaderProperty); } - set { SetValue(HeaderProperty, value); } - } - - protected override void OnApplyTemplate() - { - base.OnApplyTemplate(); - - HeaderGrid = GetTemplateChild(PART_HeaderGrid) as ContentControl; - ContentAreaWrapper = GetTemplateChild(PART_ContentAreaWrapper) as Grid; - ContentArea = GetTemplateChild(PART_ContentArea) as ContentControl; - - Guard.IsNotNull(HeaderGrid, nameof(HeaderGrid)); - Guard.IsNotNull(ContentAreaWrapper, nameof(ContentAreaWrapper)); - Guard.IsNotNull(ContentArea, nameof(ContentArea)); - - var clipComposition = ElementCompositionPreview.GetElementVisual(ContentAreaWrapper); - clipComposition.Clip = clipComposition.Compositor.CreateInsetClip(); - - ContentAreaWrapper.SizeChanged += ContentSizeChanged; - HeaderGrid.Tapped += HeaderTapped; - } - - private void ContentSizeChanged(object sender, SizeChangedEventArgs e) - { - TemplateSettings.ContentHeight = e.NewSize.Height; - TemplateSettings.NegativeContentHeight = -1 * (double)e.NewSize.Height; - } - - private void HeaderTapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) - { - // Tapped is delegated from executing hover action like flag or delete. - // No need to toggle the expander. - - if (Header is MailItemDisplayInformationControl itemDisplayInformationControl && - itemDisplayInformationControl.IsRunningHoverAction) - { - itemDisplayInformationControl.IsRunningHoverAction = false; - return; - } - - IsExpanded = !IsExpanded; - } - - private static void OnIsExpandedChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is WinoExpander control) - control.UpdateVisualStates(); - } - - private void UpdateVisualStates() - { - VisualStateManager.GoToState(this, IsExpanded ? "Expanded" : "Collapsed", true); - } -} - -#region Settings - -public class WinoExpanderTemplateSettings : DependencyObject -{ - public static readonly DependencyProperty HeaderHeightProperty = DependencyProperty.Register(nameof(HeaderHeight), typeof(double), typeof(WinoExpanderTemplateSettings), new PropertyMetadata(0.0)); - public static readonly DependencyProperty ContentHeightProperty = DependencyProperty.Register(nameof(ContentHeight), typeof(double), typeof(WinoExpanderTemplateSettings), new PropertyMetadata(0.0)); - public static readonly DependencyProperty NegativeContentHeightProperty = DependencyProperty.Register(nameof(NegativeContentHeight), typeof(double), typeof(WinoExpanderTemplateSettings), new PropertyMetadata(0.0)); - - public double NegativeContentHeight - { - get { return (double)GetValue(NegativeContentHeightProperty); } - set { SetValue(NegativeContentHeightProperty, value); } - } - - public double HeaderHeight - { - get { return (double)GetValue(HeaderHeightProperty); } - set { SetValue(HeaderHeightProperty, value); } - } - - public double ContentHeight - { - get { return (double)GetValue(ContentHeightProperty); } - set { SetValue(ContentHeightProperty, value); } - } -} - -#endregion diff --git a/Wino.Mail/Controls/WinoSwipeControlItems.cs b/Wino.Mail/Controls/WinoSwipeControlItems.cs deleted file mode 100644 index 3803390e..00000000 --- a/Wino.Mail/Controls/WinoSwipeControlItems.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System.Linq; -using Microsoft.UI.Xaml.Controls; -using Windows.UI.Xaml; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Models.MailItem; -using Wino.Helpers; -using Wino.Mail.ViewModels.Data; - -namespace Wino.Controls; - -public partial class WinoSwipeControlItems : SwipeItems -{ - public static readonly DependencyProperty SwipeOperationProperty = DependencyProperty.Register(nameof(SwipeOperation), typeof(MailOperation), typeof(WinoSwipeControlItems), new PropertyMetadata(default(MailOperation), new PropertyChangedCallback(OnItemsChanged))); - public static readonly DependencyProperty MailItemProperty = DependencyProperty.Register(nameof(MailItem), typeof(IMailItem), typeof(WinoSwipeControlItems), new PropertyMetadata(null)); - - public IMailItem MailItem - { - get { return (IMailItem)GetValue(MailItemProperty); } - set { SetValue(MailItemProperty, value); } - } - - - public MailOperation SwipeOperation - { - get { return (MailOperation)GetValue(SwipeOperationProperty); } - set { SetValue(SwipeOperationProperty, value); } - } - - private static void OnItemsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is WinoSwipeControlItems control) - { - control.BuildSwipeItems(); - } - } - - private void BuildSwipeItems() - { - this.Clear(); - - var swipeItem = GetSwipeItem(SwipeOperation); - - this.Add(swipeItem); - } - - private SwipeItem GetSwipeItem(MailOperation operation) - { - if (MailItem == null) return null; - - var finalOperation = operation; - - bool isSingleItem = MailItem is MailItemViewModel; - - if (isSingleItem) - { - var singleItem = MailItem as MailItemViewModel; - - if (operation == MailOperation.MarkAsRead && singleItem.IsRead) - finalOperation = MailOperation.MarkAsUnread; - else if (operation == MailOperation.MarkAsUnread && !singleItem.IsRead) - finalOperation = MailOperation.MarkAsRead; - } - else - { - var threadItem = MailItem as ThreadMailItemViewModel; - - if (operation == MailOperation.MarkAsRead && threadItem.ThreadItems.All(a => a.IsRead)) - finalOperation = MailOperation.MarkAsUnread; - else if (operation == MailOperation.MarkAsUnread && threadItem.ThreadItems.All(a => !a.IsRead)) - finalOperation = MailOperation.MarkAsRead; - } - - var item = new SwipeItem() - { - IconSource = new WinoFontIconSource() { Icon = XamlHelpers.GetWinoIconGlyph(finalOperation) }, - Text = XamlHelpers.GetOperationString(finalOperation), - }; - - return item; - } -} diff --git a/Wino.Mail/Dialogs/AccountReorderDialog.xaml b/Wino.Mail/Dialogs/AccountReorderDialog.xaml deleted file mode 100644 index 459463d2..00000000 --- a/Wino.Mail/Dialogs/AccountReorderDialog.xaml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Dialogs/AccountReorderDialog.xaml.cs b/Wino.Mail/Dialogs/AccountReorderDialog.xaml.cs deleted file mode 100644 index 9bbcae64..00000000 --- a/Wino.Mail/Dialogs/AccountReorderDialog.xaml.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System.Collections.ObjectModel; -using System.Linq; -using Microsoft.Extensions.DependencyInjection; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Interfaces; - -namespace Wino.Dialogs; - -public sealed partial class AccountReorderDialog : ContentDialog -{ - public ObservableCollection Accounts { get; } - - private int count; - private bool isOrdering = false; - - private readonly IAccountService _accountService = App.Current.Services.GetService(); - - public AccountReorderDialog(ObservableCollection accounts) - { - Accounts = accounts; - - count = accounts.Count; - - InitializeComponent(); - } - - private void DialogOpened(ContentDialog sender, ContentDialogOpenedEventArgs args) - { - Accounts.CollectionChanged -= AccountsChanged; - Accounts.CollectionChanged += AccountsChanged; - } - - private void DialogClosed(ContentDialog sender, ContentDialogClosedEventArgs args) => Accounts.CollectionChanged -= AccountsChanged; - - private async void AccountsChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) - { - if (count - 1 == Accounts.Count) - isOrdering = true; - - if (count == Accounts.Count && isOrdering) - { - // Order is completed. Apply changes. - - var dict = Accounts.ToDictionary(a => a.StartupEntityId, a => Accounts.IndexOf(a)); - - await _accountService.UpdateAccountOrdersAsync(dict); - - isOrdering = false; - } - } -} diff --git a/Wino.Mail/Dialogs/CreateAccountAliasDialog.xaml b/Wino.Mail/Dialogs/CreateAccountAliasDialog.xaml deleted file mode 100644 index 2e18c01b..00000000 --- a/Wino.Mail/Dialogs/CreateAccountAliasDialog.xaml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Dialogs/CreateAccountAliasDialog.xaml.cs b/Wino.Mail/Dialogs/CreateAccountAliasDialog.xaml.cs deleted file mode 100644 index 2a0ba0ac..00000000 --- a/Wino.Mail/Dialogs/CreateAccountAliasDialog.xaml.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Entities.Mail; -using Wino.Core.Domain.Interfaces; - -namespace Wino.Dialogs; - -public sealed partial class CreateAccountAliasDialog : ContentDialog, ICreateAccountAliasDialog -{ - public MailAccountAlias CreatedAccountAlias { get; set; } - public CreateAccountAliasDialog() - { - InitializeComponent(); - } - - private void CreateClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args) - { - CreatedAccountAlias = new MailAccountAlias - { - AliasAddress = AliasTextBox.Text.Trim(), - ReplyToAddress = ReplyToTextBox.Text.Trim(), - Id = Guid.NewGuid(), - IsPrimary = false, - IsVerified = false - }; - - Hide(); - } -} diff --git a/Wino.Mail/Dialogs/MessageSourceDialog.xaml b/Wino.Mail/Dialogs/MessageSourceDialog.xaml deleted file mode 100644 index 4a747d75..00000000 --- a/Wino.Mail/Dialogs/MessageSourceDialog.xaml +++ /dev/null @@ -1,28 +0,0 @@ - - - - 1200 - - - - - - diff --git a/Wino.Mail/Dialogs/MessageSourceDialog.xaml.cs b/Wino.Mail/Dialogs/MessageSourceDialog.xaml.cs deleted file mode 100644 index 693922f1..00000000 --- a/Wino.Mail/Dialogs/MessageSourceDialog.xaml.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Interfaces; - - -namespace Wino.Mail.Dialogs; - -public sealed partial class MessageSourceDialog : ContentDialog -{ - private readonly IClipboardService _clipboardService = App.Current.Services.GetService(); - public string MessageSource { get; set; } - public bool Copied { get; set; } - public MessageSourceDialog() - { - this.InitializeComponent(); - } - - private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) - { - _clipboardService.CopyClipboardAsync(MessageSource); - Copied = true; - } -} diff --git a/Wino.Mail/Dialogs/MoveMailDialog.xaml b/Wino.Mail/Dialogs/MoveMailDialog.xaml deleted file mode 100644 index 570d7ff8..00000000 --- a/Wino.Mail/Dialogs/MoveMailDialog.xaml +++ /dev/null @@ -1,61 +0,0 @@ - - - - 600 - 600 - 756 - 756 - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Dialogs/MoveMailDialog.xaml.cs b/Wino.Mail/Dialogs/MoveMailDialog.xaml.cs deleted file mode 100644 index 99ee6906..00000000 --- a/Wino.Mail/Dialogs/MoveMailDialog.xaml.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System.Collections.Generic; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain; -using Wino.Core.Domain.Models.Folders; - -namespace Wino.Dialogs; - -public sealed partial class MoveMailDialog : ContentDialog -{ - public IMailItemFolder SelectedFolder - { - get { return (IMailItemFolder)GetValue(SelectedFolderProperty); } - set { SetValue(SelectedFolderProperty, value); } - } - - public static readonly DependencyProperty SelectedFolderProperty = DependencyProperty.Register(nameof(SelectedFolder), typeof(IMailItemFolder), typeof(MoveMailDialog), new PropertyMetadata(null, OnSelectedFolderChanged)); - - - public List FolderList { get; set; } - - public MoveMailDialog(List allFolders) - { - InitializeComponent(); - - if (allFolders == null) return; - - FolderList = allFolders; - } - - private static void OnSelectedFolderChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is MoveMailDialog dialog) - { - dialog.VerifySelection(); - } - } - - private void VerifySelection() - { - if (SelectedFolder != null) - { - // Don't select non-move capable folders like Categories or More. - - if (!SelectedFolder.IsMoveTarget) - { - // Warn users for only proper mail folders. Not ghost folders. - InvalidFolderText.Visibility = Visibility.Visible; - InvalidFolderText.Text = string.Format(Translator.MoveMailDialog_InvalidFolderMessage, SelectedFolder.FolderName); - - if (FolderTreeView.SelectedItem != null) - { - // Toggle the expansion for the selected container if available. - // I don't like the expand arrow touch area. It's better this way. - - if (FolderTreeView.ContainerFromItem(FolderTreeView.SelectedItem) is Microsoft.UI.Xaml.Controls.TreeViewItem container) - { - container.IsExpanded = !container.IsExpanded; - } - } - SelectedFolder = null; - } - else - { - Hide(); - } - } - } - - private void CancelClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args) - { - Hide(); - } -} diff --git a/Wino.Mail/Dialogs/NewImapSetupDialog.xaml b/Wino.Mail/Dialogs/NewImapSetupDialog.xaml deleted file mode 100644 index f161ddd3..00000000 --- a/Wino.Mail/Dialogs/NewImapSetupDialog.xaml +++ /dev/null @@ -1,25 +0,0 @@ - - - - 0,0,0,0 - - 1920 - - - - - diff --git a/Wino.Mail/Dialogs/NewImapSetupDialog.xaml.cs b/Wino.Mail/Dialogs/NewImapSetupDialog.xaml.cs deleted file mode 100644 index ee6c8cb7..00000000 --- a/Wino.Mail/Dialogs/NewImapSetupDialog.xaml.cs +++ /dev/null @@ -1,121 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; -using CommunityToolkit.Mvvm.Messaging; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Media.Animation; -using Wino.Core.Domain.Entities.Shared; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Interfaces; -using Wino.Core.Domain.Models.Accounts; -using Wino.Messaging.Client.Mails; -using Wino.Views.ImapSetup; - -namespace Wino.Dialogs; - -public enum ImapSetupState -{ - Welcome, - AutoDiscovery, - TestingConnection, - PreparingFolder -} - -public sealed partial class NewImapSetupDialog : ContentDialog, - IRecipient, - IRecipient, - IRecipient, - IImapAccountCreationDialog -{ - private TaskCompletionSource _getServerInfoTaskCompletionSource = new TaskCompletionSource(); - private TaskCompletionSource dialogOpened = new TaskCompletionSource(); - private bool isDismissRequested = false; - - public NewImapSetupDialog() - { - InitializeComponent(); - } - - // Not used for now. - public AccountCreationDialogState State { get; set; } - - public void Complete(bool cancel) - { - if (!_getServerInfoTaskCompletionSource.Task.IsCompleted) - _getServerInfoTaskCompletionSource.TrySetResult(null); - - isDismissRequested = true; - - Hide(); - } - - public Task GetCustomServerInformationAsync() => _getServerInfoTaskCompletionSource.Task; - - public async void Receive(ImapSetupBackNavigationRequested message) - { - // Frame go back - if (message.PageType == null) - { - if (ImapFrame.CanGoBack) - { - // Go back using Dispatcher to allow navigations in OnNavigatedTo. - await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => - { - ImapFrame.GoBack(); - }); - } - } - else - { - ImapFrame.Navigate(message.PageType, message.Parameter, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromLeft }); - } - } - - public void Receive(ImapSetupNavigationRequested message) - { - ImapFrame.Navigate(message.PageType, message.Parameter, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight }); - } - - public void Receive(ImapSetupDismissRequested message) => _getServerInfoTaskCompletionSource.TrySetResult(message.CompletedServerInformation); - - public async Task ShowDialogAsync(CancellationTokenSource cancellationTokenSource) - { - Opened += DialogOpened; - - _ = ShowAsync(); - - await dialogOpened.Task; - } - - private void DialogOpened(ContentDialog sender, ContentDialogOpenedEventArgs args) - { - Opened -= DialogOpened; - - dialogOpened?.SetResult(true); - } - - public void ShowPreparingFolders() - { - ImapFrame.Navigate(typeof(PreparingImapFoldersPage), new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromLeft }); - } - - public void StartImapConnectionSetup(MailAccount account) => ImapFrame.Navigate(typeof(WelcomeImapSetupPage), account, new DrillInNavigationTransitionInfo()); - public void StartImapConnectionSetup(AccountCreationDialogResult accountCreationDialogResult) => ImapFrame.Navigate(typeof(WelcomeImapSetupPage), accountCreationDialogResult, new DrillInNavigationTransitionInfo()); - - private void ImapSetupDialogClosed(ContentDialog sender, ContentDialogClosedEventArgs args) - { - WeakReferenceMessenger.Default.Unregister(this); - WeakReferenceMessenger.Default.Unregister(this); - WeakReferenceMessenger.Default.Unregister(this); - } - - private void ImapSetupDialogOpened(ContentDialog sender, ContentDialogOpenedEventArgs args) - { - WeakReferenceMessenger.Default.Register(this); - WeakReferenceMessenger.Default.Register(this); - WeakReferenceMessenger.Default.Register(this); - } - - // Don't hide the dialog unless dismiss is requested from the inner pages specifically. - private void OnDialogClosing(ContentDialog sender, ContentDialogClosingEventArgs args) => args.Cancel = !isDismissRequested; -} diff --git a/Wino.Mail/Dialogs/SignatureEditorDialog.xaml b/Wino.Mail/Dialogs/SignatureEditorDialog.xaml deleted file mode 100644 index 774c0e72..00000000 --- a/Wino.Mail/Dialogs/SignatureEditorDialog.xaml +++ /dev/null @@ -1,266 +0,0 @@ - - - - 1200 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Dialogs/SignatureEditorDialog.xaml.cs b/Wino.Mail/Dialogs/SignatureEditorDialog.xaml.cs deleted file mode 100644 index 29400f48..00000000 --- a/Wino.Mail/Dialogs/SignatureEditorDialog.xaml.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System; -using System.Text.RegularExpressions; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain; -using Wino.Core.Domain.Entities.Mail; - -namespace Wino.Dialogs; - -public sealed partial class SignatureEditorDialog : ContentDialog -{ - public AccountSignature Result; - - public SignatureEditorDialog() - { - InitializeComponent(); - - SignatureNameTextBox.Header = Translator.SignatureEditorDialog_SignatureName_TitleNew; - - // TODO: Should be added additional logic to enable/disable primary button when webview content changed. - IsPrimaryButtonEnabled = true; - } - - public SignatureEditorDialog(AccountSignature signatureModel) - { - InitializeComponent(); - - SignatureNameTextBox.Text = signatureModel.Name.Trim(); - SignatureNameTextBox.Header = string.Format(Translator.SignatureEditorDialog_SignatureName_TitleEdit, signatureModel.Name); - - Result = new AccountSignature - { - Id = signatureModel.Id, - Name = signatureModel.Name, - MailAccountId = signatureModel.MailAccountId, - HtmlBody = signatureModel.HtmlBody - }; - - // TODO: Should be added additional logic to enable/disable primary button when webview content changed. - IsPrimaryButtonEnabled = true; - } - - private async void SignatureDialogOpened(ContentDialog sender, ContentDialogOpenedEventArgs args) - { - await WebViewEditor.RenderHtmlAsync(Result?.HtmlBody ?? string.Empty); - } - - private void DialogClosed(ContentDialog sender, ContentDialogClosedEventArgs args) - { - WebViewEditor.Dispose(); - } - - private async void SaveClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args) - { - var newSignature = Regex.Unescape(await WebViewEditor.GetHtmlBodyAsync()); - - if (Result == null) - { - Result = new AccountSignature - { - Id = Guid.NewGuid(), - Name = SignatureNameTextBox.Text.Trim(), - HtmlBody = newSignature - }; - } - else - { - Result.Name = SignatureNameTextBox.Text.Trim(); - Result.HtmlBody = newSignature; - } - - Hide(); - } - - private void CancelClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args) - { - Hide(); - } - - private void SignatureNameTextBoxTextChanged(object sender, TextChangedEventArgs e) => IsPrimaryButtonEnabled = !string.IsNullOrWhiteSpace(SignatureNameTextBox.Text); -} diff --git a/Wino.Mail/Dialogs/SystemFolderConfigurationDialog.xaml b/Wino.Mail/Dialogs/SystemFolderConfigurationDialog.xaml deleted file mode 100644 index 51f82af3..00000000 --- a/Wino.Mail/Dialogs/SystemFolderConfigurationDialog.xaml +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Dialogs/SystemFolderConfigurationDialog.xaml.cs b/Wino.Mail/Dialogs/SystemFolderConfigurationDialog.xaml.cs deleted file mode 100644 index c478cc35..00000000 --- a/Wino.Mail/Dialogs/SystemFolderConfigurationDialog.xaml.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain; -using Wino.Core.Domain.Entities.Mail; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Exceptions; -using Wino.Core.Domain.Models.Folders; - -namespace Wino.Dialogs; - -public sealed partial class SystemFolderConfigurationDialog : ContentDialog -{ - private bool canDismissDialog = false; - - public SystemFolderConfiguration Configuration { get; set; } - public List AvailableFolders { get; } - - public MailItemFolder Sent { get; set; } - public MailItemFolder Draft { get; set; } - public MailItemFolder Archive { get; set; } - public MailItemFolder Junk { get; set; } - public MailItemFolder Trash { get; set; } - - public SystemFolderConfigurationDialog(List availableFolders) - { - InitializeComponent(); - - AvailableFolders = availableFolders; - - Sent = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Sent); - Draft = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Draft); - Archive = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Archive); - Junk = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Junk); - Trash = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Deleted); - } - - private void DialogClosing(ContentDialog sender, ContentDialogClosingEventArgs args) - { - args.Cancel = !canDismissDialog; - } - - private void CancelClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args) - => canDismissDialog = true; - - private void SaveClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args) - { - ValidationErrorTextBlock.Text = string.Empty; - - var allSpecialFolders = new List() - { - Sent, Draft, Archive, Trash, Junk - }; - - if (allSpecialFolders.Any(a => a != null && a.SpecialFolderType == SpecialFolderType.Inbox)) - ValidationErrorTextBlock.Text = Translator.SystemFolderConfigDialogValidation_InboxSelected; - - if (new HashSet(allSpecialFolders.Where(a => a != null).Select(x => x.Id)).Count != allSpecialFolders.Where(a => a != null).Count()) - ValidationErrorTextBlock.Text = Translator.SystemFolderConfigDialogValidation_DuplicateSystemFolders; - - // Check if we can save. - if (string.IsNullOrEmpty(ValidationErrorTextBlock.Text)) - { - var configuration = new SystemFolderConfiguration(Sent, Draft, Archive, Trash, Junk); - - canDismissDialog = true; - Configuration = configuration; - } - } -} diff --git a/Wino.Mail/GlobalSuppressions.cs b/Wino.Mail/GlobalSuppressions.cs deleted file mode 100644 index 7d5444aa..00000000 --- a/Wino.Mail/GlobalSuppressions.cs +++ /dev/null @@ -1,8 +0,0 @@ -// This file is used by Code Analysis to maintain SuppressMessage -// attributes that are applied to this project. -// Project-level suppressions either have no target or are given -// a specific target and scoped to a namespace, type, member, etc. - -using System.Diagnostics.CodeAnalysis; - -[assembly: SuppressMessage("Minor Code Smell", "S2094:Classes should not be empty", Justification = "", Scope = "type", Target = "~T:Wino.PubSub.BackBreadcrumNavigationRequest")] diff --git a/Wino.Mail/JS/editor.html b/Wino.Mail/JS/editor.html deleted file mode 100644 index d979daa6..00000000 --- a/Wino.Mail/JS/editor.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/JS/editor.js b/Wino.Mail/JS/editor.js deleted file mode 100644 index f2e55a7a..00000000 --- a/Wino.Mail/JS/editor.js +++ /dev/null @@ -1,130 +0,0 @@ -const joditConfig = { - "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, - "link": { - "processVideoLink": false - }, - "disablePlugins": "add-new-line,backspace", - "showPlaceholder": false, - "uploader": { - "insertImageAsBase64URI": true - }, - "enter": "DIV" -} - -// This method should be called first all the time. -function initializeJodit(fonts, defaultComposerFont, defaultComposerFontSize, defaultReaderFont, defaultReaderFontSize) { - const fontsWithFallabckObject = fonts.reduce((acc, font) => { acc[`'${font}',Arial,sans-serif`] = font; return acc; }, {}); - const mergedConfig = { - ...joditConfig, - controls: { - font: { - list: Jodit.atom(fontsWithFallabckObject) - } - }, - style: { font: `${defaultReaderFontSize}px ${defaultReaderFont}` }, - } - - Jodit.plugins.add('inlineFonts', jodit => { - jodit.events.on('afterEnter', e => { - const current = jodit.selection.current().parentNode; - current.style.fontFamily = `'${defaultComposerFont}',Arial,sans-serif`; - current.style.fontSize = `${defaultComposerFontSize}px`; - }); - }); - - // Don't add const/let/var here, it should be global - editor = Jodit.make("#editor", mergedConfig); - - // 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([{ data: base64Image, name: file.name }]); - }; - reader.readAsDataURL(file); - } - }); - - // Listeners for button events - 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'); - 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) { - toolbar.style.display = 'flex'; - } - else { - toolbar.style.display = 'none'; - } -} - -function insertImages(imagesInfo) { - imagesInfo.forEach(imageInfo => { - editor.selection.insertHTML(`${imageInfo.name}`); - }); -}; diff --git a/Wino.Mail/JS/global.css b/Wino.Mail/JS/global.css deleted file mode 100644 index c20569f5..00000000 --- a/Wino.Mail/JS/global.css +++ /dev/null @@ -1,4 +0,0 @@ -* { - scrollbar-color: auto !important; - scrollbar-width: thin !important; -} diff --git a/Wino.Mail/JS/libs/darkreader.js b/Wino.Mail/JS/libs/darkreader.js deleted file mode 100644 index 6e45c600..00000000 --- a/Wino.Mail/JS/libs/darkreader.js +++ /dev/null @@ -1,3187 +0,0 @@ -/** - * Dark Reader v4.9.1 - * https://darkreader.org/ - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.DarkReader = {})); -}(this, (function (exports) { 'use strict'; - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - 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 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - - function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - } - - function isFirefox() { - return navigator.userAgent.includes('Firefox'); - } - function isMacOS() { - return navigator.platform.toLowerCase().startsWith('mac'); - } - function isDeepSelectorSupported() { - try { - document.querySelector('x /deep/ x'); - return true; - } - catch (err) { - return false; - } - } - function isHostSelectorSupported() { - try { - document.querySelector(':host x'); - return true; - } - catch (err) { - return false; - } - } - function isDefinedSelectorSupported() { - try { - document.querySelector(':defined'); - return true; - } - catch (err) { - return false; - } - } - - function getOKResponse(url, mimeType) { - return __awaiter(this, void 0, void 0, function () { - var response; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, fetch(url, { - cache: 'force-cache', - credentials: 'omit', - })]; - case 1: - response = _a.sent(); - if (isFirefox() && mimeType === 'text/css' && url.startsWith('moz-extension://') && url.endsWith('.css')) { - return [2, response]; - } - if (mimeType && !response.headers.get('Content-Type').startsWith(mimeType)) { - throw new Error("Mime type mismatch when loading " + url); - } - if (!response.ok) { - throw new Error("Unable to load " + url + " " + response.status + " " + response.statusText); - } - return [2, response]; - } - }); - }); - } - function loadAsDataURL(url, mimeType) { - return __awaiter(this, void 0, void 0, function () { - var response; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, getOKResponse(url, mimeType)]; - case 1: - response = _a.sent(); - return [4, readResponseAsDataURL(response)]; - case 2: return [2, _a.sent()]; - } - }); - }); - } - function readResponseAsDataURL(response) { - return __awaiter(this, void 0, void 0, function () { - var blob, dataURL; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, response.blob()]; - case 1: - blob = _a.sent(); - return [4, (new Promise(function (resolve) { - var reader = new FileReader(); - reader.onloadend = function () { return resolve(reader.result); }; - reader.readAsDataURL(blob); - }))]; - case 2: - dataURL = _a.sent(); - return [2, dataURL]; - } - }); - }); - } - - var throwCORSError = function (url) { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2, Promise.reject(new Error([ - 'Embedded Dark Reader cannot access a cross-origin resource', - url, - 'Overview your URLs and CORS policies or use', - '`DarkReader.setFetchMethod(fetch: (url) => Promise))`.', - 'See if using `DarkReader.setFetchMethod(window.fetch)`', - 'before `DarkReader.enable()` works.' - ].join(' ')))]; - }); - }); }; - var fetcher = throwCORSError; - function setFetchMethod(fetch) { - if (fetch) { - fetcher = fetch; - } - else { - fetcher = throwCORSError; - } - } - function callFetchMethod(url) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, fetcher(url)]; - case 1: return [2, _a.sent()]; - } - }); - }); - } - - if (!window.chrome) { - window.chrome = {}; - } - if (!chrome.runtime) { - chrome.runtime = {}; - } - var messageListeners = new Set(); - function sendMessage() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return __awaiter(this, void 0, void 0, function () { - var id_1, _a, url, responseType, response, text_1, error_1; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - if (!(args[0] && args[0].type === 'fetch')) return [3, 8]; - id_1 = args[0].id; - _b.label = 1; - case 1: - _b.trys.push([1, 7, , 8]); - _a = args[0].data, url = _a.url, responseType = _a.responseType; - return [4, callFetchMethod(url)]; - case 2: - response = _b.sent(); - if (!(responseType === 'data-url')) return [3, 4]; - return [4, readResponseAsDataURL(response)]; - case 3: - text_1 = _b.sent(); - return [3, 6]; - case 4: return [4, response.text()]; - case 5: - text_1 = _b.sent(); - _b.label = 6; - case 6: - messageListeners.forEach(function (cb) { return cb({ type: 'fetch-response', data: text_1, error: null, id: id_1 }); }); - return [3, 8]; - case 7: - error_1 = _b.sent(); - console.error(error_1); - messageListeners.forEach(function (cb) { return cb({ type: 'fetch-response', data: null, error: error_1, id: id_1 }); }); - return [3, 8]; - case 8: return [2]; - } - }); - }); - } - function addMessageListener(callback) { - messageListeners.add(callback); - } - if (typeof chrome.runtime.sendMessage === 'function') { - var nativeSendMessage_1 = chrome.runtime.sendMessage; - chrome.runtime.sendMessage = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - sendMessage.apply(void 0, args); - nativeSendMessage_1.apply(chrome.runtime, args); - }; - } - else { - chrome.runtime.sendMessage = sendMessage; - } - if (!chrome.runtime.onMessage) { - chrome.runtime.onMessage = {}; - } - if (typeof chrome.runtime.onMessage.addListener === 'function') { - var nativeAddListener_1 = chrome.runtime.onMessage.addListener; - chrome.runtime.onMessage.addListener = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - addMessageListener.apply(void 0, args); - nativeAddListener_1.apply(chrome.runtime.onMessage, args); - }; - } - else { - chrome.runtime.onMessage.addListener = addMessageListener; - } - - var ThemeEngines = { - cssFilter: 'cssFilter', - svgFilter: 'svgFilter', - staticTheme: 'staticTheme', - dynamicTheme: 'dynamicTheme', - }; - - function parseURL(url) { - var a = document.createElement('a'); - a.href = url; - return a; - } - function getAbsoluteURL($base, $relative) { - if ($relative.match(/^.*?\/\//) || $relative.match(/^data\:/)) { - if ($relative.startsWith('//')) { - return "" + location.protocol + $relative; - } - return $relative; - } - var b = parseURL($base); - if ($relative.startsWith('/')) { - var u_1 = parseURL(b.protocol + "//" + b.host + $relative); - return u_1.href; - } - var pathParts = b.pathname.split('/').concat($relative.split('/')).filter(function (p) { return p; }); - var backwardIndex; - while ((backwardIndex = pathParts.indexOf('..')) > 0) { - pathParts.splice(backwardIndex - 1, 2); - } - var u = parseURL(b.protocol + "//" + b.host + "/" + pathParts.join('/')); - return u.href; - } - - function logInfo() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - } - function logWarn() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - } - - function iterateCSSRules(rules, iterate) { - Array.from(rules) - .forEach(function (rule) { - if (rule instanceof CSSMediaRule) { - var media = Array.from(rule.media); - if (media.includes('screen') || media.includes('all') || !(media.includes('print') || media.includes('speech'))) { - iterateCSSRules(rule.cssRules, iterate); - } - } - else if (rule instanceof CSSStyleRule) { - iterate(rule); - } - else if (rule instanceof CSSImportRule) { - try { - iterateCSSRules(rule.styleSheet.cssRules, iterate); - } - catch (err) { - logWarn(err); - } - } - else { - logWarn("CSSRule type not supported", rule); - } - }); - } - function iterateCSSDeclarations(style, iterate) { - Array.from(style).forEach(function (property) { - var value = style.getPropertyValue(property).trim(); - if (!value) { - return; - } - iterate(property, value); - }); - } - function isCSSVariable(property) { - return property.startsWith('--') && !property.startsWith('--darkreader'); - } - function getCSSVariables(rules) { - var variables = new Map(); - rules && iterateCSSRules(rules, function (rule) { - rule.style && iterateCSSDeclarations(rule.style, function (property, value) { - if (isCSSVariable(property)) { - variables.set(property, value); - } - }); - }); - return variables; - } - function getElementCSSVariables(element) { - var variables = new Map(); - iterateCSSDeclarations(element.style, function (property, value) { - if (isCSSVariable(property)) { - variables.set(property, value); - } - }); - return variables; - } - var cssURLRegex = /url\((('.+?')|(".+?")|([^\)]*?))\)/g; - var cssImportRegex = /@import (url\()?(('.+?')|(".+?")|([^\)]*?))\)?;?/g; - function getCSSURLValue(cssURL) { - return cssURL.replace(/^url\((.*)\)$/, '$1').replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1'); - } - function getCSSBaseBath(url) { - var cssURL = parseURL(url); - return cssURL.protocol + "//" + cssURL.host + cssURL.pathname.replace(/\?.*$/, '').replace(/(\/)([^\/]+)$/i, '$1'); - } - function replaceCSSRelativeURLsWithAbsolute($css, cssBasePath) { - return $css.replace(cssURLRegex, function (match) { - var pathValue = getCSSURLValue(match); - return "url(\"" + getAbsoluteURL(cssBasePath, pathValue) + "\")"; - }); - } - var cssCommentsRegex = /\/\*[\s\S]*?\*\//g; - function removeCSSComments($css) { - return $css.replace(cssCommentsRegex, ''); - } - var fontFaceRegex = /@font-face\s*{[^}]*}/g; - function replaceCSSFontFace($css) { - return $css.replace(fontFaceRegex, ''); - } - var varRegex = /var\((--[^\s,]+),?\s*([^\(\)]*(\([^\(\)]*\)[^\(\)]*)*\s*)\)/g; - function replaceCSSVariables(value, variables) { - var missing = false; - var result = value.replace(varRegex, function (match, name, fallback) { - if (variables.has(name)) { - return variables.get(name); - } - else if (fallback) { - return fallback; - } - else { - logWarn("Variable " + name + " not found"); - missing = true; - } - return match; - }); - if (missing) { - return result; - } - if (result.match(varRegex)) { - return replaceCSSVariables(result, variables); - } - return result; - } - - function throttle(callback) { - var pending = false; - var frameId = null; - var lastArgs; - var throttled = (function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - lastArgs = args; - if (frameId) { - pending = true; - } - else { - callback.apply(void 0, lastArgs); - frameId = requestAnimationFrame(function () { - frameId = null; - if (pending) { - callback.apply(void 0, lastArgs); - pending = false; - } - }); - } - }); - var cancel = function () { - cancelAnimationFrame(frameId); - pending = false; - frameId = null; - }; - return Object.assign(throttled, { cancel: cancel }); - } - function createAsyncTasksQueue() { - var tasks = []; - var frameId = null; - function runTasks() { - var task; - while (task = tasks.shift()) { - task(); - } - frameId = null; - } - function add(task) { - tasks.push(task); - if (!frameId) { - frameId = requestAnimationFrame(runTasks); - } - } - function cancel() { - tasks.splice(0); - cancelAnimationFrame(frameId); - frameId = null; - } - return { add: add, cancel: cancel }; - } - - function getDuration(time) { - var duration = 0; - if (time.seconds) { - duration += time.seconds * 1000; - } - if (time.minutes) { - duration += time.minutes * 60 * 1000; - } - if (time.hours) { - duration += time.hours * 60 * 60 * 1000; - } - if (time.days) { - duration += time.days * 24 * 60 * 60 * 1000; - } - return duration; - } - - function removeNode(node) { - node && node.parentNode && node.parentNode.removeChild(node); - } - function watchForNodePosition(node, _a) { - var _b = _a.onRestore, onRestore = _b === void 0 ? Function.prototype : _b, _c = _a.watchParent, watchParent = _c === void 0 ? true : _c, _d = _a.watchSibling, watchSibling = _d === void 0 ? false : _d; - var MAX_ATTEMPTS_COUNT = 10; - var ATTEMPTS_INTERVAL = getDuration({ seconds: 10 }); - var prevSibling = node.previousSibling; - var parent = node.parentNode; - if (!parent) { - logWarn('Unable to watch for node position: parent element not found', node, prevSibling); - return { stop: Function.prototype }; - } - var attempts = 0; - var start = null; - var restore = throttle(function () { - attempts++; - var now = Date.now(); - if (start == null) { - start = now; - } - else if (attempts >= MAX_ATTEMPTS_COUNT) { - if (now - start < ATTEMPTS_INTERVAL) { - logWarn('Node position watcher stopped: some script conflicts with Dark Reader and can cause high CPU usage', node, prevSibling); - stop(); - return; - } - start = now; - attempts = 1; - } - if (prevSibling && prevSibling.parentNode !== parent) { - logWarn('Unable to restore node position: sibling was removed', node, prevSibling, parent); - stop(); - return; - } - logWarn('Node was removed, restoring it\'s position', node, prevSibling, parent); - parent.insertBefore(node, prevSibling ? prevSibling.nextSibling : parent.firstChild); - onRestore && onRestore(); - }); - var observer = new MutationObserver(function () { - if ((watchParent && !node.parentNode) || - (watchSibling && node.previousSibling !== prevSibling)) { - restore(); - observer.takeRecords(); - } - }); - var run = function () { - observer.observe(parent, { childList: true }); - }; - var stop = function () { - observer.disconnect(); - }; - run(); - return { run: run, stop: stop }; - } - function iterateShadowNodes(root, iterator) { - var walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, { - acceptNode: function (node) { - return node.shadowRoot == null ? NodeFilter.FILTER_SKIP : NodeFilter.FILTER_ACCEPT; - } - }, false); - for (var node = (root.shadowRoot ? walker.currentNode : walker.nextNode()); node != null; node = walker.nextNode()) { - iterator(node); - iterateShadowNodes(node.shadowRoot, iterator); - } - } - - function hslToRGB(_a) { - var h = _a.h, s = _a.s, l = _a.l, _b = _a.a, a = _b === void 0 ? 1 : _b; - if (s === 0) { - var _c = [l, l, l].map(function (x) { return Math.round(x * 255); }), r_1 = _c[0], b_1 = _c[1], g_1 = _c[2]; - return { r: r_1, g: g_1, b: b_1, a: a }; - } - var c = (1 - Math.abs(2 * l - 1)) * s; - var x = c * (1 - Math.abs((h / 60) % 2 - 1)); - var m = l - c / 2; - var _d = (h < 60 ? [c, x, 0] : - h < 120 ? [x, c, 0] : - h < 180 ? [0, c, x] : - h < 240 ? [0, x, c] : - h < 300 ? [x, 0, c] : - [c, 0, x]).map(function (n) { return Math.round((n + m) * 255); }), r = _d[0], g = _d[1], b = _d[2]; - return { r: r, g: g, b: b, a: a }; - } - function rgbToHSL(_a) { - var r255 = _a.r, g255 = _a.g, b255 = _a.b, _b = _a.a, a = _b === void 0 ? 1 : _b; - var r = r255 / 255; - var g = g255 / 255; - var b = b255 / 255; - var max = Math.max(r, g, b); - var min = Math.min(r, g, b); - var c = max - min; - var l = (max + min) / 2; - if (c === 0) { - return { h: 0, s: 0, l: l, a: a }; - } - var h = (max === r ? (((g - b) / c) % 6) : - max === g ? ((b - r) / c + 2) : - ((r - g) / c + 4)) * 60; - if (h < 0) { - h += 360; - } - var s = c / (1 - Math.abs(2 * l - 1)); - return { h: h, s: s, l: l, a: a }; - } - function toFixed(n, digits) { - if (digits === void 0) { digits = 0; } - var fixed = n.toFixed(digits); - if (digits === 0) { - return fixed; - } - var dot = fixed.indexOf('.'); - if (dot >= 0) { - var zerosMatch = fixed.match(/0+$/); - if (zerosMatch) { - if (zerosMatch.index === dot + 1) { - return fixed.substring(0, dot); - } - return fixed.substring(0, zerosMatch.index); - } - } - return fixed; - } - function rgbToString(rgb) { - var r = rgb.r, g = rgb.g, b = rgb.b, a = rgb.a; - if (a != null && a < 1) { - return "rgba(" + toFixed(r) + ", " + toFixed(g) + ", " + toFixed(b) + ", " + toFixed(a, 2) + ")"; - } - return "rgb(" + toFixed(r) + ", " + toFixed(g) + ", " + toFixed(b) + ")"; - } - function rgbToHexString(_a) { - var r = _a.r, g = _a.g, b = _a.b, a = _a.a; - return "#" + (a != null && a < 1 ? [r, g, b, Math.round(a * 255)] : [r, g, b]).map(function (x) { - return "" + (x < 16 ? '0' : '') + x.toString(16); - }).join(''); - } - var rgbMatch = /^rgba?\([^\(\)]+\)$/; - var hslMatch = /^hsla?\([^\(\)]+\)$/; - var hexMatch = /^#[0-9a-f]+$/i; - function parse($color) { - var c = $color.trim().toLowerCase(); - if (c.match(rgbMatch)) { - return parseRGB(c); - } - if (c.match(hslMatch)) { - return parseHSL(c); - } - if (c.match(hexMatch)) { - return parseHex(c); - } - if (knownColors.has(c)) { - return getColorByName(c); - } - if (systemColors.has(c)) { - return getSystemColor(c); - } - if ($color === 'transparent') { - return { r: 0, g: 0, b: 0, a: 0 }; - } - throw new Error("Unable to parse " + $color); - } - function getNumbersFromString(str, splitter, range, units) { - var raw = str.split(splitter).filter(function (x) { return x; }); - var unitsList = Object.entries(units); - var numbers = raw.map(function (r) { return r.trim(); }).map(function (r, i) { - var n; - var unit = unitsList.find(function (_a) { - var u = _a[0]; - return r.endsWith(u); - }); - if (unit) { - n = parseFloat(r.substring(0, r.length - unit[0].length)) / unit[1] * range[i]; - } - else { - n = parseFloat(r); - } - if (range[i] > 1) { - return Math.round(n); - } - return n; - }); - return numbers; - } - var rgbSplitter = /rgba?|\(|\)|\/|,|\s/ig; - var rgbRange = [255, 255, 255, 1]; - var rgbUnits = { '%': 100 }; - function parseRGB($rgb) { - var _a = getNumbersFromString($rgb, rgbSplitter, rgbRange, rgbUnits), r = _a[0], g = _a[1], b = _a[2], _b = _a[3], a = _b === void 0 ? 1 : _b; - return { r: r, g: g, b: b, a: a }; - } - var hslSplitter = /hsla?|\(|\)|\/|,|\s/ig; - var hslRange = [360, 1, 1, 1]; - var hslUnits = { '%': 100, 'deg': 360, 'rad': 2 * Math.PI, 'turn': 1 }; - function parseHSL($hsl) { - var _a = getNumbersFromString($hsl, hslSplitter, hslRange, hslUnits), h = _a[0], s = _a[1], l = _a[2], _b = _a[3], a = _b === void 0 ? 1 : _b; - return hslToRGB({ h: h, s: s, l: l, a: a }); - } - function parseHex($hex) { - var h = $hex.substring(1); - switch (h.length) { - case 3: - case 4: { - var _a = [0, 1, 2].map(function (i) { return parseInt("" + h[i] + h[i], 16); }), r = _a[0], g = _a[1], b = _a[2]; - var a = h.length === 3 ? 1 : (parseInt("" + h[3] + h[3], 16) / 255); - return { r: r, g: g, b: b, a: a }; - } - case 6: - case 8: { - var _b = [0, 2, 4].map(function (i) { return parseInt(h.substring(i, i + 2), 16); }), r = _b[0], g = _b[1], b = _b[2]; - var a = h.length === 6 ? 1 : (parseInt(h.substring(6, 8), 16) / 255); - return { r: r, g: g, b: b, a: a }; - } - } - throw new Error("Unable to parse " + $hex); - } - function getColorByName($color) { - var n = knownColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function getSystemColor($color) { - var n = systemColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - var knownColors = new Map(Object.entries({ - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgrey: 0xa9a9a9, - darkgreen: 0x006400, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - grey: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgrey: 0xd3d3d3, - lightgreen: 0x90ee90, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32, - })); - var systemColors = new Map(Object.entries({ - ActiveBorder: 0x3b99fc, - ActiveCaption: 0x000000, - AppWorkspace: 0xaaaaaa, - Background: 0x6363ce, - ButtonFace: 0xffffff, - ButtonHighlight: 0xe9e9e9, - ButtonShadow: 0x9fa09f, - ButtonText: 0x000000, - CaptionText: 0x000000, - GrayText: 0x7f7f7f, - Highlight: 0xb2d7ff, - HighlightText: 0x000000, - InactiveBorder: 0xffffff, - InactiveCaption: 0xffffff, - InactiveCaptionText: 0x000000, - InfoBackground: 0xfbfcc5, - InfoText: 0x000000, - Menu: 0xf6f6f6, - MenuText: 0xffffff, - Scrollbar: 0xaaaaaa, - ThreeDDarkShadow: 0x000000, - ThreeDFace: 0xc0c0c0, - ThreeDHighlight: 0xffffff, - ThreeDLightShadow: 0xffffff, - ThreeDShadow: 0x000000, - Window: 0xececec, - WindowFrame: 0xaaaaaa, - WindowText: 0x000000, - '-webkit-focus-ring-color': 0xe59700 - }).map(function (_a) { - var key = _a[0], value = _a[1]; - return [key.toLowerCase(), value]; - })); - - function scale(x, inLow, inHigh, outLow, outHigh) { - return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow; - } - function clamp(x, min, max) { - return Math.min(max, Math.max(min, x)); - } - function multiplyMatrices(m1, m2) { - var result = []; - for (var i = 0; i < m1.length; i++) { - result[i] = []; - for (var j = 0; j < m2[0].length; j++) { - var sum = 0; - for (var k = 0; k < m1[0].length; k++) { - sum += m1[i][k] * m2[k][j]; - } - result[i][j] = sum; - } - } - return result; - } - - function getMatches(regex, input, group) { - if (group === void 0) { group = 0; } - var matches = []; - var m; - while (m = regex.exec(input)) { - matches.push(m[group]); - } - return matches; - } - - function createFilterMatrix(config) { - var m = Matrix.identity(); - if (config.sepia !== 0) { - m = multiplyMatrices(m, Matrix.sepia(config.sepia / 100)); - } - if (config.grayscale !== 0) { - m = multiplyMatrices(m, Matrix.grayscale(config.grayscale / 100)); - } - if (config.contrast !== 100) { - m = multiplyMatrices(m, Matrix.contrast(config.contrast / 100)); - } - if (config.brightness !== 100) { - m = multiplyMatrices(m, Matrix.brightness(config.brightness / 100)); - } - if (config.mode === 1) { - m = multiplyMatrices(m, Matrix.invertNHue()); - } - return m; - } - function applyColorMatrix(_a, matrix) { - var r = _a[0], g = _a[1], b = _a[2]; - var rgb = [[r / 255], [g / 255], [b / 255], [1], [1]]; - var result = multiplyMatrices(matrix, rgb); - return [0, 1, 2].map(function (i) { return clamp(Math.round(result[i][0] * 255), 0, 255); }); - } - var Matrix = { - identity: function () { - return [ - [1, 0, 0, 0, 0], - [0, 1, 0, 0, 0], - [0, 0, 1, 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - invertNHue: function () { - return [ - [0.333, -0.667, -0.667, 0, 1], - [-0.667, 0.333, -0.667, 0, 1], - [-0.667, -0.667, 0.333, 0, 1], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - brightness: function (v) { - return [ - [v, 0, 0, 0, 0], - [0, v, 0, 0, 0], - [0, 0, v, 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - contrast: function (v) { - var t = (1 - v) / 2; - return [ - [v, 0, 0, 0, t], - [0, v, 0, 0, t], - [0, 0, v, 0, t], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - sepia: function (v) { - return [ - [(0.393 + 0.607 * (1 - v)), (0.769 - 0.769 * (1 - v)), (0.189 - 0.189 * (1 - v)), 0, 0], - [(0.349 - 0.349 * (1 - v)), (0.686 + 0.314 * (1 - v)), (0.168 - 0.168 * (1 - v)), 0, 0], - [(0.272 - 0.272 * (1 - v)), (0.534 - 0.534 * (1 - v)), (0.131 + 0.869 * (1 - v)), 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - grayscale: function (v) { - return [ - [(0.2126 + 0.7874 * (1 - v)), (0.7152 - 0.7152 * (1 - v)), (0.0722 - 0.0722 * (1 - v)), 0, 0], - [(0.2126 - 0.2126 * (1 - v)), (0.7152 + 0.2848 * (1 - v)), (0.0722 - 0.0722 * (1 - v)), 0, 0], - [(0.2126 - 0.2126 * (1 - v)), (0.7152 - 0.7152 * (1 - v)), (0.0722 + 0.9278 * (1 - v)), 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - }; - - var colorModificationCache = new Map(); - function clearColorModificationCache() { - colorModificationCache.clear(); - } - function modifyColorWithCache(rgb, filter, modifyHSL) { - var fnCache; - if (colorModificationCache.has(modifyHSL)) { - fnCache = colorModificationCache.get(modifyHSL); - } - else { - fnCache = new Map(); - colorModificationCache.set(modifyHSL, fnCache); - } - var id = Object.entries(rgb) - .concat(Object.entries(filter).filter(function (_a) { - var key = _a[0]; - return ['mode', 'brightness', 'contrast', 'grayscale', 'sepia'].indexOf(key) >= 0; - })) - .map(function (_a) { - var key = _a[0], value = _a[1]; - return key + ":" + value; - }) - .join(';'); - if (fnCache.has(id)) { - return fnCache.get(id); - } - var hsl = rgbToHSL(rgb); - var modified = modifyHSL(hsl); - var _a = hslToRGB(modified), r = _a.r, g = _a.g, b = _a.b, a = _a.a; - var matrix = createFilterMatrix(filter); - var _b = applyColorMatrix([r, g, b], matrix), rf = _b[0], gf = _b[1], bf = _b[2]; - var color = (a === 1 ? - rgbToHexString({ r: rf, g: gf, b: bf }) : - rgbToString({ r: rf, g: gf, b: bf, a: a })); - fnCache.set(id, color); - return color; - } - function noopHSL(hsl) { - return hsl; - } - function modifyColor(rgb, theme) { - return modifyColorWithCache(rgb, theme, noopHSL); - } - function modifyLightModeHSL(_a) { - var h = _a.h, s = _a.s, l = _a.l, a = _a.a; - var lMin = 0; - var lMid = 0.4; - var lMax = 0.9; - var sNeutralLim = 0.36; - var lNeutralDark = 0.2; - var lNeutralLight = 0.8; - var sColored = 0.16; - var hColoredL0 = 205; - var hColoredL1 = 40; - var lx = scale(l, 0, 1, lMin, lMax); - var hx = h; - var sx = s; - var isNeutral = l < lNeutralDark || l > lNeutralLight || s < sNeutralLim; - if (isNeutral) { - sx = (l < lMid ? - scale(l, 0, lMid, sColored, 0) : - scale(l, lMid, 1, 0, sColored)); - hx = (l < lMid ? hColoredL0 : hColoredL1); - } - return { h: hx, s: sx, l: lx, a: a }; - } - function modifyBgHSL(_a) { - var h = _a.h, s = _a.s, l = _a.l, a = _a.a; - var lMin = 0.1; - var lMaxS0 = 0.25; - var lMaxS1 = 0.4; - var sNeutralLim = 0.12; - var lNeutralLight = 0.8; - var sColored = 0.05; - var hColored = 205; - var hBlue0 = 200; - var hBlue1 = 280; - var lMax = scale(s, 0, 1, lMaxS0, lMaxS1); - var lx = (l < lMax ? - l : - l < 0.5 ? - lMax : - scale(l, 0.5, 1, lMax, lMin)); - var isNeutral = (l >= lNeutralLight && h > hBlue0 && h < hBlue1) || s < sNeutralLim; - var hx = h; - var sx = s; - if (isNeutral) { - sx = sColored; - hx = hColored; - } - return { h: hx, s: sx, l: lx, a: a }; - } - function modifyBackgroundColor(rgb, filter) { - if (filter.mode === 0) { - return modifyColorWithCache(rgb, filter, modifyLightModeHSL); - } - return modifyColorWithCache(rgb, __assign(__assign({}, filter), { mode: 0 }), modifyBgHSL); - } - function modifyFgHSL(_a) { - var h = _a.h, s = _a.s, l = _a.l, a = _a.a; - var lMax = 0.9; - var lMinS0 = 0.7; - var lMinS1 = 0.6; - var sNeutralLim = 0.24; - var lNeutralDark = 0.2; - var sColored = 0.10; - var hColored = 40; - var hBlue0 = 205; - var hBlue1 = 245; - var hBlueMax = 220; - var lBlueMin = 0.7; - var isBlue = h > hBlue0 && h <= hBlue1; - var lMin = scale(s, 0, 1, isBlue ? scale(h, hBlue0, hBlue1, lMinS0, lBlueMin) : lMinS0, lMinS1); - var lx = (l < 0.5 ? - scale(l, 0, 0.5, lMax, lMin) : - l < lMin ? - lMin : - l); - var hx = h; - var sx = s; - if (isBlue) { - hx = scale(hx, hBlue0, hBlue1, hBlue0, hBlueMax); - } - var isNeutral = l < lNeutralDark || s < sNeutralLim; - if (isNeutral) { - sx = sColored; - hx = hColored; - } - return { h: hx, s: sx, l: lx, a: a }; - } - function modifyForegroundColor(rgb, filter) { - if (filter.mode === 0) { - return modifyColorWithCache(rgb, filter, modifyLightModeHSL); - } - return modifyColorWithCache(rgb, __assign(__assign({}, filter), { mode: 0 }), modifyFgHSL); - } - function modifyBorderHSL(_a) { - var h = _a.h, s = _a.s, l = _a.l, a = _a.a; - var lMinS0 = 0.2; - var lMinS1 = 0.3; - var lMaxS0 = 0.4; - var lMaxS1 = 0.5; - var lMin = scale(s, 0, 1, lMinS0, lMinS1); - var lMax = scale(s, 0, 1, lMaxS0, lMaxS1); - var lx = scale(l, 0, 1, lMax, lMin); - return { h: h, s: s, l: lx, a: a }; - } - function modifyBorderColor(rgb, filter) { - if (filter.mode === 0) { - return modifyColorWithCache(rgb, filter, modifyLightModeHSL); - } - return modifyColorWithCache(rgb, __assign(__assign({}, filter), { mode: 0 }), modifyBorderHSL); - } - function modifyShadowColor(rgb, filter) { - return modifyBackgroundColor(rgb, filter); - } - function modifyGradientColor(rgb, filter) { - return modifyBackgroundColor(rgb, filter); - } - - function getURLHost(url) { - return url.match(/^(.*?\/{2,3})?(.+?)(\/|$)/)[2]; - } - - function createTextStyle(config) { - var lines = []; - lines.push('* {'); - if (config.useFont && config.fontFamily) { - lines.push(" font-family: " + config.fontFamily + " !important;"); - } - if (config.textStroke > 0) { - lines.push(" -webkit-text-stroke: " + config.textStroke + "px !important;"); - lines.push(" text-stroke: " + config.textStroke + "px !important;"); - } - lines.push('}'); - return lines.join('\n'); - } - - var FilterMode; - (function (FilterMode) { - FilterMode[FilterMode["light"] = 0] = "light"; - FilterMode[FilterMode["dark"] = 1] = "dark"; - })(FilterMode || (FilterMode = {})); - function getCSSFilterValue(config) { - var filters = []; - if (config.mode === FilterMode.dark) { - filters.push('invert(100%) hue-rotate(180deg)'); - } - if (config.brightness !== 100) { - filters.push("brightness(" + config.brightness + "%)"); - } - if (config.contrast !== 100) { - filters.push("contrast(" + config.contrast + "%)"); - } - if (config.grayscale !== 0) { - filters.push("grayscale(" + config.grayscale + "%)"); - } - if (config.sepia !== 0) { - filters.push("sepia(" + config.sepia + "%)"); - } - if (filters.length === 0) { - return null; - } - return filters.join(' '); - } - - function toSVGMatrix(matrix) { - return matrix.slice(0, 4).map(function (m) { return m.map(function (m) { return m.toFixed(3); }).join(' '); }).join(' '); - } - function getSVGFilterMatrixValue(config) { - return toSVGMatrix(createFilterMatrix(config)); - } - - var counter = 0; - var resolvers = new Map(); - var rejectors = new Map(); - function bgFetch(request) { - return new Promise(function (resolve, reject) { - var id = ++counter; - resolvers.set(id, resolve); - rejectors.set(id, reject); - chrome.runtime.sendMessage({ type: 'fetch', data: request, id: id }); - }); - } - chrome.runtime.onMessage.addListener(function (_a) { - var type = _a.type, data = _a.data, error = _a.error, id = _a.id; - if (type === 'fetch-response') { - var resolve = resolvers.get(id); - var reject = rejectors.get(id); - resolvers.delete(id); - rejectors.delete(id); - if (error) { - reject && reject(error); - } - else { - resolve && resolve(data); - } - } - }); - - function getImageDetails(url) { - return __awaiter(this, void 0, void 0, function () { - var dataURL, image, info; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!url.startsWith('data:')) return [3, 1]; - dataURL = url; - return [3, 3]; - case 1: return [4, getImageDataURL(url)]; - case 2: - dataURL = _a.sent(); - _a.label = 3; - case 3: return [4, urlToImage(dataURL)]; - case 4: - image = _a.sent(); - info = analyzeImage(image); - return [2, __assign({ src: url, dataURL: dataURL, width: image.naturalWidth, height: image.naturalHeight }, info)]; - } - }); - }); - } - function getImageDataURL(url) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!(getURLHost(url) === location.host)) return [3, 2]; - return [4, loadAsDataURL(url)]; - case 1: return [2, _a.sent()]; - case 2: return [4, bgFetch({ url: url, responseType: 'data-url' })]; - case 3: return [2, _a.sent()]; - } - }); - }); - } - function urlToImage(url) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2, new Promise(function (resolve, reject) { - var image = new Image(); - image.onload = function () { return resolve(image); }; - image.onerror = function () { return reject("Unable to load image " + url); }; - image.src = url; - })]; - }); - }); - } - function analyzeImage(image) { - var MAX_ANALIZE_PIXELS_COUNT = 32 * 32; - var naturalPixelsCount = image.naturalWidth * image.naturalHeight; - var k = Math.min(1, Math.sqrt(MAX_ANALIZE_PIXELS_COUNT / naturalPixelsCount)); - var width = Math.max(1, Math.round(image.naturalWidth * k)); - var height = Math.max(1, Math.round(image.naturalHeight * k)); - var canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - var context = canvas.getContext('2d'); - context.imageSmoothingEnabled = false; - context.drawImage(image, 0, 0, width, height); - var imageData = context.getImageData(0, 0, width, height); - var d = imageData.data; - var TRANSPARENT_ALPHA_THRESHOLD = 0.05; - var DARK_LIGHTNESS_THRESHOLD = 0.4; - var LIGHT_LIGHTNESS_THRESHOLD = 0.7; - var transparentPixelsCount = 0; - var darkPixelsCount = 0; - var lightPixelsCount = 0; - var i, x, y; - var r, g, b, a; - var l, min, max; - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - i = 4 * (y * width + x); - r = d[i + 0] / 255; - g = d[i + 1] / 255; - b = d[i + 2] / 255; - a = d[i + 3] / 255; - if (a < TRANSPARENT_ALPHA_THRESHOLD) { - transparentPixelsCount++; - } - else { - min = Math.min(r, g, b); - max = Math.max(r, g, b); - l = (max + min) / 2; - if (l < DARK_LIGHTNESS_THRESHOLD) { - darkPixelsCount++; - } - if (l > LIGHT_LIGHTNESS_THRESHOLD) { - lightPixelsCount++; - } - } - } - } - var totalPixelsCount = width * height; - var opaquePixelsCount = totalPixelsCount - transparentPixelsCount; - var DARK_IMAGE_THRESHOLD = 0.7; - var LIGHT_IMAGE_THRESHOLD = 0.7; - var TRANSPARENT_IMAGE_THRESHOLD = 0.1; - var LARGE_IMAGE_PIXELS_COUNT = 800 * 600; - return { - isDark: ((darkPixelsCount / opaquePixelsCount) >= DARK_IMAGE_THRESHOLD), - isLight: ((lightPixelsCount / opaquePixelsCount) >= LIGHT_IMAGE_THRESHOLD), - isTransparent: ((transparentPixelsCount / totalPixelsCount) >= TRANSPARENT_IMAGE_THRESHOLD), - isLarge: (naturalPixelsCount >= LARGE_IMAGE_PIXELS_COUNT), - }; - } - function getFilteredImageDataURL(_a, filter) { - var dataURL = _a.dataURL, width = _a.width, height = _a.height; - var matrix = getSVGFilterMatrixValue(filter); - var svg = [ - "", - '', - '', - "", - '', - '', - "", - '', - ].join(''); - var bytes = new Uint8Array(svg.length); - for (var i = 0; i < svg.length; i++) { - bytes[i] = svg.charCodeAt(i); - } - var blob = new Blob([bytes], { type: 'image/svg+xml' }); - var objectURL = URL.createObjectURL(blob); - return objectURL; - } - - function getModifiableCSSDeclaration(property, value, rule, isCancelled) { - var important = Boolean(rule && rule.style && rule.style.getPropertyPriority(property)); - var sourceValue = value; - if (property.startsWith('--')) { - return null; - } - else if ((property.indexOf('color') >= 0 && property !== '-webkit-print-color-adjust') || - property === 'fill' || - property === 'stroke') { - var modifier = getColorModifier(property, value); - if (modifier) { - return { property: property, value: modifier, important: important, sourceValue: sourceValue }; - } - } - else if (property === 'background-image') { - var modifier = getBgImageModifier(property, value, rule, isCancelled); - if (modifier) { - return { property: property, value: modifier, important: important, sourceValue: sourceValue }; - } - } - else if (property.indexOf('shadow') >= 0) { - var modifier = getShadowModifier(property, value); - if (modifier) { - return { property: property, value: modifier, important: important, sourceValue: sourceValue }; - } - } - return null; - } - function getModifiedUserAgentStyle(filter, isIFrame) { - var lines = []; - if (!isIFrame) { - lines.push('html {'); - lines.push(" background-color: " + modifyBackgroundColor({ r: 255, g: 255, b: 255 }, filter) + " !important;"); - lines.push('}'); - } - lines.push((isIFrame ? '' : 'html, body, ') + "input, textarea, select, button {"); - lines.push(" background-color: " + modifyBackgroundColor({ r: 255, g: 255, b: 255 }, filter) + ";"); - lines.push('}'); - lines.push('html, body, input, textarea, select, button {'); - lines.push(" border-color: " + modifyBorderColor({ r: 76, g: 76, b: 76 }, filter) + ";"); - lines.push(" color: " + modifyForegroundColor({ r: 0, g: 0, b: 0 }, filter) + ";"); - lines.push('}'); - lines.push('a {'); - lines.push(" color: " + modifyForegroundColor({ r: 0, g: 64, b: 255 }, filter) + ";"); - lines.push('}'); - lines.push('table {'); - lines.push(" border-color: " + modifyBorderColor({ r: 128, g: 128, b: 128 }, filter) + ";"); - lines.push('}'); - lines.push('::placeholder {'); - lines.push(" color: " + modifyForegroundColor({ r: 169, g: 169, b: 169 }, filter) + ";"); - lines.push('}'); - ['::selection', '::-moz-selection'].forEach(function (selection) { - lines.push(selection + " {"); - lines.push(" background-color: " + modifyBackgroundColor({ r: 0, g: 96, b: 212 }, filter) + ";"); - lines.push(" color: " + modifyForegroundColor({ r: 255, g: 255, b: 255 }, filter) + ";"); - lines.push('}'); - }); - lines.push('input:-webkit-autofill,'); - lines.push('textarea:-webkit-autofill,'); - lines.push('select:-webkit-autofill {'); - lines.push(" background-color: " + modifyBackgroundColor({ r: 250, g: 255, b: 189 }, filter) + " !important;"); - lines.push(" color: " + modifyForegroundColor({ r: 0, g: 0, b: 0 }, filter) + " !important;"); - lines.push('}'); - if (!isMacOS()) { - lines.push('::-webkit-scrollbar {'); - lines.push(" background-color: " + modifyBackgroundColor({ r: 241, g: 241, b: 241 }, filter) + ";"); - lines.push(" color: " + modifyForegroundColor({ r: 96, g: 96, b: 96 }, filter) + ";"); - lines.push('}'); - lines.push('::-webkit-scrollbar-thumb {'); - lines.push(" background-color: " + modifyBackgroundColor({ r: 193, g: 193, b: 193 }, filter) + ";"); - lines.push('}'); - lines.push('::-webkit-scrollbar-thumb:hover {'); - lines.push(" background-color: " + modifyBackgroundColor({ r: 166, g: 166, b: 166 }, filter) + ";"); - lines.push('}'); - lines.push('::-webkit-scrollbar-thumb:active {'); - lines.push(" background-color: " + modifyBackgroundColor({ r: 96, g: 96, b: 96 }, filter) + ";"); - lines.push('}'); - lines.push('::-webkit-scrollbar-corner {'); - lines.push(" background-color: " + modifyBackgroundColor({ r: 255, g: 255, b: 255 }, filter) + ";"); - lines.push('}'); - lines.push('* {'); - lines.push(" scrollbar-color: " + modifyBackgroundColor({ r: 193, g: 193, b: 193 }, filter) + " " + modifyBackgroundColor({ r: 241, g: 241, b: 241 }, filter) + ";"); - lines.push('}'); - } - return lines.join('\n'); - } - function getModifiedFallbackStyle(filter, _a) { - var strict = _a.strict; - var lines = []; - lines.push("html, body, " + (strict ? 'body *' : 'body > *') + " {"); - lines.push(" background-color: " + modifyBackgroundColor({ r: 255, g: 255, b: 255 }, filter) + " !important;"); - lines.push(" border-color: " + modifyBorderColor({ r: 64, g: 64, b: 64 }, filter) + " !important;"); - lines.push(" color: " + modifyForegroundColor({ r: 0, g: 0, b: 0 }, filter) + " !important;"); - lines.push('}'); - return lines.join('\n'); - } - var unparsableColors = new Set([ - 'inherit', - 'transparent', - 'initial', - 'currentcolor', - 'none', - ]); - var colorParseCache = new Map(); - function parseColorWithCache($color) { - $color = $color.trim(); - if (colorParseCache.has($color)) { - return colorParseCache.get($color); - } - var color = parse($color); - colorParseCache.set($color, color); - return color; - } - function tryParseColor($color) { - try { - return parseColorWithCache($color); - } - catch (err) { - return null; - } - } - function getColorModifier(prop, value) { - if (unparsableColors.has(value.toLowerCase())) { - return value; - } - try { - var rgb_1 = parseColorWithCache(value); - if (prop.indexOf('background') >= 0) { - return function (filter) { return modifyBackgroundColor(rgb_1, filter); }; - } - if (prop.indexOf('border') >= 0 || prop.indexOf('outline') >= 0) { - return function (filter) { return modifyBorderColor(rgb_1, filter); }; - } - return function (filter) { return modifyForegroundColor(rgb_1, filter); }; - } - catch (err) { - logWarn('Color parse error', err); - return null; - } - } - var gradientRegex = /[\-a-z]+gradient\(([^\(\)]*(\(([^\(\)]*(\(.*?\)))*[^\(\)]*\))){0,15}[^\(\)]*\)/g; - var imageDetailsCache = new Map(); - var awaitingForImageLoading = new Map(); - function getBgImageModifier(prop, value, rule, isCancelled) { - var _this = this; - try { - var gradients = getMatches(gradientRegex, value); - var urls = getMatches(cssURLRegex, value); - if (urls.length === 0 && gradients.length === 0) { - return value; - } - var getIndices = function (matches) { - var index = 0; - return matches.map(function (match) { - var valueIndex = value.indexOf(match, index); - index = valueIndex + match.length; - return { match: match, index: valueIndex }; - }); - }; - var matches_1 = getIndices(urls).map(function (i) { return (__assign({ type: 'url' }, i)); }) - .concat(getIndices(gradients).map(function (i) { return (__assign({ type: 'gradient' }, i)); })) - .sort(function (a, b) { return a.index - b.index; }); - var getGradientModifier_1 = function (gradient) { - var match = gradient.match(/^(.*-gradient)\((.*)\)$/); - var type = match[1]; - var content = match[2]; - var partsRegex = /([^\(\),]+(\([^\(\)]*(\([^\(\)]*\)*[^\(\)]*)?\))?[^\(\),]*),?/g; - var colorStopRegex = /^(from|color-stop|to)\(([^\(\)]*?,\s*)?(.*?)\)$/; - var parts = getMatches(partsRegex, content, 1).map(function (part) { - part = part.trim(); - var rgb = tryParseColor(part); - if (rgb) { - return function (filter) { return modifyGradientColor(rgb, filter); }; - } - var space = part.lastIndexOf(' '); - rgb = tryParseColor(part.substring(0, space)); - if (rgb) { - return function (filter) { return modifyGradientColor(rgb, filter) + " " + part.substring(space + 1); }; - } - var colorStopMatch = part.match(colorStopRegex); - if (colorStopMatch) { - rgb = tryParseColor(colorStopMatch[3]); - if (rgb) { - return function (filter) { return colorStopMatch[1] + "(" + (colorStopMatch[2] ? colorStopMatch[2] + ", " : '') + modifyGradientColor(rgb, filter) + ")"; }; - } - } - return function () { return part; }; - }); - return function (filter) { - return type + "(" + parts.map(function (modify) { return modify(filter); }).join(', ') + ")"; - }; - }; - var getURLModifier_1 = function (urlValue) { - var url = getCSSURLValue(urlValue); - if (rule.parentStyleSheet.href) { - var basePath = getCSSBaseBath(rule.parentStyleSheet.href); - url = getAbsoluteURL(basePath, url); - } - else if (rule.parentStyleSheet.ownerNode && rule.parentStyleSheet.ownerNode.baseURI) { - url = getAbsoluteURL(rule.parentStyleSheet.ownerNode.baseURI, url); - } - else { - url = getAbsoluteURL(location.origin, url); - } - var absoluteValue = "url(\"" + url + "\")"; - return function (filter) { return __awaiter(_this, void 0, void 0, function () { - var imageDetails, awaiters_1, err_1, bgImageValue; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!imageDetailsCache.has(url)) return [3, 1]; - imageDetails = imageDetailsCache.get(url); - return [3, 7]; - case 1: - _a.trys.push([1, 6, , 7]); - if (!awaitingForImageLoading.has(url)) return [3, 3]; - awaiters_1 = awaitingForImageLoading.get(url); - return [4, new Promise(function (resolve) { return awaiters_1.push(resolve); })]; - case 2: - imageDetails = _a.sent(); - if (!imageDetails) { - return [2, null]; - } - return [3, 5]; - case 3: - awaitingForImageLoading.set(url, []); - return [4, getImageDetails(url)]; - case 4: - imageDetails = _a.sent(); - imageDetailsCache.set(url, imageDetails); - awaitingForImageLoading.get(url).forEach(function (resolve) { return resolve(imageDetails); }); - awaitingForImageLoading.delete(url); - _a.label = 5; - case 5: - if (isCancelled()) { - return [2, null]; - } - return [3, 7]; - case 6: - err_1 = _a.sent(); - logWarn(err_1); - if (awaitingForImageLoading.has(url)) { - awaitingForImageLoading.get(url).forEach(function (resolve) { return resolve(null); }); - awaitingForImageLoading.delete(url); - } - return [2, absoluteValue]; - case 7: - bgImageValue = getBgImageValue_1(imageDetails, filter) || absoluteValue; - return [2, bgImageValue]; - } - }); - }); }; - }; - var getBgImageValue_1 = function (imageDetails, filter) { - var isDark = imageDetails.isDark, isLight = imageDetails.isLight, isTransparent = imageDetails.isTransparent, isLarge = imageDetails.isLarge, width = imageDetails.width; - var result; - if (isDark && isTransparent && filter.mode === 1 && !isLarge && width > 2) { - logInfo("Inverting dark image " + imageDetails.src); - var inverted = getFilteredImageDataURL(imageDetails, __assign(__assign({}, filter), { sepia: clamp(filter.sepia + 10, 0, 100) })); - result = "url(\"" + inverted + "\")"; - } - else if (isLight && !isTransparent && filter.mode === 1) { - if (isLarge) { - result = 'none'; - } - else { - logInfo("Dimming light image " + imageDetails.src); - var dimmed = getFilteredImageDataURL(imageDetails, filter); - result = "url(\"" + dimmed + "\")"; - } - } - else if (filter.mode === 0 && isLight && !isLarge) { - logInfo("Applying filter to image " + imageDetails.src); - var filtered = getFilteredImageDataURL(imageDetails, __assign(__assign({}, filter), { brightness: clamp(filter.brightness - 10, 5, 200), sepia: clamp(filter.sepia + 10, 0, 100) })); - result = "url(\"" + filtered + "\")"; - } - else { - result = null; - } - return result; - }; - var modifiers_1 = []; - var index_1 = 0; - matches_1.forEach(function (_a, i) { - var match = _a.match, type = _a.type, matchStart = _a.index; - var prefixStart = index_1; - var matchEnd = matchStart + match.length; - index_1 = matchEnd; - modifiers_1.push(function () { return value.substring(prefixStart, matchStart); }); - modifiers_1.push(type === 'url' ? getURLModifier_1(match) : getGradientModifier_1(match)); - if (i === matches_1.length - 1) { - modifiers_1.push(function () { return value.substring(matchEnd); }); - } - }); - return function (filter) { - var results = modifiers_1.map(function (modify) { return modify(filter); }); - if (results.some(function (r) { return r instanceof Promise; })) { - return Promise.all(results) - .then(function (asyncResults) { - return asyncResults.join(''); - }); - } - return results.join(''); - }; - } - catch (err) { - logWarn("Unable to parse gradient " + value, err); - return null; - } - } - function getShadowModifier(prop, value) { - try { - var index_2 = 0; - var colorMatches_1 = getMatches(/(^|\s)([a-z]+\(.+?\)|#[0-9a-f]+|[a-z]+)(.*?(inset|outset)?($|,))/ig, value, 2); - var modifiers_2 = colorMatches_1.map(function (match, i) { - var prefixIndex = index_2; - var matchIndex = value.indexOf(match, index_2); - var matchEnd = matchIndex + match.length; - index_2 = matchEnd; - var rgb = tryParseColor(match); - if (!rgb) { - return function () { return value.substring(prefixIndex, matchEnd); }; - } - return function (filter) { return "" + value.substring(prefixIndex, matchIndex) + modifyShadowColor(rgb, filter) + (i === colorMatches_1.length - 1 ? value.substring(matchEnd) : ''); }; - }); - return function (filter) { return modifiers_2.map(function (modify) { return modify(filter); }).join(''); }; - } - catch (err) { - logWarn("Unable to parse shadow " + value, err); - return null; - } - } - function cleanModificationCache() { - colorParseCache.clear(); - clearColorModificationCache(); - imageDetailsCache.clear(); - awaitingForImageLoading.clear(); - } - - var overrides = { - 'background-color': { - customProp: '--darkreader-inline-bgcolor', - cssProp: 'background-color', - dataAttr: 'data-darkreader-inline-bgcolor', - store: new WeakSet(), - }, - 'background-image': { - customProp: '--darkreader-inline-bgimage', - cssProp: 'background-image', - dataAttr: 'data-darkreader-inline-bgimage', - store: new WeakSet(), - }, - 'border-color': { - customProp: '--darkreader-inline-border', - cssProp: 'border-color', - dataAttr: 'data-darkreader-inline-border', - store: new WeakSet(), - }, - 'border-bottom-color': { - customProp: '--darkreader-inline-border-bottom', - cssProp: 'border-bottom-color', - dataAttr: 'data-darkreader-inline-border-bottom', - store: new WeakSet(), - }, - 'border-left-color': { - customProp: '--darkreader-inline-border-left', - cssProp: 'border-left-color', - dataAttr: 'data-darkreader-inline-border-left', - store: new WeakSet(), - }, - 'border-right-color': { - customProp: '--darkreader-inline-border-right', - cssProp: 'border-right-color', - dataAttr: 'data-darkreader-inline-border-right', - store: new WeakSet(), - }, - 'border-top-color': { - customProp: '--darkreader-inline-border-top', - cssProp: 'border-top-color', - dataAttr: 'data-darkreader-inline-border-top', - store: new WeakSet(), - }, - 'box-shadow': { - customProp: '--darkreader-inline-boxshadow', - cssProp: 'box-shadow', - dataAttr: 'data-darkreader-inline-boxshadow', - store: new WeakSet(), - }, - 'color': { - customProp: '--darkreader-inline-color', - cssProp: 'color', - dataAttr: 'data-darkreader-inline-color', - store: new WeakSet(), - }, - 'fill': { - customProp: '--darkreader-inline-fill', - cssProp: 'fill', - dataAttr: 'data-darkreader-inline-fill', - store: new WeakSet(), - }, - 'stroke': { - customProp: '--darkreader-inline-stroke', - cssProp: 'stroke', - dataAttr: 'data-darkreader-inline-stroke', - store: new WeakSet(), - }, - 'outline-color': { - customProp: '--darkreader-inline-outline', - cssProp: 'outline-color', - dataAttr: 'data-darkreader-inline-outline', - store: new WeakSet(), - }, - }; - var overridesList = Object.values(overrides); - var INLINE_STYLE_ATTRS = ['style', 'fill', 'stroke', 'bgcolor', 'color']; - var INLINE_STYLE_SELECTOR = INLINE_STYLE_ATTRS.map(function (attr) { return "[" + attr + "]"; }).join(', '); - function getInlineOverrideStyle() { - return overridesList.map(function (_a) { - var dataAttr = _a.dataAttr, customProp = _a.customProp, cssProp = _a.cssProp; - return [ - "[" + dataAttr + "] {", - " " + cssProp + ": var(" + customProp + ") !important;", - '}', - ].join('\n'); - }).join('\n'); - } - function expand(nodes, selector) { - var results = []; - nodes.forEach(function (n) { - if (n instanceof Element) { - if (n.matches(selector)) { - results.push(n); - } - results.push.apply(results, Array.from(n.querySelectorAll(selector))); - } - }); - return results; - } - var observers = new Map(); - function watchForInlineStyles(elementStyleDidChange, shadowRootDiscovered) { - deepWatchForInlineStyles(document.documentElement, elementStyleDidChange, shadowRootDiscovered); - iterateShadowNodes(document.documentElement, function (node) { - deepWatchForInlineStyles(node.shadowRoot, elementStyleDidChange, shadowRootDiscovered); - }); - } - function deepWatchForInlineStyles(root, elementStyleDidChange, shadowRootDiscovered) { - if (observers.has(root)) { - observers.get(root).disconnect(); - } - var observer = new MutationObserver(function (mutations) { - mutations.forEach(function (m) { - var createdInlineStyles = expand(Array.from(m.addedNodes), INLINE_STYLE_SELECTOR); - if (createdInlineStyles.length > 0) { - createdInlineStyles.forEach(function (el) { return elementStyleDidChange(el); }); - } - if (m.type === 'attributes') { - if (INLINE_STYLE_ATTRS.includes(m.attributeName)) { - elementStyleDidChange(m.target); - } - overridesList - .filter(function (_a) { - var store = _a.store, dataAttr = _a.dataAttr; - return store.has(m.target) && !m.target.hasAttribute(dataAttr); - }) - .forEach(function (_a) { - var dataAttr = _a.dataAttr; - return m.target.setAttribute(dataAttr, ''); - }); - } - }); - mutations.forEach(function (m) { - m.addedNodes.forEach(function (added) { - if (added.isConnected) { - iterateShadowNodes(added, function (n) { - shadowRootDiscovered(n.shadowRoot); - deepWatchForInlineStyles(n.shadowRoot, elementStyleDidChange, shadowRootDiscovered); - }); - } - }); - }); - }); - observer.observe(root, { - childList: true, - subtree: true, - attributes: true, - attributeFilter: INLINE_STYLE_ATTRS.concat(overridesList.map(function (_a) { - var dataAttr = _a.dataAttr; - return dataAttr; - })), - }); - observers.set(root, observer); - } - function stopWatchingForInlineStyles() { - observers.forEach(function (o) { return o.disconnect(); }); - observers.clear(); - } - var inlineStyleCache = new WeakMap(); - var filterProps = ['brightness', 'contrast', 'grayscale', 'sepia', 'mode']; - function getInlineStyleCacheKey(el, theme) { - return INLINE_STYLE_ATTRS - .map(function (attr) { return attr + "=\"" + el.getAttribute(attr) + "\""; }) - .concat(filterProps.map(function (prop) { return prop + "=\"" + theme[prop] + "\""; })) - .join(' '); - } - function overrideInlineStyle(element, theme) { - var cacheKey = getInlineStyleCacheKey(element, theme); - if (cacheKey === inlineStyleCache.get(element)) { - return; - } - var unsetProps = new Set(Object.keys(overrides)); - function setCustomProp(targetCSSProp, modifierCSSProp, cssVal) { - var _a = overrides[targetCSSProp], customProp = _a.customProp, dataAttr = _a.dataAttr; - var mod = getModifiableCSSDeclaration(modifierCSSProp, cssVal, null, null); - if (!mod) { - return; - } - var value = mod.value; - if (typeof value === 'function') { - value = value(theme); - } - element.style.setProperty(customProp, value); - if (!element.hasAttribute(dataAttr)) { - element.setAttribute(dataAttr, ''); - } - unsetProps.delete(targetCSSProp); - } - if (element.hasAttribute('bgcolor')) { - var value = element.getAttribute('bgcolor'); - if (value.match(/^[0-9a-f]{3}$/i) || value.match(/^[0-9a-f]{6}$/i)) { - value = "#" + value; - } - setCustomProp('background-color', 'background-color', value); - } - if (element.hasAttribute('color')) { - var value = element.getAttribute('color'); - if (value.match(/^[0-9a-f]{3}$/i) || value.match(/^[0-9a-f]{6}$/i)) { - value = "#" + value; - } - setCustomProp('color', 'color', value); - } - if (element.hasAttribute('fill') && element instanceof SVGElement) { - var SMALL_SVG_LIMIT = 32; - var value = element.getAttribute('fill'); - var isBg = false; - if (!(element instanceof SVGTextElement)) { - var _a = element.getBoundingClientRect(), width = _a.width, height = _a.height; - isBg = (width > SMALL_SVG_LIMIT || height > SMALL_SVG_LIMIT); - } - setCustomProp('fill', isBg ? 'background-color' : 'color', value); - } - if (element.hasAttribute('stroke')) { - var value = element.getAttribute('stroke'); - setCustomProp('stroke', element instanceof SVGLineElement || element instanceof SVGTextElement ? 'border-color' : 'color', value); - } - element.style && iterateCSSDeclarations(element.style, function (property, value) { - if (property === 'background-image' && value.indexOf('url') >= 0) { - return; - } - if (overrides.hasOwnProperty(property)) { - setCustomProp(property, property, value); - } - }); - if (element.style && element instanceof SVGTextElement && element.style.fill) { - setCustomProp('fill', 'color', element.style.getPropertyValue('fill')); - } - Array.from(unsetProps).forEach(function (cssProp) { - var _a = overrides[cssProp], store = _a.store, dataAttr = _a.dataAttr; - store.delete(element); - element.removeAttribute(dataAttr); - }); - inlineStyleCache.set(element, getInlineStyleCacheKey(element, theme)); - } - - var metaThemeColorName = 'theme-color'; - var metaThemeColorSelector = "meta[name=\"" + metaThemeColorName + "\"]"; - var srcMetaThemeColor = null; - var observer = null; - function changeMetaThemeColor(meta, theme) { - srcMetaThemeColor = srcMetaThemeColor || meta.content; - try { - var color = parse(srcMetaThemeColor); - meta.content = modifyBackgroundColor(color, theme); - } - catch (err) { - logWarn(err); - } - } - function changeMetaThemeColorWhenAvailable(theme) { - var meta = document.querySelector(metaThemeColorSelector); - if (meta) { - changeMetaThemeColor(meta, theme); - } - else { - if (observer) { - observer.disconnect(); - } - observer = new MutationObserver(function (mutations) { - loop: for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) { - var m = mutations_1[_i]; - for (var _a = 0, _b = Array.from(m.addedNodes); _a < _b.length; _a++) { - var node = _b[_a]; - if (node instanceof HTMLMetaElement && node.name === metaThemeColorName) { - observer.disconnect(); - observer = null; - changeMetaThemeColor(node, theme); - break loop; - } - } - } - }); - observer.observe(document.head, { childList: true }); - } - } - function restoreMetaThemeColor() { - if (observer) { - observer.disconnect(); - observer = null; - } - var meta = document.querySelector(metaThemeColorSelector); - if (meta && srcMetaThemeColor) { - meta.content = srcMetaThemeColor; - } - } - - var STYLE_SELECTOR = (function () { - var selectors = [ - 'html /deep/ link[rel*="stylesheet" i]:not([disabled])', - 'html /deep/ style', - ':host /deep/ link[rel*="stylesheet" i]:not([disabled])', - ':host /deep/ style', - ':host link[rel*="stylesheet" i]:not([disabled])', - ':host style', - ]; - if (!isDeepSelectorSupported()) { - selectors = selectors.map(function (s) { return s.replace('/deep/ ', ''); }); - } - if (!isHostSelectorSupported()) { - selectors = selectors.filter(function (s) { return s.startsWith(':host'); }); - } - return selectors.join(', '); - })(); - function shouldManageStyle(element) { - return (((element instanceof HTMLStyleElement) || - (element instanceof SVGStyleElement) || - (element instanceof HTMLLinkElement && - element.rel && - element.rel.toLowerCase().includes('stylesheet') && - !element.disabled)) && - !element.classList.contains('darkreader') && - element.media !== 'print'); - } - var asyncQueue = createAsyncTasksQueue(); - function manageStyle(element, _a) { - var update = _a.update, loadingStart = _a.loadingStart, loadingEnd = _a.loadingEnd; - var prevStyles = []; - var next = element; - while ((next = next.nextElementSibling) && next.matches('.darkreader')) { - prevStyles.push(next); - } - var corsCopy = prevStyles.find(function (el) { return el.matches('.darkreader--cors'); }) || null; - var syncStyle = prevStyles.find(function (el) { return el.matches('.darkreader--sync'); }) || null; - var corsCopyPositionWatcher = null; - var syncStylePositionWatcher = null; - var cancelAsyncOperations = false; - function isCancelled() { - return cancelAsyncOperations; - } - var observer = new MutationObserver(function () { - update(); - }); - var observerOptions = { attributes: true, childList: true, characterData: true }; - function containsCSSImport() { - return element instanceof HTMLStyleElement && element.textContent.trim().match(cssImportRegex); - } - function getRulesSync() { - if (corsCopy) { - return corsCopy.sheet.cssRules; - } - if (element.sheet == null) { - return null; - } - if (element instanceof HTMLLinkElement) { - try { - return element.sheet.cssRules; - } - catch (err) { - logWarn(err); - return null; - } - } - if (containsCSSImport()) { - return null; - } - return safeGetSheetRules(); - } - function insertStyle() { - if (corsCopy) { - if (element.nextSibling !== corsCopy) { - element.parentNode.insertBefore(corsCopy, element.nextSibling); - } - if (corsCopy.nextSibling !== syncStyle) { - element.parentNode.insertBefore(syncStyle, corsCopy.nextSibling); - } - } - else if (element.nextSibling !== syncStyle) { - element.parentNode.insertBefore(syncStyle, element.nextSibling); - } - } - function createSyncStyle() { - syncStyle = element instanceof SVGStyleElement ? - document.createElementNS('http://www.w3.org/2000/svg', 'style') : - document.createElement('style'); - syncStyle.classList.add('darkreader'); - syncStyle.classList.add('darkreader--sync'); - syncStyle.media = 'screen'; - } - var isLoadingRules = false; - var wasLoadingError = false; - function getRulesAsync() { - return __awaiter(this, void 0, void 0, function () { - var cssText, cssBasePath, err_1, fullCSSText, err_2; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!(element instanceof HTMLLinkElement)) return [3, 6]; - if (!(element.sheet == null)) return [3, 4]; - _a.label = 1; - case 1: - _a.trys.push([1, 3, , 4]); - return [4, linkLoading(element)]; - case 2: - _a.sent(); - if (cancelAsyncOperations) { - return [2, null]; - } - return [3, 4]; - case 3: - err_1 = _a.sent(); - logWarn(err_1); - wasLoadingError = true; - return [2, null]; - case 4: - try { - if (element.sheet.cssRules != null) { - return [2, element.sheet.cssRules]; - } - } - catch (err) { - logWarn(err); - } - return [4, loadText(element.href)]; - case 5: - cssText = _a.sent(); - cssBasePath = getCSSBaseBath(element.href); - if (cancelAsyncOperations) { - return [2, null]; - } - return [3, 7]; - case 6: - if (containsCSSImport()) { - cssText = element.textContent.trim(); - cssBasePath = getCSSBaseBath(location.href); - } - else { - return [2, null]; - } - _a.label = 7; - case 7: - if (!cssText) return [3, 12]; - _a.label = 8; - case 8: - _a.trys.push([8, 10, , 11]); - return [4, replaceCSSImports(cssText, cssBasePath)]; - case 9: - fullCSSText = _a.sent(); - corsCopy = createCORSCopy(element, fullCSSText); - return [3, 11]; - case 10: - err_2 = _a.sent(); - logWarn(err_2); - return [3, 11]; - case 11: - if (corsCopy) { - corsCopyPositionWatcher = watchForNodePosition(corsCopy, { watchParent: true, watchSibling: true }); - return [2, corsCopy.sheet.cssRules]; - } - _a.label = 12; - case 12: return [2, null]; - } - }); - }); - } - function details() { - var rules = getRulesSync(); - if (!rules) { - if (isLoadingRules || wasLoadingError) { - return null; - } - isLoadingRules = true; - loadingStart(); - getRulesAsync().then(function (results) { - isLoadingRules = false; - loadingEnd(); - if (results) { - update(); - } - }).catch(function (err) { - logWarn(err); - isLoadingRules = false; - loadingEnd(); - }); - return null; - } - var variables = getCSSVariables(rules); - return { variables: variables }; - } - function getFilterKey(filter) { - return ['mode', 'brightness', 'contrast', 'grayscale', 'sepia'].map(function (p) { return p + ":" + filter[p]; }).join(';'); - } - var renderId = 0; - var rulesTextCache = new Map(); - var rulesModCache = new Map(); - var prevFilterKey = null; - var forceRestore = false; - function render(filter, variables) { - var rules = getRulesSync(); - if (!rules) { - return; - } - cancelAsyncOperations = false; - var rulesChanged = (rulesModCache.size === 0); - var notFoundCacheKeys = new Set(rulesModCache.keys()); - var filterKey = getFilterKey(filter); - var filterChanged = (filterKey !== prevFilterKey); - var modRules = []; - iterateCSSRules(rules, function (rule) { - var cssText = rule.cssText; - var textDiffersFromPrev = false; - notFoundCacheKeys.delete(cssText); - if (!rulesTextCache.has(cssText)) { - rulesTextCache.set(cssText, cssText); - textDiffersFromPrev = true; - } - var vars = null; - var varsRule = null; - if (variables.size > 0 || cssText.includes('var(')) { - var cssTextWithVariables = replaceCSSVariables(cssText, variables); - if (rulesTextCache.get(cssText) !== cssTextWithVariables) { - rulesTextCache.set(cssText, cssTextWithVariables); - textDiffersFromPrev = true; - vars = document.createElement('style'); - vars.classList.add('darkreader'); - vars.classList.add('darkreader--vars'); - vars.media = 'screen'; - vars.textContent = cssTextWithVariables; - element.parentNode.insertBefore(vars, element.nextSibling); - varsRule = vars.sheet.cssRules[0]; - } - } - if (textDiffersFromPrev) { - rulesChanged = true; - } - else { - modRules.push(rulesModCache.get(cssText)); - return; - } - var modDecs = []; - var targetRule = varsRule || rule; - targetRule && targetRule.style && iterateCSSDeclarations(targetRule.style, function (property, value) { - var mod = getModifiableCSSDeclaration(property, value, rule, isCancelled); - if (mod) { - modDecs.push(mod); - } - }); - var modRule = null; - if (modDecs.length > 0) { - modRule = { selector: rule.selectorText, declarations: modDecs }; - if (rule.parentRule instanceof CSSMediaRule) { - modRule.media = rule.parentRule.media.mediaText; - } - modRules.push(modRule); - } - rulesModCache.set(cssText, modRule); - removeNode(vars); - }); - notFoundCacheKeys.forEach(function (key) { - rulesTextCache.delete(key); - rulesModCache.delete(key); - }); - prevFilterKey = filterKey; - if (!forceRestore && !rulesChanged && !filterChanged) { - return; - } - renderId++; - forceRestore = false; - function setRule(target, index, declarations) { - var selector = declarations[0].selector; - target.insertRule(selector + " {}", index); - var style = target.cssRules.item(index).style; - declarations.forEach(function (_a) { - var property = _a.property, value = _a.value, important = _a.important, sourceValue = _a.sourceValue; - style.setProperty(property, value == null ? sourceValue : value, important ? 'important' : ''); - }); - } - var readyDeclarations = []; - var asyncDeclarations = new Map(); - var asyncDeclarationCounter = 0; - function buildStyleSheet() { - var groups = []; - readyDeclarations.forEach(function (decl, i) { - var mediaGroup; - var selectorGroup; - var prev = i === 0 ? null : readyDeclarations[i - 1]; - var isSameMedia = prev && prev.media === decl.media; - var isSameMediaAndSelector = prev && isSameMedia && prev.selector === decl.selector; - if (isSameMedia) { - mediaGroup = groups[groups.length - 1]; - } - else { - mediaGroup = []; - groups.push(mediaGroup); - } - if (isSameMediaAndSelector) { - selectorGroup = mediaGroup[mediaGroup.length - 1]; - } - else { - selectorGroup = []; - mediaGroup.push(selectorGroup); - } - selectorGroup.push(decl); - }); - if (!syncStyle) { - createSyncStyle(); - } - syncStylePositionWatcher && syncStylePositionWatcher.stop(); - insertStyle(); - var sheet = syncStyle.sheet; - for (var i = sheet.cssRules.length - 1; i >= 0; i--) { - sheet.deleteRule(i); - } - groups.forEach(function (mediaGroup) { - var media = mediaGroup[0][0].media; - var target; - if (media) { - sheet.insertRule("@media " + media + " {}", sheet.cssRules.length); - target = sheet.cssRules[sheet.cssRules.length - 1]; - } - else { - target = sheet; - } - mediaGroup.forEach(function (selectorGroup) { - var asyncItems = selectorGroup.filter(function (_a) { - var value = _a.value; - return value == null; - }); - if (asyncItems.length > 0) { - asyncItems.forEach(function (_a) { - var asyncKey = _a.asyncKey; - return asyncDeclarations.set(asyncKey, { declarations: selectorGroup, target: target, index: target.cssRules.length }); - }); - } - setRule(target, target.cssRules.length, selectorGroup); - }); - }); - if (syncStylePositionWatcher) { - syncStylePositionWatcher.run(); - } - else { - syncStylePositionWatcher = watchForNodePosition(syncStyle, { onRestore: buildStyleSheet, watchSibling: true, watchParent: true }); - } - } - function rebuildAsyncRule(key) { - var _a = asyncDeclarations.get(key), declarations = _a.declarations, target = _a.target, index = _a.index; - target.deleteRule(index); - setRule(target, index, declarations); - asyncDeclarations.delete(key); - } - modRules.filter(function (r) { return r; }).forEach(function (_a) { - var selector = _a.selector, declarations = _a.declarations, media = _a.media; - declarations.forEach(function (_a) { - var property = _a.property, value = _a.value, important = _a.important, sourceValue = _a.sourceValue; - if (typeof value === 'function') { - var modified = value(filter); - if (modified instanceof Promise) { - var index_1 = readyDeclarations.length; - var asyncKey_1 = asyncDeclarationCounter++; - readyDeclarations.push({ media: media, selector: selector, property: property, value: null, important: important, asyncKey: asyncKey_1, sourceValue: sourceValue }); - var promise = modified; - var currentRenderId_1 = renderId; - promise.then(function (asyncValue) { - if (!asyncValue || cancelAsyncOperations || currentRenderId_1 !== renderId) { - return; - } - readyDeclarations[index_1].value = asyncValue; - asyncQueue.add(function () { - if (cancelAsyncOperations || currentRenderId_1 !== renderId) { - return; - } - rebuildAsyncRule(asyncKey_1); - }); - }); - } - else { - readyDeclarations.push({ media: media, selector: selector, property: property, value: modified, important: important, sourceValue: sourceValue }); - } - } - else { - readyDeclarations.push({ media: media, selector: selector, property: property, value: value, important: important, sourceValue: sourceValue }); - } - }); - }); - buildStyleSheet(); - } - var rulesChangeKey = null; - var rulesCheckFrameId = null; - function safeGetSheetRules() { - try { - if (element.sheet == null) { - return null; - } - return element.sheet.cssRules; - } - catch (err) { - logWarn(err); - return null; - } - } - function updateRulesChangeKey() { - var rules = safeGetSheetRules(); - if (rules) { - rulesChangeKey = rules.length; - } - } - function didRulesKeyChange() { - var rules = safeGetSheetRules(); - return rules && rules.length !== rulesChangeKey; - } - function subscribeToSheetChanges() { - updateRulesChangeKey(); - unsubscribeFromSheetChanges(); - var checkForUpdate = function () { - if (didRulesKeyChange()) { - updateRulesChangeKey(); - update(); - } - rulesCheckFrameId = requestAnimationFrame(checkForUpdate); - }; - checkForUpdate(); - } - function unsubscribeFromSheetChanges() { - cancelAnimationFrame(rulesCheckFrameId); - } - function pause() { - observer.disconnect(); - cancelAsyncOperations = true; - corsCopyPositionWatcher && corsCopyPositionWatcher.stop(); - syncStylePositionWatcher && syncStylePositionWatcher.stop(); - unsubscribeFromSheetChanges(); - } - function destroy() { - pause(); - removeNode(corsCopy); - removeNode(syncStyle); - } - function watch() { - observer.observe(element, observerOptions); - if (element instanceof HTMLStyleElement) { - subscribeToSheetChanges(); - } - } - var maxMoveCount = 10; - var moveCount = 0; - function restore() { - if (!syncStyle) { - return; - } - moveCount++; - if (moveCount > maxMoveCount) { - logWarn('Style sheet was moved multiple times', element); - return; - } - logWarn('Restore style', syncStyle, element); - var shouldRestore = syncStyle.sheet == null || syncStyle.sheet.cssRules.length > 0; - insertStyle(); - if (shouldRestore) { - forceRestore = true; - updateRulesChangeKey(); - update(); - } - } - return { - details: details, - render: render, - pause: pause, - destroy: destroy, - watch: watch, - restore: restore, - }; - } - function linkLoading(link) { - return new Promise(function (resolve, reject) { - var cleanUp = function () { - link.removeEventListener('load', onLoad); - link.removeEventListener('error', onError); - }; - var onLoad = function () { - cleanUp(); - resolve(); - }; - var onError = function () { - cleanUp(); - reject("Link loading failed " + link.href); - }; - link.addEventListener('load', onLoad); - link.addEventListener('error', onError); - }); - } - function getCSSImportURL(importDeclaration) { - return getCSSURLValue(importDeclaration.substring(8).replace(/;$/, '')); - } - function loadText(url) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!url.startsWith('data:')) return [3, 3]; - return [4, fetch(url)]; - case 1: return [4, (_a.sent()).text()]; - case 2: return [2, _a.sent()]; - case 3: return [4, bgFetch({ url: url, responseType: 'text', mimeType: 'text/css' })]; - case 4: return [2, _a.sent()]; - } - }); - }); - } - function replaceCSSImports(cssText, basePath) { - return __awaiter(this, void 0, void 0, function () { - var importMatches, _i, importMatches_1, match, importURL, absoluteURL, importedCSS, err_3; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - cssText = removeCSSComments(cssText); - cssText = replaceCSSFontFace(cssText); - cssText = replaceCSSRelativeURLsWithAbsolute(cssText, basePath); - importMatches = getMatches(cssImportRegex, cssText); - _i = 0, importMatches_1 = importMatches; - _a.label = 1; - case 1: - if (!(_i < importMatches_1.length)) return [3, 8]; - match = importMatches_1[_i]; - importURL = getCSSImportURL(match); - absoluteURL = getAbsoluteURL(basePath, importURL); - importedCSS = void 0; - _a.label = 2; - case 2: - _a.trys.push([2, 5, , 6]); - return [4, loadText(absoluteURL)]; - case 3: - importedCSS = _a.sent(); - return [4, replaceCSSImports(importedCSS, getCSSBaseBath(absoluteURL))]; - case 4: - importedCSS = _a.sent(); - return [3, 6]; - case 5: - err_3 = _a.sent(); - logWarn(err_3); - importedCSS = ''; - return [3, 6]; - case 6: - cssText = cssText.split(match).join(importedCSS); - _a.label = 7; - case 7: - _i++; - return [3, 1]; - case 8: - cssText = cssText.trim(); - return [2, cssText]; - } - }); - }); - } - function createCORSCopy(srcElement, cssText) { - if (!cssText) { - return null; - } - var cors = document.createElement('style'); - cors.classList.add('darkreader'); - cors.classList.add('darkreader--cors'); - cors.media = 'screen'; - cors.textContent = cssText; - srcElement.parentNode.insertBefore(cors, srcElement.nextSibling); - cors.sheet.disabled = true; - return cors; - } - - var observer$1 = null; - function getAllManageableStyles(nodes) { - var results = []; - Array.from(nodes).forEach(function (node) { - if (node instanceof Element) { - if (shouldManageStyle(node)) { - results.push(node); - } - } - if (node instanceof Element || node instanceof ShadowRoot) { - results.push.apply(results, Array.from(node.querySelectorAll(STYLE_SELECTOR)).filter(shouldManageStyle)); - } - }); - return results; - } - var undefinedGroups = new Map(); - var elementsDefinitionCallback; - function collectUndefinedElements(root) { - if (!isDefinedSelectorSupported()) { - return; - } - root.querySelectorAll(':not(:defined)') - .forEach(function (el) { - var tag = el.tagName.toLowerCase(); - if (!undefinedGroups.has(tag)) { - undefinedGroups.set(tag, new Set()); - customElementsWhenDefined(tag).then(function () { - if (elementsDefinitionCallback) { - var elements = undefinedGroups.get(tag); - undefinedGroups.delete(tag); - elementsDefinitionCallback(Array.from(elements)); - } - }); - } - undefinedGroups.get(tag).add(el); - }); - } - function customElementsWhenDefined(tag) { - return new Promise(function (resolve) { - if (window.customElements && typeof window.customElements.whenDefined === 'function') { - customElements.whenDefined(tag).then(resolve); - } - else { - var checkIfDefined_1 = function () { - var elements = undefinedGroups.get(tag); - if (elements && elements.size > 0) { - if (elements.values().next().value.matches(':defined')) { - resolve(); - } - else { - requestAnimationFrame(checkIfDefined_1); - } - } - }; - requestAnimationFrame(checkIfDefined_1); - } - }); - } - function watchWhenCustomElementsDefined(callback) { - elementsDefinitionCallback = callback; - } - function unsubscribeFromDefineCustomElements() { - elementsDefinitionCallback = null; - undefinedGroups.clear(); - } - var shadowObservers = new Set(); - var nodesShadowObservers = new WeakMap(); - function unsubscribeFromShadowRootChanges() { - shadowObservers.forEach(function (o) { return o.disconnect(); }); - shadowObservers.clear(); - nodesShadowObservers = new WeakMap(); - } - function watchForStyleChanges(update) { - if (observer$1) { - observer$1.disconnect(); - shadowObservers.forEach(function (o) { return o.disconnect(); }); - shadowObservers.clear(); - nodesShadowObservers = new WeakMap(); - } - function handleMutations(mutations) { - var createdStyles = new Set(); - var updatedStyles = new Set(); - var removedStyles = new Set(); - var movedStyles = new Set(); - var additions = new Set(); - var deletions = new Set(); - var styleUpdates = new Set(); - mutations.forEach(function (m) { - m.addedNodes.forEach(function (n) { return additions.add(n); }); - m.removedNodes.forEach(function (n) { return deletions.add(n); }); - if (m.type === 'attributes' && shouldManageStyle(m.target)) { - styleUpdates.add(m.target); - } - }); - var styleAdditions = getAllManageableStyles(additions); - var styleDeletions = getAllManageableStyles(deletions); - additions.forEach(function (n) { - iterateShadowNodes(n, function (host) { - var shadowStyles = getAllManageableStyles(host.shadowRoot.children); - if (shadowStyles.length > 0) { - styleAdditions.push.apply(styleAdditions, shadowStyles); - } - }); - }); - deletions.forEach(function (n) { - iterateShadowNodes(n, function (host) { - var shadowStyles = getAllManageableStyles(host.shadowRoot.children); - if (shadowStyles.length > 0) { - styleDeletions.push.apply(styleDeletions, shadowStyles); - } - }); - }); - styleDeletions.forEach(function (style) { - if (style.isConnected) { - movedStyles.add(style); - } - else { - removedStyles.add(style); - } - }); - styleUpdates.forEach(function (style) { - if (!removedStyles.has(style)) { - updatedStyles.add(style); - } - }); - styleAdditions.forEach(function (style) { - if (!(removedStyles.has(style) || movedStyles.has(style) || updatedStyles.has(style))) { - createdStyles.add(style); - } - }); - if (createdStyles.size + removedStyles.size + updatedStyles.size > 0) { - update({ - created: Array.from(createdStyles), - updated: Array.from(updatedStyles), - removed: Array.from(removedStyles), - moved: Array.from(movedStyles), - }); - } - additions.forEach(function (n) { - if (n.isConnected) { - iterateShadowNodes(n, subscribeForShadowRootChanges); - if (n instanceof Element) { - collectUndefinedElements(n); - } - } - }); - } - function subscribeForShadowRootChanges(node) { - if (nodesShadowObservers.has(node)) { - return; - } - var shadowObserver = new MutationObserver(handleMutations); - shadowObserver.observe(node.shadowRoot, mutationObserverOptions); - shadowObservers.add(shadowObserver); - nodesShadowObservers.set(node, shadowObserver); - } - var mutationObserverOptions = { childList: true, subtree: true, attributes: true, attributeFilter: ['rel', 'disabled'] }; - observer$1 = new MutationObserver(handleMutations); - observer$1.observe(document.documentElement, mutationObserverOptions); - iterateShadowNodes(document.documentElement, subscribeForShadowRootChanges); - watchWhenCustomElementsDefined(function (hosts) { - var newStyles = getAllManageableStyles(hosts.map(function (h) { return h.shadowRoot; })); - update({ created: newStyles, updated: [], removed: [], moved: [] }); - hosts.forEach(function (h) { return subscribeForShadowRootChanges(h); }); - }); - collectUndefinedElements(document); - } - function stopWatchingForStyleChanges() { - if (observer$1) { - observer$1.disconnect(); - observer$1 = null; - unsubscribeFromShadowRootChanges(); - unsubscribeFromDefineCustomElements(); - } - } - - var styleManagers = new Map(); - var variables = new Map(); - var filter = null; - var fixes = null; - var isIFrame = null; - function createOrUpdateStyle(className, root) { - if (root === void 0) { root = document.head || document; } - var style = root.querySelector("." + className); - if (!style) { - style = document.createElement('style'); - style.classList.add('darkreader'); - style.classList.add(className); - style.media = 'screen'; - } - return style; - } - var stylePositionWatchers = new Map(); - function setupStylePositionWatcher(node, alias) { - stylePositionWatchers.has(alias) && stylePositionWatchers.get(alias).stop(); - stylePositionWatchers.set(alias, watchForNodePosition(node, { watchParent: true, watchSibling: false })); - } - function stopStylePositionWatchers() { - Array.from(stylePositionWatchers.values()).forEach(function (watcher) { return watcher.stop(); }); - stylePositionWatchers.clear(); - } - function createStaticStyleOverrides() { - var fallbackStyle = createOrUpdateStyle('darkreader--fallback'); - document.head.insertBefore(fallbackStyle, document.head.firstChild); - fallbackStyle.textContent = getModifiedFallbackStyle(filter, { strict: true }); - setupStylePositionWatcher(fallbackStyle, 'fallback'); - var userAgentStyle = createOrUpdateStyle('darkreader--user-agent'); - document.head.insertBefore(userAgentStyle, fallbackStyle.nextSibling); - userAgentStyle.textContent = getModifiedUserAgentStyle(filter, isIFrame); - setupStylePositionWatcher(userAgentStyle, 'user-agent'); - var textStyle = createOrUpdateStyle('darkreader--text'); - document.head.insertBefore(textStyle, fallbackStyle.nextSibling); - if (filter.useFont || filter.textStroke > 0) { - textStyle.textContent = createTextStyle(filter); - } - else { - textStyle.textContent = ''; - } - setupStylePositionWatcher(textStyle, 'text'); - var invertStyle = createOrUpdateStyle('darkreader--invert'); - document.head.insertBefore(invertStyle, textStyle.nextSibling); - if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { - invertStyle.textContent = [ - fixes.invert.join(', ') + " {", - " filter: " + getCSSFilterValue(__assign(__assign({}, filter), { contrast: filter.mode === 0 ? filter.contrast : clamp(filter.contrast - 10, 0, 100) })) + " !important;", - '}', - ].join('\n'); - } - else { - invertStyle.textContent = ''; - } - setupStylePositionWatcher(invertStyle, 'invert'); - var inlineStyle = createOrUpdateStyle('darkreader--inline'); - document.head.insertBefore(inlineStyle, invertStyle.nextSibling); - inlineStyle.textContent = getInlineOverrideStyle(); - setupStylePositionWatcher(inlineStyle, 'inline'); - var overrideStyle = createOrUpdateStyle('darkreader--override'); - document.head.appendChild(overrideStyle); - overrideStyle.textContent = fixes && fixes.css ? replaceCSSTemplates(fixes.css) : ''; - setupStylePositionWatcher(overrideStyle, 'override'); - } - var shadowRootsWithOverrides = new Set(); - function createShadowStaticStyleOverrides(root) { - var inlineStyle = createOrUpdateStyle('darkreader--inline', root); - root.insertBefore(inlineStyle, root.firstChild); - inlineStyle.textContent = getInlineOverrideStyle(); - shadowRootsWithOverrides.add(root); - } - function replaceCSSTemplates($cssText) { - return $cssText.replace(/\${(.+?)}/g, function (m0, $color) { - try { - var color = parseColorWithCache($color); - return modifyColor(color, filter); - } - catch (err) { - logWarn(err); - return $color; - } - }); - } - function cleanFallbackStyle() { - var fallback = document.head.querySelector('.darkreader--fallback'); - if (fallback) { - fallback.textContent = ''; - } - } - function createDynamicStyleOverrides() { - cancelRendering(); - updateVariables(getElementCSSVariables(document.documentElement)); - var allStyles = Array.from(document.querySelectorAll(STYLE_SELECTOR)); - iterateShadowNodes(document.documentElement, function (node) { - var shadowStyles = node.shadowRoot.querySelectorAll(STYLE_SELECTOR); - if (shadowStyles.length > 0) { - allStyles.push.apply(allStyles, Array.from(shadowStyles)); - } - }); - var newManagers = Array.from(allStyles) - .filter(function (style) { return !styleManagers.has(style) && shouldManageStyle(style); }) - .map(function (style) { return createManager(style); }); - var newVariables = newManagers - .map(function (manager) { return manager.details(); }) - .filter(function (details) { return details && details.variables.size > 0; }) - .map(function (_a) { - var variables = _a.variables; - return variables; - }); - if (newVariables.length === 0) { - styleManagers.forEach(function (manager) { return manager.render(filter, variables); }); - if (loadingStyles.size === 0) { - cleanFallbackStyle(); - } - } - else { - newVariables.forEach(function (variables) { return updateVariables(variables); }); - throttledRenderAllStyles(function () { - if (loadingStyles.size === 0) { - cleanFallbackStyle(); - } - }); - } - newManagers.forEach(function (manager) { return manager.watch(); }); - var inlineStyleElements = Array.from(document.querySelectorAll(INLINE_STYLE_SELECTOR)); - iterateShadowNodes(document.documentElement, function (node) { - var elements = node.shadowRoot.querySelectorAll(INLINE_STYLE_SELECTOR); - if (elements.length > 0) { - createShadowStaticStyleOverrides(node.shadowRoot); - inlineStyleElements.push.apply(inlineStyleElements, Array.from(elements)); - } - }); - inlineStyleElements.forEach(function (el) { return overrideInlineStyle(el, filter); }); - } - var loadingStylesCounter = 0; - var loadingStyles = new Set(); - function createManager(element) { - if (styleManagers.has(element)) { - return; - } - var loadingStyleId = ++loadingStylesCounter; - function loadingStart() { - if (!isPageLoaded() || !didDocumentShowUp) { - loadingStyles.add(loadingStyleId); - var fallbackStyle = document.querySelector('.darkreader--fallback'); - if (!fallbackStyle.textContent) { - fallbackStyle.textContent = getModifiedFallbackStyle(filter, { strict: false }); - } - } - } - function loadingEnd() { - loadingStyles.delete(loadingStyleId); - if (loadingStyles.size === 0 && isPageLoaded()) { - cleanFallbackStyle(); - } - } - function update() { - var details = manager.details(); - if (!details) { - return; - } - if (details.variables.size === 0) { - manager.render(filter, variables); - } - else { - updateVariables(details.variables); - throttledRenderAllStyles(); - } - } - var manager = manageStyle(element, { update: update, loadingStart: loadingStart, loadingEnd: loadingEnd }); - styleManagers.set(element, manager); - return manager; - } - function updateVariables(newVars) { - if (newVars.size === 0) { - return; - } - newVars.forEach(function (value, key) { return variables.set(key, value); }); - variables.forEach(function (value, key) { return variables.set(key, replaceCSSVariables(value, variables)); }); - } - function removeManager(element) { - var manager = styleManagers.get(element); - if (manager) { - manager.destroy(); - styleManagers.delete(element); - } - } - var throttledRenderAllStyles = throttle(function (callback) { - styleManagers.forEach(function (manager) { return manager.render(filter, variables); }); - callback && callback(); - }); - var cancelRendering = function () { - throttledRenderAllStyles.cancel(); - }; - function isPageLoaded() { - return document.readyState === 'complete' || document.readyState === 'interactive'; - } - function onReadyStateChange() { - if (!isPageLoaded()) { - return; - } - document.removeEventListener('readystatechange', onReadyStateChange); - if (loadingStyles.size === 0) { - cleanFallbackStyle(); - } - } - var documentVisibilityListener = null; - var didDocumentShowUp = !document.hidden; - function watchForDocumentVisibility(callback) { - var alreadyWatching = Boolean(documentVisibilityListener); - documentVisibilityListener = function () { - if (!document.hidden) { - stopWatchingForDocumentVisibility(); - callback(); - didDocumentShowUp = true; - } - }; - if (!alreadyWatching) { - document.addEventListener('visibilitychange', documentVisibilityListener); - } - } - function stopWatchingForDocumentVisibility() { - document.removeEventListener('visibilitychange', documentVisibilityListener); - documentVisibilityListener = null; - } - function createThemeAndWatchForUpdates() { - createStaticStyleOverrides(); - function runDynamicStyle() { - createDynamicStyleOverrides(); - watchForUpdates(); - } - if (document.hidden) { - watchForDocumentVisibility(runDynamicStyle); - } - else { - runDynamicStyle(); - } - changeMetaThemeColorWhenAvailable(filter); - } - function watchForUpdates() { - watchForStyleChanges(function (_a) { - var created = _a.created, updated = _a.updated, removed = _a.removed, moved = _a.moved; - var stylesToRemove = removed; - var stylesToManage = created.concat(updated).concat(moved) - .filter(function (style) { return !styleManagers.has(style); }); - var stylesToRestore = moved - .filter(function (style) { return styleManagers.has(style); }); - stylesToRemove.forEach(function (style) { return removeManager(style); }); - var newManagers = stylesToManage - .map(function (style) { return createManager(style); }); - var newVariables = newManagers - .map(function (manager) { return manager.details(); }) - .filter(function (details) { return details && details.variables.size > 0; }) - .map(function (_a) { - var variables = _a.variables; - return variables; - }); - if (newVariables.length === 0) { - newManagers.forEach(function (manager) { return manager.render(filter, variables); }); - } - else { - newVariables.forEach(function (variables) { return updateVariables(variables); }); - throttledRenderAllStyles(); - } - newManagers.forEach(function (manager) { return manager.watch(); }); - stylesToRestore.forEach(function (style) { return styleManagers.get(style).restore(); }); - }); - watchForInlineStyles(function (element) { - overrideInlineStyle(element, filter); - if (element === document.documentElement) { - var rootVariables = getElementCSSVariables(document.documentElement); - if (rootVariables.size > 0) { - updateVariables(rootVariables); - throttledRenderAllStyles(); - } - } - }, function (root) { - var inlineStyleElements = root.querySelectorAll(INLINE_STYLE_SELECTOR); - if (inlineStyleElements.length > 0) { - createShadowStaticStyleOverrides(root); - inlineStyleElements.forEach(function (el) { return overrideInlineStyle(el, filter); }); - } - }); - document.addEventListener('readystatechange', onReadyStateChange); - } - function stopWatchingForUpdates() { - styleManagers.forEach(function (manager) { return manager.pause(); }); - stopStylePositionWatchers(); - stopWatchingForStyleChanges(); - stopWatchingForInlineStyles(); - document.removeEventListener('readystatechange', onReadyStateChange); - } - function createOrUpdateDynamicTheme(filterConfig, dynamicThemeFixes, iframe) { - filter = filterConfig; - fixes = dynamicThemeFixes; - isIFrame = iframe; - if (document.head) { - createThemeAndWatchForUpdates(); - } - else { - if (!isFirefox()) { - var fallbackStyle = createOrUpdateStyle('darkreader--fallback'); - document.documentElement.appendChild(fallbackStyle); - fallbackStyle.textContent = getModifiedFallbackStyle(filter, { strict: true }); - } - var headObserver_1 = new MutationObserver(function () { - if (document.head) { - headObserver_1.disconnect(); - createThemeAndWatchForUpdates(); - } - }); - headObserver_1.observe(document, { childList: true, subtree: true }); - } - } - function removeDynamicTheme() { - cleanDynamicThemeCache(); - removeNode(document.querySelector('.darkreader--fallback')); - if (document.head) { - restoreMetaThemeColor(); - removeNode(document.head.querySelector('.darkreader--user-agent')); - removeNode(document.head.querySelector('.darkreader--text')); - removeNode(document.head.querySelector('.darkreader--invert')); - removeNode(document.head.querySelector('.darkreader--inline')); - removeNode(document.head.querySelector('.darkreader--override')); - } - shadowRootsWithOverrides.forEach(function (root) { - removeNode(root.querySelector('.darkreader--inline')); - }); - shadowRootsWithOverrides.clear(); - Array.from(styleManagers.keys()).forEach(function (el) { return removeManager(el); }); - Array.from(document.querySelectorAll('.darkreader')).forEach(removeNode); - } - function cleanDynamicThemeCache() { - stopWatchingForDocumentVisibility(); - cancelRendering(); - stopWatchingForUpdates(); - cleanModificationCache(); - } - - var defaultTheme = { - mode: 1, - brightness: 100, - contrast: 100, - grayscale: 0, - sepia: 0, - useFont: false, - fontFamily: '', - textStroke: 0, - engine: ThemeEngines.dynamicTheme, - stylesheet: '', - }; - var isIFrame$1 = (function () { - try { - return window.self !== window.top; - } - catch (err) { - console.warn(err); - return true; - } - })(); - function enable(themeOptions, fixes) { - if (themeOptions === void 0) { themeOptions = {}; } - if (fixes === void 0) { fixes = null; } - var theme = __assign(__assign({}, defaultTheme), themeOptions); - if (theme.engine !== ThemeEngines.dynamicTheme) { - throw new Error('Theme engine is not supported'); - } - createOrUpdateDynamicTheme(theme, fixes, isIFrame$1); - } - function disable() { - removeDynamicTheme(); - } - var darkScheme = matchMedia('(prefers-color-scheme: dark)'); - var store = { - themeOptions: null, - fixes: null, - }; - function handleColorScheme() { - if (darkScheme.matches) { - enable(store.themeOptions, store.fixes); - } - else { - disable(); - } - } - function auto(themeOptions, fixes) { - if (themeOptions === void 0) { themeOptions = {}; } - if (fixes === void 0) { fixes = null; } - if (themeOptions) { - store = { themeOptions: themeOptions, fixes: fixes }; - handleColorScheme(); - darkScheme.addListener(handleColorScheme); - } - else { - darkScheme.removeListener(handleColorScheme); - disable(); - } - } - var setFetchMethod$1 = setFetchMethod; - - exports.auto = auto; - exports.disable = disable; - exports.enable = enable; - exports.setFetchMethod = setFetchMethod$1; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); diff --git a/Wino.Mail/JS/libs/jodit.min.css b/Wino.Mail/JS/libs/jodit.min.css deleted file mode 100644 index bed4d57f..00000000 --- a/Wino.Mail/JS/libs/jodit.min.css +++ /dev/null @@ -1,5664 +0,0 @@ -.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,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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-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 deleted file mode 100644 index 75b640a5..00000000 --- a/Wino.Mail/JS/libs/jodit.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * 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/libs/linkify-element.min.js b/Wino.Mail/JS/libs/linkify-element.min.js deleted file mode 100644 index 9d639984..00000000 --- a/Wino.Mail/JS/libs/linkify-element.min.js +++ /dev/null @@ -1 +0,0 @@ -var linkifyElement=function(e){"use strict";const t=1,n=3;function r(e,t,n){let r=n[n.length-1];e.replaceChild(r,t);for(let t=n.length-2;t>=0;t--)e.insertBefore(n[t],r),r=n[t]}function i(e,t,n){const r=[];for(let i=0;i=0)return l;let s=l.firstChild;for(;s;){let d,u,f;switch(s.nodeType){case t:o(s,a,c);break;case n:if(d=s.nodeValue,u=e.tokenize(d),0===u.length||1===u.length&&"text"===u[0].t)break;f=i(u,a,c),r(l,s,f),s=f[f.length-1]}s=s.nextSibling}return l}function l(e){return t=>{let{tagName:n,attributes:r,content:i,eventListeners:o}=t;const l=e.createElement(n);for(const e in r)l.setAttribute(e,r[e]);if(o&&l.addEventListener)for(const e in o)l.addEventListener(e,o[e]);return l.appendChild(e.createTextNode(i)),l}}function a(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);try{r=r||document||window&&window.document||global&&global.document}catch(e){}if(!r)throw new Error("Cannot find document implementation. If you are in a non-browser environment like Node.js, pass the document implementation as the third argument to linkifyElement.");return o(t,new e.Options(n,l(r)),r)}return a.helper=o,a.getDefaultRender=l,a.normalize=(t,n)=>new e.Options(t,l(n)),a}(linkify); diff --git a/Wino.Mail/JS/libs/linkify.min.js b/Wino.Mail/JS/libs/linkify.min.js deleted file mode 100644 index 088e0362..00000000 --- a/Wino.Mail/JS/libs/linkify.min.js +++ /dev/null @@ -1 +0,0 @@ -var linkify=function(t){"use strict";const e="aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4vianca6w0s2x0a2z0ure5ba0by2idu3namex3narepublic11d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2ntley5rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0cast4mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dabur3d1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0ardian6cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6logistics9properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3ncaster6d0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2psy3ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2tura4vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9dnavy5lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0america6xi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0a1b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp2w2ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4finity6ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2",n="ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2",i=(t,e)=>{for(const n in e)t[n]=e[n];return t},r="numeric",s="ascii",o="alpha",a="asciinumeric",l="alphanumeric",u="domain",c="emoji",g="scheme",d="slashscheme",h="whitespace";function f(t,e){return t in e||(e[t]=[]),e[t]}function p(t,e,n){e[r]&&(e[a]=!0,e[l]=!0),e[s]&&(e[a]=!0,e[o]=!0),e[a]&&(e[l]=!0),e[o]&&(e[l]=!0),e[l]&&(e[u]=!0),e[c]&&(e[u]=!0);for(const i in e){const e=f(i,n);e.indexOf(t)<0&&e.push(t)}}function m(t){void 0===t&&(t=null),this.j={},this.jr=[],this.jd=null,this.t=t}m.groups={},m.prototype={accepts(){return!!this.t},go(t){const e=this,n=e.j[t];if(n)return n;for(let n=0;n=0&&(n[i]=!0);return n}(a.t,r),n);p(o,t,r)}else n&&p(o,n,r);a.t=o}return s.j[t]=a,a}};const y=(t,e,n,i,r)=>t.ta(e,n,i,r),k=(t,e,n,i,r)=>t.tr(e,n,i,r),E=(t,e,n,i,r)=>t.ts(e,n,i,r),b=(t,e,n,i,r)=>t.tt(e,n,i,r),T="WORD",v="UWORD",R="LOCALHOST",A="TLD",L="UTLD",O="SCHEME",C="SLASH_SCHEME",w="NUM",S="WS",j="NL",N="OPENBRACE",x="CLOSEBRACE",I="OPENBRACKET",H="CLOSEBRACKET",P="OPENPAREN",z="CLOSEPAREN",D="OPENANGLEBRACKET",U="CLOSEANGLEBRACKET",M="FULLWIDTHLEFTPAREN",B="FULLWIDTHRIGHTPAREN",K="LEFTCORNERBRACKET",_="RIGHTCORNERBRACKET",Q="LEFTWHITECORNERBRACKET",F="RIGHTWHITECORNERBRACKET",W="FULLWIDTHLESSTHAN",$="FULLWIDTHGREATERTHAN",G="AMPERSAND",q="APOSTROPHE",Y="ASTERISK",J="AT",X="BACKSLASH",V="BACKTICK",Z="CARET",tt="COLON",et="COMMA",nt="DOLLAR",it="DOT",rt="EQUALS",st="EXCLAMATION",ot="HYPHEN",at="PERCENT",lt="PIPE",ut="PLUS",ct="POUND",gt="QUERY",dt="QUOTE",ht="SEMI",ft="SLASH",pt="TILDE",mt="UNDERSCORE",yt="EMOJI",kt="SYM";var Et=Object.freeze({__proto__:null,WORD:T,UWORD:v,LOCALHOST:R,TLD:A,UTLD:L,SCHEME:O,SLASH_SCHEME:C,NUM:w,WS:S,NL:j,OPENBRACE:N,CLOSEBRACE:x,OPENBRACKET:I,CLOSEBRACKET:H,OPENPAREN:P,CLOSEPAREN:z,OPENANGLEBRACKET:D,CLOSEANGLEBRACKET:U,FULLWIDTHLEFTPAREN:M,FULLWIDTHRIGHTPAREN:B,LEFTCORNERBRACKET:K,RIGHTCORNERBRACKET:_,LEFTWHITECORNERBRACKET:Q,RIGHTWHITECORNERBRACKET:F,FULLWIDTHLESSTHAN:W,FULLWIDTHGREATERTHAN:$,AMPERSAND:G,APOSTROPHE:q,ASTERISK:Y,AT:J,BACKSLASH:X,BACKTICK:V,CARET:Z,COLON:tt,COMMA:et,DOLLAR:nt,DOT:it,EQUALS:rt,EXCLAMATION:st,HYPHEN:ot,PERCENT:at,PIPE:lt,PLUS:ut,POUND:ct,QUERY:gt,QUOTE:dt,SEMI:ht,SLASH:ft,TILDE:pt,UNDERSCORE:mt,EMOJI:yt,SYM:kt});const bt=/[a-z]/,Tt=/\p{L}/u,vt=/\p{Emoji}/u,Rt=/\d/,At=/\s/;var Lt=Object.freeze({__proto__:null,ASCII_LETTER:bt,LETTER:Tt,EMOJI:vt,EMOJI_VARIATION:/\ufe0f/,DIGIT:Rt,SPACE:At});const Ot="\n",Ct="️",wt="‍";let St=null,jt=null;function Nt(t){const e=[],n=t.length;let i=0;for(;i56319||i+1===n||(r=t.charCodeAt(i+1))<56320||r>57343?t[i]:t.slice(i,i+2);e.push(o),i+=o.length}return e}function xt(t,e,n,i,r){let s;const o=e.length;for(let n=0;n=0;)r++;if(r>0){e.push(n.join(""));for(let e=parseInt(t.substring(i,i+r),10);e>0;e--)n.pop();i+=r}else n.push(t[i]),i++}return e}const Ht={defaultProtocol:"http",events:null,format:zt,formatHref:zt,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function Pt(t,e){void 0===e&&(e=null);let n=i({},Ht);t&&(n=i(n,t instanceof Pt?t.o:t));const r=n.ignoreTags,s=[];for(let t=0;tt,check(t){return this.get("validate",t.toString(),t)},get(t,e,n){const i=null!=e;let r=this.o[t];return r?("object"==typeof r?(r=n.t in r?r[n.t]:Ht[t],"function"==typeof r&&i&&(r=r(e,n))):"function"==typeof r&&i&&(r=r(e,n.t,n)),r):r},getObj(t,e,n){let i=this.o[t];return"function"==typeof i&&null!=e&&(i=i(e,n.t,n)),i},render(t){const e=t.render(this);return(this.get("render",null,t)||this.defaultRender)(e,t.t,t)}};var Dt=Object.freeze({__proto__:null,defaults:Ht,Options:Pt,assign:i});function Ut(t,e){this.t="token",this.v=t,this.tk=e}function Mt(t,e){class n extends Ut{constructor(e,n){super(e,n),this.t=t}}for(const t in e)n.prototype[t]=e[t];return n.t=t,n}Ut.prototype={isLink:!1,toString(){return this.v},toHref(t){return this.toString()},toFormattedString(t){const e=this.toString(),n=t.get("truncate",e,this),i=t.get("format",e,this);return n&&i.length>n?i.substring(0,n)+"…":i},toFormattedHref(t){return t.get("formatHref",this.toHref(t.get("defaultProtocol")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(t){return void 0===t&&(t=Ht.defaultProtocol),{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(t),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(t){return{type:this.t,value:this.toFormattedString(t),isLink:this.isLink,href:this.toFormattedHref(t),start:this.startIndex(),end:this.endIndex()}},validate(t){return t.get("validate",this.toString(),this)},render(t){const e=this,n=this.toHref(t.get("defaultProtocol")),r=t.get("formatHref",n,this),s=t.get("tagName",n,e),o=this.toFormattedString(t),a={},l=t.get("className",n,e),u=t.get("target",n,e),c=t.get("rel",n,e),g=t.getObj("attributes",n,e),d=t.getObj("events",n,e);return a.href=r,l&&(a.class=l),u&&(a.target=u),c&&(a.rel=c),g&&i(a,g),{tagName:s,attributes:a,content:o,eventListeners:d}}};const Bt=Mt("email",{isLink:!0,toHref(){return"mailto:"+this.toString()}}),Kt=Mt("text"),_t=Mt("nl"),Qt=Mt("url",{isLink:!0,toHref(t){return void 0===t&&(t=Ht.defaultProtocol),this.hasProtocol()?this.v:`${t}://${this.v}`},hasProtocol(){const t=this.tk;return t.length>=2&&t[0].t!==R&&t[1].t===tt}});var Ft=Object.freeze({__proto__:null,MultiToken:Ut,Base:Ut,createTokenClass:Mt,Email:Bt,Text:Kt,Nl:_t,Url:Qt});const Wt=t=>new m(t);function $t(t,e,n){const i=n[0].s,r=n[n.length-1].e;return new t(e.slice(i,r),n)}const Gt="undefined"!=typeof console&&console&&console.warn||(()=>{}),qt="until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.",Yt={scanner:null,parser:null,tokenQueue:[],pluginQueue:[],customSchemes:[],initialized:!1};function Jt(){Yt.scanner=function(t){void 0===t&&(t=[]);const l={};m.groups=l;const f=new m;null==St&&(St=It(e)),null==jt&&(jt=It(n)),b(f,"'",q),b(f,"{",N),b(f,"}",x),b(f,"[",I),b(f,"]",H),b(f,"(",P),b(f,")",z),b(f,"<",D),b(f,">",U),b(f,"(",M),b(f,")",B),b(f,"「",K),b(f,"」",_),b(f,"『",Q),b(f,"』",F),b(f,"<",W),b(f,">",$),b(f,"&",G),b(f,"*",Y),b(f,"@",J),b(f,"`",V),b(f,"^",Z),b(f,":",tt),b(f,",",et),b(f,"$",nt),b(f,".",it),b(f,"=",rt),b(f,"!",st),b(f,"-",ot),b(f,"%",at),b(f,"|",lt),b(f,"+",ut),b(f,"#",ct),b(f,"?",gt),b(f,'"',dt),b(f,"/",ft),b(f,";",ht),b(f,"~",pt),b(f,"_",mt),b(f,"\\",X);const y=k(f,Rt,w,{[r]:!0});k(y,Rt,y);const Lt=k(f,bt,T,{[s]:!0});k(Lt,bt,Lt);const Nt=k(f,Tt,v,{[o]:!0});k(Nt,bt),k(Nt,Tt,Nt);const Ht=k(f,At,S,{[h]:!0});b(f,Ot,j,{[h]:!0}),b(Ht,Ot),k(Ht,At,Ht);const Pt=k(f,vt,yt,{[c]:!0});k(Pt,vt,Pt),b(Pt,Ct,Pt);const zt=b(Pt,wt);k(zt,vt,Pt);const Dt=[[bt,Lt]],Ut=[[bt,null],[Tt,Nt]];for(let t=0;tt[0]>e[0]?1:-1));for(let e=0;e=0?i[u]=!0:bt.test(n)?Rt.test(n)?i[a]=!0:i[s]=!0:i[r]=!0,E(f,n,n,i)}return E(f,"localhost",R,{ascii:!0}),f.jd=new m(kt),{start:f,tokens:i({groups:l},Et)}}(Yt.customSchemes);for(let t=0;t=0&&d++,r++,c++;if(d<0)r-=c,r0&&(s.push($t(Kt,e,o)),o=[]),r-=d,c-=d;const t=g.t,i=n.slice(r-c,r);s.push($t(t,e,i))}}return o.length>0&&s.push($t(Kt,e,o)),s}(Yt.parser.start,t,function(t,e){const n=Nt(e.replace(/[A-Z]/g,(t=>t.toLowerCase()))),i=n.length,r=[];let s=0,o=0;for(;o=0&&(g+=n[o].length,d++),u+=n[o].length,s+=n[o].length,o++;s-=g,o-=d,u-=g,r.push({t:c.t,v:e.slice(s-u,s),s:s-u,e:s})}return r}(Yt.scanner.start,t))}return t.MultiToken=Ut,t.Options=Pt,t.State=m,t.createTokenClass=Mt,t.find=function(t,e,n){if(void 0===e&&(e=null),void 0===n&&(n=null),e&&"object"==typeof e){if(n)throw Error(`linkifyjs: Invalid link type ${e}; must be a string`);n=e,e=null}const i=new Pt(n),r=Xt(t),s=[];for(let t=0;t - - - - - - - - - - - - -
- - diff --git a/Wino.Mail/MenuFlyouts/AccountSelectorFlyout.cs b/Wino.Mail/MenuFlyouts/AccountSelectorFlyout.cs deleted file mode 100644 index d51a508d..00000000 --- a/Wino.Mail/MenuFlyouts/AccountSelectorFlyout.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Entities.Shared; -using Wino.Core.UWP.Controls; -using Wino.Helpers; - -namespace Wino.MenuFlyouts; - -public partial class AccountSelectorFlyout : MenuFlyout, IDisposable -{ - private readonly IEnumerable _accounts; - private readonly Func _onItemSelection; - - public AccountSelectorFlyout(IEnumerable accounts, Func onItemSelection) - { - _accounts = accounts; - _onItemSelection = onItemSelection; - - foreach (var account in _accounts) - { - var pathData = new WinoFontIcon() { Icon = XamlHelpers.GetProviderIcon(account) }; - var menuItem = new MenuFlyoutItem() { Tag = account.Address, Icon = pathData, Text = $"{account.Name} ({account.Address})", MinHeight = 55 }; - - menuItem.Click += AccountClicked; - Items.Add(menuItem); - } - } - - public void Dispose() - { - foreach (var menuItem in Items) - { - if (menuItem is MenuFlyoutItem flyoutItem) - { - flyoutItem.Click -= AccountClicked; - } - } - } - - private async void AccountClicked(object sender, Windows.UI.Xaml.RoutedEventArgs e) - { - if (sender is MenuFlyoutItem menuItem && menuItem.Tag is string accountAddress) - { - var selectedMenuItem = _accounts.FirstOrDefault(a => a.Address == accountAddress); - - if (selectedMenuItem != null) - { - await _onItemSelection(selectedMenuItem); - } - } - - Dispose(); - Hide(); - } -} diff --git a/Wino.Mail/MenuFlyouts/FilterMenuFlyout.cs b/Wino.Mail/MenuFlyouts/FilterMenuFlyout.cs deleted file mode 100644 index 24979139..00000000 --- a/Wino.Mail/MenuFlyouts/FilterMenuFlyout.cs +++ /dev/null @@ -1,220 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using CommunityToolkit.Mvvm.Input; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Models.Reader; -using Wino.Core.UWP.Controls; -using Wino.Helpers; - -namespace Wino.MenuFlyouts; - -public partial class FilterMenuFlyout : MenuFlyout -{ - public static readonly DependencyProperty SelectedFilterChangedCommandProperty = DependencyProperty.Register(nameof(SelectedFilterChangedCommand), typeof(IRelayCommand), typeof(FilterMenuFlyout), new PropertyMetadata(null)); - public static readonly DependencyProperty FilterOptionsProperty = DependencyProperty.Register(nameof(FilterOptions), typeof(List), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnOptionsChanged))); - public static readonly DependencyProperty SelectedFilterOptionProperty = DependencyProperty.Register(nameof(SelectedFilterOption), typeof(FilterOption), typeof(FilterMenuFlyout), new PropertyMetadata(null, OnSelectedFilterOptionChanged)); - public static readonly DependencyProperty SelectedSortingOptionProperty = DependencyProperty.Register(nameof(SelectedSortingOption), typeof(SortingOption), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnSelectedSortingOptionChanged))); - public static readonly DependencyProperty SortingOptionsProperty = DependencyProperty.Register(nameof(SortingOptions), typeof(List), typeof(FilterMenuFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnOptionsChanged))); - public static readonly DependencyProperty SelectedSortingOptionChangedCommandProperty = DependencyProperty.Register(nameof(SelectedSortingOptionChangedCommand), typeof(IRelayCommand), typeof(FilterMenuFlyout), new PropertyMetadata(null)); - - public IRelayCommand SelectedFilterChangedCommand - { - get { return (IRelayCommand)GetValue(SelectedFilterChangedCommandProperty); } - set { SetValue(SelectedFilterChangedCommandProperty, value); } - } - - public IRelayCommand SelectedSortingOptionChangedCommand - { - get { return (IRelayCommand)GetValue(SelectedSortingOptionChangedCommandProperty); } - set { SetValue(SelectedSortingOptionChangedCommandProperty, value); } - } - - public List FilterOptions - { - get { return (List)GetValue(FilterOptionsProperty); } - set { SetValue(FilterOptionsProperty, value); } - } - - public List SortingOptions - { - get { return (List)GetValue(SortingOptionsProperty); } - set { SetValue(SortingOptionsProperty, value); } - } - - public FilterOption SelectedFilterOption - { - get { return (FilterOption)GetValue(SelectedFilterOptionProperty); } - set { SetValue(SelectedFilterOptionProperty, value); } - } - - public SortingOption SelectedSortingOption - { - get { return (SortingOption)GetValue(SelectedSortingOptionProperty); } - set { SetValue(SelectedSortingOptionProperty, value); } - } - - private static void OnSelectedFilterOptionChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is FilterMenuFlyout bar) - { - bar.SelectFilterOption(bar.SelectedFilterOption); - bar.SelectedFilterChangedCommand?.Execute(bar.SelectedFilterOption); - } - } - - private static void OnSelectedSortingOptionChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is FilterMenuFlyout bar) - { - bar.SelectSortingOption(bar.SelectedSortingOption); - bar.SelectedSortingOptionChangedCommand?.Execute(bar.SelectedSortingOption); - } - } - - private ToggleMenuFlyoutItem CreateFilterToggleButton(FilterOption option) - { - var button = new ToggleMenuFlyoutItem() - { - Text = option.Title, - Tag = option, - Icon = new WinoFontIcon() { Icon = XamlHelpers.GetWinoIconGlyph(option.Type) }, - IsChecked = option == SelectedFilterOption - }; - - button.Click += FilterToggleChecked; - - return button; - } - - private ToggleMenuFlyoutItem CreateSortingToggleButton(SortingOption option) - { - var button = new ToggleMenuFlyoutItem() - { - Text = option.Title, - Tag = option, - Icon = new WinoFontIcon() { Icon = XamlHelpers.GetWinoIconGlyph(option.Type)}, - IsChecked = option == SelectedSortingOption - }; - - button.Click += SortingOptionChecked; - - return button; - } - - private void SortingOptionChecked(object sender, RoutedEventArgs e) - { - if (sender is ToggleMenuFlyoutItem button) - { - button.IsHitTestVisible = false; - - var optionModel = button.Tag as SortingOption; - - SelectSortingOption(optionModel); - } - } - - - - private void FilterToggleChecked(object sender, RoutedEventArgs e) - { - if (sender is ToggleMenuFlyoutItem button) - { - button.IsHitTestVisible = false; - - var optionModel = button.Tag as FilterOption; - - SelectFilterOption(optionModel); - } - } - - private void SelectFilterOption(FilterOption option) - { - SelectedFilterOption = option; - - UncheckOtherFilterOptions(); - } - - private void SelectSortingOption(SortingOption option) - { - SelectedSortingOption = option; - - UncheckOtherSortingOptions(); - } - - private void UnregisterCheckedHandler(ToggleMenuFlyoutItem button) - { - button.Click -= FilterToggleChecked; - } - - private void UncheckOtherFilterOptions() - { - if (Items.Any()) - { - foreach (var item in Items) - { - if (item is ToggleMenuFlyoutItem toggleButton && toggleButton.Tag is FilterOption option && option != SelectedFilterOption) - { - toggleButton.IsChecked = false; - toggleButton.IsHitTestVisible = true; - } - } - } - } - - private void UncheckOtherSortingOptions() - { - if (Items.Any()) - { - foreach (var item in Items) - { - if (item is ToggleMenuFlyoutItem toggleButton && toggleButton.Tag is SortingOption option && option != SelectedSortingOption) - { - toggleButton.IsChecked = false; - toggleButton.IsHitTestVisible = true; - } - } - } - } - - public void Dispose() - { - foreach (var item in Items) - { - if (item is ToggleMenuFlyoutItem toggleButton) - { - UnregisterCheckedHandler(toggleButton); - } - } - } - - private static void OnOptionsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is FilterMenuFlyout bar && bar.SortingOptions != null && bar.FilterOptions != null) - { - bar.Dispose(); - - bar.Items.Clear(); - - if (bar.FilterOptions != null) - { - foreach (var item in bar.FilterOptions) - { - bar.Items.Add(bar.CreateFilterToggleButton(item)); - } - } - - bar.Items.Add(new MenuFlyoutSeparator()); - - // Sorting options. - - if (bar.SortingOptions != null) - { - foreach (var item in bar.SortingOptions) - { - bar.Items.Add(bar.CreateSortingToggleButton(item)); - } - } - } - } -} diff --git a/Wino.Mail/MenuFlyouts/FolderOperationFlyout.cs b/Wino.Mail/MenuFlyouts/FolderOperationFlyout.cs deleted file mode 100644 index dea1ea59..00000000 --- a/Wino.Mail/MenuFlyouts/FolderOperationFlyout.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Models.Folders; - -namespace Wino.MenuFlyouts.Context; - -public partial class FolderOperationFlyout : WinoOperationFlyout -{ - public FolderOperationFlyout(IEnumerable availableActions, TaskCompletionSource completionSource) : base(availableActions, completionSource) - { - if (AvailableActions == null) return; - - foreach (var action in AvailableActions) - { - if (action.Operation == FolderOperation.Seperator) - Items.Add(new MenuFlyoutSeparator()); - else - { - var menuFlyoutItem = new FolderOperationMenuFlyoutItem(action, (c) => MenuItemClicked(c)); - - Items.Add(menuFlyoutItem); - } - } - } -} diff --git a/Wino.Mail/MenuFlyouts/FolderOperationMenuFlyoutItem.cs b/Wino.Mail/MenuFlyouts/FolderOperationMenuFlyoutItem.cs deleted file mode 100644 index f7731c72..00000000 --- a/Wino.Mail/MenuFlyouts/FolderOperationMenuFlyoutItem.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using Wino.Core.Domain.Models.Folders; - -namespace Wino.MenuFlyouts; - -public partial class FolderOperationMenuFlyoutItem : WinoOperationFlyoutItem -{ - public FolderOperationMenuFlyoutItem(FolderOperationMenuItem operationMenuItem, Action clicked) : base(operationMenuItem, clicked) - { - } -} diff --git a/Wino.Mail/MenuFlyouts/MailOperationFlyout.cs b/Wino.Mail/MenuFlyouts/MailOperationFlyout.cs deleted file mode 100644 index 70e742b4..00000000 --- a/Wino.Mail/MenuFlyouts/MailOperationFlyout.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Models.Menus; - -namespace Wino.MenuFlyouts.Context; - -public partial class MailOperationFlyout : WinoOperationFlyout -{ - public MailOperationFlyout(IEnumerable availableActions, TaskCompletionSource completionSource) : base(availableActions, completionSource) - { - if (AvailableActions == null) return; - - foreach (var action in AvailableActions) - { - if (action.Operation == MailOperation.Seperator) - Items.Add(new MenuFlyoutSeparator()); - else - { - var menuFlyoutItem = new MailOperationMenuFlyoutItem(action, (c) => MenuItemClicked(c)); - - Items.Add(menuFlyoutItem); - } - } - } -} diff --git a/Wino.Mail/MenuFlyouts/MailOperationMenuFlyoutItem.cs b/Wino.Mail/MenuFlyouts/MailOperationMenuFlyoutItem.cs deleted file mode 100644 index aebedbc9..00000000 --- a/Wino.Mail/MenuFlyouts/MailOperationMenuFlyoutItem.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using Wino.Core.Domain.Models.Menus; - -namespace Wino.MenuFlyouts.Context; - -public partial class MailOperationMenuFlyoutItem : WinoOperationFlyoutItem -{ - public MailOperationMenuFlyoutItem(MailOperationMenuItem operationMenuItem, Action clicked) : base(operationMenuItem, clicked) - { - } -} diff --git a/Wino.Mail/MenuFlyouts/MoveButtonFlyout.cs b/Wino.Mail/MenuFlyouts/MoveButtonFlyout.cs deleted file mode 100644 index 9eb1d9df..00000000 --- a/Wino.Mail/MenuFlyouts/MoveButtonFlyout.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Windows.Foundation; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Entities.Mail; - -namespace Wino.MenuFlyouts; - -public class MoveButtonMenuItemClickedEventArgs -{ - public Guid ClickedFolderId { get; set; } -} - -public partial class MoveButtonFlyout : MenuFlyout -{ - public event TypedEventHandler MenuItemClick; - public static readonly DependencyProperty FoldersProperty = DependencyProperty.Register(nameof(Folders), typeof(List), typeof(MoveButtonFlyout), new PropertyMetadata(null, new PropertyChangedCallback(OnFoldersChanged))); - - public List Folders - { - get { return (List)GetValue(FoldersProperty); } - set { SetValue(FoldersProperty, value); } - } - - private static void OnFoldersChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is MoveButtonFlyout menu) - { - menu.InitializeMenu(); - } - - - } - - private void InitializeMenu() - { - Dispose(); - - Items.Clear(); - - if (Folders == null || !Folders.Any()) - return; - - // TODO: Child folders. - - foreach (var item in Folders) - { - // We don't expect this, but it crashes startup. - // Just to be on the safe side. - if (item.FolderName != null) - { - var folderMenuItem = new MenuFlyoutItem() - { - Tag = item, - Text = item.FolderName - }; - - folderMenuItem.Click += MenuItemClicked; - - Items.Add(folderMenuItem); - } - } - } - - private void MenuItemClicked(object sender, RoutedEventArgs e) - { - var clickedFolder = (sender as MenuFlyoutItem).Tag as MailItemFolder; - - MenuItemClick?.Invoke(this, new MoveButtonMenuItemClickedEventArgs() - { - ClickedFolderId = clickedFolder.Id - }); - } - - public void Dispose() - { - foreach (var item in Items) - { - if (item is MenuFlyoutItem menuItem) - { - menuItem.Click -= MenuItemClicked; - } - } - } -} diff --git a/Wino.Mail/MenuFlyouts/WinoOperationFlyout.cs b/Wino.Mail/MenuFlyouts/WinoOperationFlyout.cs deleted file mode 100644 index e0786f43..00000000 --- a/Wino.Mail/MenuFlyouts/WinoOperationFlyout.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Windows.UI.Xaml.Controls; - -namespace Wino.MenuFlyouts; - -public partial class WinoOperationFlyout : MenuFlyout, IDisposable where TActionType : class -{ - public TActionType ClickedOperation { get; set; } - - protected readonly IEnumerable AvailableActions; - - private readonly TaskCompletionSource _completionSource; - - public WinoOperationFlyout(IEnumerable availableActions, TaskCompletionSource completionSource) - { - _completionSource = completionSource; - - AvailableActions = availableActions; - - Closing += FlyoutClosing; - } - - private void FlyoutClosing(Windows.UI.Xaml.Controls.Primitives.FlyoutBase sender, Windows.UI.Xaml.Controls.Primitives.FlyoutBaseClosingEventArgs args) - { - Closing -= FlyoutClosing; - - _completionSource.TrySetResult(ClickedOperation); - } - - protected void MenuItemClicked(TActionType operation) - { - ClickedOperation = operation; - - Hide(); - } - - public void Dispose() - { - foreach (var item in Items) - { - if (item is IDisposable disposableItem) - { - disposableItem.Dispose(); - } - } - } -} diff --git a/Wino.Mail/MenuFlyouts/WinoOperationFlyoutItem.cs b/Wino.Mail/MenuFlyouts/WinoOperationFlyoutItem.cs deleted file mode 100644 index ec7a2223..00000000 --- a/Wino.Mail/MenuFlyouts/WinoOperationFlyoutItem.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Interfaces; -using Wino.Core.Domain.Models.Folders; -using Wino.Core.Domain.Models.Menus; -using Wino.Core.UWP.Controls; -using Wino.Helpers; - -namespace Wino.MenuFlyouts; - -public partial class WinoOperationFlyoutItem : MenuFlyoutItem, IDisposable where TOperationMenuItem : IMenuOperation -{ - public TOperationMenuItem Operation { get; set; } - Action Clicked { get; set; } - - public WinoOperationFlyoutItem(TOperationMenuItem operationMenuItem, Action clicked) - { - Operation = operationMenuItem; - IsEnabled = operationMenuItem.IsEnabled; - - if (Operation is FolderOperationMenuItem folderOperationMenuItem) - { - var internalOperation = folderOperationMenuItem.Operation; - - Icon = new WinoFontIcon() { Icon = XamlHelpers.GetPathGeometry(internalOperation) }; - Text = XamlHelpers.GetOperationString(internalOperation); - } - else if (Operation is MailOperationMenuItem mailOperationMenuItem) - { - var internalOperation = mailOperationMenuItem.Operation; - - Icon = new WinoFontIcon() { Icon = XamlHelpers.GetWinoIconGlyph(internalOperation) }; - Text = XamlHelpers.GetOperationString(internalOperation); - } - - Clicked = clicked; - Click += MenuClicked; - } - - private void MenuClicked(object sender, Windows.UI.Xaml.RoutedEventArgs e) - { - Clicked(Operation); - } - - public void Dispose() - { - Click -= MenuClicked; - } -} diff --git a/Wino.Mail/Package.appxmanifest b/Wino.Mail/Package.appxmanifest deleted file mode 100644 index 2f57c530..00000000 --- a/Wino.Mail/Package.appxmanifest +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - Wino Mail - Burak KÖSE - Assets\StoreLogo.png - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Google Auth Protocol - - - - - - - EML\eml.png - - .eml - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Properties/launchSettings.json b/Wino.Mail/Properties/launchSettings.json deleted file mode 100644 index 70247dd4..00000000 --- a/Wino.Mail/Properties/launchSettings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "profiles": { - "Wino.Mail": { - "commandName": "MsixPackage" - } - } -} diff --git a/Wino.Mail/Selectors/AccountProviderViewModelTemplateSelector.cs b/Wino.Mail/Selectors/AccountProviderViewModelTemplateSelector.cs deleted file mode 100644 index 63df9f5c..00000000 --- a/Wino.Mail/Selectors/AccountProviderViewModelTemplateSelector.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.ViewModels.Data; - -namespace Wino.Selectors; - -public partial class AccountProviderViewModelTemplateSelector : DataTemplateSelector -{ - public DataTemplate RootAccountTemplate { get; set; } - public DataTemplate MergedAccountTemplate { get; set; } - - protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) - { - if (item is MergedAccountProviderDetailViewModel) - return MergedAccountTemplate; - else - return RootAccountTemplate; - } -} diff --git a/Wino.Mail/Selectors/AccountReorderTemplateSelector.cs b/Wino.Mail/Selectors/AccountReorderTemplateSelector.cs deleted file mode 100644 index cd16d721..00000000 --- a/Wino.Mail/Selectors/AccountReorderTemplateSelector.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.ViewModels.Data; - -namespace Wino.Selectors; - -public partial class AccountReorderTemplateSelector : DataTemplateSelector -{ - public DataTemplate MergedAccountReorderTemplate { get; set; } - public DataTemplate RootAccountReorderTemplate { get; set; } - - protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) - { - if (item is MergedAccountProviderDetailViewModel) - { - return MergedAccountReorderTemplate; - } - - return RootAccountReorderTemplate; - } -} diff --git a/Wino.Mail/Selectors/MailItemContainerStyleSelector.cs b/Wino.Mail/Selectors/MailItemContainerStyleSelector.cs deleted file mode 100644 index d5c21506..00000000 --- a/Wino.Mail/Selectors/MailItemContainerStyleSelector.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Mail.ViewModels.Data; - -namespace Wino.Selectors; - -public partial class MailItemContainerStyleSelector : StyleSelector -{ - public Style Thread { get; set; } - - protected override Style SelectStyleCore(object item, DependencyObject container) - { - if (item is ThreadMailItemViewModel) - return Thread; - else - return base.SelectStyleCore(item, container); - } -} diff --git a/Wino.Mail/Selectors/MailItemDisplayModePreviewTemplateSelector.cs b/Wino.Mail/Selectors/MailItemDisplayModePreviewTemplateSelector.cs deleted file mode 100644 index d3cbc365..00000000 --- a/Wino.Mail/Selectors/MailItemDisplayModePreviewTemplateSelector.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Enums; - -namespace Wino.Selectors; - -/// -/// Template selector for previewing mail item display modes in Settings->Personalization page. -/// -public partial class MailItemDisplayModePreviewTemplateSelector : DataTemplateSelector -{ - public DataTemplate CompactTemplate { get; set; } - public DataTemplate MediumTemplate { get; set; } - public DataTemplate SpaciousTemplate { get; set; } - - protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) - { - if (item is MailListDisplayMode mode) - { - switch (mode) - { - case MailListDisplayMode.Spacious: - return SpaciousTemplate; - case MailListDisplayMode.Medium: - return MediumTemplate; - case MailListDisplayMode.Compact: - return CompactTemplate; - } - } - - return base.SelectTemplateCore(item, container); - } -} diff --git a/Wino.Mail/Selectors/MailItemDisplaySelector.cs b/Wino.Mail/Selectors/MailItemDisplaySelector.cs deleted file mode 100644 index 5afb854e..00000000 --- a/Wino.Mail/Selectors/MailItemDisplaySelector.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Mail.ViewModels.Data; - -namespace Wino.Selectors; - -public partial class MailItemDisplaySelector : DataTemplateSelector -{ - public DataTemplate SingleMailItemTemplate { get; set; } - public DataTemplate ThreadMailItemTemplate { get; set; } - - protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) - { - if (item is MailItemViewModel) - return SingleMailItemTemplate; - else if (item is ThreadMailItemViewModel) - return ThreadMailItemTemplate; - - return base.SelectTemplateCore(item, container); - } -} diff --git a/Wino.Mail/Services/DialogService.cs b/Wino.Mail/Services/DialogService.cs deleted file mode 100644 index 546deaa4..00000000 --- a/Wino.Mail/Services/DialogService.cs +++ /dev/null @@ -1,195 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Threading.Tasks; -using CommunityToolkit.Mvvm.Messaging; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain; -using Wino.Core.Domain.Entities.Mail; -using Wino.Core.Domain.Entities.Shared; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Interfaces; -using Wino.Core.Domain.Models.Accounts; -using Wino.Core.Domain.Models.Folders; -using Wino.Core.Domain.Models.Synchronization; -using Wino.Core.UWP.Extensions; -using Wino.Core.UWP.Services; -using Wino.Dialogs; -using Wino.Mail.Dialogs; -using Wino.Messaging.Server; -using Wino.Messaging.UI; - -namespace Wino.Services; - -public class DialogService : DialogServiceBase, IMailDialogService -{ - public DialogService(IThemeService themeService, - IConfigurationService configurationService, - IApplicationResourceManager applicationResourceManager) : base(themeService, configurationService, applicationResourceManager) - { - - } - - public override IAccountCreationDialog GetAccountCreationDialog(AccountCreationDialogResult accountCreationDialogResult) - { - if (accountCreationDialogResult.SpecialImapProviderDetails == null) - { - if (accountCreationDialogResult.ProviderType == MailProviderType.IMAP4) - { - return new NewImapSetupDialog - { - RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme() - }; - } - else - { - return base.GetAccountCreationDialog(accountCreationDialogResult); - } - } - else - { - // Special IMAP provider like iCloud or Yahoo. - - return base.GetAccountCreationDialog(accountCreationDialogResult); - } - } - - - public async Task ShowCreateAccountAliasDialogAsync() - { - var createAccountAliasDialog = new CreateAccountAliasDialog() - { - RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme() - }; - - await HandleDialogPresentationAsync(createAccountAliasDialog); - - return createAccountAliasDialog; - } - - public async Task HandleSystemFolderConfigurationDialogAsync(Guid accountId, IFolderService folderService) - { - try - { - var configurableFolder = await folderService.GetFoldersAsync(accountId); - - var systemFolderConfigurationDialog = new SystemFolderConfigurationDialog(configurableFolder) - { - RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme() - }; - - await HandleDialogPresentationAsync(systemFolderConfigurationDialog); - - var configuration = systemFolderConfigurationDialog.Configuration; - - if (configuration != null) - { - await folderService.UpdateSystemFolderConfigurationAsync(accountId, configuration); - - InfoBarMessage(Translator.SystemFolderConfigSetupSuccess_Title, Translator.SystemFolderConfigSetupSuccess_Message, InfoBarMessageType.Success); - - WeakReferenceMessenger.Default.Send(new AccountFolderConfigurationUpdated(accountId)); - - var options = new MailSynchronizationOptions() - { - AccountId = accountId, - Type = MailSynchronizationType.FullFolders, - }; - - WeakReferenceMessenger.Default.Send(new NewMailSynchronizationRequested(options, SynchronizationSource.Client)); - } - } - catch (Exception ex) - { - InfoBarMessage(Translator.Error_FailedToSetupSystemFolders_Title, ex.Message, InfoBarMessageType.Error); - } - } - - public async Task ShowMoveMailFolderDialogAsync(List availableFolders) - { - var moveDialog = new MoveMailDialog(availableFolders) - { - RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme() - }; - - await HandleDialogPresentationAsync(moveDialog); - - return moveDialog.SelectedFolder; - } - - public async Task PickFolderAsync(Guid accountId, PickFolderReason reason, IFolderService folderService) - { - var allFolders = await folderService.GetFolderStructureForAccountAsync(accountId, true); - - return await ShowMoveMailFolderDialogAsync(allFolders.Folders); - } - - - - public Task ShowHardDeleteConfirmationAsync() - => ShowWinoCustomMessageDialogAsync(Translator.DialogMessage_HardDeleteConfirmationMessage, - Translator.DialogMessage_HardDeleteConfirmationTitle, - Translator.Buttons_Yes, - WinoCustomMessageDialogIcon.Warning, - Translator.Buttons_No); - - public async Task ShowAccountPickerDialogAsync(List availableAccounts) - { - var accountPicker = new AccountPickerDialog(availableAccounts) - { - RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme() - }; - - await HandleDialogPresentationAsync(accountPicker); - - return accountPicker.PickedAccount; - } - - public async Task ShowSignatureEditorDialog(AccountSignature signatureModel = null) - { - SignatureEditorDialog signatureEditorDialog; - if (signatureModel != null) - { - signatureEditorDialog = new SignatureEditorDialog(signatureModel) - { - RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme() - }; - } - else - { - signatureEditorDialog = new SignatureEditorDialog() - { - RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme() - }; - } - - var result = await HandleDialogPresentationAsync(signatureEditorDialog); - - return result == ContentDialogResult.Primary ? signatureEditorDialog.Result : null; - } - - public async Task ShowMessageSourceDialogAsync(string messageSource) - { - var dialog = new MessageSourceDialog() - { - MessageSource = messageSource, - RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme() - }; - - await HandleDialogPresentationAsync(dialog); - - if (dialog.Copied) - InfoBarMessage(Translator.ClipboardTextCopied_Title, string.Format(Translator.ClipboardTextCopied_Message, Translator.MessageSourceDialog_Title), InfoBarMessageType.Information); - } - - public async Task ShowAccountReorderDialogAsync(ObservableCollection availableAccounts) - { - var accountReorderDialog = new AccountReorderDialog(availableAccounts) - { - RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme() - }; - - await HandleDialogPresentationAsync(accountReorderDialog); - } -} diff --git a/Wino.Mail/Services/MailAuthenticatorConfiguration.cs b/Wino.Mail/Services/MailAuthenticatorConfiguration.cs deleted file mode 100644 index 26e12f4f..00000000 --- a/Wino.Mail/Services/MailAuthenticatorConfiguration.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Wino.Core.Domain.Interfaces; - -namespace Wino.Services; - -public class MailAuthenticatorConfiguration : IAuthenticatorConfig -{ - public string OutlookAuthenticatorClientId => "b19c2035-d740-49ff-b297-de6ec561b208"; - - public string[] OutlookScope => new string[] - { - "email", - "mail.readwrite", - "offline_access", - "mail.send", - "Mail.Send.Shared", - "Mail.ReadWrite.Shared", - "User.Read" - }; - - public string GmailAuthenticatorClientId => "973025879644-s7b4ur9p3rlgop6a22u7iuptdc0brnrn.apps.googleusercontent.com"; - - public string[] GmailScope => new string[] - { - "https://mail.google.com/", - "https://www.googleapis.com/auth/userinfo.profile", - "https://www.googleapis.com/auth/gmail.labels", - "https://www.googleapis.com/auth/userinfo.email" - }; - - public string GmailTokenStoreIdentifier => "WinoMailGmailTokenStore"; -} diff --git a/Wino.Mail/Services/NavigationService.cs b/Wino.Mail/Services/NavigationService.cs deleted file mode 100644 index 2211331f..00000000 --- a/Wino.Mail/Services/NavigationService.cs +++ /dev/null @@ -1,162 +0,0 @@ -using System; -using System.Linq; -using CommunityToolkit.Mvvm.Messaging; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Interfaces; -using Wino.Core.Domain.Models.Navigation; -using Wino.Core.UWP.Services; -using Wino.Helpers; -using Wino.Mail.ViewModels.Data; -using Wino.Mail.ViewModels.Messages; -using Wino.Messaging.Client.Mails; -using Wino.Views; -using Wino.Views.Account; -using Wino.Views.Settings; - -namespace Wino.Services; - -public class NavigationService : NavigationServiceBase, INavigationService -{ - private readonly IStatePersistanceService _statePersistanceService; - - private WinoPage[] _renderingPageTypes = new WinoPage[] - { - WinoPage.MailRenderingPage, - WinoPage.ComposePage - }; - - public NavigationService(IStatePersistanceService statePersistanceService) - { - _statePersistanceService = statePersistanceService; - } - - public Type GetPageType(WinoPage winoPage) - { - return winoPage switch - { - WinoPage.None => null, - WinoPage.IdlePage => typeof(IdlePage), - WinoPage.AccountDetailsPage => typeof(AccountDetailsPage), - WinoPage.MergedAccountDetailsPage => typeof(MergedAccountDetailsPage), - WinoPage.AccountManagementPage => typeof(AccountManagementPage), - WinoPage.ManageAccountsPage => typeof(ManageAccountsPage), - WinoPage.SignatureManagementPage => typeof(SignatureManagementPage), - WinoPage.AboutPage => typeof(AboutPage), - WinoPage.PersonalizationPage => typeof(PersonalizationPage), - WinoPage.MessageListPage => typeof(MessageListPage), - WinoPage.ReadComposePanePage => typeof(ReadComposePanePage), - WinoPage.MailRenderingPage => typeof(MailRenderingPage), - WinoPage.ComposePage => typeof(ComposePage), - WinoPage.MailListPage => typeof(MailListPage), - WinoPage.SettingsPage => typeof(SettingsPage), - WinoPage.WelcomePage => typeof(WelcomePage), - WinoPage.SettingOptionsPage => typeof(SettingOptionsPage), - WinoPage.AppPreferencesPage => typeof(AppPreferencesPage), - WinoPage.AliasManagementPage => typeof(AliasManagementPage), - WinoPage.LanguageTimePage => typeof(LanguageTimePage), - WinoPage.EditAccountDetailsPage => typeof(EditAccountDetailsPage), - _ => null, - }; - } - - public Frame GetCoreFrame(NavigationReferenceFrame frameType) - { - if (Window.Current.Content is Frame appFrame) - return WinoVisualTreeHelper.GetChildObject(appFrame.Content as UIElement, frameType.ToString()); - - return null; - } - - public bool Navigate(WinoPage page, - object parameter = null, - NavigationReferenceFrame frame = NavigationReferenceFrame.ShellFrame, - NavigationTransitionType transition = NavigationTransitionType.None) - { - var pageType = GetPageType(page); - Frame shellFrame = GetCoreFrame(NavigationReferenceFrame.ShellFrame); - - _statePersistanceService.IsReadingMail = _renderingPageTypes.Contains(page); - - if (shellFrame != null) - { - var currentFrameType = GetCurrentFrameType(ref shellFrame); - - bool isMailListingPageActive = currentFrameType != null && currentFrameType == typeof(MailListPage); - - // Active page is mail list page and we are refreshing the folder. - if (isMailListingPageActive && currentFrameType == pageType && parameter is NavigateMailFolderEventArgs folderNavigationArgs) - { - // No need for new navigation, just refresh the folder. - WeakReferenceMessenger.Default.Send(new ActiveMailFolderChangedEvent(folderNavigationArgs.BaseFolderMenuItem, folderNavigationArgs.FolderInitLoadAwaitTask)); - WeakReferenceMessenger.Default.Send(new DisposeRenderingFrameRequested()); - - return true; - } - - var transitionInfo = GetNavigationTransitionInfo(transition); - - // This page must be opened in the Frame placed in MailListingPage. - if (isMailListingPageActive && frame == NavigationReferenceFrame.RenderingFrame) - { - var listingFrame = GetCoreFrame(NavigationReferenceFrame.RenderingFrame); - - if (listingFrame == null) return false; - - // Active page is mail list page and we are opening a mail item. - // No navigation needed, just refresh the rendered mail item. - if (listingFrame.Content != null - && listingFrame.Content.GetType() == GetPageType(WinoPage.MailRenderingPage) - && parameter is MailItemViewModel mailItemViewModel - && page != WinoPage.ComposePage) - { - WeakReferenceMessenger.Default.Send(new NewMailItemRenderingRequestedEvent(mailItemViewModel)); - } - else if (listingFrame.Content != null - && listingFrame.Content.GetType() == GetPageType(WinoPage.IdlePage) - && pageType == typeof(IdlePage)) - { - // Idle -> Idle navigation. Ignore. - return true; - } - else - { - listingFrame.Navigate(pageType, parameter, transitionInfo); - } - - return true; - } - - if ((currentFrameType != null && currentFrameType != pageType) || currentFrameType == null) - { - return shellFrame.Navigate(pageType, parameter, transitionInfo); - } - } - - return false; - } - - public void GoBack() => throw new NotImplementedException("GoBack method is not implemented in Wino Mail."); - - // Standalone EML viewer. - //public void NavigateRendering(MimeMessageInformation mimeMessageInformation, NavigationTransitionType transition = NavigationTransitionType.None) - //{ - // if (mimeMessageInformation == null) - // throw new ArgumentException("MimeMessage cannot be null."); - - // Navigate(WinoPage.MailRenderingPage, mimeMessageInformation, NavigationReferenceFrame.RenderingFrame, transition); - //} - - //// Mail item view model clicked handler. - //public void NavigateRendering(IMailItem mailItem, NavigationTransitionType transition = NavigationTransitionType.None) - //{ - // if (mailItem is MailItemViewModel mailItemViewModel) - // Navigate(WinoPage.MailRenderingPage, mailItemViewModel, NavigationReferenceFrame.RenderingFrame, transition); - // else - // throw new ArgumentException("MailItem must be of type MailItemViewModel."); - //} - - //public void NavigateFolder(NavigateMailFolderEventArgs args) - // => Navigate(WinoPage.MailListPage, args, NavigationReferenceFrame.ShellFrame); -} diff --git a/Wino.Mail/Services/ProviderService.cs b/Wino.Mail/Services/ProviderService.cs deleted file mode 100644 index 81083d0f..00000000 --- a/Wino.Mail/Services/ProviderService.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Interfaces; -using Wino.Core.Domain.Models.Accounts; - -namespace Wino.Mail.Services; - -/// -/// Service that is returning available provider details. -/// -public class ProviderService : IProviderService -{ - public IProviderDetail GetProviderDetail(MailProviderType type) - { - var details = GetAvailableProviders(); - - return details.FirstOrDefault(a => a.Type == type); - } - - public List GetAvailableProviders() - { - var providerList = new List - { - new ProviderDetail(MailProviderType.Outlook, SpecialImapProvider.None), - new ProviderDetail(MailProviderType.Gmail, SpecialImapProvider.None), - new ProviderDetail(MailProviderType.IMAP4, SpecialImapProvider.iCloud), - new ProviderDetail(MailProviderType.IMAP4, SpecialImapProvider.Yahoo), - new ProviderDetail(MailProviderType.IMAP4, SpecialImapProvider.None) - }; - - return providerList; - } -} diff --git a/Wino.Mail/Services/SettingsBuilderService.cs b/Wino.Mail/Services/SettingsBuilderService.cs deleted file mode 100644 index 8c2718b5..00000000 --- a/Wino.Mail/Services/SettingsBuilderService.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Collections.Generic; -using Wino.Core.Domain; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Interfaces; -using Wino.Core.Domain.Models.Settings; - -namespace Wino.Services; - -public class SettingsBuilderService : ISettingsBuilderService -{ - public List GetSettingItems() - => new List() - { - new SettingOption(Translator.SettingsManageAccountSettings_Title, Translator.SettingsManageAccountSettings_Description, WinoPage.AccountManagementPage,"F1 M 3.75 5 L 3.75 4.902344 C 3.75 4.225262 3.885091 3.588867 4.155273 2.993164 C 4.425456 2.397461 4.790039 1.878256 5.249023 1.435547 C 5.708008 0.99284 6.238606 0.642904 6.84082 0.385742 C 7.443034 0.128582 8.079427 0 8.75 0 C 9.420572 0 10.056966 0.128582 10.65918 0.385742 C 11.261393 0.642904 11.791992 0.99284 12.250977 1.435547 C 12.709961 1.878256 13.074544 2.397461 13.344727 2.993164 C 13.614908 3.588867 13.75 4.225262 13.75 4.902344 C 13.75 5.397137 13.689778 5.87077 13.569336 6.323242 C 13.448893 6.775717 13.258463 7.213542 12.998047 7.636719 C 12.229817 7.799479 11.510416 8.079428 10.839844 8.476562 C 10.169271 8.873698 9.583333 9.378256 9.082031 9.990234 C 9.042969 9.996745 9.005533 10 8.969727 10 C 8.933919 10 8.899739 10 8.867188 10 L 8.652344 10 C 7.97526 10 7.338867 9.864909 6.743164 9.594727 C 6.147461 9.324545 5.628255 8.959961 5.185547 8.500977 C 4.742838 8.041993 4.392903 7.511395 4.135742 6.90918 C 3.878581 6.306967 3.75 5.670573 3.75 5 Z M 12.5 5 L 12.5 4.921875 C 12.5 4.414062 12.399088 3.937176 12.197266 3.491211 C 11.995442 3.045248 11.722005 2.65625 11.376953 2.324219 C 11.0319 1.992188 10.633138 1.730145 10.180664 1.538086 C 9.728189 1.346029 9.251302 1.25 8.75 1.25 C 8.229166 1.25 7.740885 1.347656 7.285156 1.542969 C 6.829427 1.738281 6.432292 2.005209 6.09375 2.34375 C 5.755208 2.682293 5.488281 3.079428 5.292969 3.535156 C 5.097656 3.990887 5 4.479167 5 5 C 5 5.520834 5.097656 6.009115 5.292969 6.464844 C 5.488281 6.920573 5.755208 7.317709 6.09375 7.65625 C 6.432292 7.994792 6.829427 8.261719 7.285156 8.457031 C 7.740885 8.652344 8.229166 8.75 8.75 8.75 C 9.270833 8.75 9.759114 8.652344 10.214844 8.457031 C 10.670572 8.261719 11.067708 7.994792 11.40625 7.65625 C 11.744791 7.317709 12.011719 6.920573 12.207031 6.464844 C 12.402344 6.009115 12.5 5.520834 12.5 5 Z M 12.148438 19.365234 C 11.777344 19.208984 11.41276 19.010416 11.054688 18.769531 C 11.113281 18.561197 11.170247 18.357748 11.225586 18.15918 C 11.280924 17.960611 11.308594 17.753906 11.308594 17.539062 C 11.308594 17.252604 11.259766 16.977539 11.162109 16.713867 C 11.064453 16.450195 10.930989 16.210938 10.761719 15.996094 C 10.592447 15.78125 10.390625 15.597331 10.15625 15.444336 C 9.921875 15.291342 9.664713 15.182292 9.384766 15.117188 L 8.779297 14.980469 C 8.759766 14.778646 8.75 14.576823 8.75 14.375 C 8.75 14.179688 8.759766 13.977865 8.779297 13.769531 L 9.384766 13.632812 C 9.664713 13.567709 9.921875 13.458659 10.15625 13.305664 C 10.390625 13.15267 10.592447 12.96875 10.761719 12.753906 C 10.930989 12.539062 11.064453 12.299805 11.162109 12.036133 C 11.259766 11.772461 11.308594 11.497396 11.308594 11.210938 C 11.308594 10.996094 11.280924 10.789389 11.225586 10.59082 C 11.170247 10.392253 11.113281 10.188803 11.054688 9.980469 C 11.41276 9.739584 11.777344 9.541016 12.148438 9.384766 C 12.324219 9.560547 12.488606 9.720053 12.641602 9.863281 C 12.794596 10.006511 12.957356 10.131836 13.129883 10.239258 C 13.302408 10.34668 13.487955 10.429688 13.686523 10.488281 C 13.885091 10.546875 14.114583 10.576172 14.375 10.576172 C 14.635416 10.576172 14.866535 10.546875 15.068359 10.488281 C 15.270182 10.429688 15.455729 10.34668 15.625 10.239258 C 15.79427 10.131836 15.955402 10.006511 16.108398 9.863281 C 16.261393 9.720053 16.425781 9.560547 16.601562 9.384766 C 16.972656 9.541016 17.337238 9.739584 17.695312 9.980469 C 17.636719 10.188803 17.579752 10.392253 17.524414 10.59082 C 17.469074 10.789389 17.441406 10.996094 17.441406 11.210938 C 17.441406 11.497396 17.488605 11.772461 17.583008 12.036133 C 17.677408 12.299805 17.810871 12.539062 17.983398 12.753906 C 18.155924 12.96875 18.359375 13.15267 18.59375 13.305664 C 18.828125 13.458659 19.085285 13.567709 19.365234 13.632812 L 19.970703 13.769531 C 19.990234 13.977865 20 14.179688 20 14.375 C 20 14.576823 19.990234 14.778646 19.970703 14.980469 L 19.365234 15.117188 C 19.085285 15.182292 18.828125 15.291342 18.59375 15.444336 C 18.359375 15.597331 18.155924 15.78125 17.983398 15.996094 C 17.810871 16.210938 17.677408 16.450195 17.583008 16.713867 C 17.488605 16.977539 17.441406 17.252604 17.441406 17.539062 C 17.441406 17.753906 17.469074 17.960611 17.524414 18.15918 C 17.579752 18.357748 17.636719 18.561197 17.695312 18.769531 C 17.337238 19.010416 16.972656 19.208984 16.601562 19.365234 C 16.425781 19.189453 16.261393 19.029947 16.108398 18.886719 C 15.955402 18.74349 15.79427 18.618164 15.625 18.510742 C 15.455729 18.40332 15.270182 18.320312 15.068359 18.261719 C 14.866535 18.203125 14.635416 18.173828 14.375 18.173828 C 14.108072 18.173828 13.875324 18.203125 13.676758 18.261719 C 13.478189 18.320312 13.294271 18.40332 13.125 18.510742 C 12.955729 18.618164 12.794596 18.74349 12.641602 18.886719 C 12.488606 19.029947 12.324219 19.189453 12.148438 19.365234 Z M 0 13.75 C 0 13.404948 0.065104 13.081055 0.195312 12.77832 C 0.325521 12.475586 0.504557 12.210287 0.732422 11.982422 C 0.960286 11.754558 1.225586 11.575521 1.52832 11.445312 C 1.831055 11.315104 2.154948 11.25 2.5 11.25 L 8.251953 11.25 C 8.043619 11.660156 7.880859 12.076823 7.763672 12.5 L 2.5 12.5 C 2.324219 12.5 2.159831 12.532553 2.006836 12.597656 C 1.853841 12.662761 1.722005 12.750651 1.611328 12.861328 C 1.500651 12.972006 1.41276 13.103842 1.347656 13.256836 C 1.282552 13.409831 1.25 13.574219 1.25 13.75 C 1.25 14.420573 1.360677 15.008139 1.582031 15.512695 C 1.803385 16.017252 2.102865 16.455078 2.480469 16.826172 C 2.858073 17.197266 3.297526 17.50651 3.798828 17.753906 C 4.30013 18.001303 4.827474 18.198242 5.380859 18.344727 C 5.934244 18.491211 6.50065 18.595377 7.080078 18.657227 C 7.659505 18.719076 8.216146 18.75 8.75 18.75 L 9.072266 18.75 C 9.449869 19.199219 9.866536 19.5931 10.322266 19.931641 C 10.061849 19.964193 9.801432 19.983725 9.541016 19.990234 C 9.280599 19.996744 9.016927 20 8.75 20 C 8.190104 20 7.618814 19.973959 7.036133 19.921875 C 6.45345 19.869791 5.878906 19.775391 5.3125 19.638672 C 4.746094 19.501953 4.197591 19.319662 3.666992 19.091797 C 3.136393 18.863932 2.646484 18.574219 2.197266 18.222656 C 1.474609 17.66276 0.927734 17.005209 0.556641 16.25 C 0.185547 15.494792 0 14.661458 0 13.75 Z M 15.625 14.375 C 15.625 14.205729 15.592447 14.044597 15.527344 13.891602 C 15.462239 13.738607 15.372721 13.605144 15.258789 13.491211 C 15.144855 13.377279 15.011393 13.287761 14.858398 13.222656 C 14.705403 13.157553 14.544271 13.125 14.375 13.125 C 14.199219 13.125 14.036458 13.157553 13.886719 13.222656 C 13.736979 13.287761 13.605143 13.377279 13.491211 13.491211 C 13.377278 13.605144 13.28776 13.736979 13.222656 13.886719 C 13.157551 14.036459 13.124999 14.199219 13.125 14.375 C 13.124999 14.550781 13.157551 14.71517 13.222656 14.868164 C 13.28776 15.021159 13.37565 15.152995 13.486328 15.263672 C 13.597004 15.37435 13.72884 15.46224 13.881836 15.527344 C 14.03483 15.592448 14.199219 15.625 14.375 15.625 C 14.550781 15.625 14.713541 15.592448 14.863281 15.527344 C 15.01302 15.46224 15.144855 15.372722 15.258789 15.258789 C 15.372721 15.144857 15.462239 15.013021 15.527344 14.863281 C 15.592447 14.713542 15.625 14.550781 15.625 14.375 Z "), - new SettingOption(Translator.SettingsAppPreferences_Title, Translator.SettingsAppPreferences_Description, WinoPage.AppPreferencesPage,"F1 M 15.078125 1.25 C 15.566406 1.25 16.033527 1.349285 16.479492 1.547852 C 16.925455 1.74642 17.31608 2.013348 17.651367 2.348633 C 17.986652 2.68392 18.25358 3.074545 18.452148 3.520508 C 18.650715 3.966473 18.75 4.433594 18.75 4.921875 L 18.75 15.078125 C 18.75 15.566406 18.650715 16.033529 18.452148 16.479492 C 18.25358 16.925455 17.986652 17.31608 17.651367 17.651367 C 17.31608 17.986654 16.925455 18.25358 16.479492 18.452148 C 16.033527 18.650717 15.566406 18.75 15.078125 18.75 L 4.921875 18.75 C 4.433594 18.75 3.966471 18.650717 3.520508 18.452148 C 3.074544 18.25358 2.683919 17.986654 2.348633 17.651367 C 2.013346 17.31608 1.746419 16.925455 1.547852 16.479492 C 1.349284 16.033529 1.25 15.566406 1.25 15.078125 L 1.25 4.921875 C 1.25 4.433594 1.349284 3.966473 1.547852 3.520508 C 1.746419 3.074545 2.013346 2.68392 2.348633 2.348633 C 2.683919 2.013348 3.074544 1.74642 3.520508 1.547852 C 3.966471 1.349285 4.433594 1.25 4.921875 1.25 Z M 4.951172 2.5 C 4.625651 2.5 4.314778 2.566732 4.018555 2.700195 C 3.722331 2.83366 3.461914 3.012695 3.237305 3.237305 C 3.012695 3.461914 2.833659 3.722332 2.700195 4.018555 C 2.566732 4.314779 2.5 4.625651 2.5 4.951172 L 2.5 5 L 17.5 5 L 17.5 4.951172 C 17.5 4.625651 17.433268 4.314779 17.299805 4.018555 C 17.16634 3.722332 16.987305 3.461914 16.762695 3.237305 C 16.538086 3.012695 16.277668 2.83366 15.981445 2.700195 C 15.685221 2.566732 15.374349 2.5 15.048828 2.5 Z M 15.048828 17.5 C 15.374349 17.5 15.685221 17.433268 15.981445 17.299805 C 16.277668 17.166342 16.538086 16.987305 16.762695 16.762695 C 16.987305 16.538086 17.16634 16.27767 17.299805 15.981445 C 17.433268 15.685222 17.5 15.37435 17.5 15.048828 L 17.5 6.25 L 2.5 6.25 L 2.5 15.048828 C 2.5 15.37435 2.566732 15.685222 2.700195 15.981445 C 2.833659 16.27767 3.012695 16.538086 3.237305 16.762695 C 3.461914 16.987305 3.722331 17.166342 4.018555 17.299805 C 4.314778 17.433268 4.625651 17.5 4.951172 17.5 Z M 12.724609 8.935547 C 12.724609 9.195964 12.762044 9.446615 12.836914 9.6875 C 12.911783 9.928386 13.020832 10.151367 13.164062 10.356445 C 13.307291 10.561523 13.476562 10.742188 13.671875 10.898438 C 13.867188 11.054688 14.088541 11.178386 14.335938 11.269531 C 14.348957 11.367188 14.358723 11.466472 14.365234 11.567383 C 14.371744 11.668295 14.375 11.770834 14.375 11.875 C 14.375 11.979167 14.371744 12.081706 14.365234 12.182617 C 14.358723 12.283529 14.348957 12.382812 14.335938 12.480469 C 14.088541 12.571615 13.867188 12.695312 13.671875 12.851562 C 13.476562 13.007812 13.307291 13.188477 13.164062 13.393555 C 13.020832 13.598633 12.911783 13.821615 12.836914 14.0625 C 12.762044 14.303386 12.724609 14.554037 12.724609 14.814453 C 12.724609 14.886068 12.727864 14.960938 12.734375 15.039062 C 12.740885 15.117188 12.75065 15.192058 12.763672 15.263672 C 12.470703 15.511068 12.145182 15.712891 11.787109 15.869141 C 11.546224 15.621745 11.274414 15.43457 10.97168 15.307617 C 10.668945 15.180664 10.345052 15.117188 10 15.117188 C 9.654947 15.117188 9.331055 15.180664 9.02832 15.307617 C 8.725586 15.43457 8.453775 15.621745 8.212891 15.869141 C 7.854817 15.712891 7.529296 15.511068 7.236328 15.263672 C 7.249349 15.192058 7.259114 15.117188 7.265625 15.039062 C 7.272135 14.960938 7.275391 14.886068 7.275391 14.814453 C 7.275391 14.554037 7.237956 14.303386 7.163086 14.0625 C 7.088216 13.821615 6.979167 13.598633 6.835938 13.393555 C 6.692708 13.188477 6.52181 13.007812 6.323242 12.851562 C 6.124674 12.695312 5.904948 12.571615 5.664062 12.480469 C 5.651042 12.382812 5.641276 12.283529 5.634766 12.182617 C 5.628255 12.081706 5.625 11.979167 5.625 11.875 C 5.625 11.770834 5.628255 11.668295 5.634766 11.567383 C 5.641276 11.466472 5.651042 11.367188 5.664062 11.269531 C 5.904948 11.178386 6.124674 11.054688 6.323242 10.898438 C 6.52181 10.742188 6.692708 10.561523 6.835938 10.356445 C 6.979167 10.151367 7.088216 9.928386 7.163086 9.6875 C 7.237956 9.446615 7.275391 9.195964 7.275391 8.935547 C 7.275391 8.863933 7.272135 8.789062 7.265625 8.710938 C 7.259114 8.632812 7.249349 8.557943 7.236328 8.486328 C 7.529296 8.238933 7.854817 8.037109 8.212891 7.880859 C 8.440755 8.121745 8.712564 8.307292 9.02832 8.4375 C 9.344075 8.567709 9.667969 8.632812 10 8.632812 C 10.332031 8.632812 10.655924 8.567709 10.97168 8.4375 C 11.287435 8.307292 11.559244 8.121745 11.787109 7.880859 C 12.145182 8.037109 12.470703 8.238933 12.763672 8.486328 C 12.75065 8.557943 12.740885 8.632812 12.734375 8.710938 C 12.727864 8.789062 12.724609 8.863933 12.724609 8.935547 Z M 10.9375 11.875 C 10.9375 11.614584 10.846354 11.393229 10.664062 11.210938 C 10.481771 11.028646 10.260416 10.9375 10 10.9375 C 9.739583 10.9375 9.518229 11.028646 9.335938 11.210938 C 9.153646 11.393229 9.0625 11.614584 9.0625 11.875 C 9.0625 12.135417 9.153646 12.356771 9.335938 12.539062 C 9.518229 12.721354 9.739583 12.8125 10 12.8125 C 10.260416 12.8125 10.481771 12.721354 10.664062 12.539062 C 10.846354 12.356771 10.9375 12.135417 10.9375 11.875 Z "), - new SettingOption(Translator.SettingsLanguageTime_Title, Translator.SettingsLanguageTime_Description, WinoPage.LanguageTimePage,"F1 M 4.765625 12.324219 C 4.088542 12.167969 3.458659 11.899414 2.875977 11.518555 C 2.293294 11.137695 1.788737 10.680339 1.362305 10.146484 C 0.935872 9.612631 0.602214 9.020183 0.361328 8.369141 C 0.120443 7.7181 0 7.044271 0 6.347656 C 0 5.468751 0.159505 4.645184 0.478516 3.876953 C 0.797526 3.108725 1.236979 2.436523 1.796875 1.860352 C 2.356771 1.28418 3.017578 0.830078 3.779297 0.498047 C 4.541016 0.166016 5.364583 0 6.25 0 C 7.115885 0 7.92806 0.162762 8.686523 0.488281 C 9.444986 0.813803 10.107422 1.259766 10.673828 1.826172 C 11.240234 2.392578 11.686197 3.055014 12.011719 3.813477 C 12.337239 4.57194 12.5 5.384115 12.5 6.25 L 11.25 6.25 L 11.25 6.152344 C 11.25 5.475261 11.114908 4.838867 10.844727 4.243164 C 10.574544 3.647461 10.209961 3.128256 9.750977 2.685547 C 9.291992 2.24284 8.761393 1.892904 8.15918 1.635742 C 7.556966 1.378582 6.920573 1.25 6.25 1.25 C 5.579427 1.25 4.943034 1.378582 4.34082 1.635742 C 3.738607 1.892904 3.208008 2.24284 2.749023 2.685547 C 2.290039 3.128256 1.925456 3.647461 1.655273 4.243164 C 1.385091 4.838867 1.25 5.475261 1.25 6.152344 L 1.25 6.328125 C 1.25 6.901042 1.352539 7.454428 1.557617 7.988281 C 1.762695 8.522136 2.045898 9.005534 2.407227 9.438477 C 2.768555 9.87142 3.191732 10.239258 3.676758 10.541992 C 4.161784 10.844727 4.6875 11.048178 5.253906 11.152344 Z M 5.625 7.5 C 5.455729 7.5 5.309245 7.438151 5.185547 7.314453 C 5.061849 7.190756 5 7.044271 5 6.875 L 5 3.125 C 5 2.95573 5.061849 2.809246 5.185547 2.685547 C 5.309245 2.56185 5.455729 2.5 5.625 2.5 C 5.794271 2.5 5.940755 2.56185 6.064453 2.685547 C 6.188151 2.809246 6.25 2.95573 6.25 3.125 L 6.25 6.25 L 8.125 6.25 C 8.294271 6.25 8.440755 6.31185 8.564453 6.435547 C 8.68815 6.559245 8.75 6.705729 8.75 6.875 C 8.75 7.044271 8.68815 7.190756 8.564453 7.314453 C 8.440755 7.438151 8.294271 7.5 8.125 7.5 Z M 10 10 L 10 8.125 C 10 7.95573 10.061849 7.809246 10.185547 7.685547 C 10.309244 7.56185 10.455729 7.5 10.625 7.5 L 14.375 7.5 C 14.375 7.447917 14.373372 7.394206 14.370117 7.338867 C 14.366861 7.283529 14.365234 7.226563 14.365234 7.167969 C 14.365234 7.057292 14.371744 6.948242 14.384766 6.84082 C 14.397786 6.733398 14.425455 6.635742 14.467773 6.547852 C 14.51009 6.459961 14.573566 6.388347 14.658203 6.333008 C 14.742838 6.27767 14.856771 6.25 15 6.25 C 15.143229 6.25 15.255533 6.27767 15.336914 6.333008 C 15.418294 6.388347 15.480143 6.459961 15.522461 6.547852 C 15.564777 6.635742 15.592447 6.733398 15.605469 6.84082 C 15.618489 6.948242 15.625 7.057292 15.625 7.167969 L 15.625 7.5 L 19.375 7.5 C 19.54427 7.5 19.690754 7.56185 19.814453 7.685547 C 19.93815 7.809246 20 7.95573 20 8.125 L 20 10 C 20 10.169271 19.93815 10.315756 19.814453 10.439453 C 19.690754 10.563151 19.54427 10.625 19.375 10.625 C 19.205729 10.625 19.059244 10.563151 18.935547 10.439453 C 18.811848 10.315756 18.75 10.169271 18.75 10 L 18.75 8.75 L 11.25 8.75 L 11.25 10 C 11.25 10.169271 11.18815 10.315756 11.064453 10.439453 C 10.940755 10.563151 10.794271 10.625 10.625 10.625 C 10.455729 10.625 10.309244 10.563151 10.185547 10.439453 C 10.061849 10.315756 10 10.169271 10 10 Z M 14.375 17.5 C 14.205729 17.5 14.059244 17.43815 13.935547 17.314453 C 13.811849 17.190756 13.75 17.044271 13.75 16.875 C 13.75 16.731771 13.777669 16.619467 13.833008 16.538086 C 13.888346 16.456705 13.95996 16.394857 14.047852 16.352539 C 14.135741 16.310221 14.233397 16.282553 14.34082 16.269531 C 14.448241 16.256512 14.557291 16.25 14.667969 16.25 L 15 16.25 L 15 13.75 L 11.875 13.75 C 11.705729 13.75 11.559244 13.688151 11.435547 13.564453 C 11.311849 13.440756 11.25 13.294271 11.25 13.125 C 11.25 12.955729 11.311849 12.809245 11.435547 12.685547 C 11.559244 12.56185 11.705729 12.5 11.875 12.5 L 15 12.5 C 14.999999 12.376303 15.035807 12.259115 15.107422 12.148438 L 15.703125 11.25 L 13.125 11.25 C 12.955729 11.25 12.809244 11.188151 12.685547 11.064453 C 12.561849 10.940756 12.5 10.794271 12.5 10.625 C 12.5 10.455729 12.561849 10.309245 12.685547 10.185547 C 12.809244 10.06185 12.955729 10 13.125 10 L 16.875 10 C 17.04427 10 17.190754 10.06185 17.314453 10.185547 C 17.43815 10.309245 17.5 10.455729 17.5 10.625 C 17.5 10.748698 17.464191 10.862631 17.392578 10.966797 L 16.376953 12.5 L 19.375 12.5 C 19.54427 12.5 19.690754 12.56185 19.814453 12.685547 C 19.93815 12.809245 20 12.955729 20 13.125 C 20 13.294271 19.93815 13.440756 19.814453 13.564453 C 19.690754 13.688151 19.54427 13.75 19.375 13.75 L 16.25 13.75 L 16.25 16.25 C 16.25 16.425781 16.217447 16.588543 16.152344 16.738281 C 16.087238 16.888021 15.997721 17.019857 15.883789 17.133789 C 15.769856 17.247721 15.638021 17.33724 15.488281 17.402344 C 15.338541 17.467447 15.17578 17.5 15 17.5 Z M 4.0625 18.125 C 4.0625 18.046875 4.075521 17.972006 4.101562 17.900391 C 4.257812 17.477213 4.41569 17.05892 4.575195 16.645508 C 4.7347 16.232096 4.892578 15.813803 5.048828 15.390625 L 6.914062 10.400391 C 6.959635 10.276693 7.036133 10.185547 7.143555 10.126953 C 7.250977 10.068359 7.369792 10.039062 7.5 10.039062 C 7.630208 10.039062 7.749023 10.068359 7.856445 10.126953 C 7.963867 10.185547 8.040364 10.276693 8.085938 10.400391 L 9.951172 15.390625 C 10.107422 15.813803 10.265299 16.232096 10.424805 16.645508 C 10.58431 17.05892 10.742188 17.477213 10.898438 17.900391 C 10.924479 17.972006 10.9375 18.046875 10.9375 18.125 C 10.9375 18.300781 10.877278 18.448893 10.756836 18.569336 C 10.636393 18.689779 10.488281 18.75 10.3125 18.75 C 10.175781 18.75 10.056966 18.714193 9.956055 18.642578 C 9.855143 18.570963 9.778646 18.470053 9.726562 18.339844 L 8.945312 16.25 L 6.054688 16.25 L 5.273438 18.339844 C 5.227864 18.463541 5.151367 18.562826 5.043945 18.637695 C 4.936523 18.712564 4.817708 18.75 4.6875 18.75 C 4.511719 18.75 4.363606 18.689779 4.243164 18.569336 C 4.122721 18.448893 4.0625 18.300781 4.0625 18.125 Z M 7.5 12.402344 L 6.523438 15 L 8.476562 15 Z "), - new SettingOption(Translator.SettingsPersonalization_Title, Translator.SettingsPersonalization_Description, WinoPage.PersonalizationPage,"F1 M 10 17.5 L 10 18.75 L 12.5 18.75 L 12.5 20 L 6.25 20 L 6.25 18.75 L 8.75 18.75 L 8.75 17.5 L 0 17.5 L 0 6.25 L 10 6.25 L 8.740234 7.5 L 1.25 7.5 L 1.25 16.25 L 17.5 16.25 L 17.5 8.75 L 18.75 7.5 L 18.75 17.5 Z M 5 13.75 C 5.175781 13.75 5.338542 13.717448 5.488281 13.652344 C 5.638021 13.58724 5.769856 13.497722 5.883789 13.383789 C 5.997721 13.269857 6.087239 13.138021 6.152344 12.988281 C 6.217448 12.838542 6.25 12.675781 6.25 12.5 C 6.25 12.18099 6.306966 11.878256 6.420898 11.591797 C 6.53483 11.305339 6.69108 11.051433 6.889648 10.830078 C 7.088216 10.608725 7.322591 10.424805 7.592773 10.27832 C 7.862955 10.131836 8.157552 10.042318 8.476562 10.009766 L 15.419922 3.066406 C 15.602213 2.884115 15.813802 2.744141 16.054688 2.646484 C 16.295572 2.548828 16.542969 2.5 16.796875 2.5 C 17.063801 2.5 17.31608 2.550457 17.553711 2.651367 C 17.79134 2.752279 17.998047 2.890625 18.173828 3.066406 C 18.349609 3.242188 18.487955 3.448895 18.588867 3.686523 C 18.689777 3.924154 18.740234 4.179688 18.740234 4.453125 C 18.740234 4.707031 18.691406 4.954428 18.59375 5.195312 C 18.496094 5.436199 18.356119 5.647787 18.173828 5.830078 L 11.230469 12.773438 C 11.197916 13.085938 11.110025 13.378906 10.966797 13.652344 C 10.823567 13.925781 10.639648 14.161784 10.415039 14.360352 C 10.19043 14.55892 9.936523 14.71517 9.65332 14.829102 C 9.370117 14.943034 9.06901 15 8.75 15 L 2.5 15 L 2.5 13.75 Z M 16.796875 3.75 C 16.608072 3.75 16.445312 3.818359 16.308594 3.955078 L 11.962891 8.300781 C 12.333984 8.58724 12.66276 8.916016 12.949219 9.287109 L 17.294922 4.941406 C 17.431641 4.804688 17.5 4.641928 17.5 4.453125 C 17.5 4.257812 17.430012 4.091797 17.290039 3.955078 C 17.150064 3.818359 16.985676 3.75 16.796875 3.75 Z M 10.175781 10.087891 C 10.572916 10.348308 10.901692 10.677084 11.162109 11.074219 L 12.060547 10.185547 C 11.787109 9.794922 11.455078 9.462891 11.064453 9.189453 Z M 10 12.5 C 10 12.324219 9.967447 12.161459 9.902344 12.011719 C 9.837239 11.861979 9.747721 11.730144 9.633789 11.616211 C 9.519856 11.502279 9.388021 11.412761 9.238281 11.347656 C 9.088541 11.282553 8.925781 11.25 8.75 11.25 C 8.574219 11.25 8.411458 11.282553 8.261719 11.347656 C 8.111979 11.412761 7.980143 11.502279 7.866211 11.616211 C 7.752278 11.730144 7.66276 11.861979 7.597656 12.011719 C 7.532552 12.161459 7.5 12.324219 7.5 12.5 C 7.5 12.942709 7.389322 13.359375 7.167969 13.75 L 8.75 13.75 C 8.919271 13.75 9.080403 13.717448 9.233398 13.652344 C 9.386393 13.58724 9.519856 13.497722 9.633789 13.383789 C 9.747721 13.269857 9.837239 13.136394 9.902344 12.983398 C 9.967447 12.830404 10 12.669271 10 12.5 Z "), - new SettingOption(Translator.SettingsMessageList_Title, Translator.SettingsMessageList_Description, WinoPage.MessageListPage,"F1 M 20 1.25 L 20 12.5 L 18.75 12.5 L 18.75 2.5 L 1.25 2.5 L 1.25 13.75 L 3.75 13.75 L 3.75 16.611328 L 6.611328 13.75 L 13.75 13.75 L 13.75 15 L 7.138672 15 L 2.5 19.638672 L 2.5 15 L 0 15 L 0 1.25 Z M 16.875 13.75 L 20 16.875 L 16.875 20 L 15.986328 19.111328 L 17.607422 17.5 L 11.25 17.5 L 11.25 16.25 L 17.607422 16.25 L 15.986328 14.638672 Z "), - new SettingOption(Translator.SettingsReadComposePane_Title, Translator.SettingsReadComposePane_Description, WinoPage.ReadComposePanePage,"F1 M 20 2.5 L 20 3.75 L 8.75 3.75 L 8.75 2.5 Z M 17.5 15 L 0 15 L 0 13.75 L 17.5 13.75 Z M 2.5 10 L 20 10 L 20 11.25 L 2.5 11.25 Z M 2.5 17.5 L 20 17.5 L 20 18.75 L 2.5 18.75 Z M 3.125 7.5 C 2.695312 7.5 2.291667 7.416992 1.914062 7.250977 C 1.536458 7.084961 1.206055 6.860352 0.922852 6.577148 C 0.639648 6.293945 0.415039 5.963542 0.249023 5.585938 C 0.083008 5.208334 0 4.804688 0 4.375 C 0 3.945312 0.083008 3.541668 0.249023 3.164062 C 0.415039 2.786459 0.639648 2.456055 0.922852 2.172852 C 1.206055 1.889648 1.536458 1.665039 1.914062 1.499023 C 2.291667 1.333008 2.695312 1.25 3.125 1.25 C 3.554688 1.25 3.958333 1.333008 4.335938 1.499023 C 4.713542 1.665039 5.043945 1.889648 5.327148 2.172852 C 5.610352 2.456055 5.834961 2.786459 6.000977 3.164062 C 6.166992 3.541668 6.25 3.945312 6.25 4.375 L 5 4.375 C 5 4.114584 4.951172 3.870443 4.853516 3.642578 C 4.755859 3.414715 4.622396 3.216146 4.453125 3.046875 C 4.283854 2.877605 4.085286 2.744141 3.857422 2.646484 C 3.629557 2.548828 3.385417 2.5 3.125 2.5 C 2.864583 2.5 2.620443 2.548828 2.392578 2.646484 C 2.164713 2.744141 1.966146 2.877605 1.796875 3.046875 C 1.627604 3.216146 1.494141 3.414715 1.396484 3.642578 C 1.298828 3.870443 1.25 4.114584 1.25 4.375 C 1.25 4.635418 1.298828 4.879559 1.396484 5.107422 C 1.494141 5.335287 1.627604 5.533854 1.796875 5.703125 C 1.966146 5.872396 2.164713 6.005859 2.392578 6.103516 C 2.620443 6.201172 2.864583 6.25 3.125 6.25 L 17.5 6.25 L 17.5 7.5 Z "), - new SettingOption(Translator.SettingsAbout_Title, Translator.SettingsAbout_Description, WinoPage.AboutPage,"F1 M 9.375 18.75 C 8.509114 18.75 7.677409 18.639322 6.879883 18.417969 C 6.082356 18.196615 5.335286 17.882486 4.638672 17.475586 C 3.942057 17.068686 3.308919 16.580404 2.739258 16.010742 C 2.169596 15.441081 1.681315 14.807943 1.274414 14.111328 C 0.867513 13.414714 0.553385 12.667644 0.332031 11.870117 C 0.110677 11.072592 0 10.240886 0 9.375 C 0 8.509115 0.110677 7.677409 0.332031 6.879883 C 0.553385 6.082357 0.867513 5.335287 1.274414 4.638672 C 1.681315 3.942059 2.169596 3.30892 2.739258 2.739258 C 3.308919 2.169598 3.942057 1.681316 4.638672 1.274414 C 5.335286 0.867514 6.082356 0.553387 6.879883 0.332031 C 7.677409 0.110678 8.509114 0 9.375 0 C 10.240885 0 11.072591 0.110678 11.870117 0.332031 C 12.667643 0.553387 13.414713 0.867514 14.111328 1.274414 C 14.807942 1.681316 15.44108 2.169598 16.010742 2.739258 C 16.580402 3.30892 17.068684 3.942059 17.475586 4.638672 C 17.882486 5.335287 18.196613 6.082357 18.417969 6.879883 C 18.639322 7.677409 18.75 8.509115 18.75 9.375 C 18.75 10.240886 18.639322 11.072592 18.417969 11.870117 C 18.196613 12.667644 17.882486 13.414714 17.475586 14.111328 C 17.068684 14.807943 16.580402 15.441081 16.010742 16.010742 C 15.44108 16.580404 14.807942 17.068686 14.111328 17.475586 C 13.414713 17.882486 12.667643 18.196615 11.870117 18.417969 C 11.072591 18.639322 10.240885 18.75 9.375 18.75 Z M 9.375 1.25 C 8.626302 1.25 7.906901 1.347656 7.216797 1.542969 C 6.526692 1.738281 5.880533 2.011719 5.27832 2.363281 C 4.676106 2.714844 4.127604 3.138021 3.632812 3.632812 C 3.138021 4.127604 2.714844 4.676107 2.363281 5.27832 C 2.011719 5.880534 1.738281 6.52832 1.542969 7.22168 C 1.347656 7.915039 1.25 8.632812 1.25 9.375 C 1.25 10.117188 1.347656 10.834961 1.542969 11.52832 C 1.738281 12.22168 2.011719 12.869467 2.363281 13.47168 C 2.714844 14.073894 3.138021 14.622396 3.632812 15.117188 C 4.127604 15.611979 4.676106 16.035156 5.27832 16.386719 C 5.880533 16.738281 6.526692 17.011719 7.216797 17.207031 C 7.906901 17.402344 8.626302 17.5 9.375 17.5 C 10.117188 17.5 10.834961 17.402344 11.52832 17.207031 C 12.221679 17.011719 12.869465 16.738281 13.47168 16.386719 C 14.073893 16.035156 14.622396 15.611979 15.117188 15.117188 C 15.611979 14.622396 16.035156 14.073894 16.386719 13.47168 C 16.738281 12.869467 17.011719 12.223308 17.207031 11.533203 C 17.402344 10.8431 17.5 10.123698 17.5 9.375 C 17.5 8.632812 17.402344 7.915039 17.207031 7.22168 C 17.011719 6.52832 16.738281 5.880534 16.386719 5.27832 C 16.035156 4.676107 15.611979 4.127604 15.117188 3.632812 C 14.622396 3.138021 14.073893 2.714844 13.47168 2.363281 C 12.869465 2.011719 12.221679 1.738281 11.52832 1.542969 C 10.834961 1.347656 10.117188 1.25 9.375 1.25 Z M 8.75 7.5 L 10 7.5 L 10 13.75 L 8.75 13.75 Z M 8.75 5 L 10 5 L 10 6.25 L 8.75 6.25 Z "), - }; -} diff --git a/Wino.Mail/Styles/ImagePreviewControl.xaml b/Wino.Mail/Styles/ImagePreviewControl.xaml deleted file mode 100644 index b09c2143..00000000 --- a/Wino.Mail/Styles/ImagePreviewControl.xaml +++ /dev/null @@ -1,58 +0,0 @@ - - - - diff --git a/Wino.Mail/Styles/ItemContainerStyles.xaml b/Wino.Mail/Styles/ItemContainerStyles.xaml deleted file mode 100644 index 58f03d90..00000000 --- a/Wino.Mail/Styles/ItemContainerStyles.xaml +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Styles/WebViewEditorControl.xaml b/Wino.Mail/Styles/WebViewEditorControl.xaml deleted file mode 100644 index f76cdc54..00000000 --- a/Wino.Mail/Styles/WebViewEditorControl.xaml +++ /dev/null @@ -1,21 +0,0 @@ - - - - diff --git a/Wino.Mail/Styles/WinoExpanderStyle.xaml b/Wino.Mail/Styles/WinoExpanderStyle.xaml deleted file mode 100644 index 0e455ff9..00000000 --- a/Wino.Mail/Styles/WinoExpanderStyle.xaml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Styles/WinoExpanderStyle.xaml.cs b/Wino.Mail/Styles/WinoExpanderStyle.xaml.cs deleted file mode 100644 index 5c6720ca..00000000 --- a/Wino.Mail/Styles/WinoExpanderStyle.xaml.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Windows.UI.Xaml; - -namespace Wino.Styles; - -partial class WinoExpanderStyle : ResourceDictionary -{ - public WinoExpanderStyle() - { - InitializeComponent(); - } -} diff --git a/Wino.Mail/Views/Abstract/AboutPageAbstract.cs b/Wino.Mail/Views/Abstract/AboutPageAbstract.cs deleted file mode 100644 index e2e1725f..00000000 --- a/Wino.Mail/Views/Abstract/AboutPageAbstract.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Wino.Core.UWP; -using Wino.Core.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class AboutPageAbstract : BasePage -{ -} diff --git a/Wino.Mail/Views/Abstract/AccountDetailsPageAbstract.cs b/Wino.Mail/Views/Abstract/AccountDetailsPageAbstract.cs deleted file mode 100644 index 04c78aea..00000000 --- a/Wino.Mail/Views/Abstract/AccountDetailsPageAbstract.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class AccountDetailsPageAbstract : BasePage -{ -} diff --git a/Wino.Mail/Views/Abstract/AccountManagementPageAbstract.cs b/Wino.Mail/Views/Abstract/AccountManagementPageAbstract.cs deleted file mode 100644 index a5cffe05..00000000 --- a/Wino.Mail/Views/Abstract/AccountManagementPageAbstract.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class AccountManagementPageAbstract : BasePage -{ - -} diff --git a/Wino.Mail/Views/Abstract/AliasManagementPageAbstract.cs b/Wino.Mail/Views/Abstract/AliasManagementPageAbstract.cs deleted file mode 100644 index 9d0052d1..00000000 --- a/Wino.Mail/Views/Abstract/AliasManagementPageAbstract.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class AliasManagementPageAbstract : BasePage { } diff --git a/Wino.Mail/Views/Abstract/AppPreferencesPageAbstract.cs b/Wino.Mail/Views/Abstract/AppPreferencesPageAbstract.cs deleted file mode 100644 index 878facfa..00000000 --- a/Wino.Mail/Views/Abstract/AppPreferencesPageAbstract.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class AppPreferencesPageAbstract : BasePage { } diff --git a/Wino.Mail/Views/Abstract/AppShellAbstract.cs b/Wino.Mail/Views/Abstract/AppShellAbstract.cs deleted file mode 100644 index 9f1572fd..00000000 --- a/Wino.Mail/Views/Abstract/AppShellAbstract.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class AppShellAbstract : BasePage -{ -} diff --git a/Wino.Mail/Views/Abstract/ComposePageAbstract.cs b/Wino.Mail/Views/Abstract/ComposePageAbstract.cs deleted file mode 100644 index ed6c5879..00000000 --- a/Wino.Mail/Views/Abstract/ComposePageAbstract.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class ComposePageAbstract : BasePage -{ -} diff --git a/Wino.Mail/Views/Abstract/EditAccountDetailsPageAbstract.cs b/Wino.Mail/Views/Abstract/EditAccountDetailsPageAbstract.cs deleted file mode 100644 index 91cf2854..00000000 --- a/Wino.Mail/Views/Abstract/EditAccountDetailsPageAbstract.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; -public partial class EditAccountDetailsPageAbstract : BasePage { } diff --git a/Wino.Mail/Views/Abstract/IdlePageAbstract.cs b/Wino.Mail/Views/Abstract/IdlePageAbstract.cs deleted file mode 100644 index 73280adb..00000000 --- a/Wino.Mail/Views/Abstract/IdlePageAbstract.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class IdlePageAbstract : BasePage -{ -} diff --git a/Wino.Mail/Views/Abstract/LanguageTimePageAbstract.cs b/Wino.Mail/Views/Abstract/LanguageTimePageAbstract.cs deleted file mode 100644 index 6d739c56..00000000 --- a/Wino.Mail/Views/Abstract/LanguageTimePageAbstract.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class LanguageTimePageAbstract : BasePage { } diff --git a/Wino.Mail/Views/Abstract/MailListPageAbstract.cs b/Wino.Mail/Views/Abstract/MailListPageAbstract.cs deleted file mode 100644 index 84dfb9c0..00000000 --- a/Wino.Mail/Views/Abstract/MailListPageAbstract.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public partial class MailListPageAbstract : BasePage; diff --git a/Wino.Mail/Views/Abstract/MailRenderingPageAbstract.cs b/Wino.Mail/Views/Abstract/MailRenderingPageAbstract.cs deleted file mode 100644 index 918e3a16..00000000 --- a/Wino.Mail/Views/Abstract/MailRenderingPageAbstract.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Windows.UI.Xaml; -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class MailRenderingPageAbstract : BasePage -{ - public bool IsDarkEditor - { - get { return (bool)GetValue(IsDarkEditorProperty); } - set { SetValue(IsDarkEditorProperty, value); } - } - - public static readonly DependencyProperty IsDarkEditorProperty = DependencyProperty.Register(nameof(IsDarkEditor), typeof(bool), typeof(MailRenderingPageAbstract), new PropertyMetadata(false, OnIsComposerDarkModeChanged)); - - private static void OnIsComposerDarkModeChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - if (obj is MailRenderingPageAbstract page) - { - page.OnEditorThemeChanged(); - } - } - - public virtual void OnEditorThemeChanged() { } -} diff --git a/Wino.Mail/Views/Abstract/MergedAccountDetailsPageAbstract.cs b/Wino.Mail/Views/Abstract/MergedAccountDetailsPageAbstract.cs deleted file mode 100644 index 6ea69ace..00000000 --- a/Wino.Mail/Views/Abstract/MergedAccountDetailsPageAbstract.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class MergedAccountDetailsPageAbstract : BasePage -{ -} diff --git a/Wino.Mail/Views/Abstract/MessageListPageAbstract.cs b/Wino.Mail/Views/Abstract/MessageListPageAbstract.cs deleted file mode 100644 index af6462e3..00000000 --- a/Wino.Mail/Views/Abstract/MessageListPageAbstract.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class MessageListPageAbstract : BasePage { } diff --git a/Wino.Mail/Views/Abstract/PersonalizationPageAbstract.cs b/Wino.Mail/Views/Abstract/PersonalizationPageAbstract.cs deleted file mode 100644 index 600aaf06..00000000 --- a/Wino.Mail/Views/Abstract/PersonalizationPageAbstract.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Wino.Core.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class PersonalizationPageAbstract : SettingsPageBase -{ - -} diff --git a/Wino.Mail/Views/Abstract/ReadComposePanePageAbstract.cs b/Wino.Mail/Views/Abstract/ReadComposePanePageAbstract.cs deleted file mode 100644 index 9af5b594..00000000 --- a/Wino.Mail/Views/Abstract/ReadComposePanePageAbstract.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class ReadComposePanePageAbstract : BasePage { } diff --git a/Wino.Mail/Views/Abstract/SignatureManagementPageAbstract.cs b/Wino.Mail/Views/Abstract/SignatureManagementPageAbstract.cs deleted file mode 100644 index 8130f9f0..00000000 --- a/Wino.Mail/Views/Abstract/SignatureManagementPageAbstract.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class SignatureManagementPageAbstract : BasePage { } diff --git a/Wino.Mail/Views/Abstract/WelcomePageAbstract.cs b/Wino.Mail/Views/Abstract/WelcomePageAbstract.cs deleted file mode 100644 index b3844953..00000000 --- a/Wino.Mail/Views/Abstract/WelcomePageAbstract.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Wino.Core.UWP; -using Wino.Mail.ViewModels; - -namespace Wino.Views.Abstract; - -public abstract class WelcomePageAbstract : BasePage -{ - -} diff --git a/Wino.Mail/Views/Account/AccountDetailsPage.xaml b/Wino.Mail/Views/Account/AccountDetailsPage.xaml deleted file mode 100644 index 8317a8e6..00000000 --- a/Wino.Mail/Views/Account/AccountDetailsPage.xaml +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Views/Account/AccountManagementPage.xaml.cs b/Wino.Mail/Views/Account/AccountManagementPage.xaml.cs deleted file mode 100644 index 384935a6..00000000 --- a/Wino.Mail/Views/Account/AccountManagementPage.xaml.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using Windows.UI.Xaml.Navigation; -using Wino.Views.Abstract; - -namespace Wino.Views; - -public sealed partial class AccountManagementPage : AccountManagementPageAbstract -{ - public AccountManagementPage() - { - InitializeComponent(); - - NavigationCacheMode = NavigationCacheMode.Enabled; - } -} diff --git a/Wino.Mail/Views/Account/MergedAccountDetailsPage.xaml b/Wino.Mail/Views/Account/MergedAccountDetailsPage.xaml deleted file mode 100644 index 5c8b9813..00000000 --- a/Wino.Mail/Views/Account/MergedAccountDetailsPage.xaml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Views/Account/MergedAccountDetailsPage.xaml.cs b/Wino.Mail/Views/Account/MergedAccountDetailsPage.xaml.cs deleted file mode 100644 index 137ad3d7..00000000 --- a/Wino.Mail/Views/Account/MergedAccountDetailsPage.xaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Wino.Views.Abstract; - - -namespace Wino.Views.Account; - -public sealed partial class MergedAccountDetailsPage : MergedAccountDetailsPageAbstract -{ - public MergedAccountDetailsPage() - { - InitializeComponent(); - } -} diff --git a/Wino.Mail/Views/ComposePage.xaml b/Wino.Mail/Views/ComposePage.xaml deleted file mode 100644 index a0f0a02f..00000000 --- a/Wino.Mail/Views/ComposePage.xaml +++ /dev/null @@ -1,707 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Transparent - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Views/ComposePage.xaml.cs b/Wino.Mail/Views/ComposePage.xaml.cs deleted file mode 100644 index 19efa9d0..00000000 --- a/Wino.Mail/Views/ComposePage.xaml.cs +++ /dev/null @@ -1,390 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reactive.Linq; -using System.Threading; -using System.Threading.Tasks; -using CommunityToolkit.Mvvm.Messaging; -using CommunityToolkit.WinUI.Controls; -using EmailValidation; -using Microsoft.UI.Xaml.Controls; -using MimeKit; -using Windows.ApplicationModel.DataTransfer; -using Windows.Foundation; -using Windows.Storage; -using Windows.UI.Core.Preview; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Navigation; -using Wino.Core.Domain; -using Wino.Core.Domain.Entities.Shared; -using Wino.Core.Domain.Models.Reader; -using Wino.Core.UWP.Extensions; -using Wino.Mail.ViewModels.Data; -using Wino.Messaging.Client.Mails; -using Wino.Messaging.Client.Shell; -using Wino.Views.Abstract; - -namespace Wino.Views; - -public sealed partial class ComposePage : ComposePageAbstract, - IRecipient, - IRecipient -{ - public WebView2 GetWebView() => WebViewEditor.GetUnderlyingWebView(); - - private readonly List _disposables = []; - private readonly SystemNavigationManagerPreview _navManagerPreview = SystemNavigationManagerPreview.GetForCurrentView(); - - public ComposePage() - { - InitializeComponent(); - _navManagerPreview.CloseRequested += OnClose; - } - - private async void GlobalFocusManagerGotFocus(object sender, FocusManagerGotFocusEventArgs e) - { - // In order to delegate cursor to the inner editor for WebView2. - // When the control got focus, we invoke script to focus the editor. - // This is not done on the WebView2 handlers, because somehow it is - // repeatedly focusing itself, even though when it has the focus already. - - if (e.NewFocusedElement == WebViewEditor) - { - await WebViewEditor.FocusEditorAsync(true); - } - } - - private IDisposable GetSuggestionBoxDisposable(TokenizingTextBox box) - { - return Observable.FromEventPattern, AutoSuggestBoxTextChangedEventArgs>( - x => box.TextChanged += x, - x => box.TextChanged -= x) - .Throttle(TimeSpan.FromMilliseconds(120)) - .ObserveOn(SynchronizationContext.Current) - .Subscribe(t => - { - if (t.EventArgs.Reason == AutoSuggestionBoxTextChangeReason.UserInput) - { - if (t.Sender is AutoSuggestBox senderBox && senderBox.Text.Length >= 2) - { - _ = ViewModel.ContactService.GetAddressInformationAsync(senderBox.Text).ContinueWith(x => - { - _ = ViewModel.ExecuteUIThread(() => - { - var addresses = x.Result; - - senderBox.ItemsSource = addresses; - }); - }); - } - } - }); - } - - private void OnComposeGridDragOver(object sender, DragEventArgs e) - { - ViewModel.IsDraggingOverComposerGrid = true; - } - - private void OnComposeGridDragLeave(object sender, DragEventArgs e) - { - ViewModel.IsDraggingOverComposerGrid = false; - } - - private void OnFileDropGridDragOver(object sender, DragEventArgs e) - { - ViewModel.IsDraggingOverFilesDropZone = true; - - e.AcceptedOperation = DataPackageOperation.Copy; - e.DragUIOverride.Caption = Translator.ComposerAttachmentsDragDropAttach_Message; - e.DragUIOverride.IsCaptionVisible = true; - e.DragUIOverride.IsGlyphVisible = true; - e.DragUIOverride.IsContentVisible = true; - } - - private void OnFileDropGridDragLeave(object sender, DragEventArgs e) - { - 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)) - { - // 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(); - - foreach (var file in files) - { - if (IsValidImageFile(file)) - { - isValid = true; - } - } - } - - 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 imagesInformation = new List(); - - foreach (var file in files) - { - if (IsValidImageFile(file)) - { - imagesInformation.Add(new ImageInfo - { - Data = await GetDataURL(file), - Name = file.Name - }); - } - } - - await WebViewEditor.InsertImagesAsync(imagesInformation); - } - } - // 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.ToByteArrayAsync())}"; - } - } - - private async Task AttachFiles(IEnumerable files) - { - if (files?.Any() != true) return; - - // Convert files to MailAttachmentViewModel. - foreach (var file in files) - { - var sharedFile = await file.ToSharedFileAsync(); - - ViewModel.IncludedAttachments.Add(new MailAttachmentViewModel(sharedFile)); - } - } - - private static bool IsValidImageFile(StorageFile file) - { - string[] allowedTypes = [".jpg", ".jpeg", ".png"]; - var fileType = file.FileType.ToLower(); - - return allowedTypes.Contains(fileType); - } - - private void DisposeDisposables() - { - if (_disposables.Count != 0) - _disposables.ForEach(a => a.Dispose()); - } - - protected override void OnNavigatedTo(NavigationEventArgs e) - { - base.OnNavigatedTo(e); - - FocusManager.GotFocus += GlobalFocusManagerGotFocus; - - // TODO: disabled animation for now, since it's still not working properly. - //var anim = ConnectedAnimationService.GetForCurrentView().GetAnimation("WebViewConnectedAnimation"); - //anim?.TryStart(GetWebView()); - - _disposables.Add(GetSuggestionBoxDisposable(ToBox)); - _disposables.Add(GetSuggestionBoxDisposable(CCBox)); - _disposables.Add(GetSuggestionBoxDisposable(BccBox)); - _disposables.Add(WebViewEditor); - - ViewModel.GetHTMLBodyFunction = WebViewEditor.GetHtmlBodyAsync; - } - - async void IRecipient.Receive(CreateNewComposeMailRequested message) - { - await WebViewEditor.RenderHtmlAsync(message.RenderModel.RenderHtml); - } - - private void ShowCCBCCClicked(object sender, RoutedEventArgs e) - { - ViewModel.IsCCBCCVisible = true; - } - - private async void TokenItemAdding(TokenizingTextBox sender, TokenItemAddingEventArgs args) - { - // Check is valid email. - if (!EmailValidator.Validate(args.TokenText)) - { - args.Cancel = true; - ViewModel.NotifyInvalidEmail(args.TokenText); - - return; - } - - var deferral = args.GetDeferral(); - - var addedItem = (sender.Tag?.ToString()) switch - { - "ToBox" => await ViewModel.GetAddressInformationAsync(args.TokenText, ViewModel.ToItems), - "CCBox" => await ViewModel.GetAddressInformationAsync(args.TokenText, ViewModel.CCItems), - "BCCBox" => await ViewModel.GetAddressInformationAsync(args.TokenText, ViewModel.BCCItems), - _ => null - }; - - if (addedItem == null) - { - args.Cancel = true; - ViewModel.NotifyAddressExists(); - } - else - { - args.Item = addedItem; - } - - deferral.Complete(); - } - - void IRecipient.Receive(ApplicationThemeChanged message) - { - WebViewEditor.IsEditorDarkMode = message.IsUnderlyingThemeDark; - } - - private void ImportanceClicked(object sender, RoutedEventArgs e) - { - ImportanceFlyout.Hide(); - ImportanceSplitButton.IsChecked = true; - - if (sender is Button senderButton) - { - ViewModel.SelectedMessageImportance = (MessageImportance)senderButton.Tag; - ((ImportanceSplitButton.Content as Viewbox).Child as SymbolIcon).Symbol = (senderButton.Content as SymbolIcon).Symbol; - } - } - - private async void AddressBoxLostFocus(object sender, RoutedEventArgs e) - { - // Automatically add current text as item if it is valid mail address. - - if (sender is TokenizingTextBox tokenizingTextBox) - { - if (tokenizingTextBox.Items.LastOrDefault() is not ITokenStringContainer info) return; - - var currentText = info.Text; - - if (!string.IsNullOrEmpty(currentText) && EmailValidator.Validate(currentText)) - { - var addressCollection = tokenizingTextBox.Tag?.ToString() switch - { - "ToBox" => ViewModel.ToItems, - "CCBox" => ViewModel.CCItems, - "BCCBox" => ViewModel.BCCItems, - _ => null - }; - - AccountContact addedItem = null; - - if (addressCollection != null) - addedItem = await ViewModel.GetAddressInformationAsync(currentText, addressCollection); - - // Item has already been added. - if (addedItem == null) - { - tokenizingTextBox.Text = string.Empty; - } - else if (addressCollection != null) - { - addressCollection.Add(addedItem); - tokenizingTextBox.Text = string.Empty; - } - } - } - } - - // Hack: Tokenizing text box losing focus somehow on page Loaded and shifting focus to this element. - // For once we'll switch back to it once CCBBCGotFocus element got focus. - - private bool isInitialFocusHandled = false; - - private void ComposerLoaded(object sender, RoutedEventArgs e) - { - ToBox.Focus(FocusState.Programmatic); - } - - private void CCBBCGotFocus(object sender, RoutedEventArgs e) - { - if (!isInitialFocusHandled) - { - isInitialFocusHandled = true; - ToBox.Focus(FocusState.Programmatic); - } - } - - protected override async void OnNavigatingFrom(NavigatingCancelEventArgs e) - { - base.OnNavigatingFrom(e); - - FocusManager.GotFocus -= GlobalFocusManagerGotFocus; - _navManagerPreview.CloseRequested -= OnClose; - await ViewModel.UpdateMimeChangesAsync(); - - DisposeDisposables(); - } - private async void OnClose(object sender, SystemNavigationCloseRequestedPreviewEventArgs e) - { - var deferral = e.GetDeferral(); - - try - { - await ViewModel.UpdateMimeChangesAsync(); - } - finally { deferral.Complete(); } - } -} diff --git a/Wino.Mail/Views/IdlePage.xaml b/Wino.Mail/Views/IdlePage.xaml deleted file mode 100644 index 2bba6489..00000000 --- a/Wino.Mail/Views/IdlePage.xaml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/Wino.Mail/Views/IdlePage.xaml.cs b/Wino.Mail/Views/IdlePage.xaml.cs deleted file mode 100644 index feb699b6..00000000 --- a/Wino.Mail/Views/IdlePage.xaml.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Wino.Views.Abstract; - -namespace Wino.Views; - -public sealed partial class IdlePage : IdlePageAbstract -{ - public IdlePage() - { - InitializeComponent(); - } -} diff --git a/Wino.Mail/Views/ImapSetup/AdvancedImapSetupPage.xaml b/Wino.Mail/Views/ImapSetup/AdvancedImapSetupPage.xaml deleted file mode 100644 index f09ff94e..00000000 --- a/Wino.Mail/Views/ImapSetup/AdvancedImapSetupPage.xaml +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Views/MailListPage.xaml.cs b/Wino.Mail/Views/MailListPage.xaml.cs deleted file mode 100644 index 6153a6ea..00000000 --- a/Wino.Mail/Views/MailListPage.xaml.cs +++ /dev/null @@ -1,501 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using CommunityToolkit.Mvvm.Messaging; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.UI.Xaml.Controls; -using MoreLinq; -using Windows.Foundation; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media.Animation; -using Windows.UI.Xaml.Navigation; -using Wino.Controls; -using Wino.Controls.Advanced; -using Wino.Core.Domain; -using Wino.Core.Domain.Enums; -using Wino.Core.Domain.Interfaces; -using Wino.Core.Domain.Models.MailItem; -using Wino.Core.Domain.Models.Menus; -using Wino.Core.Domain.Models.Navigation; -using Wino.Mail.ViewModels.Data; -using Wino.Mail.ViewModels.Messages; -using Wino.MenuFlyouts.Context; -using Wino.Messaging.Client.Mails; -using Wino.Views.Abstract; - -namespace Wino.Views; - -public sealed partial class MailListPage : MailListPageAbstract, - IRecipient, - IRecipient, - IRecipient, - IRecipient -{ - private const double RENDERING_COLUMN_MIN_WIDTH = 375; - - private IStatePersistanceService StatePersistenceService { get; } = App.Current.Services.GetService(); - private IKeyPressService KeyPressService { get; } = App.Current.Services.GetService(); - - public MailListPage() - { - InitializeComponent(); - } - - protected override void OnNavigatedTo(NavigationEventArgs e) - { - base.OnNavigatedTo(e); - - // Bindings.Update(); - - // Delegate to ViewModel. - if (e.Parameter is NavigateMailFolderEventArgs folderNavigationArgs) - { - WeakReferenceMessenger.Default.Send(new ActiveMailFolderChangedEvent(folderNavigationArgs.BaseFolderMenuItem, folderNavigationArgs.FolderInitLoadAwaitTask)); - } - } - - protected override void OnNavigatedFrom(NavigationEventArgs e) - { - base.OnNavigatedFrom(e); - - // Dispose all WinoListView items. - - MailListView.Dispose(); - - this.Bindings.StopTracking(); - - RenderingFrame.Navigate(typeof(IdlePage)); - - GC.Collect(); - } - - private void UpdateSelectAllButtonStatus() - { - // Check all checkbox if all is selected. - // Unhook events to prevent selection overriding. - - SelectAllCheckbox.Checked -= SelectAllCheckboxChecked; - SelectAllCheckbox.Unchecked -= SelectAllCheckboxUnchecked; - - SelectAllCheckbox.IsChecked = MailListView.Items.Count > 0 && MailListView.SelectedItems.Count == MailListView.Items.Count; - - SelectAllCheckbox.Checked += SelectAllCheckboxChecked; - SelectAllCheckbox.Unchecked += SelectAllCheckboxUnchecked; - } - - private void SelectionModeToggleChecked(object sender, RoutedEventArgs e) - { - ChangeSelectionMode(ListViewSelectionMode.Multiple); - } - - private void FolderPivotChanged(object sender, SelectionChangedEventArgs e) - { - foreach (var addedItem in e.AddedItems) - { - if (addedItem is FolderPivotViewModel pivotItem) - { - pivotItem.IsSelected = true; - } - } - - foreach (var removedItem in e.RemovedItems) - { - if (removedItem is FolderPivotViewModel pivotItem) - { - pivotItem.IsSelected = false; - } - } - - SelectAllCheckbox.IsChecked = false; - SelectionModeToggle.IsChecked = false; - - MailListView.ClearSelections(); - - UpdateSelectAllButtonStatus(); - ViewModel.SelectedPivotChangedCommand.Execute(null); - } - - private void ChangeSelectionMode(ListViewSelectionMode mode) - { - MailListView.ChangeSelectionMode(mode); - - if (ViewModel?.PivotFolders != null) - { - ViewModel.PivotFolders.ForEach(a => a.IsExtendedMode = mode == ListViewSelectionMode.Extended); - } - } - - private void SelectionModeToggleUnchecked(object sender, RoutedEventArgs e) - { - ChangeSelectionMode(ListViewSelectionMode.Extended); - } - - private void SelectAllCheckboxChecked(object sender, RoutedEventArgs e) - { - MailListView.SelectAllWino(); - } - - private void SelectAllCheckboxUnchecked(object sender, RoutedEventArgs e) - { - MailListView.ClearSelections(); - } - - private async void MailItemContextRequested(UIElement sender, ContextRequestedEventArgs args) - { - // Context is requested from a single mail point, but we might have multiple selected items. - // This menu should be calculated based on all selected items by providers. - - if (sender is MailItemDisplayInformationControl control && args.TryGetPosition(sender, out Point p)) - { - await FocusManager.TryFocusAsync(control, FocusState.Keyboard); - - if (control.DataContext is IMailItem clickedMailItemContext) - { - var targetItems = ViewModel.GetTargetMailItemViewModels(clickedMailItemContext); - var availableActions = ViewModel.GetAvailableMailActions(targetItems); - - if (!availableActions?.Any() ?? false) return; - var t = targetItems.ElementAt(0); - - ViewModel.ChangeCustomFocusedState(targetItems, true); - - var clickedOperation = await GetMailOperationFromFlyoutAsync(availableActions, control, p.X, p.Y); - - ViewModel.ChangeCustomFocusedState(targetItems, false); - - if (clickedOperation == null) return; - - var prepRequest = new MailOperationPreperationRequest(clickedOperation.Operation, targetItems.Select(a => a.MailCopy)); - - await ViewModel.ExecuteMailOperationAsync(prepRequest); - } - } - } - - private async Task GetMailOperationFromFlyoutAsync(IEnumerable availableActions, - UIElement showAtElement, - double x, - double y) - { - var source = new TaskCompletionSource(); - - var flyout = new MailOperationFlyout(availableActions, source); - - flyout.ShowAt(showAtElement, new FlyoutShowOptions() - { - ShowMode = FlyoutShowMode.Standard, - Position = new Point(x + 30, y - 20) - }); - - return await source.Task; - } - - void IRecipient.Receive(ClearMailSelectionsRequested message) - { - MailListView.ClearSelections(null, preserveThreadExpanding: true); - } - - void IRecipient.Receive(ActiveMailItemChangedEvent message) - { - // No active mail item. Go to empty page. - if (message.SelectedMailItemViewModel == null) - { - WeakReferenceMessenger.Default.Send(new CancelRenderingContentRequested()); - } - else - { - // Navigate to composing page. - if (message.SelectedMailItemViewModel.IsDraft) - { - NavigationTransitionType composerPageTransition = NavigationTransitionType.None; - - // Dispose active rendering if there is any and go to composer. - if (IsRenderingPageActive()) - { - // Prepare WebView2 animation from Rendering to Composing page. - PrepareRenderingPageWebViewTransition(); - - // Dispose existing HTML content from rendering page webview. - WeakReferenceMessenger.Default.Send(new CancelRenderingContentRequested()); - } - else if (IsComposingPageActive()) - { - // Composer is already active. Prepare composer WebView2 animation. - PrepareComposePageWebViewTransition(); - } - else - composerPageTransition = NavigationTransitionType.DrillIn; - - ViewModel.NavigationService.Navigate(WinoPage.ComposePage, message.SelectedMailItemViewModel, NavigationReferenceFrame.RenderingFrame, composerPageTransition); - } - else - { - // Find the MIME and go to rendering page. - - if (message.SelectedMailItemViewModel == null) return; - - if (IsComposingPageActive()) - { - PrepareComposePageWebViewTransition(); - } - - ViewModel.NavigationService.Navigate(WinoPage.MailRenderingPage, message.SelectedMailItemViewModel, NavigationReferenceFrame.RenderingFrame); - } - } - - UpdateAdaptiveness(); - } - - private bool IsRenderingPageActive() => RenderingFrame.Content is MailRenderingPage; - private bool IsComposingPageActive() => RenderingFrame.Content is ComposePage; - - private void PrepareComposePageWebViewTransition() - { - var webView = GetComposerPageWebView(); - - if (webView != null) - { - var animation = ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("WebViewConnectedAnimation", webView); - animation.Configuration = new BasicConnectedAnimationConfiguration(); - } - } - - private void PrepareRenderingPageWebViewTransition() - { - var webView = GetRenderingPageWebView(); - - if (webView != null) - { - var animation = ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("WebViewConnectedAnimation", webView); - animation.Configuration = new BasicConnectedAnimationConfiguration(); - } - } - - #region Connected Animation Helpers - - private WebView2 GetRenderingPageWebView() - { - if (RenderingFrame.Content is MailRenderingPage renderingPage) - return renderingPage.GetWebView(); - - return null; - } - - private WebView2 GetComposerPageWebView() - { - if (RenderingFrame.Content is ComposePage composePage) - return composePage.GetWebView(); - - return null; - } - - #endregion - - public async void Receive(SelectMailItemContainerEvent message) - { - if (message.SelectedMailViewModel == null) return; - - await ViewModel.ExecuteUIThread(async () => - { - MailListView.ClearSelections(message.SelectedMailViewModel, true); - - int retriedSelectionCount = 0; - trySelection: - - bool isSelected = MailListView.SelectMailItemContainer(message.SelectedMailViewModel); - - if (!isSelected) - { - for (int i = retriedSelectionCount; i < 5;) - { - // Retry with delay until the container is realized. Max 1 second. - await Task.Delay(200); - - retriedSelectionCount++; - - goto trySelection; - } - } - - // Automatically scroll to the selected item. - // This is useful when creating draft. - if (isSelected && message.ScrollToItem) - { - var collectionContainer = ViewModel.MailCollection.GetMailItemContainer(message.SelectedMailViewModel.UniqueId); - - // Scroll to thread if available. - if (collectionContainer.ThreadViewModel != null) - { - MailListView.ScrollIntoView(collectionContainer.ThreadViewModel, ScrollIntoViewAlignment.Default); - } - else if (collectionContainer.ItemViewModel != null) - { - MailListView.ScrollIntoView(collectionContainer.ItemViewModel, ScrollIntoViewAlignment.Default); - } - - } - }); - } - - private void SearchBoxFocused(object sender, RoutedEventArgs e) - { - SearchBar.PlaceholderText = string.Empty; - } - - private void SearchBarUnfocused(object sender, RoutedEventArgs e) - { - SearchBar.PlaceholderText = Translator.SearchBarPlaceholder; - } - - /// - /// Thread header is mail info display control and it can be dragged spearately out of ListView. - /// We need to prepare a drag package for it from the items inside. - /// - private void ThreadHeaderDragStart(UIElement sender, DragStartingEventArgs args) - { - if (sender is MailItemDisplayInformationControl control - && control.ConnectedExpander?.Content is WinoListView contentListView) - { - var allItems = contentListView.Items.Where(a => a is IMailItem); - - // Highlight all items. - allItems.Cast().ForEach(a => a.IsCustomFocused = true); - - // Set native drag arg properties. - args.AllowedOperations = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Move; - - var dragPackage = new MailDragPackage(allItems.Cast()); - - args.Data.Properties.Add(nameof(MailDragPackage), dragPackage); - args.DragUI.SetContentFromDataPackage(); - - control.ConnectedExpander.IsExpanded = true; - } - } - - private void ThreadHeaderDragFinished(UIElement sender, DropCompletedEventArgs args) - { - if (sender is MailItemDisplayInformationControl control && control.ConnectedExpander != null && control.ConnectedExpander.Content is WinoListView contentListView) - { - contentListView.Items.Where(a => a is MailItemViewModel).Cast().ForEach(a => a.IsCustomFocused = false); - } - } - - private async void LeftSwipeItemInvoked(Microsoft.UI.Xaml.Controls.SwipeItem sender, Microsoft.UI.Xaml.Controls.SwipeItemInvokedEventArgs args) - { - // Delete item for now. - - var swipeControl = args.SwipeControl; - - swipeControl.Close(); - - if (swipeControl.Tag is MailItemViewModel mailItemViewModel) - { - var package = new MailOperationPreperationRequest(MailOperation.SoftDelete, mailItemViewModel.MailCopy); - await ViewModel.ExecuteMailOperationAsync(package); - } - else if (swipeControl.Tag is ThreadMailItemViewModel threadMailItemViewModel) - { - var package = new MailOperationPreperationRequest(MailOperation.SoftDelete, threadMailItemViewModel.GetMailCopies()); - await ViewModel.ExecuteMailOperationAsync(package); - } - } - - private async void RightSwipeItemInvoked(Microsoft.UI.Xaml.Controls.SwipeItem sender, Microsoft.UI.Xaml.Controls.SwipeItemInvokedEventArgs args) - { - // Toggle status only for now. - - var swipeControl = args.SwipeControl; - - swipeControl.Close(); - - if (swipeControl.Tag is MailItemViewModel mailItemViewModel) - { - var operation = mailItemViewModel.IsRead ? MailOperation.MarkAsUnread : MailOperation.MarkAsRead; - var package = new MailOperationPreperationRequest(operation, mailItemViewModel.MailCopy); - - await ViewModel.ExecuteMailOperationAsync(package); - } - else if (swipeControl.Tag is ThreadMailItemViewModel threadMailItemViewModel) - { - bool isAllRead = threadMailItemViewModel.ThreadItems.All(a => a.IsRead); - - var operation = isAllRead ? MailOperation.MarkAsUnread : MailOperation.MarkAsRead; - var package = new MailOperationPreperationRequest(operation, threadMailItemViewModel.GetMailCopies()); - - await ViewModel.ExecuteMailOperationAsync(package); - } - } - - private void PullToRefreshRequested(Microsoft.UI.Xaml.Controls.RefreshContainer sender, Microsoft.UI.Xaml.Controls.RefreshRequestedEventArgs args) - { - ViewModel.SyncFolderCommand?.Execute(null); - } - - private async void SearchBar_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) - { - // User clicked 'x' button to clearout the search text. - if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput && string.IsNullOrWhiteSpace(sender.Text)) - { - ViewModel.IsOnlineSearchButtonVisible = false; - await ViewModel.PerformSearchAsync(); - } - } - - public void Receive(DisposeRenderingFrameRequested message) - { - ViewModel.NavigationService.Navigate(WinoPage.IdlePage, null, NavigationReferenceFrame.RenderingFrame, NavigationTransitionType.DrillIn); - } - - private void PageSizeChanged(object sender, SizeChangedEventArgs e) - { - ViewModel.MaxMailListLength = e.NewSize.Width - RENDERING_COLUMN_MIN_WIDTH; - - StatePersistenceService.IsReaderNarrowed = e.NewSize.Width < StatePersistenceService.MailListPaneLength + RENDERING_COLUMN_MIN_WIDTH; - - UpdateAdaptiveness(); - } - - private void MailListSizerManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e) - { - StatePersistenceService.MailListPaneLength = ViewModel.MailListLength; - } - - private void UpdateAdaptiveness() - { - bool isMultiSelectionEnabled = ViewModel.IsMultiSelectionModeEnabled || KeyPressService.IsCtrlKeyPressed(); - - if (StatePersistenceService.IsReaderNarrowed) - { - if (ViewModel.HasSingleItemSelection && !isMultiSelectionEnabled) - { - VisualStateManager.GoToState(this, "NarrowRenderer", true); - } - else - { - VisualStateManager.GoToState(this, "NarrowMailList", true); - } - } - else - { - if (ViewModel.HasSingleItemSelection && !isMultiSelectionEnabled) - { - VisualStateManager.GoToState(this, "BothPanelsMailSelected", true); - } - else - { - VisualStateManager.GoToState(this, "BothPanelsNoMailSelected", true); - } - } - } - - private void SelectAllInvoked(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args) - => MailListView.SelectAllWino(); - - private void DeleteAllInvoked(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args) - => ViewModel.ExecuteMailOperationCommand.Execute(MailOperation.SoftDelete); -} diff --git a/Wino.Mail/Views/MailRenderingPage.xaml b/Wino.Mail/Views/MailRenderingPage.xaml deleted file mode 100644 index e7c24539..00000000 --- a/Wino.Mail/Views/MailRenderingPage.xaml +++ /dev/null @@ -1,439 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - diff --git a/Wino.Mail/Views/Settings/AboutPage.xaml.cs b/Wino.Mail/Views/Settings/AboutPage.xaml.cs deleted file mode 100644 index 6bc28703..00000000 --- a/Wino.Mail/Views/Settings/AboutPage.xaml.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Wino.Views.Abstract; - -namespace Wino.Views.Settings; - -public sealed partial class AboutPage : AboutPageAbstract -{ - public AboutPage() - { - InitializeComponent(); - } -} diff --git a/Wino.Mail/Views/Settings/AliasManagementPage.xaml b/Wino.Mail/Views/Settings/AliasManagementPage.xaml deleted file mode 100644 index 059b0c19..00000000 --- a/Wino.Mail/Views/Settings/AliasManagementPage.xaml +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Views/Settings/AliasManagementPage.xaml.cs b/Wino.Mail/Views/Settings/AliasManagementPage.xaml.cs deleted file mode 100644 index 488a8959..00000000 --- a/Wino.Mail/Views/Settings/AliasManagementPage.xaml.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Wino.Views.Abstract; - -namespace Wino.Views.Settings; - -public sealed partial class AliasManagementPage : AliasManagementPageAbstract -{ - public AliasManagementPage() - { - this.InitializeComponent(); - } -} diff --git a/Wino.Mail/Views/Settings/AppPreferencesPage.xaml b/Wino.Mail/Views/Settings/AppPreferencesPage.xaml deleted file mode 100644 index eb34d891..00000000 --- a/Wino.Mail/Views/Settings/AppPreferencesPage.xaml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Wino.Mail/Views/Settings/AppPreferencesPage.xaml.cs b/Wino.Mail/Views/Settings/AppPreferencesPage.xaml.cs deleted file mode 100644 index 5c41c0df..00000000 --- a/Wino.Mail/Views/Settings/AppPreferencesPage.xaml.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Wino.Views.Abstract; - -namespace Wino.Views.Settings; - -public sealed partial class AppPreferencesPage : AppPreferencesPageAbstract -{ - public AppPreferencesPage() - { - this.InitializeComponent(); - } -} diff --git a/Wino.Mail/Views/Settings/EditAccountDetailsPage.xaml b/Wino.Mail/Views/Settings/EditAccountDetailsPage.xaml deleted file mode 100644 index 85a10665..00000000 --- a/Wino.Mail/Views/Settings/EditAccountDetailsPage.xaml +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -