* feature(inline stylesheets): implement as experimental
* test: rename css-inline -> css-import-as-inline
* test(content collections): add de-duplication of css
* test: add new suite for inlineStylesheets configuration
* fix(inline stylesheets): did not act on propagated styles
* hack(inline stylesheets testing): duplicate fixtures
Content collections reuses build data across multiple fixture.builds, even though a configuration change may have changed it.
Duplicating fixtures avoids usage of the stale cache.
https://cdn.discordapp.com/attachments/1039830843440504872/1097795182340092024/Screenshot_87_colored.png
* refactor(css plugin): reduce nesting
* optimization(css rendering): merge <style> tags
Chrome, but not Safari or Firefox, is slower to match rules when they are split across multiple files or style tags.
https://nolanlawson.com/2022/06/22/style-scoping-versus-shadow-dom-which-is-fastest/
Having the abiility to inline stylesheets opens us up to this optimization.
Ideally, it would extend to propagated styles, but that ended up being a rabbit hole.
* typedocs(inlineStylesheets config): ensure consistency
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* chore(build internals): update comment
* correct minor mistake in test
* test(inline stylesheets): unique package names for duplicate fixtures
* refactor(css build plugin): maps -> records
* refactor(css build plugin): remove use of spread operator
---------
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>