GithubHelp home page GithubHelp logo

markdown.avalonia's People

Contributors

akiotakahashi avatar al-dyachkov avatar fjch1997 avatar gpailler avatar grifsun avatar ihatetrains avatar ilharp avatar maxaquila avatar rolandkoenig avatar theunrepentantgeek avatar thoemmi avatar trigger-segfault avatar whistyun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

markdown.avalonia's Issues

Rectangles in place of "inline code" text

The problem

image
image
Inline code text appears as what I presume are "missing character" rectangles.

Context

Operating system

Kubuntu Linux 20.04 x64

Affected projects

Markdown.AvaloniaDemo and Markdown.AvaloniaFluentDemo

A hypothesis

I'm not entirely certain as to why this happens, but I did notice that, of the fonts listed in FontFamilyCollecter.cs (menlo, monaco, consolas, droid sans mono, inconsolata, courier new, monospace,droid sans fallback), none are installed on my setup except the last one (droid sans fallback)...and uh, something seems a bit...off about that one...

Droid Sans Fallback weirdness

While I was checking which fonts were installed, I noticed that the font manager's preview of droid sans fallback looked rather peculiar, as shown here:
image

For comparison, here's a more typical font preview, for comparison (specifically of FreeSans):
image

Testing in LibreOffice Writer

