Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,12 @@
* [6.4.6. FelaTheme](docs/api/bindings/FelaTheme.md)
* [6.4.7. FelaRenderer](docs/api/bindings/FelaRenderer.md)
* [6.4.8. RendererProvider](docs/api/bindings/RendererProvider.md)
* [6.4.9. ThemeProvider](docs/api/bindings/ThemeProvider.md)
* [6.4.10. RendererContext](docs/api/bindings/RendererContext.md)
* [6.4.11. ThemeContext](docs/api/bindings/ThemeContext.md)
* [6.4.12. useFela](docs/api/bindings/useFela.md)
* [6.4.13. withTheme](docs/api/bindings/withTheme.md)
* [6.4.9. renderToNodeList](docs/api/bindings/renderToNodeList.md)
* [6.4.10. ThemeProvider](docs/api/bindings/ThemeProvider.md)
* [6.4.11. RendererContext](docs/api/bindings/RendererContext.md)
* [6.4.12. ThemeContext](docs/api/bindings/ThemeContext.md)
* [6.4.13. useFela](docs/api/bindings/useFela.md)
* [6.4.14. withTheme](docs/api/bindings/withTheme.md)
* 6.5. jest + react/preact/inferno
* [6.5.1. createSnapshot](docs/api/jest-bindings/createSnapshot.md)
* [7. Migration Guide](MIGRATION.md)
Expand Down
27 changes: 27 additions & 0 deletions docs/api/bindings/renderToNodeList.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# renderToNodeList

This method returns a NodeList with `<style>` objects with the rendered CSS. This is useful for SSR (Server Side Rendering). This method uses the [fela-dom/renderToSheetList](../fela-dom/renderToSheetList) internally.

## Arguments
| Argument | Type | Description |
| --- | --- | --- |
| renderer | [*Renderer*](../fela/Renderer.md) | The renderer providing the styles which are rendered to a list of sheet data. |

### Returns
(*Object[]*): NodeList of style sheet nodes


### Example
```javascript
import { renderToNodeList } from 'react-fela'
import { createRenderer } from 'fela'

const renderer = createRenderer()
const Head = () => {
return (
<head>{renderToNodeList(renderer)}</head>
)
}
```


20 changes: 20 additions & 0 deletions packages/fela-bindings/src/renderToNodeListFactory.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/* @flow */
import { renderToSheetList } from 'fela-dom'
import type { DOMRenderer } from '../../../flowtypes/DOMRenderer'

export function renderToNodeListFactory(createElement: Function) {
return function renderToNodeList(renderer: DOMRenderer) {
const sheetList = renderToSheetList(renderer)

return sheetList.map(({ type, media, rehydration, support, css }) =>
createElement('style', {
key: type + media,
media,
'data-fela-rehydration': rehydration,
'data-fela-type': type,
'data-fela-support': support,
dangerouslySetInnerHTML: { __html: css },
})
)
}
}
5 changes: 5 additions & 0 deletions packages/inferno-fela/src/renderToNodeList.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/* @flow */
import { createElement } from 'inferno-create-element'
import { renderToNodeListFactory } from 'fela-bindings'

export default renderToNodeListFactory(createElement)
6 changes: 6 additions & 0 deletions packages/preact-fela/src/renderToNodeList.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* @flow */
// $FlowFixMe
import { h as createElement } from 'preact'
import { renderToNodeListFactory } from 'fela-bindings'

export default renderToNodeListFactory(createElement)
5 changes: 5 additions & 0 deletions packages/react-fela/src/renderToNodeList.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/* @flow */
import { createElement } from 'react'
import { renderToNodeListFactory } from 'fela-bindings'

export default renderToNodeListFactory(createElement)
6 changes: 5 additions & 1 deletion packages/reason-fela/src/ReactFela.re
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,8 @@ module ThemeProvider = {
[@bs.module "react-fela"] [@react.component]
external make: (~theme: Js.t('a), ~children: React.element) => React.element =
"ThemeProvider";
};
};

[@bs.module "react-fela"]
external renderToNodeList: Fela.renderer => array(React.element) =
"renderToNodeList";