@nasser-sw/fabric 7.0.1-beta3 → 7.0.1-beta4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/0 +0 -0
  2. package/dist/index.js +323 -155
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.min.js +1 -1
  5. package/dist/index.min.js.map +1 -1
  6. package/dist/index.min.mjs +1 -1
  7. package/dist/index.min.mjs.map +1 -1
  8. package/dist/index.mjs +323 -155
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/index.node.cjs +323 -155
  11. package/dist/index.node.cjs.map +1 -1
  12. package/dist/index.node.mjs +323 -155
  13. package/dist/index.node.mjs.map +1 -1
  14. package/dist/package.json.min.mjs +1 -1
  15. package/dist/package.json.mjs +1 -1
  16. package/dist/src/shapes/Line.d.ts +31 -86
  17. package/dist/src/shapes/Line.d.ts.map +1 -1
  18. package/dist/src/shapes/Line.min.mjs +1 -1
  19. package/dist/src/shapes/Line.min.mjs.map +1 -1
  20. package/dist/src/shapes/Line.mjs +323 -154
  21. package/dist/src/shapes/Line.mjs.map +1 -1
  22. package/dist-extensions/src/shapes/CustomLine.d.ts +10 -0
  23. package/dist-extensions/src/shapes/CustomLine.d.ts.map +1 -0
  24. package/dist-extensions/src/shapes/Line.d.ts +31 -86
  25. package/dist-extensions/src/shapes/Line.d.ts.map +1 -1
  26. package/fabric-test-editor.html +157 -8
  27. package/fabric-test2.html +513 -0
  28. package/fabric.ts +182 -182
  29. package/package.json +1 -1
  30. package/src/shapes/Line.ts +372 -158
  31. package/debug/konva/CHANGELOG.md +0 -1474
  32. package/debug/konva/LICENSE +0 -22
  33. package/debug/konva/README.md +0 -205
  34. package/debug/konva/gulpfile.mjs +0 -110
  35. package/debug/konva/package.json +0 -139
  36. package/debug/konva/release.sh +0 -65
  37. package/debug/konva/resources/doc-includes/ContainerParams.txt +0 -6
  38. package/debug/konva/resources/doc-includes/NodeParams.txt +0 -20
  39. package/debug/konva/resources/doc-includes/ShapeParams.txt +0 -53
  40. package/debug/konva/resources/jsdoc.conf.json +0 -28
  41. package/debug/konva/rollup.config.mjs +0 -32
  42. package/debug/konva/src/Animation.ts +0 -237
  43. package/debug/konva/src/BezierFunctions.ts +0 -826
  44. package/debug/konva/src/Canvas.ts +0 -193
  45. package/debug/konva/src/Container.ts +0 -649
  46. package/debug/konva/src/Context.ts +0 -1017
  47. package/debug/konva/src/Core.ts +0 -5
  48. package/debug/konva/src/DragAndDrop.ts +0 -173
  49. package/debug/konva/src/Factory.ts +0 -246
  50. package/debug/konva/src/FastLayer.ts +0 -29
  51. package/debug/konva/src/Global.ts +0 -210
  52. package/debug/konva/src/Group.ts +0 -31
  53. package/debug/konva/src/Layer.ts +0 -546
  54. package/debug/konva/src/Node.ts +0 -3477
  55. package/debug/konva/src/PointerEvents.ts +0 -67
  56. package/debug/konva/src/Shape.ts +0 -2081
  57. package/debug/konva/src/Stage.ts +0 -1000
  58. package/debug/konva/src/Tween.ts +0 -811
  59. package/debug/konva/src/Util.ts +0 -1123
  60. package/debug/konva/src/Validators.ts +0 -210
  61. package/debug/konva/src/_CoreInternals.ts +0 -85
  62. package/debug/konva/src/_FullInternals.ts +0 -171
  63. package/debug/konva/src/canvas-backend.ts +0 -36
  64. package/debug/konva/src/filters/Blur.ts +0 -388
  65. package/debug/konva/src/filters/Brighten.ts +0 -48
  66. package/debug/konva/src/filters/Brightness.ts +0 -30
  67. package/debug/konva/src/filters/Contrast.ts +0 -75
  68. package/debug/konva/src/filters/Emboss.ts +0 -207
  69. package/debug/konva/src/filters/Enhance.ts +0 -154
  70. package/debug/konva/src/filters/Grayscale.ts +0 -25
  71. package/debug/konva/src/filters/HSL.ts +0 -108
  72. package/debug/konva/src/filters/HSV.ts +0 -106
  73. package/debug/konva/src/filters/Invert.ts +0 -23
  74. package/debug/konva/src/filters/Kaleidoscope.ts +0 -274
  75. package/debug/konva/src/filters/Mask.ts +0 -220
  76. package/debug/konva/src/filters/Noise.ts +0 -44
  77. package/debug/konva/src/filters/Pixelate.ts +0 -107
  78. package/debug/konva/src/filters/Posterize.ts +0 -46
  79. package/debug/konva/src/filters/RGB.ts +0 -82
  80. package/debug/konva/src/filters/RGBA.ts +0 -103
  81. package/debug/konva/src/filters/Sepia.ts +0 -27
  82. package/debug/konva/src/filters/Solarize.ts +0 -29
  83. package/debug/konva/src/filters/Threshold.ts +0 -44
  84. package/debug/konva/src/index.ts +0 -3
  85. package/debug/konva/src/shapes/Arc.ts +0 -176
  86. package/debug/konva/src/shapes/Arrow.ts +0 -231
  87. package/debug/konva/src/shapes/Circle.ts +0 -76
  88. package/debug/konva/src/shapes/Ellipse.ts +0 -121
  89. package/debug/konva/src/shapes/Image.ts +0 -319
  90. package/debug/konva/src/shapes/Label.ts +0 -386
  91. package/debug/konva/src/shapes/Line.ts +0 -364
  92. package/debug/konva/src/shapes/Path.ts +0 -1013
  93. package/debug/konva/src/shapes/Rect.ts +0 -79
  94. package/debug/konva/src/shapes/RegularPolygon.ts +0 -167
  95. package/debug/konva/src/shapes/Ring.ts +0 -94
  96. package/debug/konva/src/shapes/Sprite.ts +0 -370
  97. package/debug/konva/src/shapes/Star.ts +0 -125
  98. package/debug/konva/src/shapes/Text.ts +0 -1065
  99. package/debug/konva/src/shapes/TextPath.ts +0 -583
  100. package/debug/konva/src/shapes/Transformer.ts +0 -1889
  101. package/debug/konva/src/shapes/Wedge.ts +0 -129
  102. package/debug/konva/src/skia-backend.ts +0 -35
  103. package/debug/konva/src/types.ts +0 -84
  104. package/debug/konva/tsconfig.json +0 -31
  105. package/debug/konva/tsconfig.test.json +0 -7
