Giter Club home page Giter Club logo

communitytoolkit / windows Goto Github PK

View Code? Open in Web Editor NEW
481.0 11.0 65.0 3.82 MB

Collection of controls for WinUI 2, WinUI 3, and Uno Platform developers. Simplifies and demonstrates common developer tasks building experiences for Windows with .NET.

Home Page: https://aka.ms/windowstoolkitdocs

License: Other

Dockerfile 0.06% PowerShell 0.14% Batchfile 0.09% C# 99.71%
csharp dotnet toolkit uno-platform uwp windows windows-app-sdk windows10 windows11 winui

windows's Introduction

Community Toolkit Docs

This repo contains the guidance documentation for various Community Toolkits that are part of the .NET Foundation.

This includes the following projects:

  • .NET Community Toolkit (and MVVM Toolkit)
  • .NET MAUI Community Toolkit
  • Windows Community Toolkit (though our docs are still migrating from the old repo here)

More information to come...

Microsoft Open Source Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

windows's People

Contributors

abdes avatar arlodotexe avatar davidegiacometti avatar dub1shu avatar greenshadezhang avatar h82258652 avatar lhak avatar mael8 avatar martinzikmund avatar michael-hawker avatar niels9001 avatar poker-sang avatar qhy040404 avatar shatyuka avatar youssef1313 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  avatar  avatar  avatar

windows's Issues

Port DeveloperTools

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port InfiniteCanvas

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port AdvancedCollectionView

Tasks

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port RangeSelector

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port ColorPicker

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Bug report: WrapLayout

Description

  • When all the items in WrapLayout are Collapsed, the method WrapLayoutState.GetHeight() would throw "Nullable object must have a value."
  • Once an item is collapsed in the WrapLayout(such as a Image that is loaded later), it would not be visible without refreshing.

Possible solution

  • Add a null discriminant statement to WrapLayoutState.GetHeight()
  • Still measure and arrange collapsed items

Port Loading

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port Primitives

Contains:

  • Wrap Panel/Layout
  • ConstrainedBox
  • SwitchPresenter
  • UniformGrid
  • DockPanel
  • Staggered Panel/Layout

Don't bring:

  • AdaptiveGridView (needs ItemsRepeater/migration guide samples - WinUI Gallery examples?)

Port Shadows

Base Porting Checklist

Notable Changes

Future Improvements

No tasks being tracked yet.

Port Converters

TODO

Base Porting Checklist

  1. niels9001
  2. niels9001

Converters

Notable Changes

  • Changed FormatStringConverter to IFormattableToStringConverter to differentiate from StringFormatConverter (too confusing to have such a similar name)

Prerequisites

  1. feature proposal team-Markup wct

Future Improvements

Port Media

Base Porting Checklist

  1. Arlodotexe
  2. Arlodotexe

Namespace: CommunityToolkit.WinUI.Media

Namespace: CommunityToolkit.WinUI.Animations

Namespace: CommunityToolkit.WinUI.Media.Pipelines

Known Issues

No tasks being tracked yet.

Improvements

Notable Changes

N/A

Port Eyedropper

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port HeaderedContentControl

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Incorrect target type for RelativeAncestor attached properties

Describe the bug

The attached properties for the "relative ancestor" feature are currently targeting the wrong type:

https://github.com/CommunityToolkit/WindowsCommunityToolkit/blob/44ad0cc6806c99f1a693c923cb94ea7551718c13/Microsoft.Toolkit.Uwp.UI/Extensions/FrameworkElement/FrameworkElementExtensions.RelativeAncestor.cs#L18-L21

These are defined in FrameworkElementExtensions but target a DependencyObject. This is not correct on its own, but in particular it also makes the APIs technically more error prone, as there is no type guarantee at build-time, and we're doing additional checks at runtime to ensure the input elements are in fact FrameworkElement-s, otherwise we do nothing:

https://github.com/CommunityToolkit/WindowsCommunityToolkit/blob/44ad0cc6806c99f1a693c923cb94ea7551718c13/Microsoft.Toolkit.Uwp.UI/Extensions/FrameworkElement/FrameworkElementExtensions.RelativeAncestor.cs#L62-L65

