@nasser-sw/fabric 7.0.1-beta30 → 7.0.1-beta31

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 (32) hide show
  1. package/.history/package_20251227172435.json +164 -0
  2. package/dist/index.js +21 -16
  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 +21 -16
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/index.node.cjs +21 -16
  11. package/dist/index.node.cjs.map +1 -1
  12. package/dist/index.node.mjs +21 -16
  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/controls/expandControl.d.ts.map +1 -1
  17. package/dist/src/controls/expandControl.min.mjs +1 -1
  18. package/dist/src/controls/expandControl.min.mjs.map +1 -1
  19. package/dist/src/controls/expandControl.mjs +9 -6
  20. package/dist/src/controls/expandControl.mjs.map +1 -1
  21. package/dist/src/shapes/Object/InteractiveObject.d.ts +2 -2
  22. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  23. package/dist/src/shapes/Object/InteractiveObject.min.mjs +1 -1
  24. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
  25. package/dist/src/shapes/Object/InteractiveObject.mjs +11 -9
  26. package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
  27. package/dist-extensions/src/controls/expandControl.d.ts.map +1 -1
  28. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +2 -2
  29. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/controls/expandControl.ts +8 -6
  32. package/src/shapes/Object/InteractiveObject.ts +10 -9
@@ -0,0 +1,164 @@
1
+ {
2
+ "name": "@nasser-sw/fabric",
3
+ "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.",
4
+ "homepage": "http://fabricjs.com/",
5
+ "version": "7.0.1-beta31",
6
+ "author": "Juriy Zaytsev <kangax@gmail.com>",
7
+ "contributors": [
8
+ {
9
+ "name": "Andrea Bogazzi",
10
+ "email": "andreabogazzi79@gmail.com",
11
+ "url": "https://github.com/asturur"
12
+ },
13
+ {
14
+ "name": "Shachar Nencel",
15
+ "email": "shacharnen@gmail.com",
16
+ "url": "https://github.com/ShaMan123"
17
+ },
18
+ {
19
+ "name": "Steve Eberhardt",
20
+ "email": "melchiar2@gmail.com",
21
+ "url": "https://github.com/melchiar"
22
+ }
23
+ ],
24
+ "keywords": [
25
+ "canvas",
26
+ "graphic",
27
+ "graphics",
28
+ "SVG",
29
+ "node-canvas",
30
+ "parser",
31
+ "HTML5",
32
+ "object model"
33
+ ],
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/fabricjs/fabric.js"
40
+ },
41
+ "bugs": {
42
+ "url": "https://github.com/fabricjs/fabric.js/issues"
43
+ },
44
+ "license": "MIT",
45
+ "scripts": {
46
+ "docs": "typedoc",
47
+ "cli": "node ./scripts/index.mjs",
48
+ "sandboxscript": "node ./scripts/sandbox.mjs",
49
+ "build": "npm run cli -- build",
50
+ "build:fast": "npm run build -- -f",
51
+ "dev": "npm run cli -- dev",
52
+ "start": "npm run sandboxscript -- start",
53
+ "export": "npm run cli -- website export",
54
+ "test:vitest": "vitest --run --project unit-node",
55
+ "test:vitest:chromium": "vitest --run --project unit-chromium",
56
+ "test:vitest:firefox": "vitest --run --project unit-firefox",
57
+ "test:vitest:all": "vitest --run",
58
+ "test:vitest:coverage": "vitest --run --coverage --project unit-node",
59
+ "test:vitest:coverage:watch": "npm run test:vitest --coverage=true",
60
+ "coverage:merge": "nyc merge coveragefiles .nyc_output/merged-coverage.json",
61
+ "coverage:report": "nyc report --skip-full=true --reporter=lcov --reporter=text --reporter=text-summary",
62
+ "coverage:report:ci": "nyc report --reporter=text-summary",
63
+ "test:e2e": "npm run playwright:typecheck && playwright test",
64
+ "playwright:typecheck": "tsc -p ./e2e/tsconfig.json --noEmit",
65
+ "sandbox": "npm run sandboxscript -- sandbox",
66
+ "local-server": "serve ./ -l tcp://localhost:8080",
67
+ "lint": "eslint src extensions",
68
+ "prettier:check": "prettier --check .",
69
+ "prettier:write": "prettier --write ."
70
+ },
71
+ "devDependencies": {
72
+ "@babel/cli": "^7.28.3",
73
+ "@babel/core": "^7.28.3",
74
+ "@babel/preset-env": "^7.28.3",
75
+ "@babel/preset-typescript": "^7.27.1",
76
+ "@eslint/js": "^9.31.0",
77
+ "@playwright/test": "^1.55.0",
78
+ "@rollup/plugin-babel": "^6.0.4",
79
+ "@rollup/plugin-json": "^6.1.0",
80
+ "@rollup/plugin-terser": "^0.4.4",
81
+ "@rollup/plugin-typescript": "^12.1.4",
82
+ "@types/fs-extra": "^11.0.4",
83
+ "@types/jsdom": "^21.1.7",
84
+ "@types/micromatch": "^4.0.9",
85
+ "@types/node": "^24.3.0",
86
+ "@vitest/browser": "^3.2.4",
87
+ "@vitest/coverage-v8": "^3.2.4",
88
+ "@vitest/ui": "^3.2.4",
89
+ "babel-plugin-transform-imports": "git+https://git@github.com/fabricjs/babel-plugin-transform-imports.git",
90
+ "chalk": "^5.6.0",
91
+ "commander": "^14.0.0",
92
+ "es-toolkit": "1.39.7",
93
+ "eslint-config-prettier": "^10.1.8",
94
+ "fs-extra": "^11.3.1",
95
+ "inquirer": "^12.9.4",
96
+ "micromatch": "^4.0.8",
97
+ "moment": "^2.30.1",
98
+ "nyc": "^17.1.0",
99
+ "prettier": "^3.6.2",
100
+ "ps-list": "^8.1.1",
101
+ "rollup": "^4.48.0",
102
+ "semver": "^7.7.2",
103
+ "serve": "^14.2.4",
104
+ "tslib": "^2.8.1",
105
+ "typescript": "^5.9.2",
106
+ "typescript-eslint": "^8.40.0",
107
+ "v8-to-istanbul": "^9.3.0",
108
+ "vite": "^6.3.5",
109
+ "vitest": "^3.2.4"
110
+ },
111
+ "engines": {
112
+ "node": ">=18.0.0"
113
+ },
114
+ "overrides": {
115
+ "canvas": {
116
+ "canvas": "3.2.0"
117
+ }
118
+ },
119
+ "module": "./dist/index.mjs",
120
+ "types": "./dist/index.d.ts",
121
+ "typesVersions": {
122
+ ">=4.2": {
123
+ "*": [
124
+ "dist/index.d.ts"
125
+ ],
126
+ "node": [
127
+ "dist/index.node.d.ts"
128
+ ]
129
+ }
130
+ },
131
+ "sideEffects": false,
132
+ "exports": {
133
+ ".": {
134
+ "types": "./dist/index.d.ts",
135
+ "import": "./dist/index.min.mjs",
136
+ "require": "./dist/index.min.js",
137
+ "default": "./dist/index.min.js"
138
+ },
139
+ "./es": {
140
+ "types": "./dist/index.d.ts",
141
+ "import": "./dist/fabric.min.mjs",
142
+ "require": null,
143
+ "default": null
144
+ },
145
+ "./node": {
146
+ "node": "./dist/index.node.cjs",
147
+ "types": "./dist/index.node.d.ts",
148
+ "import": "./dist/index.node.mjs",
149
+ "require": "./dist/index.node.cjs",
150
+ "default": "./dist/index.node.cjs"
151
+ },
152
+ "./extensions": {
153
+ "node": "./dist-extensions/index.mjs",
154
+ "types": "./dist-extensions/extensions/index.d.ts",
155
+ "import": "./dist-extensions/index.mjs",
156
+ "require": null,
157
+ "default": "./dist-extensions/fabric-extensions.min.js"
158
+ }
159
+ },
160
+ "optionalDependencies": {
161
+ "canvas": "^3.2.0",
162
+ "jsdom": "^26.1.0"
163
+ }
164
+ }
package/dist/index.js CHANGED
@@ -360,7 +360,7 @@
360
360
  }