@@ -1,364 +0,0 @@
1
- import { Factory } from '../Factory.ts';
2
- import { _registerNode } from '../Global.ts';
3
- import type { ShapeConfig } from '../Shape.ts';
4
- import { Shape } from '../Shape.ts';
5
- import { getNumberArrayValidator, getNumberValidator } from '../Validators.ts';
6
-
7
- import type { Context } from '../Context.ts';
8
- import type { GetSet } from '../types.ts';
9
-
10
- function getControlPoints(
11
- x0: number,
12
- y0: number,
13
- x1: number,
14
- y1: number,
15
- x2: number,
16
- y2: number,
17
- t: number
18
- ) {
19
- const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)),
20
- d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)),
21
- fa = (t * d01) / (d01 + d12),
22
- fb = (t * d12) / (d01 + d12),
23
- p1x = x1 - fa * (x2 - x0),
24
- p1y = y1 - fa * (y2 - y0),
25
- p2x = x1 + fb * (x2 - x0),
26
- p2y = y1 + fb * (y2 - y0);
27
-
28
- return [p1x, p1y, p2x, p2y];
29
- }
30
-
31
- function expandPoints(p, tension) {
32
- const len = p.length,
33
- allPoints: Array<number> = [];
34
-
35
- for (let n = 2; n < len - 2; n += 2) {
36
- const cp = getControlPoints(
37
- p[n - 2],
38
- p[n - 1],
39
- p[n],
40
- p[n + 1],
41
- p[n + 2],
42
- p[n + 3],
43
- tension
44
- );
45
- if (isNaN(cp[0])) {
46
- continue;
47
- }
48
- allPoints.push(cp[0]);
49
- allPoints.push(cp[1]);
50
- allPoints.push(p[n]);
51
- allPoints.push(p[n + 1]);
52
- allPoints.push(cp[2]);
53
- allPoints.push(cp[3]);
54
- }
55
-
56
- return allPoints;
57
- }
58
-
59
- export interface LineConfig extends ShapeConfig {
60
- points?:
61
- | number[]
62
- | Int8Array
63
- | Uint8Array
64
- | Uint8ClampedArray
65
- | Int16Array
66
- | Uint16Array
67
- | Int32Array
68
- | Uint32Array
69
- | Float32Array
70
- | Float64Array;
71
- tension?: number;
72
- closed?: boolean;
73
- bezier?: boolean;
74
- }
75
-
76
- /**
77
- * Line constructor.&nbsp; Lines are defined by an array of points and
78
- * a tension
79
- * @constructor
80
- * @memberof Konva
81
- * @augments Konva.Shape
82
- * @param {Object} config
83
- * @param {Array} config.points Flat array of points coordinates. You should define them as [x1, y1, x2, y2, x3, y3].
84
- * @param {Number} [config.tension] Higher values will result in a more curvy line. A value of 0 will result in no interpolation.
85
- * The default is 0
86
- * @param {Boolean} [config.closed] defines whether or not the line shape is closed, creating a polygon or blob
87
- * @param {Boolean} [config.bezier] if no tension is provided but bezier=true, we draw the line as a bezier using the passed points
88
- * @@shapeParams
89
- * @@nodeParams
90
- * @example
91
- * var line = new Konva.Line({
92
- * x: 100,
93
- * y: 50,
94
- * points: [73, 70, 340, 23, 450, 60, 500, 20],
95
- * stroke: 'red',
96
- * tension: 1
97
- * });
98
- */
99
-
100
- export class Line<
101
- Config extends LineConfig = LineConfig,
102
- > extends Shape<Config> {
103
- constructor(config?: Config) {
104
- super(config);
105
- this.on(
106
- 'pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva',
107
- function () {
108
- this._clearCache('tensionPoints');
109
- }
110
- );
111
- }
112
-
113
- _sceneFunc(context: Context) {
114
- const points = this.points(),
115
- length = points.length,
116
- tension = this.tension(),
117
- closed = this.closed(),
118
- bezier = this.bezier();
119
-
120
- if (!length) {
121
- return;
122
- }
123
- let n = 0;
124
-
125
- context.beginPath();
126
- context.moveTo(points[0], points[1]);
127
-
128
- // tension
129
- if (tension !== 0 && length > 4) {
130
- const tp = this.getTensionPoints();
131
- const len = tp.length;
132
- n = closed ? 0 : 4;
133
-
134
- if (!closed) {
135
- context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);
136
- }
137
-
138
- while (n < len - 2) {
139
- context.bezierCurveTo(
140
- tp[n++],
141
- tp[n++],
142
- tp[n++],
143
- tp[n++],
144
- tp[n++],
145
- tp[n++]
146
- );
147
- }
148
-
149
- if (!closed) {
150
- context.quadraticCurveTo(
151
- tp[len - 2],
152
- tp[len - 1],
153
- points[length - 2],
154
- points[length - 1]
155
- );
156
- }
157
- } else if (bezier) {
158
- // no tension but bezier
159
- n = 2;
160
-
161
- while (n < length) {
162
- context.bezierCurveTo(
163
- points[n++],
164
- points[n++],
165
- points[n++],
166
- points[n++],
167
- points[n++],
168
- points[n++]
169
- );
170
- }
171
- } else {
172
- // no tension
173
- for (n = 2; n < length; n += 2) {
174
- context.lineTo(points[n], points[n + 1]);
175
- }
176
- }
177
-
178
- // closed e.g. polygons and blobs
179
- if (closed) {
180
- context.closePath();
181
- context.fillStrokeShape(this);
182
- } else {
183
- // open e.g. lines and splines
184
- context.strokeShape(this);
185
- }
186
- }
187
- getTensionPoints() {
188
- return this._getCache('tensionPoints', this._getTensionPoints);
189
- }
190
- _getTensionPoints() {
191
- if (this.closed()) {
192
- return this._getTensionPointsClosed();
193
- } else {
194
- return expandPoints(this.points(), this.tension());
195
- }
196
- }
197
- _getTensionPointsClosed() {
198
- const p = this.points(),
199
- len = p.length,
200
- tension = this.tension(),
201
- firstControlPoints = getControlPoints(
202
- p[len - 2],
203
- p[len - 1],
204
- p[0],
205
- p[1],
206
- p[2],
207
- p[3],
208
- tension
209
- ),
210
- lastControlPoints = getControlPoints(
211
- p[len - 4],
212
- p[len - 3],
213
- p[len - 2],
214
- p[len - 1],
215
- p[0],
216
- p[1],
217
- tension
218
- ),
219
- middle = expandPoints(p, tension),
220
- tp = [firstControlPoints[2], firstControlPoints[3]]
221
- .concat(middle)
222
- .concat([
223
- lastControlPoints[0],
224
- lastControlPoints[1],
225
- p[len - 2],
226
- p[len - 1],
227
- lastControlPoints[2],
228
- lastControlPoints[3],
229
- firstControlPoints[0],
230
- firstControlPoints[1],
231
- p[0],
232
- p[1],
233
- ]);
234
-
235
- return tp;
236
- }
237
- getWidth() {
238
- return this.getSelfRect().width;
239
- }
240
- getHeight() {
241
- return this.getSelfRect().height;
242
- }
243
- // overload size detection
244
- getSelfRect() {
245
- let points = this.points();
246
- if (points.length < 4) {
247
- return {
248
- x: points[0] || 0,
249
- y: points[1] || 0,
250
- width: 0,
251
- height: 0,
252
- };
253
- }
254
- if (this.tension() !== 0) {
255
- points = [
256
- points[0],
257
- points[1],
258
- ...this._getTensionPoints(),
259
- points[points.length - 2],
260
- points[points.length - 1],
261
- ];
262
- } else {
263
- points = this.points();
264
- }
265
- let minX = points[0];
266
- let maxX = points[0];
267
- let minY = points[1];
268
- let maxY = points[1];
269
- let x, y;
270
- for (let i = 0; i < points.length / 2; i++) {
271
- x = points[i * 2];
272
- y = points[i * 2 + 1];
273
- minX = Math.min(minX, x);
274
- maxX = Math.max(maxX, x);
275
- minY = Math.min(minY, y);
276
- maxY = Math.max(maxY, y);
277
- }
278
- return {
279
- x: minX,
280
- y: minY,
281
- width: maxX - minX,
282
- height: maxY - minY,
283
- };
284
- }
285
-
286
- closed: GetSet<boolean, this>;
287
- bezier: GetSet<boolean, this>;
288
- tension: GetSet<number, this>;
289
- points: GetSet<number[], this>;
290
- }
291
-
292
- Line.prototype.className = 'Line';
293
- Line.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];
294
- _registerNode(Line);
295
-
296
- // add getters setters
297
- Factory.addGetterSetter(Line, 'closed', false);
298
-
299
- /**
300
- * get/set closed flag. The default is false
301
- * @name Konva.Line#closed
302
- * @method
303
- * @param {Boolean} closed
304
- * @returns {Boolean}
305
- * @example
306
- * // get closed flag
307
- * var closed = line.closed();
308
- *
309
- * // close the shape
310
- * line.closed(true);
311
- *
312
- * // open the shape
313
- * line.closed(false);
314
- */
315
-
316
- Factory.addGetterSetter(Line, 'bezier', false);
317
-
318
- /**
319
- * get/set bezier flag. The default is false
320
- * @name Konva.Line#bezier
321
- * @method
322
- * @param {Boolean} bezier
323
- * @returns {Boolean}
324
- * @example
325
- * // get whether the line is a bezier
326
- * var isBezier = line.bezier();
327
- *
328
- * // set whether the line is a bezier
329
- * line.bezier(true);
330
- */
331
-
332
- Factory.addGetterSetter(Line, 'tension', 0, getNumberValidator());
333
-
334
- /**
335
- * get/set tension
336
- * @name Konva.Line#tension
337
- * @method
338
- * @param {Number} tension Higher values will result in a more curvy line. A value of 0 will result in no interpolation. The default is 0
339
- * @returns {Number}
340
- * @example
341
- * // get tension
342
- * var tension = line.tension();
343
- *
344
- * // set tension
345
- * line.tension(3);
346
- */
347
-
348
- Factory.addGetterSetter(Line, 'points', [], getNumberArrayValidator());
349
- /**
350
- * get/set points array. Points is a flat array [x1, y1, x2, y2]. It is flat for performance reasons.
351
- * @name Konva.Line#points
352
- * @method
353
- * @param {Array} points
354
- * @returns {Array}
355
- * @example
356
- * // get points
357
- * var points = line.points();
358
- *
359
- * // set points
360
- * line.points([10, 20, 30, 40, 50, 60]);
361
- *
362
- * // push a new point
363
- * line.points(line.points().concat([70, 80]));
364
- */