Code Monkey home page Code Monkey logo

react-popper's Introduction

Floating UI

Note

Popper is now Floating UI! For Popper v2, visit its dedicated branch and its documentation. For help on migrating, check out the Migration Guide.

Floating UI is a small library that helps you create "floating" elements such as tooltips, popovers, dropdowns, and more.

It offers two main features:

  1. Anchor positioning: Anchor a floating element (such as a tooltip) to another element (such as a button) while simultaneously ensuring it stays in view as best as possible by avoiding collisions. This feature is available for all platforms.
  2. User interactions for React: Hooks and components for composing interactions to create accessible floating UI components.

README Sponsors

Milford Dopt

You can sponsor Floating UI in a variety of ways on Open Collective.

Why

Floating elements are absolutely positioned, typically anchored to another UI element. Ensuring a floating element remains anchored next to another element can be challenging, especially in unique layout contexts like scrolling containers.

Absolute positioning can also cause problems when the floating element is too close to the edge of the viewport and becomes obscured, also known as a collision. When a collision occurs, the position must be adjusted to ensure the floating element remains visible.

Further, floating elements are often interactive, which can raise complex accessibility issues when designing user interactions.

Floating UI offers a set of low-level features to help you navigate these challenges and build accessible floating UI components.

Install

To install Floating UI, you can use a package manager like npm or a CDN. There are different versions available for different platforms.

Vanilla

Use on the web with vanilla JavaScript.

npm install @floating-ui/dom

You can either start by reading the tutorial, which teaches you how to use the library by building a basic tooltip, or you can jump right into the API documentation.

React

Use with React DOM or React Native.

React DOM

# Positioning + interactions
npm install @floating-ui/react

# Positioning only (smaller size)
npm install @floating-ui/react-dom

React Native

npm install @floating-ui/react-native

Vue

Use with Vue.

npm install @floating-ui/vue

Canvas or other platforms

If you're targeting a platform other than the vanilla DOM (web), React, or React Native, you can create your own Platform. This allows you to support things like Canvas/WebGL, or other platforms that can run JavaScript.

npm install @floating-ui/core

Contributing

This project is a monorepo written in TypeScript using pnpm workspaces. The website is using Next.js SSG and Tailwind CSS for styling.

  • Fork and clone the repo
  • Install dependencies in root directory with pnpm install
  • Build initial package dist files with pnpm run build

Testing grounds

DOM

pnpm run dev --filter @floating-ui/dom in the root will launch the @floating-ui/dom development visual tests at http://localhost:1234. The playground uses React to write each test route, bundled by Vite.

Each route has screenshots taken of the page by Playwright to ensure all the functionalities work as expected; this is an easy, reliable and high-level way of testing the positioning logic.

Below the main container are UI controls to turn on certain state and options. Every single combination of state is tested visually via the snapshots to cover as much as possible.

React

pnpm run dev --filter @floating-ui/react in the root will launch the @floating-ui/react development tests at http://localhost:1234.

Credits

The floating shapes in the banner image are made by the amazing artists @artstar3d, @killnicole and @liiiiiiii on Figma — check out their work!

License

MIT

react-popper's People

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-popper's Issues

Popper component not positioned to target component correctly (in multiple manager instances)

Steps to reproduce:

  1. Modify the <App /> component in /example/index.jsx
const App = () =>
  <div
    style={{
      padding: 200,
    }}
  >
    <div style={{ marginBottom: 200 }}>
      <MultipleExample />
    </div>
    <div style={{ marginBottom: 200 }}>
      <AnimatedExample />
      <AnimatedExample /> // popper rendered in incorrect position
      <AnimatedExample /> // popper rendered in incorrect position
    </div>
  </div>
ReactDOM.render(<App />, document.getElementById('app'))
  1. Popper rendered in incorrect position, not directly above the component (purple box)

screenshot

recalculate size of `Popper` when its contents change?

I just noticed that if I use the following code:

  <Popper placement="top">
     {this.state.isOpen &&
        <div>test</div>
     }
  </Popper>

