Compare commits

...

3 Commits

Author SHA1 Message Date
Shawn Yuan (from Dev Box)
87b0a9b242 update 2026-01-07 12:26:46 +08:00
Shawn Yuan (from Dev Box)
738131d563 update 2026-01-05 16:28:45 +08:00
Shawn Yuan (from Dev Box)
7636016683 init 2026-01-05 15:30:31 +08:00
5 changed files with 36 additions and 1 deletions

View File

@@ -39,7 +39,7 @@ namespace Microsoft.PowerToys.FilePreviewCommon
var softlineBreak = new Markdig.Extensions.Hardlines.SoftlineBreakAsHardlineExtension();
MarkdownPipelineBuilder pipelineBuilder;
pipelineBuilder = new MarkdownPipelineBuilder().UseAdvancedExtensions().UseEmojiAndSmiley().UseYamlFrontMatter().UseMathematics().DisableHtml();
pipelineBuilder = new MarkdownPipelineBuilder().UseAdvancedExtensions().UseEmojiAndSmiley().UseYamlFrontMatter().UseMathematics();
pipelineBuilder.Extensions.Add(extension);
pipelineBuilder.Extensions.Add(softlineBreak);

View File

@@ -74,6 +74,18 @@ namespace Peek.FilePreviewer.Controls
}
}
public static readonly DependencyProperty IsMarkdownProperty = DependencyProperty.Register(
nameof(IsMarkdown),
typeof(bool),
typeof(BrowserControl),
new PropertyMetadata(false));
public bool IsMarkdown
{
get { return (bool)GetValue(IsMarkdownProperty); }
set { SetValue(IsMarkdownProperty, value); }
}
public static readonly DependencyProperty CustomContextMenuProperty = DependencyProperty.Register(
nameof(CustomContextMenu),
typeof(bool),
@@ -180,6 +192,13 @@ namespace Peek.FilePreviewer.Controls
PreviewBrowser.CoreWebView2.Settings.IsScriptEnabled = IsDevFilePreview;
PreviewBrowser.CoreWebView2.Settings.IsWebMessageEnabled = false;
if (IsMarkdown)
{
PreviewBrowser.CoreWebView2.Settings.IsScriptEnabled = false;
PreviewBrowser.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All);
PreviewBrowser.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
}
if (IsDevFilePreview)
{
PreviewBrowser.CoreWebView2.SetVirtualHostNameToFolderMapping(Microsoft.PowerToys.FilePreviewCommon.MonacoHelper.VirtualHostName, Microsoft.PowerToys.FilePreviewCommon.MonacoHelper.MonacoDirectory, CoreWebView2HostResourceAccessKind.Allow);
@@ -201,6 +220,15 @@ namespace Peek.FilePreviewer.Controls
Navigate();
}
private void CoreWebView2_WebResourceRequested(CoreWebView2 sender, CoreWebView2WebResourceRequestedEventArgs args)
{
// Show local file we've saved with the markdown contents. Block all else.
if (Source != null && new Uri(args.Request.Uri) != Source)
{
args.Response = sender.Environment.CreateWebResourceResponse(null, 403, "Forbidden", null);
}
}
private List<Control> GetContextMenuItems(CoreWebView2 sender, CoreWebView2ContextMenuRequestedEventArgs args)
{
var menuItems = args.MenuItems;

View File

@@ -88,6 +88,7 @@
DOMContentLoaded="BrowserPreview_DOMContentLoaded"
FlowDirection="LeftToRight"
IsDevFilePreview="{x:Bind BrowserPreviewer.IsDevFilePreview, Mode=OneWay}"
IsMarkdown="{x:Bind BrowserPreviewer.IsMarkdown, Mode=OneWay}"
NavigationCompleted="PreviewBrowser_NavigationCompleted"
Source="{x:Bind BrowserPreviewer.Preview, Mode=OneWay}"
Visibility="{x:Bind IsPreviewVisible(BrowserPreviewer, Previewer.State), Mode=OneWay, FallbackValue=Collapsed}" />

View File

@@ -12,6 +12,8 @@ namespace Peek.FilePreviewer.Previewers.Interfaces
public bool IsDevFilePreview { get; }
public bool IsMarkdown { get; }
public bool CustomContextMenu { get; }
}
}

View File

@@ -48,6 +48,9 @@ namespace Peek.FilePreviewer.Previewers
[ObservableProperty]
private bool isDevFilePreview;
[ObservableProperty]
private bool isMarkdown;
[ObservableProperty]
private bool customContextMenu;
@@ -122,6 +125,7 @@ namespace Peek.FilePreviewer.Previewers
IsDevFilePreview = supportedByMonaco;
CustomContextMenu = useMonaco;
IsMarkdown = isMarkdown;
if (useMonaco)
{