feat(openclaw): add shopping, supermarket deals, geizhals, and ebay MCP tools
This commit is contained in:
+79
@@ -0,0 +1,79 @@
|
||||
SVG.extend(SVG.Element, {
|
||||
// Set svg element attribute
|
||||
attr: function(a, v, n) {
|
||||
// act as full getter
|
||||
if (a == null) {
|
||||
// get an object of attributes
|
||||
a = {}
|
||||
v = this.node.attributes
|
||||
for (n = v.length - 1; n >= 0; n--)
|
||||
a[v[n].nodeName] = SVG.regex.isNumber.test(v[n].nodeValue) ? parseFloat(v[n].nodeValue) : v[n].nodeValue
|
||||
|
||||
return a
|
||||
|
||||
} else if (typeof a == 'object') {
|
||||
// apply every attribute individually if an object is passed
|
||||
for (v in a) this.attr(v, a[v])
|
||||
|
||||
} else if (v === null) {
|
||||
// remove value
|
||||
this.node.removeAttribute(a)
|
||||
|
||||
} else if (v == null) {
|
||||
// act as a getter if the first and only argument is not an object
|
||||
v = this.node.getAttribute(a)
|
||||
return v == null ?
|
||||
SVG.defaults.attrs[a] :
|
||||
SVG.regex.isNumber.test(v) ?
|
||||
parseFloat(v) : v
|
||||
|
||||
} else {
|
||||
// BUG FIX: some browsers will render a stroke if a color is given even though stroke width is 0
|
||||
if (a == 'stroke-width')
|
||||
this.attr('stroke', parseFloat(v) > 0 ? this._stroke : null)
|
||||
else if (a == 'stroke')
|
||||
this._stroke = v
|
||||
|
||||
// convert image fill and stroke to patterns
|
||||
if (a == 'fill' || a == 'stroke') {
|
||||
if (SVG.regex.isImage.test(v))
|
||||
v = this.doc().defs().image(v, 0, 0)
|
||||
|
||||
if (v instanceof SVG.Image)
|
||||
v = this.doc().defs().pattern(0, 0, function() {
|
||||
this.add(v)
|
||||
})
|
||||
}
|
||||
|
||||
// ensure correct numeric values (also accepts NaN and Infinity)
|
||||
if (typeof v === 'number')
|
||||
v = new SVG.Number(v)
|
||||
|
||||
// ensure full hex color
|
||||
else if (SVG.Color.isColor(v))
|
||||
v = new SVG.Color(v)
|
||||
|
||||
// parse array values
|
||||
else if (Array.isArray(v))
|
||||
v = new SVG.Array(v)
|
||||
|
||||
// if the passed attribute is leading...
|
||||
if (a == 'leading') {
|
||||
// ... call the leading method instead
|
||||
if (this.leading)
|
||||
this.leading(v)
|
||||
} else {
|
||||
// set given attribute on node
|
||||
typeof n === 'string' ?
|
||||
this.node.setAttributeNS(n, a, v.toString()) :
|
||||
this.node.setAttribute(a, v.toString())
|
||||
}
|
||||
|
||||
// rebuild if required
|
||||
if (this.rebuild && (a == 'font-size' || a == 'x'))
|
||||
this.rebuild(a, v)
|
||||
}
|
||||
|
||||
return this
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user