fabric 6.0.2 → 6.2.0
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.
- package/CHANGELOG.md +15 -0
- package/dist/index.js +250 -101
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +250 -101
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +250 -101
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +250 -101
- package/dist/index.node.mjs.map +1 -1
- package/dist/package.json.min.mjs +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/ClassRegistry.d.ts +1 -0
- package/dist/src/ClassRegistry.d.ts.map +1 -1
- package/dist/src/ClassRegistry.min.mjs +1 -1
- package/dist/src/ClassRegistry.min.mjs.map +1 -1
- package/dist/src/ClassRegistry.mjs +3 -0
- package/dist/src/ClassRegistry.mjs.map +1 -1
- package/dist/src/Collection.d.ts +3 -3
- package/dist/src/Collection.d.ts.map +1 -1
- package/dist/src/EventTypeDefs.d.ts +19 -11
- package/dist/src/EventTypeDefs.d.ts.map +1 -1
- package/dist/src/LayoutManager/LayoutManager.d.ts.map +1 -1
- package/dist/src/LayoutManager/LayoutManager.min.mjs +1 -1
- package/dist/src/LayoutManager/LayoutManager.min.mjs.map +1 -1
- package/dist/src/LayoutManager/LayoutManager.mjs +2 -2
- package/dist/src/LayoutManager/LayoutManager.mjs.map +1 -1
- package/dist/src/Shadow.d.ts.map +1 -1
- package/dist/src/Shadow.min.mjs +1 -1
- package/dist/src/Shadow.min.mjs.map +1 -1
- package/dist/src/Shadow.mjs +1 -5
- package/dist/src/Shadow.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/util.d.ts.map +1 -1
- package/dist/src/canvas/DOMManagers/util.min.mjs +1 -1
- package/dist/src/canvas/DOMManagers/util.min.mjs.map +1 -1
- package/dist/src/canvas/DOMManagers/util.mjs +9 -15
- package/dist/src/canvas/DOMManagers/util.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.mjs +3 -0
- package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.d.ts +20 -24
- package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
- package/dist/src/color/util.d.ts.map +1 -1
- package/dist/src/constants.d.ts +1 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.min.mjs +1 -1
- package/dist/src/constants.min.mjs.map +1 -1
- package/dist/src/constants.mjs +2 -1
- package/dist/src/constants.mjs.map +1 -1
- package/dist/src/controls/controlRendering.d.ts +1 -1
- package/dist/src/controls/controlRendering.d.ts.map +1 -1
- package/dist/src/controls/controlRendering.min.mjs.map +1 -1
- package/dist/src/controls/controlRendering.mjs.map +1 -1
- package/dist/src/controls/fireEvent.d.ts +2 -2
- package/dist/src/controls/fireEvent.d.ts.map +1 -1
- package/dist/src/controls/fireEvent.min.mjs.map +1 -1
- package/dist/src/controls/fireEvent.mjs.map +1 -1
- package/dist/src/controls/index.d.ts +1 -0
- package/dist/src/controls/index.d.ts.map +1 -1
- package/dist/src/controls/index.min.mjs +1 -1
- package/dist/src/controls/index.mjs +1 -0
- package/dist/src/controls/index.mjs.map +1 -1
- package/dist/src/controls/pathControl.d.ts +12 -0
- package/dist/src/controls/pathControl.d.ts.map +1 -0
- package/dist/src/controls/pathControl.min.mjs +2 -0
- package/dist/src/controls/pathControl.min.mjs.map +1 -0
- package/dist/src/controls/pathControl.mjs +156 -0
- package/dist/src/controls/pathControl.mjs.map +1 -0
- package/dist/src/controls/polyControl.d.ts.map +1 -1
- package/dist/src/controls/polyControl.min.mjs +1 -1
- package/dist/src/controls/polyControl.min.mjs.map +1 -1
- package/dist/src/controls/polyControl.mjs +1 -9
- package/dist/src/controls/polyControl.mjs.map +1 -1
- package/dist/src/controls/util.d.ts +1 -1
- package/dist/src/controls/wrapWithFireEvent.d.ts +5 -3
- package/dist/src/controls/wrapWithFireEvent.d.ts.map +1 -1
- package/dist/src/controls/wrapWithFireEvent.min.mjs +1 -1
- package/dist/src/controls/wrapWithFireEvent.min.mjs.map +1 -1
- package/dist/src/controls/wrapWithFireEvent.mjs +7 -4
- package/dist/src/controls/wrapWithFireEvent.mjs.map +1 -1
- package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +1 -1
- package/dist/src/env/index.d.ts.map +1 -1
- package/dist/src/env/node.d.ts.map +1 -1
- package/dist/src/filters/BaseFilter.d.ts.map +1 -1
- package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
- package/dist/src/filters/BaseFilter.mjs +0 -1
- package/dist/src/filters/BaseFilter.mjs.map +1 -1
- package/dist/src/filters/ColorMatrix.d.ts.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.d.ts +8 -96
- package/dist/src/filters/ColorMatrixFilters.d.ts.map +1 -1
- package/dist/src/filters/Convolute.d.ts +2 -1
- package/dist/src/filters/Convolute.d.ts.map +1 -1
- package/dist/src/filters/shaders/baseFilter.d.ts +1 -1
- package/dist/src/filters/shaders/baseFilter.d.ts.map +1 -1
- package/dist/src/filters/utils.d.ts.map +1 -1
- package/dist/src/parser/normalizeAttr.d.ts.map +1 -1
- package/dist/src/parser/parseStyleString.d.ts.map +1 -1
- package/dist/src/parser/parseStyleString.min.mjs +1 -1
- package/dist/src/parser/parseStyleString.min.mjs.map +1 -1
- package/dist/src/parser/parseStyleString.mjs +1 -0
- package/dist/src/parser/parseStyleString.mjs.map +1 -1
- package/dist/src/parser/parseUseDirectives.d.ts.map +1 -1
- package/dist/src/parser/parseUseDirectives.min.mjs +1 -1
- package/dist/src/parser/parseUseDirectives.min.mjs.map +1 -1
- package/dist/src/parser/parseUseDirectives.mjs +61 -43
- package/dist/src/parser/parseUseDirectives.mjs.map +1 -1
- package/dist/src/shapes/Group.d.ts +20 -20
- package/dist/src/shapes/Group.d.ts.map +1 -1
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.d.ts.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextBehavior.mjs +0 -1
- package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
- package/dist/src/shapes/Image.d.ts.map +1 -1
- package/dist/src/shapes/Image.min.mjs.map +1 -1
- package/dist/src/shapes/Image.mjs +0 -2
- package/dist/src/shapes/Image.mjs.map +1 -1
- package/dist/src/shapes/Path.d.ts +9 -9
- package/dist/src/shapes/Path.d.ts.map +1 -1
- package/dist/src/shapes/Polyline.d.ts +1 -1
- package/dist/src/shapes/Rect.d.ts +1 -1
- package/dist/src/shapes/Text/Text.d.ts +1 -1
- package/dist/src/shapes/Text/Text.d.ts.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -2
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
- package/dist/src/shapes/Textbox.d.ts.map +1 -1
- package/dist/src/shapes/Textbox.min.mjs.map +1 -1
- package/dist/src/shapes/Textbox.mjs +0 -2
- package/dist/src/shapes/Textbox.mjs.map +1 -1
- package/dist/src/util/applyMixins.d.ts.map +1 -1
- package/dist/src/util/dom_misc.d.ts.map +1 -1
- package/dist/src/util/dom_misc.min.mjs +1 -1
- package/dist/src/util/dom_misc.min.mjs.map +1 -1
- package/dist/src/util/dom_misc.mjs +7 -9
- package/dist/src/util/dom_misc.mjs.map +1 -1
- package/dist/src/util/internals/cloneDeep.d.ts.map +1 -1
- package/dist/src/util/internals/console.d.ts +1 -1
- package/dist/src/util/internals/findRight.d.ts.map +1 -1
- package/dist/src/util/internals/removeFromArray.d.ts.map +1 -1
- package/dist/src/util/misc/dom.d.ts.map +1 -1
- package/dist/src/util/misc/groupSVGElements.d.ts.map +1 -1
- package/dist/src/util/misc/matrix.d.ts.map +1 -1
- package/dist/src/util/misc/objectEnlive.d.ts +1 -1
- package/dist/src/util/misc/objectEnlive.d.ts.map +1 -1
- package/dist/src/util/misc/objectEnlive.min.mjs +1 -1
- package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.mjs +7 -11
- package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
- package/dist/src/util/misc/objectTransforms.d.ts.map +1 -1
- package/dist/src/util/misc/pick.d.ts.map +1 -1
- package/dist/src/util/misc/planeChange.d.ts.map +1 -1
- package/dist/src/util/misc/svgParsing.d.ts.map +1 -1
- package/dist/src/util/misc/textStyles.d.ts.map +1 -1
- package/dist/src/util/path/index.d.ts +0 -1
- package/dist/src/util/path/index.d.ts.map +1 -1
- package/dist/src/util/path/index.min.mjs +1 -1
- package/dist/src/util/path/index.min.mjs.map +1 -1
- package/dist/src/util/path/index.mjs +1 -2
- package/dist/src/util/path/index.mjs.map +1 -1
- package/dist/src/util/path/typedefs.d.ts +1 -0
- package/dist/src/util/path/typedefs.d.ts.map +1 -1
- package/dist/src/util/typeAssertions.d.ts +2 -2
- package/dist/src/util/typeAssertions.d.ts.map +1 -1
- package/lib/aligning_guidelines.js +76 -1
- package/lib/centering_guidelines.js +3 -1
- package/package.json +3 -3
- package/src/ClassRegistry.spec.ts +39 -0
- package/src/ClassRegistry.ts +4 -0
- package/src/EventTypeDefs.ts +22 -10
- package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +1 -0
- package/src/LayoutManager/LayoutManager.spec.ts +1 -0
- package/src/LayoutManager/LayoutManager.ts +2 -0
- package/src/Shadow.ts +1 -6
- package/src/canvas/DOMManagers/util.ts +11 -15
- package/src/canvas/SelectableCanvas.spec.ts +18 -0
- package/src/canvas/SelectableCanvas.ts +3 -0
- package/src/constants.ts +1 -0
- package/src/controls/controlRendering.ts +4 -2
- package/src/controls/fireEvent.ts +2 -2
- package/src/controls/index.ts +1 -0
- package/src/controls/pathControl.spec.ts +75 -0
- package/src/controls/pathControl.ts +293 -0
- package/src/controls/polyControl.ts +1 -1
- package/src/controls/wrapWithFireEvent.ts +14 -5
- package/src/filters/BaseFilter.ts +1 -2
- package/src/parser/parseStyleString.ts +1 -0
- package/src/parser/parseUseDirectives.test.ts +113 -0
- package/src/parser/parseUseDirectives.ts +64 -58
- package/src/shapes/IText/ITextBehavior.ts +4 -2
- package/src/shapes/Image.ts +0 -2
- package/src/shapes/Text/TextSVGExportMixin.ts +0 -2
- package/src/shapes/Textbox.ts +0 -2
- package/src/util/dom_misc.ts +17 -10
- package/src/util/misc/objectEnlive.spec.ts +68 -0
- package/src/util/misc/objectEnlive.ts +7 -13
- package/src/util/path/__snapshots__/index.spec.ts.snap +327 -0
- package/src/util/path/index.spec.ts +13 -2
- package/src/util/path/index.ts +2 -4
- package/src/util/path/typedefs.ts +2 -0
- package/.gitmodules +0 -3
package/dist/src/Shadow.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shadow.mjs","sources":["../../src/Shadow.ts"],"sourcesContent":["import { classRegistry } from './ClassRegistry';\nimport { Color } from './color/Color';\nimport { config } from './config';\nimport { reNum } from './parser/constants';\nimport { Point } from './Point';\nimport type { FabricObject } from './shapes/Object/FabricObject';\nimport type { TClassProperties } from './typedefs';\nimport { uid } from './util/internals/uid';\nimport { pickBy } from './util/misc/pick';\nimport { degreesToRadians } from './util/misc/radiansDegreesConversion';\nimport { toFixed } from './util/misc/toFixed';\nimport { rotateVector } from './util/misc/vectors';\n\n/**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * - (?:\\s|^): This part captures either a whitespace character (\\s) or the beginning of a line (^). It's non-capturing (due to (?:...)), meaning it doesn't create a capturing group.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: This captures the first component of the shadow, which is the horizontal offset. Breaking it down:\n * - (-?\\d+): Captures an optional minus sign followed by one or more digits (integer part of the number).\n * - (?:\\.\\d*)?: Optionally captures a decimal point followed by zero or more digits (decimal part of the number).\n * - (?:px)?: Optionally captures the \"px\" unit.\n * - (?:\\s?|$): Captures either an optional whitespace or the end of the line. This whole part is wrapped in a non-capturing group and marked as optional with ?.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: Similar to the previous step, this captures the vertical offset.\n\n(\\d+(?:\\.\\d*)?(?:px)?)?: This captures the blur radius. It's similar to the horizontal offset but without the optional minus sign.\n\n(?:\\s+(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?){0,1}: This captures an optional part for the color. It allows for whitespace followed by a component with an optional minus sign, digits, decimal point, and \"px\" unit.\n\n(?:$|\\s): This captures either the end of the line or a whitespace character. It ensures that the match ends either at the end of the string or with a whitespace character.\n */\n// eslint-disable-next-line max-len\n\nconst shadowOffsetRegex = '(-?\\\\d+(?:\\\\.\\\\d*)?(?:px)?(?:\\\\s?|$))?';\n\nconst reOffsetsAndBlur = new RegExp(\n '(?:\\\\s|^)' +\n shadowOffsetRegex +\n shadowOffsetRegex +\n '(' +\n reNum +\n '?(?:px)?)?(?:\\\\s?|$)(?:$|\\\\s)'\n);\n\nexport const shadowDefaultValues: Partial<TClassProperties<Shadow>> = {\n color: 'rgb(0,0,0)',\n blur: 0,\n offsetX: 0,\n offsetY: 0,\n affectStroke: false,\n includeDefaultValues: true,\n nonScaling: false,\n};\n\nexport type SerializedShadowOptions = {\n color: string;\n blur: number;\n offsetX: number;\n offsetY: number;\n affectStroke: boolean;\n nonScaling: boolean;\n type: string;\n};\n\nexport class Shadow {\n /**\n * Shadow color\n * @type String\n * @default\n */\n declare color: string;\n\n /**\n * Shadow blur\n * @type Number\n */\n declare blur: number;\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n declare offsetX: number;\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n declare offsetY: number;\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n declare affectStroke: boolean;\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n declare includeDefaultValues: boolean;\n\n /**\n * When `false`, the shadow will scale with the object.\n * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale.\n * default to false\n * @type Boolean\n * @default\n */\n declare nonScaling: boolean;\n\n declare id: number;\n\n static ownDefaults = shadowDefaultValues;\n\n static type = 'shadow';\n\n /**\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n */\n constructor(options: Partial<TClassProperties<Shadow>>);\n constructor(svgAttribute: string);\n constructor(arg0: string | Partial<TClassProperties<Shadow>>) {\n const options: Partial<TClassProperties<Shadow>> =\n typeof arg0 === 'string' ? Shadow.parseShadow(arg0) : arg0;\n Object.assign(this, Shadow.ownDefaults);\n for (const prop in options) {\n // @ts-expect-error for loops are so messy in TS\n this[prop] = options[prop];\n }\n\n this.id = uid();\n }\n\n /**\n * @param {String} value Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n static parseShadow(value: string) {\n const shadowStr = value.trim(),\n [, offsetX = 0, offsetY = 0, blur = 0] = (\n reOffsetsAndBlur.exec(shadowStr) || []\n ).map((value) => parseFloat(value) || 0),\n color = (shadowStr.replace(reOffsetsAndBlur, '') || 'rgb(0,0,0)').trim();\n\n return {\n color,\n offsetX,\n offsetY,\n blur,\n };\n }\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n }\n\n /**\n * Returns SVG representation of a shadow\n * @param {FabricObject} object\n * @return {String} SVG representation of a shadow\n */\n toSVG(object: FabricObject) {\n const offset = rotateVector(\n new Point(this.offsetX, this.offsetY),\n degreesToRadians(-object.angle)\n ),\n BLUR_BOX = 20,\n color = new Color(this.color);\n let fBoxX = 40,\n fBoxY = 40;\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX =\n toFixed(\n (Math.abs(offset.x) + this.blur) / object.width,\n config.NUM_FRACTION_DIGITS\n ) *\n 100 +\n BLUR_BOX;\n fBoxY =\n toFixed(\n (Math.abs(offset.y) + this.blur) / object.height,\n config.NUM_FRACTION_DIGITS\n ) *\n 100 +\n BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return `<filter id=\"SVGID_${this.id}\" y=\"-${fBoxY}%\" height=\"${\n 100 + 2 * fBoxY\n }%\" x=\"-${fBoxX}%\" width=\"${\n 100 + 2 * fBoxX\n }%\" >\\n\\t<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"${toFixed(\n this.blur ? this.blur / 2 : 0,\n config.NUM_FRACTION_DIGITS\n )}\"></feGaussianBlur>\\n\\t<feOffset dx=\"${toFixed(\n offset.x,\n config.NUM_FRACTION_DIGITS\n )}\" dy=\"${toFixed(\n offset.y,\n config.NUM_FRACTION_DIGITS\n )}\" result=\"oBlur\" ></feOffset>\\n\\t<feFlood flood-color=\"${color.toRgb()}\" flood-opacity=\"${color.getAlpha()}\"/>\\n\\t<feComposite in2=\"oBlur\" operator=\"in\" />\\n\\t<feMerge>\\n\\t\\t<feMergeNode></feMergeNode>\\n\\t\\t<feMergeNode in=\"SourceGraphic\"></feMergeNode>\\n\\t</feMerge>\\n</filter>\\n`;\n }\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject() {\n const data: SerializedShadowOptions = {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke,\n nonScaling: this.nonScaling,\n type: (this.constructor as typeof Shadow).type,\n };\n const defaults = Shadow.ownDefaults as SerializedShadowOptions;\n return !this.includeDefaultValues\n ? pickBy(data, (value, key) => value !== defaults[key])\n : data;\n }\n\n static async fromObject(options: Partial<TClassProperties<Shadow>>) {\n return new this(options);\n }\n}\n\nclassRegistry.setClass(Shadow, 'shadow');\n"],"names":["shadowOffsetRegex","reOffsetsAndBlur","RegExp","reNum","shadowDefaultValues","color","blur","offsetX","offsetY","affectStroke","includeDefaultValues","nonScaling","Shadow","constructor","arg0","options","parseShadow","Object","assign","ownDefaults","prop","id","uid","value","shadowStr","trim","exec","map","parseFloat","replace","toString","join","toSVG","object","offset","rotateVector","Point","degreesToRadians","angle","BLUR_BOX","Color","fBoxX","fBoxY","width","height","toFixed","Math","abs","x","config","NUM_FRACTION_DIGITS","y","flipX","flipY","concat","toRgb","getAlpha","toObject","data","type","defaults","pickBy","key","fromObject","_defineProperty","classRegistry","setClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Shadow.mjs","sources":["../../src/Shadow.ts"],"sourcesContent":["import { classRegistry } from './ClassRegistry';\nimport { Color } from './color/Color';\nimport { config } from './config';\nimport { reNum } from './parser/constants';\nimport { Point } from './Point';\nimport type { FabricObject } from './shapes/Object/FabricObject';\nimport type { TClassProperties } from './typedefs';\nimport { uid } from './util/internals/uid';\nimport { pickBy } from './util/misc/pick';\nimport { degreesToRadians } from './util/misc/radiansDegreesConversion';\nimport { toFixed } from './util/misc/toFixed';\nimport { rotateVector } from './util/misc/vectors';\n\n/**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * - (?:\\s|^): This part captures either a whitespace character (\\s) or the beginning of a line (^). It's non-capturing (due to (?:...)), meaning it doesn't create a capturing group.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: This captures the first component of the shadow, which is the horizontal offset. Breaking it down:\n * - (-?\\d+): Captures an optional minus sign followed by one or more digits (integer part of the number).\n * - (?:\\.\\d*)?: Optionally captures a decimal point followed by zero or more digits (decimal part of the number).\n * - (?:px)?: Optionally captures the \"px\" unit.\n * - (?:\\s?|$): Captures either an optional whitespace or the end of the line. This whole part is wrapped in a non-capturing group and marked as optional with ?.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: Similar to the previous step, this captures the vertical offset.\n\n(\\d+(?:\\.\\d*)?(?:px)?)?: This captures the blur radius. It's similar to the horizontal offset but without the optional minus sign.\n\n(?:\\s+(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?){0,1}: This captures an optional part for the color. It allows for whitespace followed by a component with an optional minus sign, digits, decimal point, and \"px\" unit.\n\n(?:$|\\s): This captures either the end of the line or a whitespace character. It ensures that the match ends either at the end of the string or with a whitespace character.\n */\n// eslint-disable-next-line max-len\n\nconst shadowOffsetRegex = '(-?\\\\d+(?:\\\\.\\\\d*)?(?:px)?(?:\\\\s?|$))?';\n\nconst reOffsetsAndBlur = new RegExp(\n '(?:\\\\s|^)' +\n shadowOffsetRegex +\n shadowOffsetRegex +\n '(' +\n reNum +\n '?(?:px)?)?(?:\\\\s?|$)(?:$|\\\\s)'\n);\n\nexport const shadowDefaultValues: Partial<TClassProperties<Shadow>> = {\n color: 'rgb(0,0,0)',\n blur: 0,\n offsetX: 0,\n offsetY: 0,\n affectStroke: false,\n includeDefaultValues: true,\n nonScaling: false,\n};\n\nexport type SerializedShadowOptions = {\n color: string;\n blur: number;\n offsetX: number;\n offsetY: number;\n affectStroke: boolean;\n nonScaling: boolean;\n type: string;\n};\n\nexport class Shadow {\n /**\n * Shadow color\n * @type String\n * @default\n */\n declare color: string;\n\n /**\n * Shadow blur\n * @type Number\n */\n declare blur: number;\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n declare offsetX: number;\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n declare offsetY: number;\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n declare affectStroke: boolean;\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n declare includeDefaultValues: boolean;\n\n /**\n * When `false`, the shadow will scale with the object.\n * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale.\n * default to false\n * @type Boolean\n * @default\n */\n declare nonScaling: boolean;\n\n declare id: number;\n\n static ownDefaults = shadowDefaultValues;\n\n static type = 'shadow';\n\n /**\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n */\n constructor(options: Partial<TClassProperties<Shadow>>);\n constructor(svgAttribute: string);\n constructor(arg0: string | Partial<TClassProperties<Shadow>>) {\n const options: Partial<TClassProperties<Shadow>> =\n typeof arg0 === 'string' ? Shadow.parseShadow(arg0) : arg0;\n Object.assign(this, Shadow.ownDefaults, options);\n this.id = uid();\n }\n\n /**\n * @param {String} value Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n static parseShadow(value: string) {\n const shadowStr = value.trim(),\n [, offsetX = 0, offsetY = 0, blur = 0] = (\n reOffsetsAndBlur.exec(shadowStr) || []\n ).map((value) => parseFloat(value) || 0),\n color = (shadowStr.replace(reOffsetsAndBlur, '') || 'rgb(0,0,0)').trim();\n\n return {\n color,\n offsetX,\n offsetY,\n blur,\n };\n }\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n }\n\n /**\n * Returns SVG representation of a shadow\n * @param {FabricObject} object\n * @return {String} SVG representation of a shadow\n */\n toSVG(object: FabricObject) {\n const offset = rotateVector(\n new Point(this.offsetX, this.offsetY),\n degreesToRadians(-object.angle)\n ),\n BLUR_BOX = 20,\n color = new Color(this.color);\n let fBoxX = 40,\n fBoxY = 40;\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX =\n toFixed(\n (Math.abs(offset.x) + this.blur) / object.width,\n config.NUM_FRACTION_DIGITS\n ) *\n 100 +\n BLUR_BOX;\n fBoxY =\n toFixed(\n (Math.abs(offset.y) + this.blur) / object.height,\n config.NUM_FRACTION_DIGITS\n ) *\n 100 +\n BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return `<filter id=\"SVGID_${this.id}\" y=\"-${fBoxY}%\" height=\"${\n 100 + 2 * fBoxY\n }%\" x=\"-${fBoxX}%\" width=\"${\n 100 + 2 * fBoxX\n }%\" >\\n\\t<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"${toFixed(\n this.blur ? this.blur / 2 : 0,\n config.NUM_FRACTION_DIGITS\n )}\"></feGaussianBlur>\\n\\t<feOffset dx=\"${toFixed(\n offset.x,\n config.NUM_FRACTION_DIGITS\n )}\" dy=\"${toFixed(\n offset.y,\n config.NUM_FRACTION_DIGITS\n )}\" result=\"oBlur\" ></feOffset>\\n\\t<feFlood flood-color=\"${color.toRgb()}\" flood-opacity=\"${color.getAlpha()}\"/>\\n\\t<feComposite in2=\"oBlur\" operator=\"in\" />\\n\\t<feMerge>\\n\\t\\t<feMergeNode></feMergeNode>\\n\\t\\t<feMergeNode in=\"SourceGraphic\"></feMergeNode>\\n\\t</feMerge>\\n</filter>\\n`;\n }\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject() {\n const data: SerializedShadowOptions = {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke,\n nonScaling: this.nonScaling,\n type: (this.constructor as typeof Shadow).type,\n };\n const defaults = Shadow.ownDefaults as SerializedShadowOptions;\n return !this.includeDefaultValues\n ? pickBy(data, (value, key) => value !== defaults[key])\n : data;\n }\n\n static async fromObject(options: Partial<TClassProperties<Shadow>>) {\n return new this(options);\n }\n}\n\nclassRegistry.setClass(Shadow, 'shadow');\n"],"names":["shadowOffsetRegex","reOffsetsAndBlur","RegExp","reNum","shadowDefaultValues","color","blur","offsetX","offsetY","affectStroke","includeDefaultValues","nonScaling","Shadow","constructor","arg0","options","parseShadow","Object","assign","ownDefaults","id","uid","value","shadowStr","trim","exec","map","parseFloat","replace","toString","join","toSVG","object","offset","rotateVector","Point","degreesToRadians","angle","BLUR_BOX","Color","fBoxX","fBoxY","width","height","toFixed","Math","abs","x","config","NUM_FRACTION_DIGITS","y","flipX","flipY","concat","toRgb","getAlpha","toObject","data","type","defaults","pickBy","key","fromObject","_defineProperty","classRegistry","setClass"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/canvas/DOMManagers/util.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAQ5C,eAAO,MAAM,mBAAmB,OAC1B,iBAAiB,OAChB,wBAAwB,qBACV,KAAK,iCAUzB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,QAMvE;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,OACvB,WAAW,qBACI,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/canvas/DOMManagers/util.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAQ5C,eAAO,MAAM,mBAAmB,OAC1B,iBAAiB,OAChB,wBAAwB,qBACV,KAAK,iCAUzB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,QAMvE;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,OACvB,WAAW,qBACI,OAAO,CAAC,aAAa,CAAC,SAK1C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW;;;EA6BpD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,eAM3D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{NONE as t
|
|
1
|
+
import{NONE as t}from"../../constants.min.mjs";import{getDocumentFromElement as e,getWindowFromElement as o,getScrollLeftTop as n}from"../../util/dom_misc.min.mjs";import{setStyle as i}from"../../util/dom_style.min.mjs";const l=function(t,e,o){let{width:n,height:i}=o,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;t.width=n,t.height=i,l>1&&(t.setAttribute("width",(n*l).toString()),t.setAttribute("height",(i*l).toString()),e.scale(l,l))};function r(e,o){const n=o?"manipulation":t;i(e,{"touch-action":n,"-ms-touch-action":n})}const c=(t,e)=>{let{width:o,height:n}=e;o&&(t.style.width="number"==typeof o?"".concat(o,"px"):o),n&&(t.style.height="number"==typeof n?"".concat(n,"px"):n)};function s(t){var i;const l=t&&e(t),r={left:0,top:0};if(!l)return r;const c=(null===(i=o(t))||void 0===i?void 0:i.getComputedStyle(t,null))||{};r.left+=parseInt(c.borderLeftWidth,10)||0,r.top+=parseInt(c.borderTopWidth,10)||0,r.left+=parseInt(c.paddingLeft,10)||0,r.top+=parseInt(c.paddingTop,10)||0;let s={left:0,top:0};const p=l.documentElement;void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect());const d=n(t);return{left:s.left+d.left-(p.clientLeft||0)+r.left,top:s.top+d.top-(p.clientTop||0)+r.top}}function p(e){return void 0!==e.onselectstart&&(e.onselectstart=()=>!1),e.style.userSelect=t,e}export{r as allowTouchScrolling,s as getElementOffset,p as makeElementUnselectable,c as setCSSDimensions,l as setCanvasDimensions};
|
|
2
2
|
//# sourceMappingURL=util.min.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.min.mjs","sources":["../../../../src/canvas/DOMManagers/util.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"util.min.mjs","sources":["../../../../src/canvas/DOMManagers/util.ts"],"sourcesContent":["import { NONE } from '../../constants';\nimport type { TSize } from '../../typedefs';\nimport {\n getDocumentFromElement,\n getWindowFromElement,\n getScrollLeftTop,\n} from '../../util/dom_misc';\nimport { setStyle } from '../../util/dom_style';\n\nexport const setCanvasDimensions = (\n el: HTMLCanvasElement,\n ctx: CanvasRenderingContext2D,\n { width, height }: TSize,\n retinaScaling = 1\n) => {\n el.width = width;\n el.height = height;\n if (retinaScaling > 1) {\n el.setAttribute('width', (width * retinaScaling).toString());\n el.setAttribute('height', (height * retinaScaling).toString());\n ctx.scale(retinaScaling, retinaScaling);\n }\n};\n\nexport function allowTouchScrolling(element: HTMLElement, allow: boolean) {\n const touchAction = allow ? 'manipulation' : NONE;\n setStyle(element, {\n 'touch-action': touchAction,\n '-ms-touch-action': touchAction,\n });\n}\n\nexport type CSSDimensions = {\n width: number | string;\n height: number | string;\n};\n\nexport const setCSSDimensions = (\n el: HTMLElement,\n { width, height }: Partial<CSSDimensions>\n) => {\n width && (el.style.width = typeof width === 'number' ? `${width}px` : width);\n height &&\n (el.style.height = typeof height === 'number' ? `${height}px` : height);\n};\n\n/**\n * Returns offset for a given element\n * @param {HTMLElement} element Element to get offset for\n * @return {Object} Object with \"left\" and \"top\" properties\n */\nexport function getElementOffset(element: HTMLElement) {\n const doc = element && getDocumentFromElement(element),\n offset = { left: 0, top: 0 };\n\n if (!doc) {\n return offset;\n }\n const elemStyle: CSSStyleDeclaration =\n getWindowFromElement(element)?.getComputedStyle(element, null) ||\n ({} as CSSStyleDeclaration);\n offset.left += parseInt(elemStyle.borderLeftWidth, 10) || 0;\n offset.top += parseInt(elemStyle.borderTopWidth, 10) || 0;\n offset.left += parseInt(elemStyle.paddingLeft, 10) || 0;\n offset.top += parseInt(elemStyle.paddingTop, 10) || 0;\n\n let box = { left: 0, top: 0 };\n\n const docElem = doc.documentElement;\n if (typeof element.getBoundingClientRect !== 'undefined') {\n box = element.getBoundingClientRect();\n }\n\n const scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left:\n box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top,\n };\n}\n\n/**\n * Makes element unselectable\n * @param {HTMLElement} element Element to make unselectable\n * @return {HTMLElement} Element that was passed in\n */\nexport function makeElementUnselectable(element: HTMLElement) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = () => false;\n }\n element.style.userSelect = NONE;\n return element;\n}\n"],"names":["setCanvasDimensions","el","ctx","_ref","width","height","retinaScaling","arguments","length","undefined","setAttribute","toString","scale","allowTouchScrolling","element","allow","touchAction","NONE","setStyle","setCSSDimensions","_ref2","style","concat","getElementOffset","_getWindowFromElement","doc","getDocumentFromElement","offset","left","top","elemStyle","getWindowFromElement","getComputedStyle","parseInt","borderLeftWidth","borderTopWidth","paddingLeft","paddingTop","box","docElem","documentElement","getBoundingClientRect","scrollLeftTop","getScrollLeftTop","clientLeft","clientTop","makeElementUnselectable","onselectstart","userSelect"],"mappings":"4NASO,MAAMA,EAAsB,SACjCC,EACAC,EAA6BC,GAG1B,IAFHC,MAAEA,EAAKC,OAAEA,GAAeF,EACxBG,EAAaC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAEhBN,EAAGG,MAAQA,EACXH,EAAGI,OAASA,EACRC,EAAgB,IAClBL,EAAGS,aAAa,SAAUN,EAAQE,GAAeK,YACjDV,EAAGS,aAAa,UAAWL,EAASC,GAAeK,YACnDT,EAAIU,MAAMN,EAAeA,GAE7B,EAEO,SAASO,EAAoBC,EAAsBC,GACxD,MAAMC,EAAcD,EAAQ,eAAiBE,EAC7CC,EAASJ,EAAS,CAChB,eAAgBE,EAChB,mBAAoBA,GAExB,OAOaG,EAAmBA,CAC9BlB,EAAemB,KAEZ,IADHhB,MAAEA,EAAKC,OAAEA,GAAgCe,EAEzChB,IAAUH,EAAGoB,MAAMjB,MAAyB,iBAAVA,EAAkBkB,GAAAA,OAAMlB,EAAK,MAAOA,GACtEC,IACGJ,EAAGoB,MAAMhB,OAA2B,iBAAXA,EAAmBiB,GAAAA,OAAMjB,EAAM,MAAOA,EAAO,EAQpE,SAASkB,EAAiBT,GAAsB,IAAAU,EACrD,MAAMC,EAAMX,GAAWY,EAAuBZ,GAC5Ca,EAAS,CAAEC,KAAM,EAAGC,IAAK,GAE3B,IAAKJ,EACH,OAAOE,EAET,MAAMG,GACyBN,QAA7BA,EAAAO,EAAqBjB,cAAQU,SAA7BA,EAA+BQ,iBAAiBlB,EAAS,QACxD,GACHa,EAAOC,MAAQK,SAASH,EAAUI,gBAAiB,KAAO,EAC1DP,EAAOE,KAAOI,SAASH,EAAUK,eAAgB,KAAO,EACxDR,EAAOC,MAAQK,SAASH,EAAUM,YAAa,KAAO,EACtDT,EAAOE,KAAOI,SAASH,EAAUO,WAAY,KAAO,EAEpD,IAAIC,EAAM,CAAEV,KAAM,EAAGC,IAAK,GAE1B,MAAMU,EAAUd,EAAIe,qBACyB,IAAlC1B,EAAQ2B,wBACjBH,EAAMxB,EAAQ2B,yBAGhB,MAAMC,EAAgBC,EAAiB7B,GAEvC,MAAO,CACLc,KACEU,EAAIV,KAAOc,EAAcd,MAAQW,EAAQK,YAAc,GAAKjB,EAAOC,KACrEC,IAAKS,EAAIT,IAAMa,EAAcb,KAAOU,EAAQM,WAAa,GAAKlB,EAAOE,IAEzE,CAOO,SAASiB,EAAwBhC,GAKtC,YAJqC,IAA1BA,EAAQiC,gBACjBjC,EAAQiC,cAAgB,KAAM,GAEhCjC,EAAQO,MAAM2B,WAAa/B,EACpBH,CACT"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NONE
|
|
1
|
+
import { NONE } from '../../constants.mjs';
|
|
2
2
|
import { getDocumentFromElement, getWindowFromElement, getScrollLeftTop } from '../../util/dom_misc.mjs';
|
|
3
3
|
import { setStyle } from '../../util/dom_style.mjs';
|
|
4
4
|
|
|
@@ -39,29 +39,23 @@ const setCSSDimensions = (el, _ref2) => {
|
|
|
39
39
|
*/
|
|
40
40
|
function getElementOffset(element) {
|
|
41
41
|
var _getWindowFromElement;
|
|
42
|
-
let box = {
|
|
43
|
-
left: 0,
|
|
44
|
-
top: 0
|
|
45
|
-
};
|
|
46
42
|
const doc = element && getDocumentFromElement(element),
|
|
47
43
|
offset = {
|
|
48
44
|
left: 0,
|
|
49
45
|
top: 0
|
|
50
|
-
},
|
|
51
|
-
offsetAttributes = {
|
|
52
|
-
borderLeftWidth: LEFT,
|
|
53
|
-
borderTopWidth: TOP,
|
|
54
|
-
paddingLeft: LEFT,
|
|
55
|
-
paddingTop: TOP
|
|
56
46
|
};
|
|
57
47
|
if (!doc) {
|
|
58
48
|
return offset;
|
|
59
49
|
}
|
|
60
50
|
const elemStyle = ((_getWindowFromElement = getWindowFromElement(element)) === null || _getWindowFromElement === void 0 ? void 0 : _getWindowFromElement.getComputedStyle(element, null)) || {};
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
51
|
+
offset.left += parseInt(elemStyle.borderLeftWidth, 10) || 0;
|
|
52
|
+
offset.top += parseInt(elemStyle.borderTopWidth, 10) || 0;
|
|
53
|
+
offset.left += parseInt(elemStyle.paddingLeft, 10) || 0;
|
|
54
|
+
offset.top += parseInt(elemStyle.paddingTop, 10) || 0;
|
|
55
|
+
let box = {
|
|
56
|
+
left: 0,
|
|
57
|
+
top: 0
|
|
58
|
+
};
|
|
65
59
|
const docElem = doc.documentElement;
|
|
66
60
|
if (typeof element.getBoundingClientRect !== 'undefined') {
|
|
67
61
|
box = element.getBoundingClientRect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.mjs","sources":["../../../../src/canvas/DOMManagers/util.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"util.mjs","sources":["../../../../src/canvas/DOMManagers/util.ts"],"sourcesContent":["import { NONE } from '../../constants';\nimport type { TSize } from '../../typedefs';\nimport {\n getDocumentFromElement,\n getWindowFromElement,\n getScrollLeftTop,\n} from '../../util/dom_misc';\nimport { setStyle } from '../../util/dom_style';\n\nexport const setCanvasDimensions = (\n el: HTMLCanvasElement,\n ctx: CanvasRenderingContext2D,\n { width, height }: TSize,\n retinaScaling = 1\n) => {\n el.width = width;\n el.height = height;\n if (retinaScaling > 1) {\n el.setAttribute('width', (width * retinaScaling).toString());\n el.setAttribute('height', (height * retinaScaling).toString());\n ctx.scale(retinaScaling, retinaScaling);\n }\n};\n\nexport function allowTouchScrolling(element: HTMLElement, allow: boolean) {\n const touchAction = allow ? 'manipulation' : NONE;\n setStyle(element, {\n 'touch-action': touchAction,\n '-ms-touch-action': touchAction,\n });\n}\n\nexport type CSSDimensions = {\n width: number | string;\n height: number | string;\n};\n\nexport const setCSSDimensions = (\n el: HTMLElement,\n { width, height }: Partial<CSSDimensions>\n) => {\n width && (el.style.width = typeof width === 'number' ? `${width}px` : width);\n height &&\n (el.style.height = typeof height === 'number' ? `${height}px` : height);\n};\n\n/**\n * Returns offset for a given element\n * @param {HTMLElement} element Element to get offset for\n * @return {Object} Object with \"left\" and \"top\" properties\n */\nexport function getElementOffset(element: HTMLElement) {\n const doc = element && getDocumentFromElement(element),\n offset = { left: 0, top: 0 };\n\n if (!doc) {\n return offset;\n }\n const elemStyle: CSSStyleDeclaration =\n getWindowFromElement(element)?.getComputedStyle(element, null) ||\n ({} as CSSStyleDeclaration);\n offset.left += parseInt(elemStyle.borderLeftWidth, 10) || 0;\n offset.top += parseInt(elemStyle.borderTopWidth, 10) || 0;\n offset.left += parseInt(elemStyle.paddingLeft, 10) || 0;\n offset.top += parseInt(elemStyle.paddingTop, 10) || 0;\n\n let box = { left: 0, top: 0 };\n\n const docElem = doc.documentElement;\n if (typeof element.getBoundingClientRect !== 'undefined') {\n box = element.getBoundingClientRect();\n }\n\n const scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left:\n box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top,\n };\n}\n\n/**\n * Makes element unselectable\n * @param {HTMLElement} element Element to make unselectable\n * @return {HTMLElement} Element that was passed in\n */\nexport function makeElementUnselectable(element: HTMLElement) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = () => false;\n }\n element.style.userSelect = NONE;\n return element;\n}\n"],"names":["setCanvasDimensions","el","ctx","_ref","width","height","retinaScaling","arguments","length","undefined","setAttribute","toString","scale","allowTouchScrolling","element","allow","touchAction","NONE","setStyle","setCSSDimensions","_ref2","style","concat","getElementOffset","_getWindowFromElement","doc","getDocumentFromElement","offset","left","top","elemStyle","getWindowFromElement","getComputedStyle","parseInt","borderLeftWidth","borderTopWidth","paddingLeft","paddingTop","box","docElem","documentElement","getBoundingClientRect","scrollLeftTop","getScrollLeftTop","clientLeft","clientTop","makeElementUnselectable","onselectstart","userSelect"],"mappings":";;;;AASO,MAAMA,mBAAmB,GAAG,UACjCC,EAAqB,EACrBC,GAA6B,EAAAC,IAAA,EAG1B;EAAA,IAFH;IAAEC,KAAK;AAAEC,IAAAA,MAAAA;AAAc,GAAC,GAAAF,IAAA,CAAA;AAAA,EAAA,IACxBG,aAAa,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;EAEjBN,EAAE,CAACG,KAAK,GAAGA,KAAK,CAAA;EAChBH,EAAE,CAACI,MAAM,GAAGA,MAAM,CAAA;EAClB,IAAIC,aAAa,GAAG,CAAC,EAAE;AACrBL,IAAAA,EAAE,CAACS,YAAY,CAAC,OAAO,EAAE,CAACN,KAAK,GAAGE,aAAa,EAAEK,QAAQ,EAAE,CAAC,CAAA;AAC5DV,IAAAA,EAAE,CAACS,YAAY,CAAC,QAAQ,EAAE,CAACL,MAAM,GAAGC,aAAa,EAAEK,QAAQ,EAAE,CAAC,CAAA;AAC9DT,IAAAA,GAAG,CAACU,KAAK,CAACN,aAAa,EAAEA,aAAa,CAAC,CAAA;AACzC,GAAA;AACF,EAAC;AAEM,SAASO,mBAAmBA,CAACC,OAAoB,EAAEC,KAAc,EAAE;AACxE,EAAA,MAAMC,WAAW,GAAGD,KAAK,GAAG,cAAc,GAAGE,IAAI,CAAA;EACjDC,QAAQ,CAACJ,OAAO,EAAE;AAChB,IAAA,cAAc,EAAEE,WAAW;AAC3B,IAAA,kBAAkB,EAAEA,WAAAA;AACtB,GAAC,CAAC,CAAA;AACJ,CAAA;MAOaG,gBAAgB,GAAGA,CAC9BlB,EAAe,EAAAmB,KAAA,KAEZ;EAAA,IADH;IAAEhB,KAAK;AAAEC,IAAAA,MAAAA;AAA+B,GAAC,GAAAe,KAAA,CAAA;AAEzChB,EAAAA,KAAK,KAAKH,EAAE,CAACoB,KAAK,CAACjB,KAAK,GAAG,OAAOA,KAAK,KAAK,QAAQ,GAAAkB,EAAAA,CAAAA,MAAA,CAAMlB,KAAK,EAAA,IAAA,CAAA,GAAOA,KAAK,CAAC,CAAA;AAC5EC,EAAAA,MAAM,KACHJ,EAAE,CAACoB,KAAK,CAAChB,MAAM,GAAG,OAAOA,MAAM,KAAK,QAAQ,GAAAiB,EAAAA,CAAAA,MAAA,CAAMjB,MAAM,EAAA,IAAA,CAAA,GAAOA,MAAM,CAAC,CAAA;AAC3E,EAAC;;AAED;AACA;AACA;AACA;AACA;AACO,SAASkB,gBAAgBA,CAACT,OAAoB,EAAE;AAAA,EAAA,IAAAU,qBAAA,CAAA;AACrD,EAAA,MAAMC,GAAG,GAAGX,OAAO,IAAIY,sBAAsB,CAACZ,OAAO,CAAC;AACpDa,IAAAA,MAAM,GAAG;AAAEC,MAAAA,IAAI,EAAE,CAAC;AAAEC,MAAAA,GAAG,EAAE,CAAA;KAAG,CAAA;EAE9B,IAAI,CAACJ,GAAG,EAAE;AACR,IAAA,OAAOE,MAAM,CAAA;AACf,GAAA;EACA,MAAMG,SAA8B,GAClC,CAAAN,CAAAA,qBAAA,GAAAO,oBAAoB,CAACjB,OAAO,CAAC,MAAAU,IAAAA,IAAAA,qBAAA,uBAA7BA,qBAAA,CAA+BQ,gBAAgB,CAAClB,OAAO,EAAE,IAAI,CAAC,KAC7D,EAA0B,CAAA;AAC7Ba,EAAAA,MAAM,CAACC,IAAI,IAAIK,QAAQ,CAACH,SAAS,CAACI,eAAe,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;AAC3DP,EAAAA,MAAM,CAACE,GAAG,IAAII,QAAQ,CAACH,SAAS,CAACK,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;AACzDR,EAAAA,MAAM,CAACC,IAAI,IAAIK,QAAQ,CAACH,SAAS,CAACM,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;AACvDT,EAAAA,MAAM,CAACE,GAAG,IAAII,QAAQ,CAACH,SAAS,CAACO,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;AAErD,EAAA,IAAIC,GAAG,GAAG;AAAEV,IAAAA,IAAI,EAAE,CAAC;AAAEC,IAAAA,GAAG,EAAE,CAAA;GAAG,CAAA;AAE7B,EAAA,MAAMU,OAAO,GAAGd,GAAG,CAACe,eAAe,CAAA;AACnC,EAAA,IAAI,OAAO1B,OAAO,CAAC2B,qBAAqB,KAAK,WAAW,EAAE;AACxDH,IAAAA,GAAG,GAAGxB,OAAO,CAAC2B,qBAAqB,EAAE,CAAA;AACvC,GAAA;AAEA,EAAA,MAAMC,aAAa,GAAGC,gBAAgB,CAAC7B,OAAO,CAAC,CAAA;EAE/C,OAAO;AACLc,IAAAA,IAAI,EACFU,GAAG,CAACV,IAAI,GAAGc,aAAa,CAACd,IAAI,IAAIW,OAAO,CAACK,UAAU,IAAI,CAAC,CAAC,GAAGjB,MAAM,CAACC,IAAI;AACzEC,IAAAA,GAAG,EAAES,GAAG,CAACT,GAAG,GAAGa,aAAa,CAACb,GAAG,IAAIU,OAAO,CAACM,SAAS,IAAI,CAAC,CAAC,GAAGlB,MAAM,CAACE,GAAAA;GACtE,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASiB,uBAAuBA,CAAChC,OAAoB,EAAE;AAC5D,EAAA,IAAI,OAAOA,OAAO,CAACiC,aAAa,KAAK,WAAW,EAAE;AAChDjC,IAAAA,OAAO,CAACiC,aAAa,GAAG,MAAM,KAAK,CAAA;AACrC,GAAA;AACAjC,EAAAA,OAAO,CAACO,KAAK,CAAC2B,UAAU,GAAG/B,IAAI,CAAA;AAC/B,EAAA,OAAOH,OAAO,CAAA;AAChB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectableCanvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/SelectableCanvas.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SelectableCanvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/SelectableCanvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as t,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{dragHandler as i}from"../controls/drag.min.mjs";import{getActionFromCorner as s}from"../controls/util.min.mjs";import{Point as r}from"../Point.min.mjs";import{FabricObject as n}from"../shapes/Object/FabricObject.min.mjs";import{saveObjectTransform as o,addTransformToObject as c}from"../util/misc/objectTransforms.min.mjs";import{StaticCanvas as a}from"./StaticCanvas.min.mjs";import{isCollection as h}from"../Collection.min.mjs";import{isTransparent as l}from"../util/misc/isTransparent.min.mjs";import{degreesToRadians as d}from"../util/misc/radiansDegreesConversion.min.mjs";import{isTouchEvent as m,getPointer as g}from"../util/dom_event.min.mjs";import{pick as u}from"../util/misc/pick.min.mjs";import{sendPointToPlane as p}from"../util/misc/planeChange.min.mjs";import{cos as f}from"../util/misc/cos.min.mjs";import{sin as _}from"../util/misc/sin.min.mjs";import"../util/misc/vectors.min.mjs";import"../util/misc/projectStroke/StrokeLineJoinProjections.min.mjs";import{SCALE as j,SCALE_X as v,SCALE_Y as b,RESIZING as T,ROTATE as x,RIGHT as C,LEFT as O,BOTTOM as y,TOP as w,CENTER as S,MODIFIED as A,SKEW_X as P,SKEW_Y as D}from"../constants.min.mjs";import{createCanvasElement as R}from"../util/misc/dom.min.mjs";import"../config.min.mjs";import"../shapes/Group.min.mjs";import"../cache.min.mjs";import"../util/path/regex.min.mjs";import"../parser/constants.min.mjs";import"../util/animation/AnimationRegistry.min.mjs";import{CanvasDOMManager as k}from"./DOMManagers/CanvasDOMManager.min.mjs";import{canvasDefaults as F}from"./CanvasOptions.min.mjs";import{Intersection as M}from"../Intersection.min.mjs";import{isActiveSelection as E}from"../util/typeAssertions.min.mjs";class B extends a{constructor(){super(...arguments),t(this,"targets",[]),t(this,"_hoveredTargets",[]),t(this,"_objectsToRender",void 0),t(this,"_currentTransform",null),t(this,"_groupSelector",null),t(this,"contextTopDirty",!1)}static getDefaults(){return e(e({},super.getDefaults()),B.ownDefaults)}get upperCanvasEl(){var t;return null===(t=this.elements.upper)||void 0===t?void 0:t.el}get contextTop(){var t;return null===(t=this.elements.upper)||void 0===t?void 0:t.ctx}get wrapperEl(){return this.elements.container}initElements(t){this.elements=new k(t,{allowTouchScrolling:this.allowTouchScrolling,containerClass:this.containerClass}),this._createCacheCanvas()}_onObjectAdded(t){this._objectsToRender=void 0,super._onObjectAdded(t)}_onObjectRemoved(t){this._objectsToRender=void 0,t===this._activeObject&&(this.fire("before:selection:cleared",{deselected:[t]}),this._discardActiveObject(),this.fire("selection:cleared",{deselected:[t]}),t.fire("deselected",{target:t})),t===this._hoveredTarget&&(this._hoveredTarget=void 0,this._hoveredTargets=[]),super._onObjectRemoved(t)}_onStackOrderChanged(){this._objectsToRender=void 0,super._onStackOrderChanged()}_chooseObjectsToRender(){const t=this._activeObject;return!this.preserveObjectStacking&&t?this._objects.filter((e=>!e.group&&e!==t)).concat(t):this._objects}renderAll(){this.cancelRequestedRender(),this.destroyed||(!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1),!this._objectsToRender&&(this._objectsToRender=this._chooseObjectsToRender()),this.renderCanvas(this.getContext(),this._objectsToRender))}renderTopLayer(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()}renderTop(){const t=this.contextTop;this.clearContext(t),this.renderTopLayer(t),this.fire("after:render",{ctx:t})}setTargetFindTolerance(t){t=Math.round(t),this.targetFindTolerance=t;const e=this.getRetinaScaling(),i=Math.ceil((2*t+1)*e);this.pixelFindCanvasEl.width=this.pixelFindCanvasEl.height=i,this.pixelFindContext.scale(e,e)}isTargetTransparent(t,e,i){const s=this.targetFindTolerance,r=this.pixelFindContext;this.clearContext(r),r.save(),r.translate(-e+s,-i+s),r.transform(...this.viewportTransform);const n=t.selectionBackgroundColor;t.selectionBackgroundColor="",t.render(r),t.selectionBackgroundColor=n,r.restore();const o=Math.round(s*this.getRetinaScaling());return l(r,o,o,o)}_isSelectionKeyPressed(t){const e=this.selectionKey;return!!e&&(Array.isArray(e)?!!e.find((e=>!!e&&!0===t[e])):t[e])}_shouldClearSelection(t,e){const i=this.getActiveObjects(),s=this._activeObject;return!!(!e||e&&s&&i.length>1&&-1===i.indexOf(e)&&s!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&s&&s!==e)}_shouldCenterTransform(t,e,i){if(!t)return;let s;return e===j||e===v||e===b||e===T?s=this.centeredScaling||t.centeredScaling:e===x&&(s=this.centeredRotation||t.centeredRotation),s?!i:i}_getOriginFromCorner(t,e){const i={x:t.originX,y:t.originY};return e?(["ml","tl","bl"].includes(e)?i.x=C:["mr","tr","br"].includes(e)&&(i.x=O),["tl","mt","tr"].includes(e)?i.y=y:["bl","mb","br"].includes(e)&&(i.y=w),i):i}_setupCurrentTransform(t,r,n){var c;const a=r.group?p(this.getScenePoint(t),void 0,r.group.calcTransformMatrix()):this.getScenePoint(t),{key:h="",control:l}=r.getActiveControl()||{},m=n&&l?null===(c=l.getActionHandler(t,r,l))||void 0===c?void 0:c.bind(l):i,g=s(n,h,t,r),u=t[this.centeredKey],f=this._shouldCenterTransform(r,g,u)?{x:S,y:S}:this._getOriginFromCorner(r,h),_={target:r,action:g,actionHandler:m,actionPerformed:!1,corner:h,scaleX:r.scaleX,scaleY:r.scaleY,skewX:r.skewX,skewY:r.skewY,offsetX:a.x-r.left,offsetY:a.y-r.top,originX:f.x,originY:f.y,ex:a.x,ey:a.y,lastX:a.x,lastY:a.y,theta:d(r.angle),width:r.width,height:r.height,shiftKey:t.shiftKey,altKey:u,original:e(e({},o(r)),{},{originX:f.x,originY:f.y})};this._currentTransform=_,this.fire("before:transform",{e:t,transform:_})}setCursor(t){this.upperCanvasEl.style.cursor=t}_drawSelection(t){const{x:e,y:i,deltaX:s,deltaY:o}=this._groupSelector,c=new r(e,i).transform(this.viewportTransform),a=new r(e+s,i+o).transform(this.viewportTransform),h=this.selectionLineWidth/2;let l=Math.min(c.x,a.x),d=Math.min(c.y,a.y),m=Math.max(c.x,a.x),g=Math.max(c.y,a.y);this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(l,d,m-l,g-d)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,l+=h,d+=h,m-=h,g-=h,n.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(l,d,m-l,g-d))}findTarget(t){if(this.skipTargetFind)return;const e=this.getViewportPoint(t),i=this._activeObject,s=this.getActiveObjects();if(this.targets=[],i&&s.length>=1){if(i.findControl(e,m(t)))return i;if(s.length>1&&this.searchPossibleTargets([i],e))return i;if(i===this.searchPossibleTargets([i],e)){if(this.preserveObjectStacking){const s=this.targets;this.targets=[];const r=this.searchPossibleTargets(this._objects,e);return t[this.altSelectionKey]&&r&&r!==i?(this.targets=s,i):r}return i}}return this.searchPossibleTargets(this._objects,e)}_pointIsInObjectSelectionArea(t,e){let i=t.getCoords();const s=this.getZoom(),n=t.padding/s;if(n){const[t,e,s,o]=i,c=Math.atan2(e.y-t.y,e.x-t.x),a=f(c)*n,h=_(c)*n,l=a+h,d=a-h;i=[new r(t.x-d,t.y-l),new r(e.x+l,e.y-d),new r(s.x+d,s.y+l),new r(o.x-l,o.y+d)]}return M.isPointInPolygon(e,i)}_checkTarget(t,e){if(t&&t.visible&&t.evented&&this._pointIsInObjectSelectionArea(t,p(e,void 0,this.viewportTransform))){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing)return!0;if(!this.isTargetTransparent(t,e.x,e.y))return!0}return!1}_searchPossibleTargets(t,e){let i=t.length;for(;i--;){const s=t[i];if(this._checkTarget(s,e)){if(h(s)&&s.subTargetCheck){const t=this._searchPossibleTargets(s._objects,e);t&&this.targets.push(t)}return s}}}searchPossibleTargets(t,e){const i=this._searchPossibleTargets(t,e);if(i&&h(i)&&i.interactive&&this.targets[0]){const t=this.targets;for(let e=t.length-1;e>0;e--){const i=t[e];if(!h(i)||!i.interactive)return i}return t[0]}return i}getViewportPoint(t){return this._pointer?this._pointer:this.getPointer(t,!0)}getScenePoint(t){return this._absolutePointer?this._absolutePointer:this.getPointer(t)}getPointer(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.upperCanvasEl,s=i.getBoundingClientRect();let n=g(t),o=s.width||0,c=s.height||0;o&&c||(w in s&&y in s&&(c=Math.abs(s.top-s.bottom)),C in s&&O in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,e||(n=p(n,void 0,this.viewportTransform));const a=this.getRetinaScaling();1!==a&&(n.x/=a,n.y/=a);const h=0===o||0===c?new r(1,1):new r(i.width/o,i.height/c);return n.multiply(h)}_setDimensionsImpl(t,e){this._resetTransformEventData(),super._setDimensionsImpl(t,e),this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop)}_createCacheCanvas(){this.pixelFindCanvasEl=R(),this.pixelFindContext=this.pixelFindCanvasEl.getContext("2d",{willReadFrequently:!0}),this.setTargetFindTolerance(this.targetFindTolerance)}getTopContext(){return this.elements.upper.ctx}getSelectionContext(){return this.elements.upper.ctx}getSelectionElement(){return this.elements.upper.el}getActiveObject(){return this._activeObject}getActiveObjects(){const t=this._activeObject;return E(t)?t.getObjects():t?[t]:[]}_fireSelectionEvents(t,e){let i=!1,s=!1;const r=this.getActiveObjects(),n=[],o=[];t.forEach((t=>{r.includes(t)||(i=!0,t.fire("deselected",{e:e,target:t}),o.push(t))})),r.forEach((s=>{t.includes(s)||(i=!0,s.fire("selected",{e:e,target:s}),n.push(s))})),t.length>0&&r.length>0?(s=!0,i&&this.fire("selection:updated",{e:e,selected:n,deselected:o})):r.length>0?(s=!0,this.fire("selection:created",{e:e,selected:n})):t.length>0&&(s=!0,this.fire("selection:cleared",{e:e,deselected:o})),s&&(this._objectsToRender=void 0)}setActiveObject(t,e){const i=this.getActiveObjects(),s=this._setActiveObject(t,e);return this._fireSelectionEvents(i,e),s}_setActiveObject(t,e){const i=this._activeObject;return i!==t&&(!(!this._discardActiveObject(e,t)&&this._activeObject)&&(!t.onSelect({e:e})&&(this._activeObject=t,E(t)&&i!==t&&t.set("canvas",this),t.setCoords(),!0)))}_discardActiveObject(t,e){const i=this._activeObject;return!!i&&(!i.onDeselect({e:t,object:e})&&(this._currentTransform&&this._currentTransform.target===i&&this.endCurrentTransform(t),this._activeObject=void 0,!0))}discardActiveObject(t){const e=this.getActiveObjects(),i=this.getActiveObject();e.length&&this.fire("before:selection:cleared",{e:t,deselected:[i]});const s=this._discardActiveObject(t);return this._fireSelectionEvents(e,t),s}endCurrentTransform(t){const e=this._currentTransform;this._finalizeCurrentTransform(t),e&&e.target&&(e.target.isMoving=!1),this._currentTransform=null}_finalizeCurrentTransform(t){const e=this._currentTransform,i=e.target,s={e:t,target:i,transform:e,action:e.action};i._scaling&&(i._scaling=!1),i.setCoords(),e.actionPerformed&&(this.fire("object:modified",s),i.fire(A,s))}setViewportTransform(t){super.setViewportTransform(t);const e=this._activeObject;e&&e.setCoords()}destroy(){const t=this._activeObject;E(t)&&(t.removeAll(),t.dispose()),delete this._activeObject,super.destroy(),this.pixelFindContext=null,this.pixelFindCanvasEl=void 0}clear(){this.discardActiveObject(),this._activeObject=void 0,this.clearContext(this.contextTop),super.clear()}drawControls(t){const e=this._activeObject;e&&e._renderControls(t)}_toObject(t,e,i){const s=this._realizeGroupTransformOnObject(t),r=super._toObject(t,e,i);return t.set(s),r}_realizeGroupTransformOnObject(t){const{group:e}=t;if(e&&E(e)&&this._activeObject===e){const i=u(t,["angle","flipX","flipY",O,v,b,P,D,w]);return c(t,e.calcOwnMatrix()),i}return{}}_setSVGObject(t,e,i){const s=this._realizeGroupTransformOnObject(e);super._setSVGObject(t,e,i),e.set(s)}}t(B,"ownDefaults",F);export{B as SelectableCanvas};
|
|
1
|
+
import{defineProperty as t,objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{dragHandler as i}from"../controls/drag.min.mjs";import{getActionFromCorner as s}from"../controls/util.min.mjs";import{Point as r}from"../Point.min.mjs";import{FabricObject as n}from"../shapes/Object/FabricObject.min.mjs";import{saveObjectTransform as o,addTransformToObject as c}from"../util/misc/objectTransforms.min.mjs";import{StaticCanvas as a}from"./StaticCanvas.min.mjs";import{isCollection as h}from"../Collection.min.mjs";import{isTransparent as l}from"../util/misc/isTransparent.min.mjs";import{degreesToRadians as d}from"../util/misc/radiansDegreesConversion.min.mjs";import{isTouchEvent as m,getPointer as g}from"../util/dom_event.min.mjs";import{pick as u}from"../util/misc/pick.min.mjs";import{sendPointToPlane as p}from"../util/misc/planeChange.min.mjs";import{cos as f}from"../util/misc/cos.min.mjs";import{sin as _}from"../util/misc/sin.min.mjs";import"../util/misc/vectors.min.mjs";import"../util/misc/projectStroke/StrokeLineJoinProjections.min.mjs";import{SCALE as v,SCALE_X as j,SCALE_Y as b,RESIZING as T,ROTATE as x,RIGHT as C,LEFT as O,BOTTOM as y,TOP as w,CENTER as S,MODIFIED as A,SKEW_X as P,SKEW_Y as D}from"../constants.min.mjs";import{createCanvasElement as R}from"../util/misc/dom.min.mjs";import"../config.min.mjs";import"../shapes/Group.min.mjs";import"../cache.min.mjs";import"../util/path/regex.min.mjs";import"../parser/constants.min.mjs";import"../util/animation/AnimationRegistry.min.mjs";import{CanvasDOMManager as k}from"./DOMManagers/CanvasDOMManager.min.mjs";import{canvasDefaults as F}from"./CanvasOptions.min.mjs";import{Intersection as M}from"../Intersection.min.mjs";import{isActiveSelection as E}from"../util/typeAssertions.min.mjs";class B extends a{constructor(){super(...arguments),t(this,"targets",[]),t(this,"_hoveredTargets",[]),t(this,"_objectsToRender",void 0),t(this,"_currentTransform",null),t(this,"_groupSelector",null),t(this,"contextTopDirty",!1)}static getDefaults(){return e(e({},super.getDefaults()),B.ownDefaults)}get upperCanvasEl(){var t;return null===(t=this.elements.upper)||void 0===t?void 0:t.el}get contextTop(){var t;return null===(t=this.elements.upper)||void 0===t?void 0:t.ctx}get wrapperEl(){return this.elements.container}initElements(t){this.elements=new k(t,{allowTouchScrolling:this.allowTouchScrolling,containerClass:this.containerClass}),this._createCacheCanvas()}_onObjectAdded(t){this._objectsToRender=void 0,super._onObjectAdded(t)}_onObjectRemoved(t){this._objectsToRender=void 0,t===this._activeObject&&(this.fire("before:selection:cleared",{deselected:[t]}),this._discardActiveObject(),this.fire("selection:cleared",{deselected:[t]}),t.fire("deselected",{target:t})),t===this._hoveredTarget&&(this._hoveredTarget=void 0,this._hoveredTargets=[]),super._onObjectRemoved(t)}_onStackOrderChanged(){this._objectsToRender=void 0,super._onStackOrderChanged()}_chooseObjectsToRender(){const t=this._activeObject;return!this.preserveObjectStacking&&t?this._objects.filter((e=>!e.group&&e!==t)).concat(t):this._objects}renderAll(){this.cancelRequestedRender(),this.destroyed||(!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1),!this._objectsToRender&&(this._objectsToRender=this._chooseObjectsToRender()),this.renderCanvas(this.getContext(),this._objectsToRender))}renderTopLayer(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()}renderTop(){const t=this.contextTop;this.clearContext(t),this.renderTopLayer(t),this.fire("after:render",{ctx:t})}setTargetFindTolerance(t){t=Math.round(t),this.targetFindTolerance=t;const e=this.getRetinaScaling(),i=Math.ceil((2*t+1)*e);this.pixelFindCanvasEl.width=this.pixelFindCanvasEl.height=i,this.pixelFindContext.scale(e,e)}isTargetTransparent(t,e,i){const s=this.targetFindTolerance,r=this.pixelFindContext;this.clearContext(r),r.save(),r.translate(-e+s,-i+s),r.transform(...this.viewportTransform);const n=t.selectionBackgroundColor;t.selectionBackgroundColor="",t.render(r),t.selectionBackgroundColor=n,r.restore();const o=Math.round(s*this.getRetinaScaling());return l(r,o,o,o)}_isSelectionKeyPressed(t){const e=this.selectionKey;return!!e&&(Array.isArray(e)?!!e.find((e=>!!e&&!0===t[e])):t[e])}_shouldClearSelection(t,e){const i=this.getActiveObjects(),s=this._activeObject;return!!(!e||e&&s&&i.length>1&&-1===i.indexOf(e)&&s!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&s&&s!==e)}_shouldCenterTransform(t,e,i){if(!t)return;let s;return e===v||e===j||e===b||e===T?s=this.centeredScaling||t.centeredScaling:e===x&&(s=this.centeredRotation||t.centeredRotation),s?!i:i}_getOriginFromCorner(t,e){const i={x:t.originX,y:t.originY};return e?(["ml","tl","bl"].includes(e)?i.x=C:["mr","tr","br"].includes(e)&&(i.x=O),["tl","mt","tr"].includes(e)?i.y=y:["bl","mb","br"].includes(e)&&(i.y=w),i):i}_setupCurrentTransform(t,r,n){var c;const a=r.group?p(this.getScenePoint(t),void 0,r.group.calcTransformMatrix()):this.getScenePoint(t),{key:h="",control:l}=r.getActiveControl()||{},m=n&&l?null===(c=l.getActionHandler(t,r,l))||void 0===c?void 0:c.bind(l):i,g=s(n,h,t,r),u=t[this.centeredKey],f=this._shouldCenterTransform(r,g,u)?{x:S,y:S}:this._getOriginFromCorner(r,h),_={target:r,action:g,actionHandler:m,actionPerformed:!1,corner:h,scaleX:r.scaleX,scaleY:r.scaleY,skewX:r.skewX,skewY:r.skewY,offsetX:a.x-r.left,offsetY:a.y-r.top,originX:f.x,originY:f.y,ex:a.x,ey:a.y,lastX:a.x,lastY:a.y,theta:d(r.angle),width:r.width,height:r.height,shiftKey:t.shiftKey,altKey:u,original:e(e({},o(r)),{},{originX:f.x,originY:f.y})};this._currentTransform=_,this.fire("before:transform",{e:t,transform:_})}setCursor(t){this.upperCanvasEl.style.cursor=t}_drawSelection(t){const{x:e,y:i,deltaX:s,deltaY:o}=this._groupSelector,c=new r(e,i).transform(this.viewportTransform),a=new r(e+s,i+o).transform(this.viewportTransform),h=this.selectionLineWidth/2;let l=Math.min(c.x,a.x),d=Math.min(c.y,a.y),m=Math.max(c.x,a.x),g=Math.max(c.y,a.y);this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(l,d,m-l,g-d)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,l+=h,d+=h,m-=h,g-=h,n.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(l,d,m-l,g-d))}findTarget(t){if(this.skipTargetFind)return;const e=this.getViewportPoint(t),i=this._activeObject,s=this.getActiveObjects();if(this.targets=[],i&&s.length>=1){if(i.findControl(e,m(t)))return i;if(s.length>1&&this.searchPossibleTargets([i],e))return i;if(i===this.searchPossibleTargets([i],e)){if(this.preserveObjectStacking){const s=this.targets;this.targets=[];const r=this.searchPossibleTargets(this._objects,e);return t[this.altSelectionKey]&&r&&r!==i?(this.targets=s,i):r}return i}}return this.searchPossibleTargets(this._objects,e)}_pointIsInObjectSelectionArea(t,e){let i=t.getCoords();const s=this.getZoom(),n=t.padding/s;if(n){const[t,e,s,o]=i,c=Math.atan2(e.y-t.y,e.x-t.x),a=f(c)*n,h=_(c)*n,l=a+h,d=a-h;i=[new r(t.x-d,t.y-l),new r(e.x+l,e.y-d),new r(s.x+d,s.y+l),new r(o.x-l,o.y+d)]}return M.isPointInPolygon(e,i)}_checkTarget(t,e){if(t&&t.visible&&t.evented&&this._pointIsInObjectSelectionArea(t,p(e,void 0,this.viewportTransform))){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing)return!0;if(!this.isTargetTransparent(t,e.x,e.y))return!0}return!1}_searchPossibleTargets(t,e){let i=t.length;for(;i--;){const s=t[i];if(this._checkTarget(s,e)){if(h(s)&&s.subTargetCheck){const t=this._searchPossibleTargets(s._objects,e);t&&this.targets.push(t)}return s}}}searchPossibleTargets(t,e){const i=this._searchPossibleTargets(t,e);if(i&&h(i)&&i.interactive&&this.targets[0]){const t=this.targets;for(let e=t.length-1;e>0;e--){const i=t[e];if(!h(i)||!i.interactive)return i}return t[0]}return i}getViewportPoint(t){return this._pointer?this._pointer:this.getPointer(t,!0)}getScenePoint(t){return this._absolutePointer?this._absolutePointer:this.getPointer(t)}getPointer(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.upperCanvasEl,s=i.getBoundingClientRect();let n=g(t),o=s.width||0,c=s.height||0;o&&c||(w in s&&y in s&&(c=Math.abs(s.top-s.bottom)),C in s&&O in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,e||(n=p(n,void 0,this.viewportTransform));const a=this.getRetinaScaling();1!==a&&(n.x/=a,n.y/=a);const h=0===o||0===c?new r(1,1):new r(i.width/o,i.height/c);return n.multiply(h)}_setDimensionsImpl(t,e){this._resetTransformEventData(),super._setDimensionsImpl(t,e),this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop)}_createCacheCanvas(){this.pixelFindCanvasEl=R(),this.pixelFindContext=this.pixelFindCanvasEl.getContext("2d",{willReadFrequently:!0}),this.setTargetFindTolerance(this.targetFindTolerance)}getTopContext(){return this.elements.upper.ctx}getSelectionContext(){return this.elements.upper.ctx}getSelectionElement(){return this.elements.upper.el}getActiveObject(){return this._activeObject}getActiveObjects(){const t=this._activeObject;return E(t)?t.getObjects():t?[t]:[]}_fireSelectionEvents(t,e){let i=!1,s=!1;const r=this.getActiveObjects(),n=[],o=[];t.forEach((t=>{r.includes(t)||(i=!0,t.fire("deselected",{e:e,target:t}),o.push(t))})),r.forEach((s=>{t.includes(s)||(i=!0,s.fire("selected",{e:e,target:s}),n.push(s))})),t.length>0&&r.length>0?(s=!0,i&&this.fire("selection:updated",{e:e,selected:n,deselected:o})):r.length>0?(s=!0,this.fire("selection:created",{e:e,selected:n})):t.length>0&&(s=!0,this.fire("selection:cleared",{e:e,deselected:o})),s&&(this._objectsToRender=void 0)}setActiveObject(t,e){const i=this.getActiveObjects(),s=this._setActiveObject(t,e);return this._fireSelectionEvents(i,e),s}_setActiveObject(t,e){const i=this._activeObject;return i!==t&&(!(!this._discardActiveObject(e,t)&&this._activeObject)&&(!t.onSelect({e:e})&&(this._activeObject=t,E(t)&&i!==t&&t.set("canvas",this),t.setCoords(),!0)))}_discardActiveObject(t,e){const i=this._activeObject;return!!i&&(!i.onDeselect({e:t,object:e})&&(this._currentTransform&&this._currentTransform.target===i&&this.endCurrentTransform(t),E(i)&&i===this._hoveredTarget&&(this._hoveredTarget=void 0),this._activeObject=void 0,!0))}discardActiveObject(t){const e=this.getActiveObjects(),i=this.getActiveObject();e.length&&this.fire("before:selection:cleared",{e:t,deselected:[i]});const s=this._discardActiveObject(t);return this._fireSelectionEvents(e,t),s}endCurrentTransform(t){const e=this._currentTransform;this._finalizeCurrentTransform(t),e&&e.target&&(e.target.isMoving=!1),this._currentTransform=null}_finalizeCurrentTransform(t){const e=this._currentTransform,i=e.target,s={e:t,target:i,transform:e,action:e.action};i._scaling&&(i._scaling=!1),i.setCoords(),e.actionPerformed&&(this.fire("object:modified",s),i.fire(A,s))}setViewportTransform(t){super.setViewportTransform(t);const e=this._activeObject;e&&e.setCoords()}destroy(){const t=this._activeObject;E(t)&&(t.removeAll(),t.dispose()),delete this._activeObject,super.destroy(),this.pixelFindContext=null,this.pixelFindCanvasEl=void 0}clear(){this.discardActiveObject(),this._activeObject=void 0,this.clearContext(this.contextTop),super.clear()}drawControls(t){const e=this._activeObject;e&&e._renderControls(t)}_toObject(t,e,i){const s=this._realizeGroupTransformOnObject(t),r=super._toObject(t,e,i);return t.set(s),r}_realizeGroupTransformOnObject(t){const{group:e}=t;if(e&&E(e)&&this._activeObject===e){const i=u(t,["angle","flipX","flipY",O,j,b,P,D,w]);return c(t,e.calcOwnMatrix()),i}return{}}_setSVGObject(t,e,i){const s=this._realizeGroupTransformOnObject(e);super._setSVGObject(t,e,i),e.set(s)}}t(B,"ownDefaults",F);export{B as SelectableCanvas};
|
|
2
2
|
//# sourceMappingURL=SelectableCanvas.min.mjs.map
|