|
|
|
|
// Copyright (c) MudBlazor 2021
|
|
|
|
|
// MudBlazor licenses this file to you under the MIT license.
|
|
|
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
|
|
|
|
|
|
using Connected.Annotations;
|
|
|
|
|
using Microsoft.AspNetCore.Components;
|
|
|
|
|
using static Connected.Components.Splitter;
|
|
|
|
|
|
|
|
|
|
namespace Connected.Components;
|
|
|
|
|
|
|
|
|
|
public partial class Highlighter : UIComponent
|
|
|
|
|
{
|
|
|
|
|
private Memory<string> _fragments;
|
|
|
|
|
private string _regex;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The whole text in which a fragment will be highlighted
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Parameter]
|
|
|
|
|
[Category(CategoryTypes.Highlighter.Behavior)]
|
|
|
|
|
public string Text { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The fragment of text to be highlighted
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Parameter]
|
|
|
|
|
[Category(CategoryTypes.Highlighter.Behavior)]
|
|
|
|
|
public string HighlightedText { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The fragments of text to be highlighted
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Parameter]
|
|
|
|
|
[Category(CategoryTypes.Highlighter.Behavior)]
|
|
|
|
|
public IEnumerable<string> HighlightedTexts { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Whether or not the highlighted text is case sensitive
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Parameter]
|
|
|
|
|
[Category(CategoryTypes.Highlighter.Behavior)]
|
|
|
|
|
public bool CaseSensitive { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// If true, highlights the text until the next regex boundary
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Parameter]
|
|
|
|
|
[Category(CategoryTypes.Highlighter.Behavior)]
|
|
|
|
|
public bool UntilNextBoundary { get; set; }
|
|
|
|
|
|
|
|
|
|
//TODO
|
|
|
|
|
//Accept regex highlightings
|
|
|
|
|
// [Parameter] public bool IsRegex { get; set; }
|
|
|
|
|
|
|
|
|
|
protected override void OnParametersSet()
|
|
|
|
|
{
|
|
|
|
|
_fragments = GetFragments(Text, HighlightedText, HighlightedTexts, out _regex, CaseSensitive, UntilNextBoundary);
|
|
|
|
|
}
|
|
|
|
|
}
|