///
///
///
// simple cloud
import * as React from "react";
import * as ReactDOM from "react-dom";
import {TagCloud, DefaultRenderer} from "react-tagcloud";
let data = [
{ value: "jQuery", count: 25 }, { value: "MongoDB", count: 18 },
{ value: "JavaScript", count: 38 }, { value: "React", count: 30 },
{ value: "Nodejs", count: 28 }, { value: "Express.js", count: 25 },
{ value: "HTML5", count: 33 }, { value: "CSS3", count: 20 }
];
ReactDOM.render(
// minSize, maxSize - font size in px
// tags - array of objects with properties value and count
// shuffle - indicates if data should be shuffled (true by default)
// onClick event handler has `tag` and `event` parameter
console.log("clicking on tag:", tag)} />,
document.getElementById("simple-cloud")
);
// default-renderer
// DefaultRenderer creates default renderer implementation with custom options
// usage of tagRenderer option is described in ./custom-tag-renderer.js
// custom props will be applied on each tag component
const props = {
style: {border: "1px solid silver", padding: "5px"},
className: "my-tag-class"
};
// custom random color options
// see randomColor package: https://github.com/davidmerfield/randomColor
const colorOptions = {
luminosity: "light",
hue: "blue"
};
let customizedDefaultRenderer = new DefaultRenderer({ props, colorOptions });
ReactDOM.render(
,
document.getElementById("default-renderer")
);
//
// custom-renderer.js
// using custom renderer the default renderer will be overriden
// custom renderer is function which takes tag, computed font size and
// elemnt key as arguments, and returns react component
let customRenderer2 = (tag: any, size: number, key: string|number) => {
return {tag.value};
};
ReactDOM.render(
,
document.getElementById("custom-renderer")
);
// example from custom-tag-renderer.js
let data2 = [
{ value: { name: "google", link: "http://google.com" }, count: 25 },
{ value: { name: "yahoo", link: "http://yahoo.com" }, count: 18 },
{ value: { name: "facebook", link: "http://facebook.com" }, count: 38 },
{ value: { name: "twitter", link: "http://twitter.com" }, count: 30 },
{ value: { name: "github", link: "http://github.com" }, count: 28 },
{ value: { name: "npmjs", link: "http://npmjs.com" }, count: 25 },
{ value: { name: "stackoverflow", link: "http://stackoverflow.com" }, count: 33 }
];
// with tagRenderer option it is possible to customize rendering of each tag
// tagRender is a function which takes tag as argument and returns react component or simple string
const tagRenderer = (tag: any) => ({tag.value.name});
const customizedDefaultRenderer4 = new DefaultRenderer({ tagRenderer });
ReactDOM.render(
,
document.getElementById("custom-tag-renderer")
);