812 lines
24 KiB
JavaScript
812 lines
24 KiB
JavaScript
|
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
||
|
// Generated by LiveScript 1.3.1
|
||
|
var presets, simpleStr, wrap, slice$ = [].slice, toString$ = {}.toString;
|
||
|
presets = require('./presets').presets;
|
||
|
simpleStr = function(arr){
|
||
|
return arr.join('');
|
||
|
};
|
||
|
wrap = function(content){
|
||
|
return "data:image/svg+xml;base64," + btoa(content);
|
||
|
};
|
||
|
(function(){
|
||
|
var make, handler, ldBar;
|
||
|
make = {
|
||
|
head: function(viewBox){
|
||
|
return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"" + viewBox + "\">";
|
||
|
},
|
||
|
gradient: function(dir, dur){
|
||
|
var colors, ret, len, gx, gy, x, y, i$, i, idx;
|
||
|
dir == null && (dir = 45);
|
||
|
dur == null && (dur = 1);
|
||
|
colors = slice$.call(arguments, 2);
|
||
|
ret = [this.head("0 0 100 100")];
|
||
|
len = colors.length * 4 + 1;
|
||
|
dir = dir * Math.PI / 180;
|
||
|
gx = Math.pow(Math.cos(dir), 2);
|
||
|
gy = Math.sqrt(gx - Math.pow(gx, 2));
|
||
|
if (dir > Math.PI * 0.25) {
|
||
|
gy = Math.pow(Math.sin(dir), 2);
|
||
|
gx = Math.sqrt(gy - Math.pow(gy, 2));
|
||
|
}
|
||
|
x = gx * 100;
|
||
|
y = gy * 100;
|
||
|
ret.push("<defs><linearGradient id=\"gradient\" x1=\"0\" x2=\"" + gx + "\" y1=\"0\" y2=\"" + gy + "\">");
|
||
|
for (i$ = 0; i$ < len; ++i$) {
|
||
|
i = i$;
|
||
|
idx = i * 100 / (len - 1);
|
||
|
ret.push("<stop offset=\"" + idx + "%\" stop-color=\"" + colors[i % colors.length] + "\"/>");
|
||
|
}
|
||
|
ret.push("</linearGradient></defs>\n<rect x=\"0\" y=\"0\" width=\"400\" height=\"400\" fill=\"url(#gradient)\">\n<animateTransform attributeName=\"transform\" type=\"translate\" from=\"-" + x + ",-" + y + "\"\nto=\"0,0\" dur=\"" + dur + "s\" repeatCount=\"indefinite\"/></rect></svg>");
|
||
|
return wrap(ret.join(""));
|
||
|
},
|
||
|
stripe: function(c1, c2, dur){
|
||
|
var ret, i;
|
||
|
c1 == null && (c1 = '#b4b4b4');
|
||
|
c2 == null && (c2 = '#e6e6e6');
|
||
|
dur == null && (dur = 1);
|
||
|
ret = [this.head("0 0 100 100")];
|
||
|
ret = ret.concat([
|
||
|
"<rect fill=\"" + c2 + "\" width=\"100\" height=\"100\"/>", "<g><g>", (function(){
|
||
|
var i$, results$ = [];
|
||
|
for (i$ = 0; i$ < 13; ++i$) {
|
||
|
i = i$;
|
||
|
results$.push(("<polygon fill=\"" + c1 + "\" ") + ("points=\"" + (-90 + i * 20) + ",100 " + (-100 + i * 20) + ",") + ("100 " + (-60 + i * 20) + ",0 " + (-50 + i * 20) + ",0 \"/>"));
|
||
|
}
|
||
|
return results$;
|
||
|
}()).join(""), "</g><animateTransform attributeName=\"transform\" type=\"translate\" ", "from=\"0,0\" to=\"20,0\" dur=\"" + dur + "s\" repeatCount=\"indefinite\"/></g></svg>"
|
||
|
].join(""));
|
||
|
return wrap(ret);
|
||
|
},
|
||
|
bubble: function(c1, c2, count, dur, size, sw){
|
||
|
var ret, i$, i, idx, x, r, d;
|
||
|
c1 == null && (c1 = '#39d');
|
||
|
c2 == null && (c2 = '#9cf');
|
||
|
count == null && (count = 15);
|
||
|
dur == null && (dur = 1);
|
||
|
size == null && (size = 6);
|
||
|
sw == null && (sw = 1);
|
||
|
ret = [this.head("0 0 200 200"), "<rect x=\"0\" y=\"0\" width=\"200\" height=\"200\" fill=\"" + c1 + "\"/>"];
|
||
|
for (i$ = 0; i$ < count; ++i$) {
|
||
|
i = i$;
|
||
|
idx = -(i / count) * dur;
|
||
|
x = Math.random() * 184 + 8;
|
||
|
r = (Math.random() * 0.7 + 0.3) * size;
|
||
|
d = dur * (1 + Math.random() * 0.5);
|
||
|
ret.push(["<circle cx=\"" + x + "\" cy=\"0\" r=\"" + r + "\" fill=\"none\" stroke=\"" + c2 + "\" stroke-width=\"" + sw + "\">", "<animate attributeName=\"cy\" values=\"190;-10\" times=\"0;1\" ", "dur=\"" + d + "s\" begin=\"" + idx + "s\" repeatCount=\"indefinite\"/>", "</circle>", "<circle cx=\"" + x + "\" cy=\"0\" r=\"" + r + "\" fill=\"none\" stroke=\"" + c2 + "\" stroke-width=\"" + sw + "\">", "<animate attributeName=\"cy\" values=\"390;190\" times=\"0;1\" ", "dur=\"" + d + "s\" begin=\"" + idx + "s\" repeatCount=\"indefinite\"/>", "</circle>"].join(""));
|
||
|
}
|
||
|
return wrap(ret.join("") + "</svg>");
|
||
|
}
|
||
|
};
|
||
|
handler = {
|
||
|
queue: {},
|
||
|
running: false,
|
||
|
main: function(timestamp){
|
||
|
var keepon, removed, k, ref$, func, ret, this$ = this;
|
||
|
keepon = false;
|
||
|
removed = [];
|
||
|
for (k in ref$ = this.queue) {
|
||
|
func = ref$[k];
|
||
|
ret = func(timestamp);
|
||
|
if (!ret) {
|
||
|
removed.push(func);
|
||
|
}
|
||
|
keepon = keepon || ret;
|
||
|
}
|
||
|
for (k in ref$ = this.queue) {
|
||
|
func = ref$[k];
|
||
|
if (removed.indexOf(func) >= 0) {
|
||
|
delete this.queue[k];
|
||
|
}
|
||
|
}
|
||
|
if (keepon) {
|
||
|
return requestAnimationFrame(function(it){
|
||
|
return this$.main(it);
|
||
|
});
|
||
|
} else {
|
||
|
return this.running = false;
|
||
|
}
|
||
|
},
|
||
|
add: function(key, f){
|
||
|
var this$ = this;
|
||
|
if (!this.queue[key]) {
|
||
|
this.queue[key] = f;
|
||
|
}
|
||
|
if (!this.running) {
|
||
|
this.running = true;
|
||
|
return requestAnimationFrame(function(it){
|
||
|
return this$.main(it);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
window.ldBar = ldBar = function(selector, option){
|
||
|
var xmlns, root, cls, idPrefix, id, domTree, newNode, x$, config, attr, that, isStroke, parseRes, dom, svg, text, group, length, path0, path1, patimg, img, ret, size, this$ = this;
|
||
|
option == null && (option = {});
|
||
|
xmlns = {
|
||
|
xlink: "http://www.w3.org/1999/xlink"
|
||
|
};
|
||
|
root = toString$.call(selector).slice(8, -1) === 'String' ? document.querySelector(selector) : selector;
|
||
|
if (!root.ldBar) {
|
||
|
root.ldBar = this;
|
||
|
} else {
|
||
|
return root.ldBar;
|
||
|
}
|
||
|
cls = root.getAttribute('class') || '';
|
||
|
if (!~cls.indexOf('ldBar')) {
|
||
|
root.setAttribute('class', cls + " ldBar");
|
||
|
}
|
||
|
idPrefix = "ldBar-" + Math.random().toString(16).substring(2);
|
||
|
id = {
|
||
|
key: idPrefix,
|
||
|
clip: idPrefix + "-clip",
|
||
|
filter: idPrefix + "-filter",
|
||
|
pattern: idPrefix + "-pattern",
|
||
|
mask: idPrefix + "-mask",
|
||
|
maskPath: idPrefix + "-mask-path"
|
||
|
};
|
||
|
domTree = function(n, o){
|
||
|
var k, v;
|
||
|
n = newNode(n);
|
||
|
for (k in o) {
|
||
|
v = o[k];
|
||
|
if (k !== 'attr') {
|
||
|
n.appendChild(domTree(k, v || {}));
|
||
|
}
|
||
|
}
|
||
|
n.attrs(o.attr || {});
|
||
|
return n;
|
||
|
};
|
||
|
newNode = function(n){
|
||
|
return document.createElementNS("http://www.w3.org/2000/svg", n);
|
||
|
};
|
||
|
x$ = document.body.__proto__.__proto__.__proto__;
|
||
|
x$.text = function(t){
|
||
|
return this.appendChild(document.createTextNode(t));
|
||
|
};
|
||
|
x$.attrs = function(o){
|
||
|
var k, v, ret, results$ = [];
|
||
|
for (k in o) {
|
||
|
v = o[k];
|
||
|
ret = /([^:]+):([^:]+)/.exec(k);
|
||
|
if (!ret || !xmlns[ret[1]]) {
|
||
|
results$.push(this.setAttribute(k, v));
|
||
|
} else {
|
||
|
results$.push(this.setAttributeNS(xmlns[ret[1]], k, v));
|
||
|
}
|
||
|
}
|
||
|
return results$;
|
||
|
};
|
||
|
x$.styles = function(o){
|
||
|
var k, v, results$ = [];
|
||
|
for (k in o) {
|
||
|
v = o[k];
|
||
|
results$.push(this.style[k] = v);
|
||
|
}
|
||
|
return results$;
|
||
|
};
|
||
|
x$.append = function(n){
|
||
|
var r;
|
||
|
return this.appendChild(r = document.createElementNS("http://www.w3.og/2000/svg", n));
|
||
|
};
|
||
|
x$.attr = function(n, v){
|
||
|
if (v != null) {
|
||
|
return this.setAttribute(n, v);
|
||
|
} else {
|
||
|
return this.getAttribute(n);
|
||
|
}
|
||
|
};
|
||
|
config = {
|
||
|
"type": 'stroke',
|
||
|
"img": '',
|
||
|
"path": 'M10 10L90 10M90 8M90 12',
|
||
|
"fill-dir": 'btt',
|
||
|
"fill": '#25b',
|
||
|
"fill-background": '#ddd',
|
||
|
"fill-background-extrude": 3,
|
||
|
"pattern-size": null,
|
||
|
"stroke-dir": 'normal',
|
||
|
"stroke": '#25b',
|
||
|
"stroke-width": '3',
|
||
|
"stroke-trail": '#ddd',
|
||
|
"stroke-trail-width": 0.5,
|
||
|
"duration": 1,
|
||
|
"easing": 'linear',
|
||
|
"value": 0,
|
||
|
"img-size": null,
|
||
|
"bbox": null,
|
||
|
"set-dim": true,
|
||
|
"aspect-ratio": "xMidYMid",
|
||
|
"transition-in": false,
|
||
|
"min": 0,
|
||
|
"max": 100,
|
||
|
"precision": 0,
|
||
|
"padding": undefined
|
||
|
};
|
||
|
config["preset"] = root.attr("data-preset") || option["preset"];
|
||
|
if (config.preset != null) {
|
||
|
import$(config, presets[config.preset]);
|
||
|
}
|
||
|
for (attr in config) {
|
||
|
if (that = that = root.attr("data-" + attr)) {
|
||
|
config[attr] = that;
|
||
|
}
|
||
|
}
|
||
|
import$(config, option);
|
||
|
if (config.img) {
|
||
|
config.path = null;
|
||
|
}
|
||
|
isStroke = config.type === 'stroke';
|
||
|
parseRes = function(v){
|
||
|
var parser, ret;
|
||
|
parser = /data:ldbar\/res,([^()]+)\(([^)]+)\)/;
|
||
|
ret = parser.exec(v);
|
||
|
if (!ret) {
|
||
|
return v;
|
||
|
}
|
||
|
return ret = make[ret[1]].apply(make, ret[2].split(','));
|
||
|
};
|
||
|
config.fill = parseRes(config.fill);
|
||
|
config.stroke = parseRes(config.stroke);
|
||
|
if (config["set-dim"] === 'false') {
|
||
|
config["set-dim"] = false;
|
||
|
}
|
||
|
dom = {
|
||
|
attr: {
|
||
|
"xmlns:xlink": 'http://www.w3.org/1999/xlink',
|
||
|
preserveAspectRatio: config["aspect-ratio"],
|
||
|
width: "100%",
|
||
|
height: "100%"
|
||
|
},
|
||
|
defs: {
|
||
|
filter: {
|
||
|
attr: {
|
||
|
id: id.filter,
|
||
|
x: -1,
|
||
|
y: -1,
|
||
|
width: 3,
|
||
|
height: 3
|
||
|
},
|
||
|
feMorphology: {
|
||
|
attr: {
|
||
|
operator: +config["fill-background-extrude"] >= 0 ? 'dilate' : 'erode',
|
||
|
radius: Math.abs(+config["fill-background-extrude"])
|
||
|
}
|
||
|
},
|
||
|
feColorMatrix: {
|
||
|
attr: {
|
||
|
values: '0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0',
|
||
|
result: "cm"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
mask: {
|
||
|
attr: {
|
||
|
id: id.mask
|
||
|
},
|
||
|
image: {
|
||
|
attr: {
|
||
|
"xlink:href": config.img,
|
||
|
filter: "url(#" + id.filter + ")",
|
||
|
x: 0,
|
||
|
y: 0,
|
||
|
width: 100,
|
||
|
height: 100,
|
||
|
preserveAspectRatio: config["aspect-ratio"]
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
g: {
|
||
|
mask: {
|
||
|
attr: {
|
||
|
id: id.maskPath
|
||
|
},
|
||
|
path: {
|
||
|
attr: {
|
||
|
d: config.path || "",
|
||
|
fill: '#fff',
|
||
|
stroke: '#fff',
|
||
|
filter: "url(#" + id.filter + ")"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
clipPath: {
|
||
|
attr: {
|
||
|
id: id.clip
|
||
|
},
|
||
|
rect: {
|
||
|
attr: {
|
||
|
'class': 'mask',
|
||
|
fill: '#000'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
pattern: {
|
||
|
attr: {
|
||
|
id: id.pattern,
|
||
|
patternUnits: 'userSpaceOnUse',
|
||
|
x: 0,
|
||
|
y: 0,
|
||
|
width: 300,
|
||
|
height: 300
|
||
|
},
|
||
|
image: {
|
||
|
attr: {
|
||
|
x: 0,
|
||
|
y: 0,
|
||
|
width: 300,
|
||
|
height: 300
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
svg = domTree('svg', dom);
|
||
|
text = document.createElement('div');
|
||
|
text.setAttribute('class', 'ldBar-label');
|
||
|
root.appendChild(svg);
|
||
|
root.appendChild(text);
|
||
|
group = [0, 0];
|
||
|
length = 0;
|
||
|
this.fit = function(){
|
||
|
var that, box, d, rect;
|
||
|
if (that = config["bbox"]) {
|
||
|
box = that.split(' ').map(function(it){
|
||
|
return +it.trim();
|
||
|
});
|
||
|
box = {
|
||
|
x: box[0],
|
||
|
y: box[1],
|
||
|
width: box[2],
|
||
|
height: box[3]
|
||
|
};
|
||
|
} else {
|
||
|
box = group[1].getBBox();
|
||
|
}
|
||
|
if (!box || box.width === 0 || box.height === 0) {
|
||
|
box = {
|
||
|
x: 0,
|
||
|
y: 0,
|
||
|
width: 100,
|
||
|
height: 100
|
||
|
};
|
||
|
}
|
||
|
d = Math.max.apply(null, ['stroke-width', 'stroke-trail-width', 'fill-background-extrude'].map(function(it){
|
||
|
return config[it];
|
||
|
})) * 1.5;
|
||
|
if (config["padding"] != null) {
|
||
|
d = +config["padding"];
|
||
|
}
|
||
|
svg.attrs({
|
||
|
viewBox: [box.x - d, box.y - d, box.width + d * 2, box.height + d * 2].join(" ")
|
||
|
});
|
||
|
if (config["set-dim"]) {
|
||
|
['width', 'height'].map(function(it){
|
||
|
if (!root.style[it] || this$.fit[it]) {
|
||
|
root.style[it] = (box[it] + d * 2) + "px";
|
||
|
return this$.fit[it] = true;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
rect = group[0].querySelector('rect');
|
||
|
if (rect) {
|
||
|
return rect.attrs({
|
||
|
x: box.x - d,
|
||
|
y: box.y - d,
|
||
|
width: box.width + d * 2,
|
||
|
height: box.height + d * 2
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
if (config.path) {
|
||
|
if (isStroke) {
|
||
|
group[0] = domTree('g', {
|
||
|
path: {
|
||
|
attr: {
|
||
|
d: config.path,
|
||
|
fill: 'none',
|
||
|
'class': 'baseline'
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
} else {
|
||
|
group[0] = domTree('g', {
|
||
|
rect: {
|
||
|
attr: {
|
||
|
x: 0,
|
||
|
y: 0,
|
||
|
width: 100,
|
||
|
height: 100,
|
||
|
mask: "url(#" + id.maskPath + ")",
|
||
|
fill: config["fill-background"],
|
||
|
'class': 'frame'
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
svg.appendChild(group[0]);
|
||
|
group[1] = domTree('g', {
|
||
|
path: {
|
||
|
attr: {
|
||
|
d: config.path,
|
||
|
'class': isStroke ? 'mainline' : 'solid',
|
||
|
"clip-path": config.type === 'fill' ? "url(#" + id.clip + ")" : ''
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
svg.appendChild(group[1]);
|
||
|
path0 = group[0].querySelector(isStroke ? 'path' : 'rect');
|
||
|
path1 = group[1].querySelector('path');
|
||
|
if (isStroke) {
|
||
|
path1.attrs({
|
||
|
fill: 'none'
|
||
|
});
|
||
|
}
|
||
|
patimg = svg.querySelector('pattern image');
|
||
|
img = new Image();
|
||
|
img.addEventListener('load', function(){
|
||
|
var box, that;
|
||
|
box = (that = config["pattern-size"])
|
||
|
? {
|
||
|
width: +that,
|
||
|
height: +that
|
||
|
}
|
||
|
: img.width && img.height
|
||
|
? {
|
||
|
width: img.width,
|
||
|
height: img.height
|
||
|
}
|
||
|
: {
|
||
|
width: 300,
|
||
|
height: 300
|
||
|
};
|
||
|
svg.querySelector('pattern').attrs({
|
||
|
width: box.width,
|
||
|
height: box.height
|
||
|
});
|
||
|
return patimg.attrs({
|
||
|
width: box.width,
|
||
|
height: box.height
|
||
|
});
|
||
|
});
|
||
|
if (/.+\..+|^data:/.exec(!isStroke
|
||
|
? config.fill
|
||
|
: config.stroke)) {
|
||
|
img.src = !isStroke
|
||
|
? config.fill
|
||
|
: config.stroke;
|
||
|
patimg.attrs({
|
||
|
"xlink:href": img.src
|
||
|
});
|
||
|
}
|
||
|
if (isStroke) {
|
||
|
path0.attrs({
|
||
|
stroke: config["stroke-trail"],
|
||
|
"stroke-width": config["stroke-trail-width"]
|
||
|
});
|
||
|
path1.attrs({
|
||
|
"stroke-width": config["stroke-width"],
|
||
|
stroke: /.+\..+|^data:/.exec(config.stroke)
|
||
|
? "url(#" + id.pattern + ")"
|
||
|
: config.stroke
|
||
|
});
|
||
|
}
|
||
|
if (config.fill && !isStroke) {
|
||
|
path1.attrs({
|
||
|
fill: /.+\..+|^data:/.exec(config.fill)
|
||
|
? "url(#" + id.pattern + ")"
|
||
|
: config.fill
|
||
|
});
|
||
|
}
|
||
|
length = path1.getTotalLength();
|
||
|
this.fit();
|
||
|
this.inited = true;
|
||
|
} else if (config.img) {
|
||
|
if (config["img-size"]) {
|
||
|
ret = config["img-size"].split(',');
|
||
|
size = {
|
||
|
width: +ret[0],
|
||
|
height: +ret[1]
|
||
|
};
|
||
|
} else {
|
||
|
size = {
|
||
|
width: 100,
|
||
|
height: 100
|
||
|
};
|
||
|
}
|
||
|
group[0] = domTree('g', {
|
||
|
rect: {
|
||
|
attr: {
|
||
|
x: 0,
|
||
|
y: 0,
|
||
|
width: 100,
|
||
|
height: 100,
|
||
|
mask: "url(#" + id.mask + ")",
|
||
|
fill: config["fill-background"]
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
svg.querySelector('mask image').attrs({
|
||
|
width: size.width,
|
||
|
height: size.height
|
||
|
});
|
||
|
group[1] = domTree('g', {
|
||
|
image: {
|
||
|
attr: {
|
||
|
width: size.width,
|
||
|
height: size.height,
|
||
|
x: 0,
|
||
|
y: 0,
|
||
|
preserveAspectRatio: config["aspect-ratio"],
|
||
|
"clip-path": config.type === 'fill' ? "url(#" + id.clip + ")" : '',
|
||
|
"xlink:href": config.img,
|
||
|
'class': 'solid'
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
img = new Image();
|
||
|
img.addEventListener('load', function(){
|
||
|
var ret, size, v;
|
||
|
if (config["img-size"]) {
|
||
|
ret = config["img-size"].split(',');
|
||
|
size = {
|
||
|
width: +ret[0],
|
||
|
height: +ret[1]
|
||
|
};
|
||
|
} else if (img.width && img.height) {
|
||
|
size = {
|
||
|
width: img.width,
|
||
|
height: img.height
|
||
|
};
|
||
|
} else {
|
||
|
size = {
|
||
|
width: 100,
|
||
|
height: 100
|
||
|
};
|
||
|
}
|
||
|
svg.querySelector('mask image').attrs({
|
||
|
width: size.width,
|
||
|
height: size.height
|
||
|
});
|
||
|
group[1].querySelector('image').attrs({
|
||
|
width: size.width,
|
||
|
height: size.height
|
||
|
});
|
||
|
this$.fit();
|
||
|
v = this$.value;
|
||
|
this$.value = undefined;
|
||
|
this$.set(v, true);
|
||
|
return this$.inited = true;
|
||
|
});
|
||
|
img.src = config.img;
|
||
|
svg.appendChild(group[0]);
|
||
|
svg.appendChild(group[1]);
|
||
|
}
|
||
|
svg.attrs({
|
||
|
width: '100%',
|
||
|
height: '100%'
|
||
|
});
|
||
|
this.transition = {
|
||
|
value: {
|
||
|
src: 0,
|
||
|
des: 0
|
||
|
},
|
||
|
time: {},
|
||
|
ease: function(t, b, c, d){
|
||
|
t = t / (d * 0.5);
|
||
|
if (t < 1) {
|
||
|
return c * 0.5 * t * t + b;
|
||
|
}
|
||
|
t = t - 1;
|
||
|
return -c * 0.5 * (t * (t - 2) - 1) + b;
|
||
|
},
|
||
|
handler: function(time, doTransition){
|
||
|
var ref$, min, max, prec, dv, dt, dur, v, p, node, style, box, dir;
|
||
|
doTransition == null && (doTransition = true);
|
||
|
if (this.time.src == null) {
|
||
|
this.time.src = time;
|
||
|
}
|
||
|
ref$ = [config["min"], config["max"], 1 / config["precision"]], min = ref$[0], max = ref$[1], prec = ref$[2];
|
||
|
ref$ = [this.value.des - this.value.src, (time - this.time.src) * 0.001, +config["duration"] || 1], dv = ref$[0], dt = ref$[1], dur = ref$[2];
|
||
|
v = doTransition
|
||
|
? this.ease(dt, this.value.src, dv, dur)
|
||
|
: this.value.des;
|
||
|
if (config.precision) {
|
||
|
v = Math.round(v * prec) / prec;
|
||
|
} else if (doTransition) {
|
||
|
v = Math.round(v);
|
||
|
}
|
||
|
v >= min || (v = min);
|
||
|
v <= max || (v = max);
|
||
|
text.textContent = v;
|
||
|
p = 100.0 * (v - min) / (max - min);
|
||
|
if (isStroke) {
|
||
|
node = path1;
|
||
|
style = {
|
||
|
"stroke-dasharray": config["stroke-dir"] === 'reverse'
|
||
|
? "0 " + length * (100 - p) * 0.01 + " " + length * p * 0.01 + " 0"
|
||
|
: p * 0.01 * length + " " + ((100 - p) * 0.01 * length + 1)
|
||
|
};
|
||
|
} else {
|
||
|
box = group[1].getBBox();
|
||
|
dir = config["fill-dir"];
|
||
|
style = dir === 'btt' || !dir
|
||
|
? {
|
||
|
y: box.y + box.height * (100 - p) * 0.01,
|
||
|
height: box.height * p * 0.01,
|
||
|
x: box.x,
|
||
|
width: box.width
|
||
|
}
|
||
|
: dir === 'ttb'
|
||
|
? {
|
||
|
y: box.y,
|
||
|
height: box.height * p * 0.01,
|
||
|
x: box.x,
|
||
|
width: box.width
|
||
|
}
|
||
|
: dir === 'ltr'
|
||
|
? {
|
||
|
y: box.y,
|
||
|
height: box.height,
|
||
|
x: box.x,
|
||
|
width: box.width * p * 0.01
|
||
|
}
|
||
|
: dir === 'rtl' ? {
|
||
|
y: box.y,
|
||
|
height: box.height,
|
||
|
x: box.x + box.width * (100 - p) * 0.01,
|
||
|
width: box.width * p * 0.01
|
||
|
} : void 8;
|
||
|
node = svg.querySelector('rect');
|
||
|
}
|
||
|
node.attrs(style);
|
||
|
if (dt >= dur) {
|
||
|
delete this.time.src;
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
},
|
||
|
start: function(src, des, doTransition){
|
||
|
var ref$, this$ = this;
|
||
|
ref$ = this.value;
|
||
|
ref$.src = src;
|
||
|
ref$.des = des;
|
||
|
!!(root.offsetWidth || root.offsetHeight || root.getClientRects().length);
|
||
|
if (!doTransition || !(root.offsetWidth || root.offsetHeight || root.getClientRects().length)) {
|
||
|
this.time.src = 0;
|
||
|
this.handler(1000, false);
|
||
|
return;
|
||
|
}
|
||
|
return handler.add(id.key, function(time){
|
||
|
return this$.handler(time);
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
this.set = function(v, doTransition){
|
||
|
var src, des;
|
||
|
doTransition == null && (doTransition = true);
|
||
|
src = this.value || 0;
|
||
|
if (v != null) {
|
||
|
this.value = v;
|
||
|
} else {
|
||
|
v = this.value;
|
||
|
}
|
||
|
des = this.value;
|
||
|
return this.transition.start(src, des, doTransition);
|
||
|
};
|
||
|
this.set(+config.value || 0, config["transition-in"]) || false;
|
||
|
return this;
|
||
|
};
|
||
|
return window.addEventListener('load', function(){
|
||
|
var i$, ref$, len$, node, results$ = [];
|
||
|
for (i$ = 0, len$ = (ref$ = document.querySelectorAll('.ldBar')).length; i$ < len$; ++i$) {
|
||
|
node = ref$[i$];
|
||
|
if (!node.ldBar) {
|
||
|
results$.push(node.ldBar = new ldBar(node));
|
||
|
}
|
||
|
}
|
||
|
return results$;
|
||
|
}, false);
|
||
|
})();
|
||
|
module.exports = ldBar;
|
||
|
function import$(obj, src){
|
||
|
var own = {}.hasOwnProperty;
|
||
|
for (var key in src) if (own.call(src, key)) obj[key] = src[key];
|
||
|
return obj;
|
||
|
}
|
||
|
|
||
|
},{"./presets":2}],2:[function(require,module,exports){
|
||
|
// Generated by LiveScript 1.3.1
|
||
|
var presets, out$ = typeof exports != 'undefined' && exports || this;
|
||
|
out$.presets = presets = {
|
||
|
rainbow: {
|
||
|
"type": 'stroke',
|
||
|
"path": 'M10 10L90 10',
|
||
|
"stroke": 'data:ldbar/res,gradient(0,1,#a551df,#fd51ad,#ff7f82,#ffb874,#ffeb90)',
|
||
|
"bbox": "10 10 80 10"
|
||
|
},
|
||
|
energy: {
|
||
|
"type": 'fill',
|
||
|
"path": 'M15 5L85 5A5 5 0 0 1 85 15L15 15A5 5 0 0 1 15 5',
|
||
|
"stroke": '#f00',
|
||
|
"fill": 'data:ldbar/res,gradient(45,2,#4e9,#8fb,#4e9)',
|
||
|
"fill-dir": "ltr",
|
||
|
"fill-background": '#444',
|
||
|
"fill-background-extrude": 1,
|
||
|
"bbox": "10 5 80 10"
|
||
|
},
|
||
|
stripe: {
|
||
|
"type": 'fill',
|
||
|
"path": 'M15 5L85 5A5 5 0 0 1 85 15L15 15A5 5 0 0 1 15 5',
|
||
|
"stroke": '#f00',
|
||
|
"fill": 'data:ldbar/res,stripe(#25b,#58e,1)',
|
||
|
"fill-dir": "ltr",
|
||
|
"fill-background": '#ddd',
|
||
|
"fill-background-extrude": 1,
|
||
|
"bbox": "10 5 80 10"
|
||
|
},
|
||
|
text: {
|
||
|
"type": 'fill',
|
||
|
"img": "data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"70\" height=\"20\" viewBox=\"0 0 70 20\"><text x=\"35\" y=\"10\" text-anchor=\"middle\" dominant-baseline=\"central\" font-family=\"arial\">LOADING</text></svg>",
|
||
|
"fill-background-extrude": 1.3,
|
||
|
"pattern-size": 100,
|
||
|
"fill-dir": "ltr",
|
||
|
"img-size": "70,20",
|
||
|
"bbox": "0 0 70 20"
|
||
|
},
|
||
|
line: {
|
||
|
"type": 'stroke',
|
||
|
"path": 'M10 10L90 10',
|
||
|
"stroke": '#25b',
|
||
|
"stroke-width": 3,
|
||
|
"stroke-trail": '#ddd',
|
||
|
"stroke-trail-width": 1,
|
||
|
"bbox": "10 10 80 10"
|
||
|
},
|
||
|
fan: {
|
||
|
"type": 'stroke',
|
||
|
"path": 'M10 90A40 40 0 0 1 90 90',
|
||
|
"fill-dir": 'btt',
|
||
|
"fill": '#25b',
|
||
|
"fill-background": '#ddd',
|
||
|
"fill-background-extrude": 3,
|
||
|
"stroke-dir": 'normal',
|
||
|
"stroke": '#25b',
|
||
|
"stroke-width": '3',
|
||
|
"stroke-trail": '#ddd',
|
||
|
"stroke-trail-width": 0.5,
|
||
|
"bbox": "10 50 80 40"
|
||
|
},
|
||
|
circle: {
|
||
|
"type": 'stroke',
|
||
|
"path": 'M50 10A40 40 0 0 1 50 90A40 40 0 0 1 50 10',
|
||
|
"fill-dir": 'btt',
|
||
|
"fill": '#25b',
|
||
|
"fill-background": '#ddd',
|
||
|
"fill-background-extrude": 3,
|
||
|
"stroke-dir": 'normal',
|
||
|
"stroke": '#25b',
|
||
|
"stroke-width": '3',
|
||
|
"stroke-trail": '#ddd',
|
||
|
"stroke-trail-width": 0.5,
|
||
|
"bbox": "10 10 80 80"
|
||
|
},
|
||
|
bubble: {
|
||
|
"type": 'fill',
|
||
|
"path": 'M50 10A40 40 0 0 1 50 90A40 40 0 0 1 50 10',
|
||
|
"fill-dir": 'btt',
|
||
|
"fill": 'data:ldbar/res,bubble(#39d,#cef)',
|
||
|
"pattern-size": "150",
|
||
|
"fill-background": '#ddd',
|
||
|
"fill-background-extrude": 2,
|
||
|
"stroke-dir": 'normal',
|
||
|
"stroke": '#25b',
|
||
|
"stroke-width": '3',
|
||
|
"stroke-trail": '#ddd',
|
||
|
"stroke-trail-width": 0.5,
|
||
|
"bbox": "10 10 80 80"
|
||
|
}
|
||
|
};
|
||
|
|
||
|
},{}]},{},[1]);
|