Given that these APIs only make sense for FrameworkElement instances, and that they're defined within FrameworkElementExtensions too, we should update the signature and have them only target FrameworkElement objects. I should note: this would not be a source breaking change when the API was being used correctly, but it would be a binary breaking change.

FrameworkElementExtensions.Ancestor causes an XAML memory leak

Describe the bug

Setting the AncestorType property on an object will store the parent of the object as an attached property, causing a reference loop (the parent holds a reference to the child, the child holds a reference to the parent).

  • Is this bug a regression in the toolkit? If so, what toolkit version did you last see it work:

Steps to Reproduce

  • Can this be reproduced in the Sample App? Technically yes, although the memory usage impact is hard to notice because there is a lot else going on in the sample app.

Steps to reproduce the behavior:

  1. Use AncestorType in some XAML content
  2. Load the XAML content (eg navigate to it in a frame)
  3. Unload the XAML content (eg navigate away from it, remove it from the visual tree)
  4. Notice that the XAML elements are never freed correctly, keep taking memory, and weak references will still resolve.

Expected behavior

The elements should be freed.

Screenshots

No screenshots needed.

Environment

NuGet Package(s): N/A

Package Version(s): N/A

Windows 10 Build Number:
- [ ] Fall Creators Update (16299)
- [ ] April 2018 Update (17134)
- [ ] October 2018 Update (17763)
- [ ] May 2019 Update (18362)
- [x] May 2020 Update (19041)
- [ ] Insider Build (build number: )

App min and target version:
- [ ] Fall Creators Update (16299)
- [ ] April 2018 Update (17134)
- [ ] October 2018 Update (17763)
- [ ] May 2019 Update (18362)
- [x] May 2020 Update (19041)
- [x] Insider Build (22000)

Device form factor:
- [x] Desktop
- [ ] Xbox
- [ ] Surface Hub
- [ ] IoT

Visual Studio
- [ ] 2017 (version: )
- [ ] 2019 (version: )
- [ ] 2019 Preview (version: )
- [x] 2022 Preview (version 17.0 preview 2.1)

Additional context

Found while doing a C++ port, so bug happens on latest commit. The solution to this issue would be to set the Ancestor attached property to null in the Unloaded event handler.

Port MetadataControl

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

AttachedCardShadow crashes side-loaded packaged WinUI 3 app

Describe the bug

When using AttachedCardShadow anywhere in my app (WinUI3 / WinAppSDK 1.0), it runs fine from Visual Studio.
But as soon as I package the app and run it, the app crashes.
I get the following stack trace:
image

The exception message is:
"System.Runtime.InteropServices.COMException: Class not registered (0x80040154 (REGDB_E_CLASSNOTREG))"

Steps to Reproduce

Unfortunately I can't reproduce this in a sample app that starts with the newest templates.
My app was converted from one of the earliest ProjectReunion version to all subsequent versions until the current Windows App SDK 1.0 release.
I can't find major/important differences in the project files (csproj and wapproj), though.
Steps to reproduce the behavior:

  1. Use AttachedCardShadow anywhere in the app.
  2. Sign manifest
  3. Package using: Publish | Create App Packages...
  4. Install by running the Add-AppDevPackage.ps1
  5. Run

Expected behavior

The app should run without a crash

Screenshots

Environment

image
image

NuGet Package(s):

Package Version(s):

Windows 10 Build Number:
21H2 / 19044.1348

App min and target version:
Min: April 2018 Update (17134)
Target: May 2020 Update (19041)

Device form factor: Desktop

Visual Studio version:
2022 (17.0.1)

Port Behaviors

TODO

Base Porting Checklist

Known Issues

Improvements

Notable Changes

  • Missing Animation related Behaviors until brought over.

Port IncrementalCollectionView

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port TextToolbar

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port RichSuggestBox

Base Porting Checklist

Known Issues

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port TabbedCommandBar

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port TextToolBar

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port Animations Package

TODO

May need #17 first, #7 will need the extra animation support and dependency after as well. (i.e. keep similar dependency tree that we had in 7.0, behaviors depends on animations)

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Port BladeView

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port (Framework)Extensions

