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

Folders and files

NameName
Last commit message
Last commit date
Jan 19, 2024
Jan 16, 2023
Sep 14, 2023
Oct 19, 2023
Jan 19, 2024
Jan 20, 2024
Oct 5, 2023
Jan 20, 2024
Jan 20, 2024
Sep 11, 2023
Jan 20, 2024
Dec 19, 2023
Oct 3, 2023
Jan 20, 2024
Sep 14, 2023
May 27, 2017
Dec 14, 2023
Jun 30, 2023
Jul 17, 2023
Jul 17, 2023
Jan 19, 2024
Oct 4, 2022
Aug 13, 2021
Sep 11, 2018
Dec 7, 2016
Sep 19, 2023
Dec 16, 2023
Nov 14, 2023
Jan 13, 2024
Jan 19, 2024
Jan 19, 2024
Nov 14, 2023
May 4, 2023
Jan 16, 2023
Dec 14, 2023
Nov 14, 2023
Jul 11, 2023
Jan 16, 2023
Jan 16, 2023
Jan 11, 2024

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. Ensure you have yarn classic installed.
  2. Run yarn install to install dependencies for the test generator.
  3. Run yarn gentest in the yoga 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).