@nasser-sw/fabric 7.0.1-beta8 → 7.0.1-beta9

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 (138) hide show
  1. package/debug/konva-master/CHANGELOG.md +1475 -0
  2. package/debug/konva-master/LICENSE +22 -0
  3. package/debug/konva-master/README.md +209 -0
  4. package/debug/konva-master/gulpfile.mjs +110 -0
  5. package/debug/konva-master/package.json +139 -0
  6. package/debug/konva-master/release.sh +62 -0
  7. package/debug/konva-master/resources/doc-includes/ContainerParams.txt +6 -0
  8. package/debug/konva-master/resources/doc-includes/NodeParams.txt +20 -0
  9. package/debug/konva-master/resources/doc-includes/ShapeParams.txt +53 -0
  10. package/debug/konva-master/resources/jsdoc.conf.json +28 -0
  11. package/debug/konva-master/rollup.config.mjs +32 -0
  12. package/debug/konva-master/src/Animation.ts +237 -0
  13. package/debug/konva-master/src/BezierFunctions.ts +826 -0
  14. package/debug/konva-master/src/Canvas.ts +230 -0
  15. package/debug/konva-master/src/Container.ts +649 -0
  16. package/debug/konva-master/src/Context.ts +1017 -0
  17. package/debug/konva-master/src/Core.ts +5 -0
  18. package/debug/konva-master/src/DragAndDrop.ts +173 -0
  19. package/debug/konva-master/src/Factory.ts +246 -0
  20. package/debug/konva-master/src/FastLayer.ts +29 -0
  21. package/debug/konva-master/src/Global.ts +210 -0
  22. package/debug/konva-master/src/Group.ts +31 -0
  23. package/debug/konva-master/src/Layer.ts +546 -0
  24. package/debug/konva-master/src/Node.ts +3477 -0
  25. package/debug/konva-master/src/PointerEvents.ts +67 -0
  26. package/debug/konva-master/src/Shape.ts +2081 -0
  27. package/debug/konva-master/src/Stage.ts +1000 -0
  28. package/debug/konva-master/src/Tween.ts +811 -0
  29. package/debug/konva-master/src/Util.ts +1123 -0
  30. package/debug/konva-master/src/Validators.ts +210 -0
  31. package/debug/konva-master/src/_CoreInternals.ts +85 -0
  32. package/debug/konva-master/src/_FullInternals.ts +171 -0
  33. package/debug/konva-master/src/canvas-backend.ts +36 -0
  34. package/debug/konva-master/src/filters/Blur.ts +388 -0
  35. package/debug/konva-master/src/filters/Brighten.ts +48 -0
  36. package/debug/konva-master/src/filters/Brightness.ts +30 -0
  37. package/debug/konva-master/src/filters/Contrast.ts +75 -0
  38. package/debug/konva-master/src/filters/Emboss.ts +207 -0
  39. package/debug/konva-master/src/filters/Enhance.ts +154 -0
  40. package/debug/konva-master/src/filters/Grayscale.ts +25 -0
  41. package/debug/konva-master/src/filters/HSL.ts +108 -0
  42. package/debug/konva-master/src/filters/HSV.ts +106 -0
  43. package/debug/konva-master/src/filters/Invert.ts +23 -0
  44. package/debug/konva-master/src/filters/Kaleidoscope.ts +274 -0
  45. package/debug/konva-master/src/filters/Mask.ts +220 -0
  46. package/debug/konva-master/src/filters/Noise.ts +44 -0
  47. package/debug/konva-master/src/filters/Pixelate.ts +107 -0
  48. package/debug/konva-master/src/filters/Posterize.ts +46 -0
  49. package/debug/konva-master/src/filters/RGB.ts +82 -0
  50. package/debug/konva-master/src/filters/RGBA.ts +103 -0
  51. package/debug/konva-master/src/filters/Sepia.ts +27 -0
  52. package/debug/konva-master/src/filters/Solarize.ts +29 -0
  53. package/debug/konva-master/src/filters/Threshold.ts +44 -0
  54. package/debug/konva-master/src/index.ts +3 -0
  55. package/debug/konva-master/src/shapes/Arc.ts +176 -0
  56. package/debug/konva-master/src/shapes/Arrow.ts +231 -0
  57. package/debug/konva-master/src/shapes/Circle.ts +76 -0
  58. package/debug/konva-master/src/shapes/Ellipse.ts +121 -0
  59. package/debug/konva-master/src/shapes/Image.ts +319 -0
  60. package/debug/konva-master/src/shapes/Label.ts +386 -0
  61. package/debug/konva-master/src/shapes/Line.ts +364 -0
  62. package/debug/konva-master/src/shapes/Path.ts +1013 -0
  63. package/debug/konva-master/src/shapes/Rect.ts +79 -0
  64. package/debug/konva-master/src/shapes/RegularPolygon.ts +167 -0
  65. package/debug/konva-master/src/shapes/Ring.ts +94 -0
  66. package/debug/konva-master/src/shapes/Sprite.ts +370 -0
  67. package/debug/konva-master/src/shapes/Star.ts +125 -0
  68. package/debug/konva-master/src/shapes/Text.ts +1065 -0
  69. package/debug/konva-master/src/shapes/TextPath.ts +583 -0
  70. package/debug/konva-master/src/shapes/Transformer.ts +1889 -0
  71. package/debug/konva-master/src/shapes/Wedge.ts +129 -0
  72. package/debug/konva-master/src/skia-backend.ts +35 -0
  73. package/debug/konva-master/src/types.ts +84 -0
  74. package/debug/konva-master/tsconfig.json +31 -0
  75. package/debug/konva-master/tsconfig.test.json +7 -0
  76. package/dist/index.js +915 -23
  77. package/dist/index.js.map +1 -1
  78. package/dist/index.min.js +1 -1
  79. package/dist/index.min.js.map +1 -1
  80. package/dist/index.min.mjs +1 -1
  81. package/dist/index.min.mjs.map +1 -1
  82. package/dist/index.mjs +915 -23
  83. package/dist/index.mjs.map +1 -1
  84. package/dist/index.node.cjs +915 -23
  85. package/dist/index.node.cjs.map +1 -1
  86. package/dist/index.node.mjs +915 -23
  87. package/dist/index.node.mjs.map +1 -1
  88. package/dist/package.json.min.mjs +1 -1
  89. package/dist/package.json.mjs +1 -1
  90. package/dist/src/shapes/Text/Text.d.ts +19 -0
  91. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  92. package/dist/src/shapes/Text/Text.min.mjs +1 -1
  93. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  94. package/dist/src/shapes/Text/Text.mjs +238 -4
  95. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  96. package/dist/src/shapes/Textbox.d.ts +38 -1
  97. package/dist/src/shapes/Textbox.d.ts.map +1 -1
  98. package/dist/src/shapes/Textbox.min.mjs +1 -1
  99. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  100. package/dist/src/shapes/Textbox.mjs +497 -15
  101. package/dist/src/shapes/Textbox.mjs.map +1 -1
  102. package/dist/src/text/examples/arabicTextExample.d.ts +60 -0
  103. package/dist/src/text/examples/arabicTextExample.d.ts.map +1 -0
  104. package/dist/src/text/measure.d.ts +9 -0
  105. package/dist/src/text/measure.d.ts.map +1 -1
  106. package/dist/src/text/measure.min.mjs +1 -1
  107. package/dist/src/text/measure.min.mjs.map +1 -1
  108. package/dist/src/text/measure.mjs +175 -4
  109. package/dist/src/text/measure.mjs.map +1 -1
  110. package/dist/src/text/overlayEditor.d.ts.map +1 -1
  111. package/dist/src/text/overlayEditor.min.mjs +1 -1
  112. package/dist/src/text/overlayEditor.min.mjs.map +1 -1
  113. package/dist/src/text/overlayEditor.mjs +7 -0
  114. package/dist/src/text/overlayEditor.mjs.map +1 -1
  115. package/dist/src/text/scriptUtils.d.ts +142 -0
  116. package/dist/src/text/scriptUtils.d.ts.map +1 -0
  117. package/dist/src/text/scriptUtils.min.mjs +2 -0
  118. package/dist/src/text/scriptUtils.min.mjs.map +1 -0
  119. package/dist/src/text/scriptUtils.mjs +212 -0
  120. package/dist/src/text/scriptUtils.mjs.map +1 -0
  121. package/dist-extensions/src/shapes/Text/Text.d.ts +19 -0
  122. package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -1
  123. package/dist-extensions/src/shapes/Textbox.d.ts +38 -1
  124. package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -1
  125. package/dist-extensions/src/text/measure.d.ts +9 -0
  126. package/dist-extensions/src/text/measure.d.ts.map +1 -1
  127. package/dist-extensions/src/text/overlayEditor.d.ts.map +1 -1
  128. package/dist-extensions/src/text/scriptUtils.d.ts +142 -0
  129. package/dist-extensions/src/text/scriptUtils.d.ts.map +1 -0
  130. package/fabric-test-editor.html +2401 -46
  131. package/fonts/STV Bold.ttf +0 -0
  132. package/fonts/STV Light.ttf +0 -0
  133. package/fonts/STV Regular.ttf +0 -0
  134. package/package.json +1 -1
  135. package/src/shapes/Text/Text.ts +238 -5
  136. package/src/shapes/Textbox.ts +521 -11
  137. package/src/text/measure.ts +200 -50
  138. package/src/text/overlayEditor.ts +7 -0
@@ -0,0 +1,364 @@
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
+ */