JSFiddle - React, Tailwind, and code Playground
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/fabric.js/1.4.13/fabric.min.js"></script>
<canvas class="panelSmiley"
data-text="Hello World!"
data-animate="true"
style="border:1px solid #ddd;">
</canvas>
JavaScript
var panelSmiley = function (target, options) {
options.text = options.text || {};
options.board = options.board || {};
options.stake = options.stake || {};
options.smiley = options.smiley || {};
options.animate = options.animate || {};
var _opt = {
text: {
text: options.text.text || 'Your text!',
color: options.text.color || 'black',
font: options.text.font || 'Sans Serif',
size: options.text.size || '16',
},
board: {
background: options.board.background || 'white',
border: options.board.border || 'black',
},
stake: {
color: options.stake.color || '#884c30',
},
smiley: {
image: options.smiley.image || 'http://www.lexpage.net/static/images/smiley/smile.gif',
offsetX: options.smiley.offsetX || 0,
offsetY: options.smiley.offsetY || 0,
},
animate: {
animation: options.animate.animation || false,
duration: options.animate.duration || 600,
},
};
var CST = {
MARGIN_V: 5,
MARGIN_H: 6,
TEXT_PADDING_V: 5,
TEXT_PADDING_H: 10,
STAKE_HEIGHT: 25,
STAKE_WIDTH: 4,
BORDER_WIDTH: 1,
};
// Save the bears, save the global scopes
(function () {
var text = new fabric.Text(_opt.text.text, {
fontFamily: _opt.text.font,
fontSize: _opt.text.size,
fill: _opt.text.color,
textAlign: 'center',
left: CST.TEXT_PADDING_H + CST.BORDER_WIDTH,
top: CST.TEXT_PADDING_V + CST.BORDER_WIDTH,
});
var board = new fabric.Rect({
width: text.width + 2 * CST.TEXT_PADDING_H,
height: text.height + 2 * CST.TEXT_PADDING_V,
fill: _opt.board.background,
stroke: _opt.board.border,
strokeLineJoin: 'round',
strokeWidth:...