Parse colors defined in new syntax as `Color` objects

Internally, we're still holding `sRGB` values which can be
out-of-sRGB-gamut and this is fine as we'll use them as:
* Transport mechanism of Colors
* Contrast calculations

It seems like contrast calculations with out-of-sRGB-gamut colors with
sRGB values are fine. So, we probably won't need to do anything specific
here. (which I'll confirm next)

This is a biiiig CL but I thought it tells a meaningful story, so
decided to keep it this way. Let me know if you would prefer seeing
changes in smaller CLs.

All the things happening in this CL, in order:
* We handle parsing new color syntaxes: `lch()`, `oklch()`, `lab()`,
`oklab()`, `color()` and create `Color` objects for them too
* Since we're able to parse these colors now, we don't need to special
case color texts before parsing and render circular color swatch where
needed. Instead, we're passing `Color` objects to `ColorSwatch` and
it decides what to render: circular color swatch or regular one.
* Removal of CircularColorSwatch component.
* Since now we're able to understand colors written in the new syntax
CSS Overview panel collects color out of the box. After talking to
Peter, I've made one adjustment to make sure those colors are
represented good (at least without overflowing to other elements
or breaking the layout).

Fixed: 1385379
Change-Id: Ic9a86addcab08a57bcba6deb5b9e433b146945c6
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/4057666
Reviewed-by: Changhao Han <[email protected]>
Reviewed-by: Philip Pfaffe <[email protected]>
Commit-Queue: Ergün Erdoğmuş <[email protected]>
22 files changed
tree: 269f2911dc4b2055a3b93215d5d6bddffa3fc5ab
  1. .vscode/
  2. build_overrides/
  3. config/
  4. docs/
  5. extension-api/
  6. front_end/
  7. inspector_overlay/
  8. node_modules/
  9. scripts/
  10. test/
  11. third_party/
  12. v8/
  13. .clang-format
  14. .editorconfig
  15. .eslintignore
  16. .eslintrc.js
  17. .gitattributes
  18. .gitignore
  19. .gn
  20. .mailmap
  21. .npmignore
  22. .npmrc
  23. .style.yapf
  24. .stylelintignore
  25. .stylelintrc.json
  26. AUTHORS
  27. BUILD.gn
  28. codereview.settings
  29. DEPS
  30. LICENSE
  31. OWNERS
  32. package-lock.json
  33. package.json
  34. PRESUBMIT.py
  35. README.md
  36. tsconfig.json
  37. WATCHLISTS
README.md

Chrome DevTools frontend

npm package

The client-side of the Chrome DevTools, including all JS & CSS to run the DevTools webapp.

Source code

The frontend is available on chromium.googlesource.com.

Project documentation

Check out the project documentation for instructions to set up, use, and maintain a DevTools front-end checkout, as well as design guidelines, and architectural documentation.

Additional references

Source mirrors

DevTools frontend repository is mirrored on GitHub.

DevTools frontend is also available on NPM as the chrome-devtools-frontend package. It's not currently available via CJS or ES modules, so consuming this package in other tools may require some effort.

The version number of the npm package (e.g. 1.0.373466) refers to the Chromium commit position of latest frontend git commit. It's incremented with every Chromium commit, however the package is updated roughly daily.

Getting in touch