TODO

Base Porting Checklist

  1. niels9001

Extensions

Known issues

No tasks being tracked yet.

Future improvements

No tasks being tracked yet.

Notable Changes

Port TokenizingTextBox

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port ImageEx

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

ContentSizer sets Width to 0 if layout hasn't completed

Related to #26

Discovered as part of work on DataTable experiment in labs in this branch/commit here: CommunityToolkit/Labs-Windows@47f46df#diff-b874aea5366fbeacbd08eec0606a72bf3b458be31ff250be121b9c9f5ec7b49d

Basically, when the target control was being set in this scenario, the layout hadn't occurred yet on the, so the DesiredSize.Width is still '0'; which means the Width of the component is set to 0 and is never updated or changed making it invisible.

Instead, if the DesiredSize is not set yet, then we shouldn't manipulate the Width of the control, as the patch above did.

We set the Width property is that's modified by the sizing behavior:

protected override bool OnDragHorizontal(double horizontalChange)
{
if (TargetControl == null)
{
return true;
}
horizontalChange = IsDragInverted ? -horizontalChange : horizontalChange;
if (!IsValidWidth(TargetControl, _currentSize + horizontalChange, ActualWidth))
{
return false;
}
TargetControl.Width = _currentSize + horizontalChange;

However, when we start to drag we measure the ActualWidth (or Height) here:

protected override void OnDragStarting()
{
if (TargetControl != null)
{
_currentSize =
Orientation == Orientation.Vertical ?
TargetControl.ActualWidth :
TargetControl.ActualHeight;
}
}

So, in theory we may just be able to remove this initial code all together?

On the Windows app SDK using CameraHelper, FrameArrived time execution for a period of time will not be triggered.

Describe the bug

When I use wasdk 1.1.2, the processing of camera frame data, at first the FrameArrived event is normal, but after a period of time, the event does not trigger, I suspect it is was wasdk bug, but I will confirm it here first.
The uwp code is normal
like this
https://github.com/GreenShadeZhang/GreenShade.UWPDemo/tree/master/GreenShade.ML.EmoticonDetection

But when the code is ported to winui, it can only be normal for a while.

https://github.com/GreenShadeZhang/GreenShade.UWPDemo/tree/master/GreenShade.WinUI.EmoticonDetection

ๅ›พ็‰‡

Regression

No response

Reproducible in sample app?

  • This bug can be reproduced in the sample app.

Steps to reproduce

1. Download the code
2. Run the relevant code

Expected behavior

I want the FrameArrived event of the video stream to work fine on the Windows app SDK so I can do emoticon analysis.

Screenshots

No response

Windows Build Number

  • Windows 10 1809 (Build 17763)
  • Windows 10 1903 (Build 18362)
  • Windows 10 1909 (Build 18363)
  • Windows 10 2004 (Build 19041)
  • Windows 10 20H2 (Build 19042)
  • Windows 10 21H1 (Build 19043)
  • Windows 11 21H2 (Build 22000)
  • Other (specify)

Other Windows Build number

No response

App minimum and target SDK version

  • Windows 10, version 1809 (Build 17763)
  • Windows 10, version 1903 (Build 18362)
  • Windows 10, version 1909 (Build 18363)
  • Windows 10, version 2004 (Build 19041)
  • Other (specify)

Other SDK version

No response

Visual Studio Version

2022

Visual Studio Build Number

No response

Device form factor

Desktop

Nuget packages

No response

Additional context

No response

Help us help you

No.

IsEqualStateTrigger with Enum throwing FormatException at runtime

Bringing this issue from here

I've discovered this while using SettingsCard and changing it's ContentAlignment property at runtime by editing XAML.
The SettingsCard uses the trigger like this:

<labs:IsEqualStateTrigger Value="{Binding ContentAlignment, RelativeSource={RelativeSource TemplatedParent}}" To="Left" />

When I set that property before running the app, it works as it should.
But when I live edit it, it doesn't work and logs FormatException.

I found it fails here:
image
image

Two more notes:

  • I didn't try binding it somewhere
  • I'd say this might be occurring in other triggers too, didn't test

I'm running WindowsAppsSDK 1.3

Port TileControl

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port Helpers

Combination of 'helper' things from MT.Uwp and MT.Uwp.UI.

For initial port, most important things are:

Helpers

Don't worry about initially:

  • camera
  • print
  • storage
  • deep link
  • remote object
  • theme listener

Also need to figure out what other 'helper' things we put here from these packages, what's this overall structure/plan look like. Some of these APIs work differently in the WASDK or between packaged/unpackaged apps. If something can work the same in all cases, great let's bring it over. Otherwise, we'll have to see how much work it is to fill the gaps vs. being something completely new. i.e. let's focus on easy wins first for highly used things (like a lot of our controls), and then can tackle other things as we see need for.

Validate BehaviorBase<T> and what is needed (if anything) beyond Behavior<T>

We probably want to file an issue about re-checking all this, as I know some of the original issues I believe were fixed in the underlying behaviors package, but I think we still do some extra logic here.

Probably a thing where when we can better test these and shore that up, we could try removing the intermediate class and see what happens or if anything breaks. (Assuming we have enough coverage)

Originally posted by @michael-hawker in #20 (comment)

Related Toolkit Discussion: CommunityToolkit/WindowsCommunityToolkit#3856

with specifically more prior context and links here: CommunityToolkit/WindowsCommunityToolkit#3856 (comment)

Port Layout Primitives

Initial Port

Known Issues / Remaining

  1. michael-hawker
  2. michael-hawker

Notable Changes

  • We didn't bring over AdaptiveGridView as it should be replaceable by the UniformGridLayout for ItemsRepeater

Open Issues

Future Improvements

Implement IncrementalLoadingCollection from IAsyncEnumerable

Overview

To implement an IncrementalLoadingCollection, you need:

  1. IIncrementalSource from the dotnet repo, CommunityToolkit.Common namespace
  2. IncrementalLoadingCollection from the WindowsCommunityToolkit repo, Microsoft.Toolkit.Uwp namespace.

The API design is quite dated and requires creating a source class implementing IIncrementalSource<TItem>, and creating IncrementalLoadingCollection<TSource, TItem>.

IIncrementalSource requires to implement a method returning Task<IEnumerable<TItem>> that is modernly expressed with IAsyncEnumerable<TItem>.

IAsyncEnumerable<TItem> allows cycling over the collection in a fully asynchronous way and it's the perfect fit for a modern IncrementalLoadingCollection. I called this new type AsyncLoadingCollection

API breakdown

public class AsyncLoadingCollection<T>(IAsyncEnumerable<T> source, uint itemsPerPage = 25) : ObservableCollection<T>, ISupportIncrementalLoading
{
    private IAsyncEnumerator<T>? _asyncEnumerator = source.GetAsyncEnumerator();
    private readonly SemaphoreSlim _mutex = new(1, 1);

    public bool HasMoreItems => _asyncEnumerator != null;

    public IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count = 0) =>
        LoadMoreItemsAsync(count == 0 ? itemsPerPage : count, default)
        .AsAsyncOperation();

    private async Task<LoadMoreItemsResult> LoadMoreItemsAsync(uint count, CancellationToken cancellationToken)
    {
        await _mutex.WaitAsync(cancellationToken);

        if (cancellationToken.IsCancellationRequested || !HasMoreItems)
            return new LoadMoreItemsResult(0);

        uint itemsLoaded = 0;
        var itemsToLoad = Math.Min(itemsPerPage, count);

        try
        {
            while (itemsLoaded < itemsToLoad)
            {
                if (await _asyncEnumerator!.MoveNextAsync(cancellationToken).ConfigureAwait(false))
                {
                    Add(_asyncEnumerator!.Current);
                    itemsLoaded++;
                }
                else
                {
                    // Dispose the enumerator when we're done
                    await _asyncEnumerator!.DisposeAsync();
                    _asyncEnumerator = null;
                    break;
                }
            }
        }
        catch (OperationCanceledException)
        {
            // The operation has been canceled using the Cancellation Token.
            await _asyncEnumerator!.DisposeAsync();
            _asyncEnumerator = null;
        }
        catch (Exception)
        {
            await _asyncEnumerator!.DisposeAsync();
            _asyncEnumerator = null;
            throw;
        }
        finally
        {
            _mutex.Release();
        }

        return new LoadMoreItemsResult(itemsLoaded);
    }
}

