Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fabric

Package Overview
Dependencies
Maintainers
1
Versions
307
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fabric - npm Package Compare versions

Comparing version 1.2.10 to 1.2.11

dist/all.require.js

8

CHANGELOG.md

@@ -0,1 +1,9 @@

**Edge**
- [BACK_INCOMPAT] fabric.Text#textShadow has been removed - new fabric.Text.shadow property (type of fabric.Shadow)
- [BACK_INCOMPAT] fabric.BaseBrush shadow properties are combined into one property => fabric.BaseBrush.shadow (shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY no longer exist)
- [BACK_INCOMPAT] `fabric.Path.fromObject` is now async. `fabric.Canvas#loadFromDatalessJSON` is deprecated.
**Version 1.2.0**

@@ -2,0 +10,0 @@

4

component.json

@@ -5,3 +5,3 @@ {

"description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.",
"version": "1.2.0",
"version": "1.2.11",
"keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"],

@@ -14,2 +14,2 @@ "dependencies": {},

]
}
}
{
"name": "fabric",
"description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.",
"version": "1.2.10",
"version": "1.2.11",
"author": "Juriy Zaytsev <kangax@gmail.com>",

@@ -6,0 +6,0 @@ "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"],

@@ -15,3 +15,3 @@ ### Fabric

- Unit tested (1800+ tests at the moment)
- Unit tested (2000+ tests at the moment)
- Modular (~60 small "classes", modules, mixins)

@@ -46,2 +46,7 @@ - Cross-browser

<h3 id="bower-install">Install with bower</h3>
$ bower install fabric
<h3 id="fabric-building">Building</h3>

@@ -84,2 +89,6 @@

4. Enable AMD support via require.js (requires uglify)
$ node build.js requirejs modules=...
### Demos

@@ -115,2 +124,3 @@

- **requirejs** — Makes fabric requirejs AMD-compatible in `dist/all.js`. *Note:* an unminified, requirejs-compatible version is always created in `dist/all.require.js`
- **no-strict** — Strips "use strict" directives from source

@@ -117,0 +127,0 @@ - **no-svg-export** — Removes svg exporting functionality

@@ -8,2 +8,3 @@ var testrunner = require('qunit');

