UNPKG

1.04 kBJavaScriptView Raw
1/** @flow */
2
3import type {PluginConfig, PluginResult} from './index';
4
5export default function visited(
6 {
7 addCSS,
8 appendImportantToEachValue,
9 config,
10 cssRuleSetToString,
11 hash,
12 props,
13 style,
14 }: PluginConfig,
15): PluginResult {
16 // eslint-disable-line no-shadow
17 let className = props.className;
18
19 const newStyle = Object.keys(style).reduce(
20 (newStyleInProgress, key) => {
21 let value = style[key];
22 if (key === ':visited') {
23 value = appendImportantToEachValue(value);
24 const ruleCSS = cssRuleSetToString('', value, config.userAgent);
25 const visitedClassName = 'rad-' + hash(ruleCSS);
26 const css = '.' + visitedClassName + ':visited' + ruleCSS;
27
28 addCSS(css);
29 className = (className ? className + ' ' : '') + visitedClassName;
30 } else {
31 newStyleInProgress[key] = value;
32 }
33
34 return newStyleInProgress;
35 },
36 {},
37 );
38
39 return {
40 props: className === props.className ? null : {className},
41 style: newStyle,
42 };
43}