Skip to content
This repository has been archived by the owner on May 17, 2019. It is now read-only.

Commit

Permalink
Add inject-decl compat (#108)
Browse files Browse the repository at this point in the history
  • Loading branch information
rtsao authored May 4, 2018
1 parent b84c36d commit 2f11974
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
6 changes: 5 additions & 1 deletion src/browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ import type {FusionPlugin} from 'fusion-core';
import {Provider as StyletronProvider} from 'styletron-react';
import {Client as Styletron} from 'styletron-engine-atomic';

import {injectDeclarationCompatMixin} from './inject-declaration-compat-mixin.js';

const StyletronCompat = injectDeclarationCompatMixin(Styletron);

let engine;

const plugin =
Expand All @@ -22,7 +26,7 @@ const plugin =
middleware: () => (ctx, next) => {
if (ctx.element) {
if (!engine) {
engine = new Styletron({
engine = new StyletronCompat({
hydrate: document.getElementsByClassName('_styletron_hydrate_'),
});
}
Expand Down
17 changes: 17 additions & 0 deletions src/inject-declaration-compat-mixin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
export const injectDeclarationCompatMixin = Base =>
class extends Base {
injectDeclaration({prop, val, media, pseudo}) {
let style = {[prop]: val};
if (pseudo) {
style = {
[pseudo]: style,
};
}
if (media) {
style = {
[media]: style,
};
}
return this.renderStyle(style);
}
};
6 changes: 5 additions & 1 deletion src/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,16 @@ import type {FusionPlugin} from 'fusion-core';
import {Provider as StyletronProvider} from 'styletron-react';
import {Server as Styletron} from 'styletron-engine-atomic';

import {injectDeclarationCompatMixin} from './inject-declaration-compat-mixin.js';

const StyletronCompat = injectDeclarationCompatMixin(Styletron);

const plugin =
__NODE__ &&
createPlugin({
middleware: () => (ctx, next) => {
if (ctx.element) {
const engine = new Styletron();
const engine = new StyletronCompat();

ctx.element = (
<StyletronProvider value={engine}>{ctx.element}</StyletronProvider>
Expand Down

0 comments on commit 2f11974

Please sign in to comment.