Oddly enough though, Droid Sans Fallback is perfectly readable in LibreOffice Writer, as shown here:
image
(...though, given what comes next, I'm not fully convinced that LibreOffice Writer is actually rendering Droid Sans Fallback at all here...)

Testing in Microsoft Office Word 2010

...after seeing this bizarre discrepancy, I decided to try comparing the fonts in some other programs. First pick was Microsoft Office Word 2010, which produces some rather...telling results:
image

A potential fix

Just before submitting this issue, an idea popped into my head. I decided to try adding a font I knew I had installed - and which I knew would not misbehave the way Droid Sans Fallback did - to the list of fonts in FontFamilyCollecter, to see if that would help. First, I tried FreeMono (which I spelled as freemono in the code)...but this produced the same results as Droid Sans Fallback, no matter where I put it in the list. After reverting this, I instead tried adding DejaVu Sans Mono (which I spelled as dejavu sans mono in the code) to the list, placing it at index 0. I was pleasantly surprised when I built and ran the sample app with the changes, and was met by this:
image
Further experimentation showed that I could make dejavu sans mono the second-last entry in the list, and the text would still be displayed correctly as shown just above. To avoid any possibility of ambiguity, that final test (which was successful) had the font list modified as follows:

            string[] RequestFamilies = {
                "menlo",
                "monaco",
                "consolas",
                "droid sans mono",
                "inconsolata",
                "courier new",
                "monospace",
                "dejavu sans mono",
                "droid sans fallback"
            };

Closing note

I hope this gives you whatever you need to look into this, if/whenever you're able and willing. If you need anything more from me, feel free to @Splitwirez and I'll see what I can do next time I have a spare moment. Pretty cool library otherwise.

Oh and uh...I've not seen it spelled "CollectEr" before, only "CollectOr"...is that a regional thing?

Customizing bitmap loader ?

Is there a way to customize the bitmap loader ?
Mainly, I would like to my markdown document remotely and would like to ensure to not load image from other domains (cross site referencing)

Ask for help

If you encountered the same condition when I tap "backspace" key in one kind of input aid software to input something for a TextBox etc, the letter was deleted while a letter in the TextBox also disappeared! Do you know how to fix it?

No option to insert image from in memory image

For programmatically generated MD string it is very usefull to feed not only external images from URI or app resources, but from inmemory image - for example I want to add LiveCharts chart as image, but have no find options to feed these kind or images as source.
It is possible to save temp image and feed it to MD as a local image, but it is not a good solution.

VerticalAlignemt support in CTextBlock

see #18

For now we can't customize placement of CCode etc within that line.
Add new 'VerticalAlignment' style is required.

image

I consider the implementation along with the line spacing (or TextBlock.LineHeight).

recommend

recommend to support relative path of the image to render:

image

Maybe there needs a contrast table to show how to custom the style

Maybe there needs a contrast table to show how to custom the style, for example, offer lines of code and an image of the real effect. In this way, users may have a direct feeling about how to custom the style of the control.

---------------------------------------------------------------------
<style>                    |
····                       |     an image to show effect
</style>                   |

---------------------------------------------------------------------

a9 not working with preview5 on Linux

I have installed the 11.0.0-a9 (nuget couldn't find a10) version which should be compatible with Avalonia 11.0.0-preview5 and i'm using .NET 7.0 (6.0 didn't work too) on Fedora 37 Linux.
I have tried to bind the strings from my project inside of ListBox DataTemplate but there was nothing instead of markdown view.
Then i created an empty project and pasted the example from wiki but it just rendered some plaintext mess. It was unselectable as the md view should be as i read there. I have tried Simple theme instead of Fluent but that didn't help.
The only warning i got is some old package for .NET Framework was installed:

    /home/zero/dev/CSharp/Avalonia/TestMarkdown/TestMarkdown.csproj : warning NU1701: Package 'HarfBuzzSharp.NativeAssets.Linux 2.8.2.1-preview.108' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework 'net7.0'. This package may not be fully compatible with your project.
    /home/zero/dev/CSharp/Avalonia/TestMarkdown/TestMarkdown.csproj : warning NU1701: Package 'HarfBuzzSharp.NativeAssets.macOS 2.8.2.1-preview.108' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework 'net7.0'. This package may not be fully compatible with your project.
    /home/zero/dev/CSharp/Avalonia/TestMarkdown/TestMarkdown.csproj : warning NU1701: Package 'HarfBuzzSharp.NativeAssets.Win32 2.8.2.1-preview.108' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework 'net7.0'. This package may not be fully compatible with your project.

0.10 RC update ?

As the new RC is bringing assemblies with strong name, packages need to be generated against those 'new' references.

table render issue

data

|a|b|c|d|
|:-:|:-|-:|
|\3.A|\2/5.C|
|1|2|3|\2/2.4|
||||
|\2. a|b

expected
image

output
image
image

Problem with styling CTextBlock.Heading*

Hi! I'm currently developing an Avalonia app that has support for multiple themes. The main window shows the CHANGELOG of the application parsing the current .md thats hosted in the web.

Heres the xaml:

<ScrollViewer Background="{DynamicResource SolidBackgroundFillColorBaseBrush}">
    <ScrollViewer.Styles>
        <Style Selector="ctxt|CTextBlock.Heading1">
            <Setter Property="Foreground" Value="{DynamicResource DefaultTextForegroundThemeBrush}"/>
        </Style>
    </ScrollViewer.Styles>
    <md:MarkdownScrollViewer
        Margin="5"
        Source="https://chemistry-tools.netlify.app/CHANGELOG.md"/>
</ScrollViewer>

The problem is when I change the theme to dark, the foreground color of the Headings doesn't change. This is weird because all the others do change. I tried creating a style but even though avalonia recognizes that my styles exist, it doesn't apply it.

Light theme (for reference):
image
Dark Theme (the headings do not change color):
image
The avalonia debugger shows the styles are recognized for the correct element but are not applied:
image

If someone knows a workaround or can help point in the right direction would be greatly appreciated.

New line

How do I force a new line?

I have tried using these already and they don't work:
<br />
2 spaces at the end
/
/s

ColorTextBlock.Avalonia not loaded

With the new a2 version:

System.IO.FileNotFoundException: Could not load file or assembly 'ColorTextBlock.Avalonia, Version=11.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
File name: 'ColorTextBlock.Avalonia, Version=11.0.0.0, Culture=neutral, PublicKeyToken=null'

It is a bug

When I input an English sentence, it looks like this:

image

I think it is a bug to translate "I" to the order symbol "i."

There must be something wrong

image
Like what in the picture, the use of number and "i.ii.iii." are in a wrong order. The location of the number is also wrong.

I am here again

I am here again just want to ask one question: could we upgrade the ui style ?
first, I want the there has indent before subItems following head tags. just like this:
image

that must more beautiful if relative css style is supported.

then, a little bit not polite, do we consider Material Design?

Theme-free style

Embedded styles foreground and background are set hardcode color.
If I use dark theme, some text is not visible.

0.10.3 version hit an exception

when I bind a Textbox control to update the Markdown Text, it leads to an exception.

usage:

public void TextChanged(object sender, AvaloniaPropertyChangedEventArgs e) { if (e.Property.Name.Equals("Text")) { // Vector old = markdownPreview.ScrollValue; markdownPreview.Markdown = this.inputTbx.Text; // markdownPreview.ScrollValue = new Vector(old.X, old.Y); } }

exception:

Unhandled exception. Avalonia.AvaloniaInternalException: Value could not be found at the end of batch update. at Avalonia.ValueStore.BatchUpdate.End() in /_/src/Avalonia.Base/ValueStore.cs:line 410 at Avalonia.ValueStore.EndBatchUpdate() in /_/src/Avalonia.Base/ValueStore.cs:line 52 at Avalonia.AvaloniaObject.EndBatchUpdate() in /_/src/Avalonia.Base/AvaloniaObject.cs:line 473 at Avalonia.StyledElement.DetachStyles() in /_/src/Avalonia.Styling/StyledElement.cs:line 777 at Avalonia.StyledElement.OnDetachedFromLogicalTreeCore(LogicalTreeAttachmentEventArgs e) in /_/src/Avalonia.Styling/StyledElement.cs:line 695 at Avalonia.StyledElement.OnDetachedFromLogicalTreeCore(LogicalTreeAttachmentEventArgs e) in /_/src/Avalonia.Styling/StyledElement.cs:line 701 at Avalonia.StyledElement.Avalonia.Controls.ISetLogicalParent.SetParent(ILogical parent) in /_/src/Avalonia.Styling/StyledElement.cs:line 434 at Avalonia.StyledElement.ClearLogicalParent(IList children) in /_/src/Avalonia.Styling/StyledElement.cs:line 745 at Avalonia.StyledElement.LogicalChildrenCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e) in /_/src/Avalonia.Styling/StyledElement.cs:line 507 at Avalonia.Visual.LogicalChildrenCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e) in /_/src/Avalonia.Visuals/Visual.cs:line 381 at Avalonia.Collections.AvaloniaList1.NotifyRemove(T item, Int32 index) in //src/Avalonia.Base/Collections/AvaloniaList.cs:line 724
at Avalonia.Collections.AvaloniaList1.Remove(T item) in /_/src/Avalonia.Base/Collections/AvaloniaList.cs:line 470 at Avalonia.Controls.ContentControl.ContentChanged(AvaloniaPropertyChangedEventArgs e) in /_/src/Avalonia.Controls/ContentControl.cs:line 124 at Avalonia.Controls.ContentControl.<>c.<.cctor>b__4_0(ContentControl x, AvaloniaPropertyChangedEventArgs e) in /_/src/Avalonia.Controls/ContentControl.cs:line 43 at Avalonia.AvaloniaObjectExtensions.<>c__DisplayClass23_01.b__0(AvaloniaPropertyChangedEventArgs e) in /
/src/Avalonia.Base/AvaloniaObjectExtensions.cs:line 585
at System.Reactive.AnonymousObserver1.OnNextCore(T value) in /_/Rx.NET/Source/src/System.Reactive/AnonymousObserver.cs:line 67 at System.Reactive.ObserverBase1.OnNext(T value) in //Rx.NET/Source/src/System.Reactive/ObserverBase.cs:line 36
at System.Reactive.Subjects.Subject1.OnNext(T value) in /_/Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs:line 147 at Avalonia.AvaloniaObject.RaisePropertyChanged[T](AvaloniaPropertyChangedEventArgs1 change) in /
/src/Avalonia.Base/AvaloniaObject.cs:line 758
at Avalonia.AvaloniaObject.Avalonia.PropertyStore.IValueSink.ValueChanged[T](AvaloniaPropertyChangedEventArgs1 change) in /_/src/Avalonia.Base/AvaloniaObject.cs:line 531 at Avalonia.ValueStore.NotifyValueChanged[T](AvaloniaProperty1 property, Optional1 oldValue, BindingValue1 newValue, BindingPriority priority) in //src/Avalonia.Base/ValueStore.cs:line 367
at Avalonia.ValueStore.SetExisting[T](Object slot, StyledPropertyBase1 property, T value, BindingPriority priority) in /_/src/Avalonia.Base/ValueStore.cs:line 285 at Avalonia.ValueStore.SetValue[T](StyledPropertyBase1 property, T value, BindingPriority priority) in /
/src/Avalonia.Base/ValueStore.cs:line 109
at Avalonia.AvaloniaObject.SetValue[T](StyledPropertyBase1 property, T value, BindingPriority priority) in /_/src/Avalonia.Base/AvaloniaObject.cs:line 368 at Avalonia.Controls.ContentControl.set_Content(Object value) in /_/src/Avalonia.Controls/ContentControl.cs:line 54 at Markdown.Avalonia.MarkdownScrollViewer.UpdateMarkdown() at Markdown.Avalonia.MarkdownScrollViewer.set_Markdown(String value) at MarkDownAvalonia.MainWindow.TextChanged(Object sender, AvaloniaPropertyChangedEventArgs e) in /Users/dxm/code/personalCode/markdownsharp/MarkDownAvalonia/MarkDownAvalonia/MainWindow.xaml.cs:line 463 at Avalonia.AvaloniaObject.RaisePropertyChanged[T](AvaloniaPropertyChangedEventArgs1 change) in //src/Avalonia.Base/AvaloniaObject.cs:line 760
at Avalonia.AvaloniaObject.RaisePropertyChanged[T](AvaloniaProperty1 property, Optional1 oldValue, BindingValue1 newValue, BindingPriority priority) in /_/src/Avalonia.Base/AvaloniaObject.cs:line 676 at Avalonia.AvaloniaObject.SetAndRaise[T](AvaloniaProperty1 property, T& field, T value) in /
/src/Avalonia.Base/AvaloniaObject.cs:line 701
at Avalonia.Controls.TextBox.SetTextInternal(String value) in //src/Avalonia.Controls/TextBox.cs:line 1215
at Avalonia.Controls.TextBox.HandleTextInput(String input) in /
/src/Avalonia.Controls/TextBox.cs:line 552
at Avalonia.Controls.TextBox.OnTextInput(TextInputEventArgs e) in //src/Avalonia.Controls/TextBox.cs:line 519
at Avalonia.Input.InputElement.<>c.<.cctor>b__30_4(InputElement x, TextInputEventArgs e) in /
/src/Avalonia.Input/InputElement.cs:line 204
at System.Reactive.Subjects.Subject`1.OnNext(T value) in //Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs:line 147
at Avalonia.Interactivity.EventRoute.RaiseEventImpl(RoutedEventArgs e) in /
/src/Avalonia.Interactivity/EventRoute.cs:line 148
at Avalonia.Interactivity.EventRoute.RaiseEvent(IInteractive source, RoutedEventArgs e) in //src/Avalonia.Interactivity/EventRoute.cs:line 102
at Avalonia.Interactivity.Interactive.RaiseEvent(RoutedEventArgs e) in /
/src/Avalonia.Interactivity/Interactive.cs:line 120
at Avalonia.Input.KeyboardDevice.ProcessRawEvent(RawInputEventArgs e) in //src/Avalonia.Input/KeyboardDevice.cs:line 245
at Avalonia.Input.InputManager.ProcessInput(RawInputEventArgs e) in /
/src/Avalonia.Input/InputManager.cs:line 36
at Avalonia.Controls.TopLevel.HandleInput(RawInputEventArgs e) in //src/Avalonia.Controls/TopLevel.cs:line 477
at Avalonia.Native.WindowBaseImpl.RawTextInputEvent(UInt32 timeStamp, String text) in /
/src/Avalonia.Native/WindowImplBase.cs:line 263
at Avalonia.Native.WindowBaseImpl.WindowBaseEvents.Avalonia.Native.Interop.IAvnWindowBaseEvents.RawTextInputEvent(UInt32 timeStamp, String text) in //src/Avalonia.Native/WindowImplBase.cs:line 202
at Avalonia.Native.Interop.Impl.__MicroComIAvnWindowBaseEventsVTable.RawTextInputEvent(IntPtr this, UInt32 timeStamp, Byte* text) in /
/src/Avalonia.Native/Interop.Generated.cs:line 3217
--- End of stack trace from previous location where exception was thrown ---
at Avalonia.Native.PlatformThreadingInterface.RunLoop(CancellationToken cancellationToken) in //src/Avalonia.Native/PlatformThreadingInterface.cs:line 92
at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in /
/src/Avalonia.Base/Threading/Dispatcher.cs:line 62
at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in //src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 117
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /
/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 148
at MarkDownAvalonia.Program.Main(String[] args) in /Users/dxm/code/personalCode/markdownsharp/MarkDownAvalonia/MarkDownAvalonia/Program.cs:line 13

`

Non-breaking space

Hello, non-breaking space does not work. I've tried &#160;
What are the ways to resolve?

AvaloniaEdit

Can this dependency be removed? Seems like a bit overkill to include that in a tight markdown library?

Block code does not use mono spaced font (inline code does however)

Actual Behavior:

  • block code using triple backspace shows a block like it should
  • highlighting works
  • the font is NOT mono spaced

Expected Behavior:

  • block code using triple backspace shows a block like it should
  • highlighting works
  • the font IS mono spaced

Steps to reproduce:

  • Start Markdown.AvaloniaDemo (stable or master)
  • Scroll down to the block code

What that means for my use case:

  • I am building a flash card learning program

  • The cards content is md, drawn using Markdown.Avalonia

  • One type of card is used to learn guitar tabs and chords, as a type of ascii art
    image

  • Hint: the tabs can get much more complicated and its impossible to read the tabs in that case - in the above example it does not seem to be a big issue

  • The tabs and chords are drawn in ascii representation

  • The tabs and chords are impossible to use without mono spaced fonts

Workaround:

  • use single backspace quote, aka inline code
  • problem: looks ugly in this case (background grey very irregular)

Scroll in MarkdownScrollViewer

Hi there are two questions about MarkdownScrollViewer.

  1. How can I show drop-down scrollbar at once?
  2. How can I padding this scroll so that it doesn't overlap the text.

I am using Source="avares://Avalonia.Themes.Fluent/FluentLight.xam

Screenshot_9 Screenshot_10
l

no effect when using style

I want to write annotations in CodeBlock, set the fontfamily style and MonospaceFontFamily style but no work.

usage experience

Question 1:

image
when I use ">" to perform a break line, it not work. if I add a blank line between ">" lines, it looks ugly.

Question 2:

if it is needed to support padding when I use a “to show codes” under a list item? otherwise, it looks ugly, too! when I use "code " under a list item, it also blocks the number to be auto increment as what shows in the following picture.

image

`MarkdownScrollViewer` throws `InvalidOperationException` when using custom themes

The MarkdownScrollViewer control throws InvalidOperationException when using custom themes.

Here's my App.xaml:

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:metro="clr-namespace:Ruminoid.Common2.Metro;assembly=rmnd-metro"
             x:Class="Ruminoid.Toolbox.Shell.App">
    <Application.Styles>
        <metro:RuminoidMetro/> <!-- My custom RuminoidMetro style class -->
        <StyleInclude Source="/Controls/Styles/Generic.xaml"/> <!-- My project xaml file -->
    </Application.Styles>
</Application>

And when constructing MarkdownScrollViewer control, the ThemeDetector class skipped the RuminoidMetro class (√) and tried to get the Host of my local xaml file in project (x).

ThemeDetector.cs#L59

Exception:

System.InvalidOperationException: This operation is not supported for a relative URI.
   at System.Uri.get_Host()
   at Markdown.Avalonia.Utils.ThemeDetector.get_IsFluentUsed()
   at Markdown.Avalonia.MarkdownScrollViewer..ctor()
   at Ruminoid.Toolbox.Plugins.Common.ConfigSections.Views.IntroConfigSection.!XamlIlPopulate(IServiceProvider , IntroConfigSection ) in D:\Projects\rmnd\Toolbox\plugins\rmbox-plugin-common\ConfigSections/Views/IntroConfigSection.axaml:line 1
   at Ruminoid.Toolbox.Plugins.Common.ConfigSections.Views.IntroConfigSection.!XamlIlPopulateTrampoline(IntroConfigSection )
   at Ruminoid.Toolbox.Plugins.Common.ConfigSections.Views.IntroConfigSection.InitializeComponent() in D:\Projects\rmnd\Toolbox\plugins\rmbox-plugin-common\ConfigSections\Views\IntroConfigSection.axaml.cs:line 29
   at Ruminoid.Toolbox.Plugins.Common.ConfigSections.Views.IntroConfigSection..ctor(JToken sectionConfig) in D:\Projects\rmnd\Toolbox\plugins\rmbox-plugin-common\ConfigSections\Views\IntroConfigSection.axaml.cs:line 24

QuickWatch window:

image

PR to fix this

#47

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.