Usage example

public static async IAsyncEnumerable<string> GetSampleData()
{
    for (var i = 0; i < 100; i++)
    {
        await Task.Delay(i * 10);
        yield return $"string {i}";
    }
}

var myAsyncCollection = new AsyncLoadingCollection<string>(GetSampleData());

// this is needed for the initial load (viewControls like DataGrid don't call it automatically after DataContext change)
await myAsyncCollection.LoadMoreItemsAsync();

Then you can bind myAsyncCollection to a DataGrid as ItemsSource

Breaking change?

No, it's an addition to IncrementalLoadingCollection.

Alternatives

After few days of research, I couldn't find any other implementation of an IncrementalLoadingCollection using IAsyncEnumerable.

Port CameraPreview

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port RadialGauge

Needs ThemeListener and DesignTimeHelper in #17

Base Porting Checklist

Known Issues

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port LayoutTransformControl

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Port ImageCropper

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Bug: Crash in AdvancedCollectionView if elements of different types with a common base class are added to the source

Using a List<BaseClass> as the source for an AdvancedCollectionView and adding elements of different types (derived from BaseClass) will lead to a crash in the Compare() function as it only uses the type of the first element to be compared.

I modified the code to use the type returned by GetGenericArguments() if the source is a generic type (e.g. List<>). I can submit a PR if wanted.