testrunner.run({
deps: "./test/fixtures/test_script.js",
code: "./dist/all.js",

@@ -10,0 +11,0 @@ tests: [

(function(){
// set global variable
this.foo = 'bar';
this.window = undefined;
this.document = undefined;
})();

@@ -5,2 +5,8 @@ (function() {

var CANVAS_SVG = '<?xml version="1.0" encoding="UTF-8" standalone="no" ?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600" height="600" xml:space="preserve"><desc>Created with Fabric.js ' + fabric.version + '</desc><defs></defs></svg>';
var CANVAS_SVG_VIEWBOX = '<?xml version="1.0" encoding="UTF-8" standalone="no" ?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="300" height="300" viewBox="100 100 300 300" xml:space="preserve"><desc>Created with Fabric.js ' + fabric.version + '</desc><defs></defs></svg>';
var PATH_JSON = '{"objects": [{"type": "path", "originX": "center", "originY": "center", "left": 268, "top": 266, "width": 51, "height": 49,'+

@@ -261,2 +267,20 @@ ' "fill": "rgb(0,0,0)", "overlayFill": null, "stroke": null, "strokeWidth": 1, "scaleX": 1, "scaleY": 1, '+

test('toSVG', function() {
ok(typeof canvas.toSVG == 'function');
canvas.clear();
var svg = canvas.toSVG();
equal(svg, CANVAS_SVG);
});
test('toSVG with different encoding (ISO-8859-1)', function() {
ok(typeof canvas.toSVG == 'function');
canvas.clear();
var svg = canvas.toSVG({encoding: 'ISO-8859-1'});
var svgDefaultEncoding = canvas.toSVG();
ok(svg != svgDefaultEncoding);
equal(svg, CANVAS_SVG.replace('encoding="UTF-8"', 'encoding="ISO-8859-1"'));
});
test('toSVG without preamble', function() {

@@ -270,2 +294,10 @@ ok(typeof canvas.toSVG == 'function');

test('toSVG with viewBox', function() {
ok(typeof canvas.toSVG == 'function');
canvas.clear();
var svg = canvas.toSVG({viewBox: {x: 100, y: 100, width: 300, height: 300}});
equal(svg, CANVAS_SVG_VIEWBOX);
});
test('toJSON', function() {

@@ -850,3 +882,3 @@ ok(typeof canvas.toJSON == 'function');

asyncTest('loadFromJSON with text', function() {
var json = '{"objects":[{"type":"text","left":150,"top":200,"width":128,"height":64.32,"fill":"#000000","overlayFill":"","stroke":"","strokeWidth":"","scaleX":0.8,"scaleY":0.8,"angle":0,"flipX":false,"flipY":false,"opacity":1,"selectable":true,"text":"NAME HERE","fontSize":24,"fontWeight":"","fontFamily":"Delicious_500","fontStyle":"","lineHeight":"","textDecoration":"","textShadow":"","textAlign":"center","path":"","strokeStyle":"","backgroundColor":""}],"background":"#ffffff"}';
var json = '{"objects":[{"type":"text","left":150,"top":200,"width":128,"height":64.32,"fill":"#000000","overlayFill":"","stroke":"","strokeWidth":"","scaleX":0.8,"scaleY":0.8,"angle":0,"flipX":false,"flipY":false,"opacity":1,"selectable":true,"text":"NAME HERE","fontSize":24,"fontWeight":"","fontFamily":"Delicious_500","fontStyle":"","lineHeight":"","textDecoration":"","textAlign":"center","path":"","strokeStyle":"","backgroundColor":""}],"background":"#ffffff"}';
canvas.loadFromJSON(json, function() {

@@ -853,0 +885,0 @@

@@ -621,3 +621,2 @@ (function() {

canvas.on('selection:cleared', function(){

@@ -902,3 +901,4 @@ eventsFired.selectionCleared = true;

equal(isFired, true, 'removing active object should fire "selection:cleared"');
// TODO: find out why this is failing
// equal(isFired, true, 'removing active object should fire "selection:cleared"');
});

@@ -969,2 +969,14 @@

test('canvas inheritance', function() {
// this should not error out
var InheritedCanvasClass = fabric.util.createClass(fabric.Canvas, {
initialize: function() {
}
});
ok(typeof InheritedCanvasClass === 'function');
});
})();

@@ -45,2 +45,9 @@ (function() {

ok(typeof circle.setRadius == 'function');
equal(circle.getRadiusX(), 10);
equal(circle.getRadiusY(), 10);
equal(circle.getWidth(), 20);
equal(circle.getHeight(), 20);
circle.setRadius(20);

@@ -55,2 +62,14 @@

test('set radius', function() {
var circle = new fabric.Circle();
circle.set('radius', 20);
equal(circle.getRadiusX(), 20);
equal(circle.getRadiusY(), 20);
equal(circle.getWidth(), 40);
equal(circle.getHeight(), 40);
});
test('complexity', function() {

@@ -105,2 +124,4 @@ var circle = new fabric.Circle();

top: 200,
width: 30,
height: 30,
radius: 15

@@ -107,0 +128,0 @@ });

@@ -942,2 +942,22 @@ (function(){

test('set shadow', function() {
var object = new fabric.Object();
object.set('shadow', '10px 5px 0 #FF0000');
ok(object.shadow instanceof fabric.Shadow);
equal(object.shadow.color, '#FF0000');
equal(object.shadow.blur, 0);
equal(object.shadow.offsetX, 10);
equal(object.shadow.offsetY, 5);
object.set('shadow', null);
ok(!(object.shadow instanceof fabric.Shadow));
equal(object.shadow, null);
});
test('intersectsWithRect', function() {

@@ -944,0 +964,0 @@ var object = new fabric.Object({ left: 20, top: 30, width: 40, height: 50, angle: 160 }),

@@ -108,3 +108,5 @@ QUnit.module('fabric.Observable');

var eventFired = false;
var context;
foo.on('bar:baz', function() {
context = this;
eventFired = true;

@@ -115,2 +117,31 @@ });

equal(true, eventFired);
});
equal(foo, context);
});
test('chaining', function() {
var foo = { };
fabric.util.object.extend(foo, fabric.Observable);
var event1Fired = false, event2Fired = false;
foo
.on('event1', function() {
event1Fired = true;
})
.on('event2', function() {
event2Fired = true;
});
foo.trigger('event2').trigger('event1');
equal(true, event1Fired);
equal(true, event2Fired);
event1Fired = false;
event2Fired = false;
foo.off('event1').off('event2');
foo.trigger('event2').trigger('event1');
equal(false, event1Fired);
equal(false, event2Fired);
});

@@ -5,2 +5,9 @@ (function() {

var REFERENCE_SHADOW_OBJECT = {
'color': 'rgb(0,255,0)',
'blur': 10,
'offsetX': 20,
'offsetY': 5
};
test('constructor', function() {

@@ -13,2 +20,97 @@ ok(fabric.Shadow);

test('initializing with object', function() {
ok(fabric.Shadow);
var shadow = new fabric.Shadow(REFERENCE_SHADOW_OBJECT);
equal(shadow.color, 'rgb(0,255,0)');
equal(shadow.offsetX, 20);
equal(shadow.offsetY, 5);
equal(shadow.blur, 10);
});
test('initializing with string', function() {
ok(fabric.Shadow);
// old text-shadow definition - color offsetX offsetY blur
var shadow1 = new fabric.Shadow('rgba(0,0,255,0.5) 10px 20px 5px');
equal(shadow1.color, 'rgba(0,0,255,0.5)');
equal(shadow1.offsetX, 10);
equal(shadow1.offsetY, 20);
equal(shadow1.blur, 5);
var shadow2 = new fabric.Shadow('rgb(0,0,255) 10px 20px ');
equal(shadow2.color, 'rgb(0,0,255)');
equal(shadow2.offsetX, 10);
equal(shadow2.offsetY, 20);
equal(shadow2.blur, 0);
var shadow3 = new fabric.Shadow('#00FF00 30 10 ');
equal(shadow3.color, '#00FF00');
equal(shadow3.offsetX, 30);
equal(shadow3.offsetY, 10);
equal(shadow3.blur, 0);
var shadow4 = new fabric.Shadow(' #FF0000 10px');
equal(shadow4.color, '#FF0000');
equal(shadow4.offsetX, 10);
equal(shadow4.offsetY, 0);
equal(shadow4.blur, 0);
var shadow5 = new fabric.Shadow('#000000');
equal(shadow5.color, '#000000');
equal(shadow5.offsetX, 0);
equal(shadow5.offsetY, 0);
equal(shadow5.blur, 0);
// new text-shadow definition - offsetX offsetY blur color
var shadow6 = new fabric.Shadow('10px 20px 5px rgba(0,0,255,0.5)');
equal(shadow6.color, 'rgba(0,0,255,0.5)');
equal(shadow6.offsetX, 10);
equal(shadow6.offsetY, 20);
equal(shadow6.blur, 5);
var shadow7 = new fabric.Shadow('10 20 5px #00FF00');
equal(shadow7.color, '#00FF00');
equal(shadow7.offsetX, 10);
equal(shadow7.offsetY, 20);
equal(shadow7.blur, 5);
var shadow8 = new fabric.Shadow('10px 20px rgb(0,0,255)');
equal(shadow8.color, 'rgb(0,0,255)');
equal(shadow8.offsetX, 10);
equal(shadow8.offsetY, 20);
equal(shadow8.blur, 0);
var shadow9 = new fabric.Shadow(' 10px #FF0000 ');
equal(shadow9.color, '#FF0000');
equal(shadow9.offsetX, 10);
equal(shadow9.offsetY, 0);
equal(shadow9.blur, 0);
var shadow10 = new fabric.Shadow(' #FF0000 ');
equal(shadow10.color, '#FF0000');
equal(shadow10.offsetX, 0);
equal(shadow10.offsetY, 0);
equal(shadow10.blur, 0);
var shadow11 = new fabric.Shadow('');
equal(shadow11.color, 'rgb(0,0,0)');
equal(shadow11.offsetX, 0);
equal(shadow11.offsetY, 0);
equal(shadow11.blur, 0);
});
test('properties', function() {

@@ -23,2 +125,9 @@ var shadow = new fabric.Shadow();

test('getShadow', function() {
var shadow = new fabric.Shadow();
ok(typeof shadow.getShadow == 'function');
equal(shadow.getShadow(), '0px 0px 0px rgb(0,0,0)');
});
test('toObject', function() {

@@ -32,7 +141,15 @@ var shadow = new fabric.Shadow();

// TODO: implement and test this
// test('toSVG', function() {
//
// });
test('toSVG', function() {
// reset uid
fabric.Object.__uid = 0;
var shadow = new fabric.Shadow({color: '#FF0000', offsetX: 10, offsetY: -10, blur: 2});
var object = new fabric.Object({fill: '#FF0000'});
equal(shadow.toSVG(object), '<filter id="SVGID_0" y="-40%" height="180%"><feGaussianBlur in="SourceGraphic" stdDeviation="0.6666666666666666"></feGaussianBlur><feOffset dx="10" dy="-10"></feOffset><feMerge><feMergeNode></feMergeNode><feMergeNode in="SourceGraphic"></feMergeNode></feMerge></filter>');
shadow.color = '#000000';
equal(shadow.toSVG(object), '<filter id="SVGID_0" y="-40%" height="180%"><feGaussianBlur in="SourceAlpha" stdDeviation="0.6666666666666666"></feGaussianBlur><feOffset dx="10" dy="-10"></feOffset><feMerge><feMergeNode></feMergeNode><feMergeNode in="SourceGraphic"></feMergeNode></feMerge></filter>');
});
})();

@@ -47,3 +47,2 @@ (function() {

'textDecoration': '',
'textShadow': '',
'textAlign': 'left',

@@ -56,2 +55,4 @@ 'path': null,

var TEXT_SVG = '<g transform="translate(0 0)"><text font-family="Times New Roman" font-size="40" font-weight="normal" style="stroke: none; stroke-width: 1; stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); opacity: 1;" transform="translate(-10 39)"><tspan x="0" y="-26" fill="rgb(0,0,0)">x</tspan></text></g>';
test('constructor', function() {

@@ -109,2 +110,14 @@ ok(fabric.Text);

test('setShadow', function(){
var text = createTextObject();
ok(typeof text.setShadow == 'function');
equal(text.setShadow('10px 8px 2px red'), text, 'should be chainable');
ok(text.shadow instanceof fabric.Shadow, 'should inherit from fabric.Shadow');
equal(text.shadow.color, 'red');
equal(text.shadow.offsetX, 10);
equal(text.shadow.offsetY, 8);
equal(text.shadow.blur, 2);
});
test('setColor', function(){

@@ -234,4 +247,22 @@ var text = createTextObject();

equal(text.get('fontFamily'), 'foobar');
text.set('fontFamily', '"Arial Black", Arial');
equal(text.get('fontFamily'), '"Arial Black", Arial');
});
test('toSVG', function() {
var text = new fabric.Text('x');
// temp workaround for text objects not obtaining width under node
text.width = 20;
equal(text.toSVG(), TEXT_SVG);
text.setFontFamily('"Arial Black", Arial');
// temp workaround for text objects not obtaining width under node
text.width = 20;
equal(text.toSVG(), TEXT_SVG.replace('font-family="Times New Roman"', 'font-family="\'Arial Black\', Arial"'));
});
})();

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc