From 221d66418a3c4d12dbb66c68be04d096b34bf33f Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 23 Oct 2018 16:14:34 -0400 Subject: [PATCH 1/7] include updated d3-sankey --- package-lock.json | 23 +++++++++++------------ package.json | 2 +- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8a995b06c2..ce6767eceae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,9 +92,8 @@ "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" }, "@plotly/d3-sankey": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.5.0.tgz", - "integrity": "sha1-si+up0LlglEzXuXZ+6JIdyYHgA8=", + "version": "git://github.com/plotly/d3-sankey.git#6f19390be0da4a81abf6f7f6cfdf5fc8dc73e583", + "from": "git://github.com/plotly/d3-sankey.git#6f19390be0da4a81abf6f7f6cfdf5fc8dc73e583", "requires": { "d3-array": "1", "d3-collection": "1", @@ -2249,9 +2248,9 @@ "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=" }, "d3-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz", - "integrity": "sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==" + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" }, "d3-collection": { "version": "1.0.4", @@ -2259,9 +2258,9 @@ "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI=" }, "d3-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.0.tgz", - "integrity": "sha512-dmL9Zr/v39aSSMnLOTd58in2RbregCg4UtGyUArvEKTTN6S3HKEy+ziBWVYo9PTzRyVW+pUBHUtRKz0HYX+SQg==" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.3.tgz", + "integrity": "sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw==" }, "d3-dispatch": { "version": "1.0.3", @@ -2280,9 +2279,9 @@ } }, "d3-interpolate": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.2.0.tgz", - "integrity": "sha512-zLvTk8CREPFfc/2XglPQriAsXkzoRDAyBzndtKJWrZmHw7kmOWHNS11e40kPTd/oGk8P5mFJW5uBbcFQ+ybxyA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz", + "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==", "requires": { "d3-color": "1" } diff --git a/package.json b/package.json index 92b906cd697..b9ff7b718dd 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ }, "dependencies": { "3d-view": "^2.0.0", - "@plotly/d3-sankey": "^0.5.0", + "@plotly/d3-sankey": "git://github.com/plotly/d3-sankey.git#6f19390be0da4a81abf6f7f6cfdf5fc8dc73e583", "alpha-shape": "^1.0.0", "array-range": "^1.0.1", "canvas-fit": "^1.5.0", From 364b429e39ecd5d8b3ef302dc5518339a859d5c6 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 23 Oct 2018 16:35:09 -0400 Subject: [PATCH 2/7] sankey: warn user if node.pad is reduced to fit figure's size --- src/traces/sankey/render.js | 2 ++ test/jasmine/tests/sankey_test.js | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 530b7b95518..502e5103ce7 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -148,6 +148,8 @@ function sankeyModel(layout, d, traceIndex) { .links(links) .layout(c.sankeyIterations); + if(sankey.nodePadding() < nodePad) Lib.warn('node.pad was reduced to ', sankey.nodePadding(), ' to fit within the figure.') + var node, sankeyNodes = sankey.nodes(); for(var n = 0; n < sankeyNodes.length; n++) { node = sankeyNodes[n]; diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index eb25d602b27..d5cd1f90021 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -771,6 +771,27 @@ describe('sankey tests', function() { .then(done); }); }); + + it('emits a warning if node.pad is too large', function(done) { + var gd = createGraphDiv(); + var mockCopy = Lib.extendDeep({}, mock); + + var warnings = []; + spyOn(Lib, 'warn').and.callFake(function(msg) { + warnings.push(msg); + }); + Plotly.plot(gd, mockCopy).then(function() { + expect(warnings.length).toEqual(0); + + return Plotly.restyle(gd, 'node.pad', 50); + }) + .then(function() { + expect(warnings.length).toEqual(1); + }) + .catch(failTest) + .finally(destroyGraphDiv) + .then(done); + }); }); function assertLabel(content, style) { From e9f78402221b6f0832f0c79176d73338950a567b Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 23 Oct 2018 16:41:02 -0400 Subject: [PATCH 3/7] fix lint --- src/traces/sankey/render.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 502e5103ce7..2ec53241b9c 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -148,7 +148,9 @@ function sankeyModel(layout, d, traceIndex) { .links(links) .layout(c.sankeyIterations); - if(sankey.nodePadding() < nodePad) Lib.warn('node.pad was reduced to ', sankey.nodePadding(), ' to fit within the figure.') + if(sankey.nodePadding() < nodePad) { + Lib.warn('node.pad was reduced to ', sankey.nodePadding(), ' to fit within the figure.'); + } var node, sankeyNodes = sankey.nodes(); for(var n = 0; n < sankeyNodes.length; n++) { From 352cc6173860ec8cbbf129c4a80cbb80c7c52530 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Wed, 24 Oct 2018 01:47:44 -0400 Subject: [PATCH 4/7] sankey add baseline with large node padding --- test/image/baselines/sankey_large_padding.png | Bin 0 -> 52187 bytes test/image/mocks/sankey_large_padding.json | 301 ++++++++++++++++++ 2 files changed, 301 insertions(+) create mode 100644 test/image/baselines/sankey_large_padding.png create mode 100644 test/image/mocks/sankey_large_padding.json diff --git a/test/image/baselines/sankey_large_padding.png b/test/image/baselines/sankey_large_padding.png new file mode 100644 index 0000000000000000000000000000000000000000..38d263f799df4f8cec4bec6b2230daaed14601b9 GIT binary patch literal 52187 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

R3CuB=kMyVoPV+aKN*(B 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 ~T~FcB_}HyxixNG1?O%a0VYM62Y>?wjHK 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 bh-<~xuEAHYnzPI?z>k)io@yP;F6#dQk+q(S literal 0 HcmV?d00001 diff --git a/test/image/mocks/sankey_large_padding.json b/test/image/mocks/sankey_large_padding.json new file mode 100644 index 00000000000..e01d77ded8b --- /dev/null +++ b/test/image/mocks/sankey_large_padding.json @@ -0,0 +1,301 @@ +{ + "data": [{ + "node": { + "color": [ + "#000000", + "#BFDAE3", + "#FF7080", + "#FF707F", + "#E64438", + "#B0F0FF", + "#F1483B", + "#98D6F8", + "#F2483A", + "#FF4C3C", + "#8599CC", + "#FF5446", + "#FF64FF", + "#97D6F9", + "#FE8EFE", + "#FF6F80", + "#B1BFDF", + "#B3C0DE", + "#FC8FFF", + "#FF5346", + "#90CAEC", + "#90CBED", + "#FF4B3E", + "#FE909C", + "#F2473B", + "#B0FFB8", + "#90CAED", + "#FF4A3D", + "#80C0E1", + "#F24839", + "#FF5C4E", + "#95A7D3", + "#A2B0D8", + "#96A6D2", + "#CAC7CB", + "#FD4B3C", + "#A2B1D7", + "#70FF70", + "#FF9B87", + "#FE8E9D", + "#FE5445", + "#F2483B", + "#CAC7CB", + "#CAC7CB", + "#CAC7CB", + "#CAC7CB", + "#CAC7CB", + "#FF9B87", + "#FF9B87", + "#FF9B87", + "#FF5C4E", + "#FC8FFF", + "#80C0E1", + "#70FF70", + "#70FF70" + ], + "line": { + "color": "black", + "width": 0.5 + }, + "label": [ + "root", + "grey", + "BS", + "IB", + "HY", + "CH", + "LZ", + "CNU", + "LHA", + "MEZ", + "PAL", + "PVR", + "MB", + "STR", + "MBmot", + "TH", + "PALc", + "BST", + "PAG", + "MPO", + "LSX", + "LS", + "AHN", + "DORpm", + "LPO", + "CTX", + "LSr", + "VMH", + "sAMY", + "TU", + "PVZ", + "PALm", + "PALv", + "MSC", + "fiber tracts", + "PH", + "SI", + "CTXpl", + "HB", + "MTN", + "DMH", + "RCH", + "fiber tracts#1", + "fiber tracts#2", + "fiber tracts#3", + "fiber tracts#4", + "fiber tracts#5", + "HB#3", + "HB#4", + "HB#5", + "PVZ#5", + "PAG#5", + "sAMY#5", + "CTXpl#4", + "CTXpl#5" + ], + "pad": 20, + "thickness": 50 + }, + "link": { + "source": [ + 0, + 0, + 34, + 42, + 43, + 44, + 45, + 1, + 1, + 2, + 2, + 2, + 38, + 47, + 48, + 3, + 3, + 4, + 4, + 4, + 4, + 6, + 6, + 6, + 6, + 9, + 9, + 9, + 11, + 11, + 30, + 15, + 23, + 12, + 14, + 18, + 5, + 5, + 7, + 7, + 10, + 10, + 10, + 16, + 31, + 32, + 13, + 13, + 20, + 28, + 25, + 37, + 53 + ], + "target": [ + 34, + 1, + 42, + 43, + 44, + 45, + 46, + 2, + 5, + 38, + 3, + 12, + 47, + 48, + 49, + 4, + 15, + 6, + 9, + 11, + 30, + 8, + 24, + 41, + 29, + 22, + 35, + 27, + 40, + 19, + 50, + 23, + 39, + 14, + 18, + 51, + 7, + 25, + 10, + 13, + 16, + 31, + 32, + 17, + 33, + 36, + 20, + 28, + 21, + 52, + 37, + 53, + 54 + ], + "value": [ + 1, + 1, + 0.5, + 0.3333333333333333, + 0.25, + 0.2, + 0.16666666666666666, + 0.5, + 0.5, + 0.3333333333333333, + 0.3333333333333333, + 0.3333333333333333, + 0.25, + 0.2, + 0.16666666666666666, + 0.25, + 0.25, + 0.2, + 0.2, + 0.2, + 0.2, + 0.16666666666666666, + 0.16666666666666666, + 0.16666666666666666, + 0.16666666666666666, + 0.16666666666666666, + 0.16666666666666666, + 0.16666666666666666, + 0.16666666666666666, + 0.16666666666666666, + 0.16666666666666666, + 0.2, + 0.16666666666666666, + 0.25, + 0.2, + 0.16666666666666666, + 0.3333333333333333, + 0.3333333333333333, + 0.25, + 0.25, + 0.2, + 0.2, + 0.2, + 0.16666666666666666, + 0.16666666666666666, + 0.16666666666666666, + 0.2, + 0.2, + 0.16666666666666666, + 0.16666666666666666, + 0.25, + 0.2, + 0.16666666666666666 + ] + }, + "type": "sankey", + "orientation": "h" + }], + "layout": { + "font": { + "size": 10 + }, + "title": "Injection in VISpm" + } +} From b8b0bb193dac1fc0f7915fb08075dcb48c643104 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Wed, 24 Oct 2018 14:56:24 -0400 Subject: [PATCH 5/7] update d3-sankey dependency --- package-lock.json | 32 +++++++++++++++++++++++--------- package.json | 2 +- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index ce6767eceae..6fdb30391f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,8 +92,8 @@ "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" }, "@plotly/d3-sankey": { - "version": "git://github.com/plotly/d3-sankey.git#6f19390be0da4a81abf6f7f6cfdf5fc8dc73e583", - "from": "git://github.com/plotly/d3-sankey.git#6f19390be0da4a81abf6f7f6cfdf5fc8dc73e583", + "version": "git://github.com/plotly/d3-sankey.git#1a79abb316049bc88b16727a27e7b4a5a77fd14e", + "from": "git://github.com/plotly/d3-sankey.git#1a79abb316049bc88b16727a27e7b4a5a77fd14e", "requires": { "d3-array": "1", "d3-collection": "1", @@ -3903,12 +3903,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3923,17 +3925,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4050,7 +4055,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4062,6 +4068,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4076,6 +4083,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4083,12 +4091,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4107,6 +4117,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4187,7 +4198,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4199,6 +4211,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4320,6 +4333,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/package.json b/package.json index b9ff7b718dd..e5f89077892 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ }, "dependencies": { "3d-view": "^2.0.0", - "@plotly/d3-sankey": "git://github.com/plotly/d3-sankey.git#6f19390be0da4a81abf6f7f6cfdf5fc8dc73e583", + "@plotly/d3-sankey": "git://github.com/plotly/d3-sankey.git#1a79abb316049bc88b16727a27e7b4a5a77fd14e", "alpha-shape": "^1.0.0", "array-range": "^1.0.1", "canvas-fit": "^1.5.0", From 8a041694a635e2b73c9c67bce1c23f8c3db9f13e Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Wed, 24 Oct 2018 15:26:42 -0400 Subject: [PATCH 6/7] point to d3-sankey master with patch merged in --- package-lock.json | 32 +++++++++----------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6fdb30391f8..e270fed0c81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,8 +92,8 @@ "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" }, "@plotly/d3-sankey": { - "version": "git://github.com/plotly/d3-sankey.git#1a79abb316049bc88b16727a27e7b4a5a77fd14e", - "from": "git://github.com/plotly/d3-sankey.git#1a79abb316049bc88b16727a27e7b4a5a77fd14e", + "version": "git://github.com/plotly/d3-sankey.git#e08cc7011c2720c11e3f770a3473142859507226", + "from": "git://github.com/plotly/d3-sankey.git#e08cc7011c2720c11e3f770a3473142859507226", "requires": { "d3-array": "1", "d3-collection": "1", @@ -3903,14 +3903,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3925,20 +3923,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -4055,8 +4050,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -4068,7 +4062,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4083,7 +4076,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4091,14 +4083,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4117,7 +4107,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -4198,8 +4187,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -4211,7 +4199,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -4333,7 +4320,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/package.json b/package.json index e5f89077892..39e67f7ec7a 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ }, "dependencies": { "3d-view": "^2.0.0", - "@plotly/d3-sankey": "git://github.com/plotly/d3-sankey.git#1a79abb316049bc88b16727a27e7b4a5a77fd14e", + "@plotly/d3-sankey": "git://github.com/plotly/d3-sankey.git#e08cc7011c2720c11e3f770a3473142859507226", "alpha-shape": "^1.0.0", "array-range": "^1.0.1", "canvas-fit": "^1.5.0", From 75947fe7c636fb6613eec265469512ad2a680dc6 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Wed, 24 Oct 2018 16:47:28 -0400 Subject: [PATCH 7/7] bump d3-sankey to v0.5.1 on npm --- package-lock.json | 5 +++-- package.json | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e270fed0c81..c8ac416fd5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,8 +92,9 @@ "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" }, "@plotly/d3-sankey": { - "version": "git://github.com/plotly/d3-sankey.git#e08cc7011c2720c11e3f770a3473142859507226", - "from": "git://github.com/plotly/d3-sankey.git#e08cc7011c2720c11e3f770a3473142859507226", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.5.1.tgz", + "integrity": "sha512-uMToNGexOSLG0hBm+uAzElfFW0Pt2utgJ//puL5nuerNnPnRTTe3Un7XFVcWqRhvXEViF00Xq/8wGoA8i8eZJA==", "requires": { "d3-array": "1", "d3-collection": "1", diff --git a/package.json b/package.json index 39e67f7ec7a..bbcdb31c2de 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ }, "dependencies": { "3d-view": "^2.0.0", - "@plotly/d3-sankey": "git://github.com/plotly/d3-sankey.git#e08cc7011c2720c11e3f770a3473142859507226", + "@plotly/d3-sankey": "^0.5.1", "alpha-shape": "^1.0.0", "array-range": "^1.0.1", "canvas-fit": "^1.5.0",