Port OrbitView

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

Fix pushing of packages

- name: Add source
if: ${{ github.ref == 'refs/heads/main' }}
run: dotnet nuget add source "https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-MainLatest/nuget/v3/index.json" --name ToolkitNightly --username dummy --password ${{ secrets.DEVOPS_PACKAGE_PUSH_TOKEN }}

We're adding a source now that already exists in the nuget.config:

<add key="MainLatest" value="https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-MainLatest/nuget/v3/index.json" protocolVersion="3" />

Think we'll need to try removing the source before re-adding it for now? Not sure what a better solution is at the moment...

ListViewExtensions.AlternateColor only gets applied on hover

Describe the bug

ListViewExtensions.AlternateColor only gets applied on hover over the item on WinUI3 1.0

Regression

No response

Reproducible in sample app?

  • This bug can be reproduced in the sample app.

Steps to reproduce

Repro on sample app ListViewExtensions page

Expected behavior

Alternate color should get applied when listview loads
image

Screenshots

No response

Windows Build Number

  • Windows 10 1809 (Build 17763)
  • Windows 10 1903 (Build 18362)
  • Windows 10 1909 (Build 18363)
  • Windows 10 2004 (Build 19041)
  • Windows 10 20H2 (Build 19042)
  • Windows 10 21H1 (Build 19043)
  • Windows 11 21H2 (Build 22000)
  • Other (specify)

Other Windows Build number

No response

App minimum and target SDK version

  • Windows 10, version 1809 (Build 17763)
  • Windows 10, version 1903 (Build 18362)
  • Windows 10, version 1909 (Build 18363)
  • Windows 10, version 2004 (Build 19041)
  • Other (specify)

Other SDK version

No response

Visual Studio Version

2022

Visual Studio Build Number

17.0.4

Device form factor

Desktop

Nuget packages

CommunityToolkit 7.1.2

Additional context

No response

Help us help you

Yes, but only if others can assist.

Set up test reporting

Background

Testspaces don't seem to set up in this repo, so they weren't enabled as part of #1.

Problem

Tests are not reported, and must be observed from the logs directly.

Solution

Set up test reporting. This can either be testspaces, or the github-provided Test Reporter.

Port Triggers

TODO

Base Porting Checklist

Triggers

Notable Changes

No tasks being tracked yet.

Future Improvements

No tasks being tracked yet.

Dependencies

  1. good first issue help wanted
    niels9001

Port HeaderedItemsControl

Base Porting Checklist

Known Issues

No tasks being tracked yet.

Improvements

No tasks being tracked yet.

Notable Changes

N/A

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.