There are issues with the placement of the popper content. I'm guessing this is because the popper is being measured when it has no contents. In the simple case this is easy to fix by moving the conditional outside of the popper.

That being said, I did some more digging and found that if the contents of the Popper component change its size/position are not currently recalculated. It would be nice if the Popper component would handle updates to its contents.

Usage with VelocityTransitionGroup gets the wrong position

Hi there,

As mentioned on Twitter, I'm having some issues using VelocityTransitionGroup with react-popper. When first animating the popper in, the positioning is wrong. To fix it, you need to cause a re-render, either through resizing the window, or similar things that will schedule an update.

I have made a small reproduction repo that illustrates the issue. The body of the render function is as follows;

const enter = {
  animation: 'fadeIn'
};
const leave = {
  animation: 'fadeOut'
};

return (
  <Manager>
    <Target onClick={this.handleTogglePopover}>
      {this.props.target}
    </Target>
    <VelocityTransitionGroup enter={enter} leave={leave}>
      {isOpen ? (
        <Popper placement={this.props.placement}>
          {this.props.children}
          <Arrow className="popper__arrow" />
        </Popper>
      ) : null}
   </VelocityTransitionGroup>
  </Manager>
);

I've also tried following the tips in #13, by making the child of <Popper /> into a function, and applying the props, but that didn't make any difference in the position.

I'm starting to think that I might need to pass a modifier to make sure it updates on render, but I was under the impression that that should happen automatically through react-popper.

Error running basic example...

Hey. Sorry if I'm missing something obvious, but any idea why I might be getting the following error?

Warning: React.createElement: type is invalid -- expected a string (for built-in
components) or a class/function (for composite components) but got: undefined.
You likely forgot to export your component from the file it's defined in. Check
the render method of PopperExample.

My PopperExample is basically a copy of the example code...

// PopperExample.js
import React from 'react'
import { PopperManager, Target, Popper, Arrow } from 'react-popper'

const PopperExample = () => (
  <PopperManager placement="bottom">
    <Target style={{ width: 120, height: 120, background: '#b4da55' }}>
      Target Box
    </Target>
    <Popper className="popper">
      Popper Content
      <Arrow className="popper__arrow"/>
    </Popper>
  </PopperManager>
);

export default PopperExample;

Alternative way to handle stateless components ref

So, I recently updated one of my React utilities and I ended up needing to support the same case you struggled on.

The solution I reached is to ask for the custom component assigned to the component property to have a getRef property. It works very well and doesn't require findDOMNode.

https://github.com/FezVrasta/react-resize-aware/tree/master#self-containing

You may use a method like this instead of the current child function to make the API cleaner.

nb: In my case I also needed the custom component to have children defined, but for react-popper this isn't needed.

bump to version 1.10.2

Hey..

Can you update to version 1.10.2.
It solves an issue i reported, so an update is much appreciated... :)

Dynamic content size

If I have some popper content that can change size (which could possibly result in the 'correct' position of the popper changing), what is the best way to handle this in this library? I assume the correct way in plain Popper.js is to call scheduleUpdate on the Popper instance, but I don't think I have access to that with react-popper?

Investigate new portals in React 16

It would be cool if we could make this really easy and have a prop that passes down the id of a container or something similar to render <Popper/> components into.

Add tests

I'd like to use Jest. Don't have time right now to set this help. Any help setting this up is greatly appreciated :)

miss being able to set a custom component

using a function is nice, but because of the ref I need to make sure the child component is not a functional component, which at times means I need to have an extra node in the dom that may or may not mess with styling, etc.

arrowStyle props not being passed to Arrow component

I'm trying to have an arrow next to a popover that moves with the popover. This seems to be supported in vanilla Popper.js, and the relevant code seems to be present in react-popper to pass the style computed from Popper down into the Arrow component, however in my app, I see style={} on that component.

I used some logs and the debugger to try to narrow down the issue: I think Popper is mounting and implicitly Arrow needs to re-render to consider the new props passed in via style. However, it doesn't rerender:

