Skip to content
/ yoga Public

Yoga is an embeddable layout engine targeting web standards.

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE-examples
Notifications You must be signed in to change notification settings

facebook/yoga

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c4cf261 · Nov 14, 2023
Nov 13, 2023
Jan 16, 2023
Sep 14, 2023
Oct 19, 2023
Nov 7, 2023
Oct 5, 2023
Nov 8, 2023
Nov 14, 2023
Sep 11, 2023
Nov 14, 2023
Nov 14, 2023
Oct 3, 2023
Nov 14, 2023
Sep 14, 2023
May 27, 2017
Nov 1, 2023
Jun 30, 2023
Jul 17, 2023
Jul 17, 2023
May 15, 2023
Oct 4, 2022
Aug 13, 2021
Sep 11, 2018
Dec 7, 2016
Sep 19, 2023
Sep 19, 2023
Nov 14, 2023
Oct 5, 2023
Oct 24, 2023
Nov 14, 2023
May 4, 2023
Jan 16, 2023
Nov 3, 2023
Nov 14, 2023
Jul 11, 2023
Jan 16, 2023
Jan 16, 2023
Nov 3, 2023

Yoga Support Ukraine CocoaPods npm Maven Central

Yoga is an embeddable and performant flexbox layout engine with bindings for multiple languages.

Building

Yoga's main implementation targets C++ 20 with accompanying build logic in CMake. A wrapper is provided to build the main library and run unit tests.

./unit_tests <Debug|Release>

While not required, this script will use ninja if it is installed for faster builds.

Yoga is additionally part of the vcpkg collection of ports maintained by Microsoft and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

Adding Tests

Many of Yoga's tests are automatically generated, using HTML fixtures describing node structure. These are rendered in Chrome to generate an expected layout result for the tree. New fixtures can be added to gentest/fixtures.

<div id="my_test" style="width: 100px; height: 100px; align-items: center;">
  <div style="width: 50px; height: 50px;"></div>
</div>

To generate new tests from added fixtures:

  1. Run bundle install in the gentest directory to install dependencies of the test generator.
  2. Run ruby gentest.rb in the gentest directory.

Debugging

Yoga provides a VSCode "launch.json" configuration which allows debugging unit tests. Simply add your breakpoints, and run "Debug C++ Unit tests (lldb)" (or "Debug C++ Unit tests (vsdbg)" on Windows).