361
361
  const cache = new Cache();
362
362
 
363
- var version = "7.0.1-beta29";
363
+ var version = "7.0.1-beta31";
364
364
 
365
365
  // use this syntax so babel plugin see this import here
366
366
  const VERSION = version;
@@ -9340,6 +9340,7 @@
9340
9340
  * Note: expansion values are stored in UNSCALED local object coordinates
9341
9341
  */
9342
9342
  positionHandler(dim, finalMatrix, fabricObject, currentControl) {
9343
+ var _fabricObject$canvas;
9343
9344
  const expansion = getExpansion(fabricObject);
9344
9345
  const {
9345
9346
  expandLeft,
@@ -9348,17 +9349,19 @@
9348
9349
  expandBottom
9349
9350
  } = expansion;
9350
9351
 
9351
- // dim already includes object's own scale (dim = width * scaleX, height * scaleY)
9352
+ // dim already includes object's scale AND viewport zoom via _calculateCurrentDimensions
9353
+ // which calls: _getTransformedDimensions().transform(viewportTransform, true)
9352
9354
  const halfWidth = dim.x / 2;
9353
9355
  const halfHeight = dim.y / 2;
9354
9356
 
9355
9357
  // Expansion values are in UNSCALED coordinates.
9356
- // dim is in SCALED coordinates.
9357
- // Scale expansion by object's scale to match dim.
9358
- const scaleFactorX = fabricObject.scaleX || 1;
9359
- const scaleFactorY = fabricObject.scaleY || 1;
9358
+ // dim includes both object scale AND viewport zoom.
9359
+ // We need to scale expansion by both to match dim.
9360
+ const zoom = ((_fabricObject$canvas = fabricObject.canvas) === null || _fabricObject$canvas === void 0 ? void 0 : _fabricObject$canvas.getZoom()) || 1;
9361
+ const scaleFactorX = (fabricObject.scaleX || 1) * zoom;
9362
+ const scaleFactorY = (fabricObject.scaleY || 1) * zoom;
9360
9363
 
9361
- // Scale expansion values to match dim's coordinate space
9364
+ // Scale expansion values to match dim's coordinate space (includes zoom)
9362
9365
  const scaledExpandLeft = expandLeft * scaleFactorX;
9363
9366
  const scaledExpandRight = expandRight * scaleFactorX;
9364
9367
  const scaledExpandTop = expandTop * scaleFactorY;
@@ -10393,11 +10396,12 @@
10393
10396
  * Draw the expansion preview area
10394
10397
  * Called during border rendering when in expand mode
10395
10398
  * @param ctx Canvas rendering context
10396
- * @param size Object dimensions (already includes scale and parent transforms)
10397
- * @param options Decomposed transform options (contains scaleX, scaleY from full transform)
10399
+ * @param size Object dimensions (already includes scale and viewport zoom via _calculateCurrentDimensions)
10400
+ * @param options Decomposed transform options (contains scaleX, scaleY from object transform only)
10398
10401
  * Note: expansion values are stored in local object coordinates
10399
10402
  */
10400
10403
  drawExpandPreview(ctx, size, options) {
10404
+ var _this$canvas6;
10401
10405
  if (!this.expandMode) return;
10402
10406
  const {
10403
10407
  expandLeft,
@@ -10407,13 +10411,14 @@
10407
10411
  } = this.expansion;
10408
10412
 
10409
10413
  // Expansion values are stored in UNSCALED object coordinates.
10410
- // size is in screen coordinates (includes full transform).
10411
- // We need to scale expansion by the FULL transform to match size.
10412
- // options.scaleX/Y contains the full scale (object * parent * viewport).
10413
- const scaleFactorX = (options === null || options === void 0 ? void 0 : options.scaleX) || this.scaleX || 1;
10414
- const scaleFactorY = (options === null || options === void 0 ? void 0 : options.scaleY) || this.scaleY || 1;
10415
-
10416
- // Scale expansion values to screen coordinates
10414
+ // size includes both object scale AND viewport zoom (via _calculateCurrentDimensions).
10415
+ // options.scaleX/Y only contains object scale (from calcTransformMatrix, no viewport).
10416
+ // We need to multiply by zoom to match size's coordinate space.
10417
+ const zoom = ((_this$canvas6 = this.canvas) === null || _this$canvas6 === void 0 ? void 0 : _this$canvas6.getZoom()) || 1;
10418
+ const scaleFactorX = ((options === null || options === void 0 ? void 0 : options.scaleX) || this.scaleX || 1) * zoom;
10419
+ const scaleFactorY = ((options === null || options === void 0 ? void 0 : options.scaleY) || this.scaleY || 1) * zoom;
10420
+
10421
+ // Scale expansion values to screen coordinates (includes zoom)
10417
10422
  const scaledExpandLeft = expandLeft * scaleFactorX;
10418
10423
  const scaledExpandRight = expandRight * scaleFactorX;
10419
10424
  const scaledExpandTop = expandTop * scaleFactorY;