15:57:51.482 Popper.js:112 getChildContext Popper {props: {…}, context: {…}, refs: {…}, updater: {…}, state: {…}, …}
15:57:51.498 Popper.js:96 _getArrowStyle Popper {props: {…}, context: {…}, refs: {…}, updater: {…}, state: {…}, …}
15:57:51.522 Popper.js:144 _updatePopper Popper {props: {…}, context: {…}, refs: {…}, updater: {…}, state: {…}, …}context: {popperManager: {…}}props: {placement: "right", children: {…}, component: "div", eventsEnabled: true, modifiers: {…}}refs: {}state: {data: {…}}updater: {isMounted: ƒ, enqueueCallback: ƒ, enqueueCallbackInternal: ƒ, enqueueForceUpdate: ƒ, enqueueReplaceState: ƒ, …}_arrowNode: div.settings_editor_arrow_getArrowStyle: ƒ ()_getPopperPlacement: ƒ ()_getPopperStyle: ƒ ()_getTargetNode: ƒ ()_node: div_popper: Popper {options: {…}, state: {…}, reference: div, scheduleUpdate: ƒ, update: ƒ, …}_reactInternalInstance: ReactCompositeComponentWrapper {_currentElement: {…}, _rootNodeID: 0, _compositeType: 0, _instance: Popper, _hostParent: ReactDOMComponent, …}_setArrowNode: ƒ (node)_updateStateModifier: {enabled: true, order: 900, fn: ƒ}isMounted: (...)replaceState: (...)__proto__: ReactComponent
15:57:51.524 Popper.js:153 creating popper
15:57:51.535 Popper.js:112 getChildContext Popper {props: {…}, context: {…}, refs: {…}, updater: {…}, state: {…}, …}
15:57:51.541 Popper.js:112 getChildContext Popper {props: {…}, context: {…}, refs: {…}, updater: {…}, state: {…}, …}

My best understanding of the issue is that React doesn't know that componentDidMount() implicitly means that Arrow must rerender, thus Arrow is stuck behind.

If I manually click on MyArrowComponent instance in the React devtools and type $r.forceUpdate() I can get it to have the correct behavior.

Major version with React 16 as primary React version?

I was thinking that we may ship a breaking change as major version that switches the value of the tag of Manager to false by default.

This will make the library work with the new wrapless-components of React 16 but will still allow to fallback to the old behavior of a wrapping element if user is using an older version.

What's your take on this?

react-popper undefined when bundled by rollup as an external and used in webpack app

Hi,

I have a bundle created using rollup and react-popper is listed as an external of that bundle. Then that bundle is consumed by a webpack application as an ES bundle (to allow for better tree shaking).

At application runtime _reactPopper is undefined.

This problem goes away (as well as tree shaking) when using UMD bundle from rollup.

Has anyone managed to configure rollup bundle with react-popper as an external and consume it as part of an ES bundle in webpack?

Thank you for any suggestions.

use case for onCreate/onUpdate!

i have a few cases where i'd like to "react" to some of the Popper data in my parent component (the one that renders <Popper>), but i currently have no way to access this data safely. the only current option is to grab a ref to the Popper and inspect its state.data, but that doesn't feel reliable.

some sort of callback prop that would allow my parent component to receive the new Popper data would be very helpful. I wouldn't store all of it, i'd just look at the parts i need and update my minimal state.

(in particular, i'd like to have access to arrow offsets so i can modify my transform-origin)

`yarn dev` doesn't serve examples

I feel really foolish, but I couldn't figure out why examples wouldn't serve from yarn dev. Everything starts up on 0.0.0.0:3000 yet there is no content.

❯❯❯ yarn dev                                                                                                                                                                                                ⏎
yarn dev v0.27.5
$ webpack-dev-server --hot --progress --host 0.0.0.0
 70% 1/1 build modules http://0.0.0.0:8080/webpack-dev-server/
webpack result is served from /
content is served from ./example
Hash: fc5d0cb47180739c97bc  
Version: webpack 1.15.0
Time: 7949ms
    Asset     Size  Chunks             Chunk Names
bundle.js  1.38 MB       0  [emitted]  index
chunk    {0} bundle.js (index) 1.29 MB [rendered]

...

webpack: Compiled successfully.

With wget:

~/p/react-popper ❯❯❯ wget http://localhost:3000
--2017-08-09 09:23:41--  http://localhost:3000/
Resolving localhost... ::1, fe80::1, 127.0.0.1
Connecting to localhost|::1|:3000... failed: Connection refused.
Connecting to localhost|fe80::1|:3000... failed: Connection refused.
Connecting to localhost|127.0.0.1|:3000... failed: Connection refused.
~/p/react-popper ❯❯❯ wget http://10.1.10.13:3000                                                                                                                                                                             ⏎
--2017-08-09 09:24:46--  http://10.1.10.13:3000/
Connecting to 10.1.10.13:3000... failed: Connection refused.
~/p/react-popper ❯❯❯      

I'm mystified. Is it working for you?

jquery null ref

I'm probably missing something fairly obvious here... but I'm trying to make a tooltip style popper and I keep getting some jquery error:
screen shot 2017-06-13 at 10 57 20 am

Component code:

class InfoTip extends Component {
  state = {
    visible: false,
  }

  onMouseOver = () => {
    this.setState({visible: true});
  }

  onMouseOut = () => {
    this.setState({visible: false});
  }

  render() {
    return (
      <Manager>
        <Target>
          {({targetProps}) => {
            return (
              <InfoIcon
                dark
                style={{cursor: 'help'}}
                onMouseEnter={this.onMouseOver}
                onMouseLeave={this.onMouseOut}
                {...targetProps}
              />
            );
          }}
        </Target>

        {this.state.visible && (
          <Popper placement="right" className="popper">
            {this.props.children}
            <Arrow className="popper__arrow"/>
          </Popper>
        )}
      </Manager>
    );
  }
}

Any thoughts?

Question: Dynamically set targets or attach popper a different place in the DOM

I have a SVG with many paths were I want to show a popover on hover over each path. The problem is that the popper gets attached inside the SVG, and normal html elements won't render inside a SVG.

Is there a way to

  1. dynamically set a target so I can place one popper independently of the targets, and just updating the target on hover?
    or
  2. attach all the poppers somewhere else in the DOM so they won't end up inside the SVG?

Sorry for asking simple questions here, but I've tried to figure this out and failed.

z-index?

My poppers are often showing up under other elements on the page. I'm trying to figure out a way to add a z-index to the popper, but figured it was worth asking here in case others have already solved this issue

Type definitions doesn't work with latest version of popper.js

"popper.js" type definitions have been updated recently and they are braking "react-popper" type definitions. I am getting:

Namespace ''popper.js'' has no exported member 'Placement'.
Namespace ''popper.js'' has no exported member 'Modifiers'.

They have introduced braking changes in 1.11.1. Why don't you lock your "popper.js" to "1.11.0"?

Applying custom transformation on popper

Hi,

I am trying to apply a custom transformation to the popper element, depending on weather the popper is visible or not.

To be more specific, I am implementing a tooltip component that holds a state of isVisible.
Based on this state, I would like to apply a custom style object on popper with my own CSS value for transform.

For example, If the tooltip isn't visible I would like to position it slightly higher (relative to the target), so that once it becomes visible again, I will be able to animate it.

Is there a way for me to intervene with the calculation of the to-be applied style and make changes to it to force popper render with these styles?

Thanks,

allow Arrow to offset both left and top

seems somewhat unnecessary to only support left OR top offset for arrow, but not both: https://github.com/souporserious/react-popper/blob/master/src/Popper.jsx#L155-L159

I'm writing a modifier to dynamically offset the popper on the alternate axis and counter-offset the arrow on the same axis, instead of relying on CSS margins etc, but react-popper actively fights this.

Is it fair to just do the simple thing and simply apply top and left offsets at all times?

regression when using animation from 0.4.3

I was using the following code in 0.4.3 without any issues:

     <Manager>
        <Target component={null}>
          <Button label="button" onClick={this.togglePopover} />
        </Target>
        <VelocityTransitionGroup
          enter={{
            animation: {
              opacity: [1, 'easeOutQuart'],
              scale: [1, [600, 35]],
            },
            duration: 300,
          }}
          leave={{
            animation: {
              opacity: [0, 'easeOutQuart'],
              scale: [0.3, [500, 35]],
            },
            duration: 150,
          }}
          runOnMount
        >
          {this.state.isOpen &&
            <Popper placement="bottom">
              Popper!
            </Popper>}
        </VelocityTransitionGroup>
      </Manager>

I rewrote this code after updating to 0.5.0:

      <Manager>
          <Target>
            {({ targetRef }) => (
              <Button
                label="button"
                ref={targetRef}
                onClick={this.togglePopover}
              />
            )}
          </Target>
          <VelocityTransitionGroup
            enter={{
              animation: {
                opacity: [1, 'easeOutQuart'],
                scale: [1, [600, 35]],
              },
              duration: 300,
            }}
            leave={{
              animation: {
                opacity: [0, 'easeOutQuart'],
                scale: [0.3, [500, 35]],
              },
              duration: 150,
            }}
            runOnMount
          >
            {this.state.isOpen &&
              <Popper placement="bottom">
                {({ popperRef, popperStyle, popperPlacement }) => (
                  <div
                    ref={popperRef}
                    style={popperStyle}
                    data-placement={popperPlacement}
                  >
                    Menu?
                  </div>
                )}
              </Popper>}
          </VelocityTransitionGroup>
      </Manager>

I'm sure there is a possibility I'm doing something wrong and I'll keep hacking on it, but I figured it was worth raising!

Custom component on Target makes Popper invisible

import React from 'react';
import { Manager, Target, Popper } from 'react-popper';

const Div = props => <div {...props} />;

export default function Stuff() {
  return (
    <Manager>
      <Target component={Div}>
        Click me
      </Target>
      <Popper>
        <div>
          Something here
        </div>
      </Popper>
    </Manager>
  );
};

This renders a Popper element with opacity: 0.

Am I doing something wrong?

preventOverflow.boundariesElement modifier not working properly for scrollParent

I'm not sure if this is related to react-popper or the underlying popper.js, but it appears as though the modifier preventOverflow.boundariesElement does not work as expected with the value scrollParent. I am testing with a target inside of a scrolling div (inside a modal) and I am not seeing the same behavior as I do when I set preventOverflow.boundariesElement to viewport. I am most interested in implementing the "hide" functionality when a target scrolls out of view and I am able to get that working with viewport, but NOT with scrollParent.

Issue when popper overflows viewport

I'm not sure if this is a popper issue or a react-popper issue, so I'll report here now as I keep digging.

I have a popper with a fixed size (width and height). When I open it (placement=bottom) in a window where there is room, I don't have any issues, its placed correctly.

https://cl.ly/1w0m2T1P1j3u

If I think resize the window to the point that the popper no longer fits, things get odd. Basically from what I can tell the position: absolute is removed from the Popper styles. All the other values are still there, so I'm not sure why or what is going on.

https://cl.ly/1t1M44063V2J

If I then resize the window so there is again size, it still no longer has position: absolute:

https://cl.ly/1W3A1c3T1x3C

here is what I'm seeing in the DOM:

<div style="top: 0px; left: 0px; transform: translate3d(-380px, 64px, 0px); will-change: transform;" data-placement="bottom"><div data-css-32nwhk="View.Column.Content"><div data-css-1hqne8e="View.Column">Content!</div></div></div>

requiring popper.js throws CaseSensitivePathsPlugin

I don't think this is a bug, but I wanted to post here because it might help someone. I was trying to use reactstrap, but I also had my env var NODE_PATH=.

This caused a weird problem with react-popper where an exception CaseSensitivePathsPlugin would be thrown because popper.js appears on the filepath in node_modules as an actual file and ALSO as the actual node_modules dependency.

I removed NODE_PATH=. from my environment (which I guess is a bad idea, but I've been using that for a while just to have nicer include paths) and the problem went away.

react-popper and react 15.6.1 and react-dom 15.6.1

warning.js:36 Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: boolean.

react-dom.min.js:15 Uncaught Error: Minified React error #130; visit http://facebook.github.io/react/docs/error-decoder.html?invariant=130&args[]=boolean&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
at r (react-dom.min.js:15)
at p.i [as _instantiateReactComponent] (react-dom.min.js:15)
at performInitialMount (react-dom.min.js:13)
at p.mountComponent (react-dom.min.js:13)
at Object.mountComponent (react-dom.min.js:14)
at mountChildren (react-dom.min.js:14)
at m._createInitialChildren (react-dom.min.js:13)
at mountComponent (react-dom.min.js:13)
at Object.mountComponent (react-dom.min.js:14)
at performInitialMount (react-dom.min.js:13)

Popper is not offsetting for arrow size when Arrow is a react component

So my code looks like this:

  render() {
    const { target, menu, config } = this.props;
    return (
      <Manager {...config.manager}>
        <Target {...config.target} >
          {target}
        </Target>
        <Popper {...config.popper}>
          {menu}
          <Arrow {...config.arrow} />
        </Popper>
      </Manager>
    );
  }

where

config.arrow = {
    component: MenuArrow
}

The MenuArrow is rendering, but the popper position does not adjust for its size. If I set some widht and height directly on Arrow, then it works as expected.

Dynamic positioning arrow incorrect after upgrade to 0.7.1

After upgrading to 0.7.1 the dynamic positioning of the arrow became incorrect. Depending on the chosen placement, it adds a top or left attribute to the arrow so it's contained inside the popper element. It even happens with the most basic readme example together with the css stylesheet provided by popper itself (https://github.com/FezVrasta/popper.js/blob/master/docs/css/popper.css):

<Manager>
    <Target style={{ width: 120, height: 120, background: '#b4da55' }}>
      Target Box
    </Target>
    <Popper placement="left" className="popper">
      Left Content
      <Arrow className="popper__arrow"/>
    </Popper>
    <Popper placement="right" className="popper">
      Right Content
      <Arrow className="popper__arrow"/>
    </Popper>
  </Manager>

include typescript typings

@souporserious would you be open to including a .d.ts file in the NPM package for typescript consumers? i've been writing it locally and would be happy to contribute.

there'd be some additional maintenance cost to keep the definitions updated as the API evolves, but I'll be happy to help out if you mention me in the future!

Avoid wrapping div if single child is provided

Take this case in consideration:

<Manager>
  <Something>
    <Target />
    <Popper />
  </Something>
</Manager>

this will generate the following markup:

<div>
  <div>
    <div />
    <div />
  </div>
</div>

In this case tho, we could avoid to generate the top wrapping div, because Manager is going to render a single child.

I think we could support this case.

How to prevent wrapping of <Target>'s children

<Target>
  {Children.only(children)}
</Target>

renders

<div>
  <dom of my component>
</div>

The div wrapping causes issues because it has by default block style whereas the child can be an inline element or with its own padding/margins etc.

Desired output should just be <dom of my component> without wrapping divs.
Target should ideally be cloning Children.only(children).

Warning if passing to Manager unknown props

Hi,
referring to this issue in styled-component repo.
styled-components/styled-components#1268

I was wondering how can I avoid that unknown props will be passed to Manager's div.
I need to pass these properties in order to use it in a style js conf file for styled-component element.

https://www.webpackbin.com/bins/-KxN8G3pDI0nHJTNmExw

and like you suggested if I set tag={false} it retrieves me this error:

Uncaught Invariant Violation: Manager.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.

Popper passes down unknown props to html tags.

Popper is currently passing down restProps (or all unused props of Popper) to it's direct child here:
https://github.com/souporserious/react-popper/blob/master/src/Popper.jsx#L207

This causes the following warning if a user-defined component attribute is not passed down or an html tag is specified as the component prop:

Warning: Unknown prop 'closePortal' on <div> tag.

I suggest that restProps should only be passed down if the component is a user-defined react component not an html tag.

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.