fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 7.74 kB
Source Map (JSON)
{"version":3,"file":"collect-point.mjs","sources":["../../../extensions/aligning_guidelines/util/collect-point.ts"],"sourcesContent":["import type { FabricObject, Point, TOriginX, TOriginY } from 'fabric';\nimport { aligningLineConfig } from '../constant';\nimport { getDistance } from './basic';\n\ntype CollectPointProps = {\n activeObject: FabricObject;\n point: Point;\n list: Point[];\n isScale: boolean;\n index: number;\n};\nconst originXArr: TOriginX[] = ['left', 'center', 'right'];\nconst originYArr: TOriginY[] = ['top', 'center', 'bottom'];\n\nexport function collectVerticalPoint(props: CollectPointProps) {\n const aligningLineMargin = aligningLineConfig.margin;\n const { activeObject, isScale, index, point, list } = props;\n const { dis, arr } = getDistanceList(point, list, 'x');\n const margin = aligningLineMargin / (activeObject.canvas?.getZoom() ?? 1);\n if (dis > margin) return [];\n let v = arr[arr.length - 1].x - point.x;\n const dir = index == 0 || index == 3 ? -1 : 1;\n v *= dir;\n\n const { width, scaleX, left } = activeObject;\n const dim = activeObject._getTransformedDimensions();\n const sx = (v + dim.x) / dim.x;\n if (isScale) activeObject.set('scaleX', scaleX * sx);\n else activeObject.set('width', width * sx);\n const dArr = [0, (v / 2) * dir, v * dir];\n if (dir < 0) dArr.reverse();\n const d = dArr[originXArr.indexOf(activeObject.originX)];\n activeObject.set('left', left + d);\n activeObject.setCoords();\n return arr.map((item) => ({\n x: item.x,\n y1: item.y,\n y2: point.y,\n }));\n}\n\nexport function collectHorizontalPoint(props: CollectPointProps) {\n const aligningLineMargin = aligningLineConfig.margin;\n const { activeObject, isScale, index, point, list } = props;\n const { dis, arr } = getDistanceList(point, list, 'y');\n const margin = aligningLineMargin / (activeObject.canvas?.getZoom() ?? 1);\n if (dis > margin) return [];\n let v = arr[arr.length - 1].y - point.y;\n const dir = index < 2 ? -1 : 1;\n v *= dir;\n\n const { height, scaleY, top } = activeObject;\n const dim = activeObject._getTransformedDimensions();\n const sy = (v + dim.y) / dim.y;\n if (isScale) activeObject.set('scaleY', scaleY * sy);\n else activeObject.set('height', height * sy);\n const dArr = [0, (v / 2) * dir, v * dir];\n if (dir < 0) dArr.reverse();\n const d = dArr[originYArr.indexOf(activeObject.originY)];\n activeObject.set('top', top + d);\n activeObject.setCoords();\n return arr.map((item) => ({\n y: item.y,\n x1: item.x,\n x2: point.x,\n }));\n}\n\nfunction getDistanceList(point: Point, list: Point[], type: 'x' | 'y') {\n let dis = Infinity;\n let arr: Point[] = [];\n for (const item of list) {\n const v = getDistance(point[type], item[type]);\n if (dis > v) {\n arr = [];\n dis = v;\n }\n if (dis == v) {\n arr.push(item);\n }\n }\n return { dis, arr };\n}\n"],"names":["originXArr","originYArr","collectVerticalPoint","props","_activeObject$canvas$","_activeObject$canvas","aligningLineMargin","aligningLineConfig","margin","activeObject","isScale","index","point","list","dis","arr","getDistanceList","canvas","getZoom","v","length","x","dir","width","scaleX","left","dim","_getTransformedDimensions","sx","set","dArr","reverse","d","indexOf","originX","setCoords","map","item","y1","y","y2","collectHorizontalPoint","_activeObject$canvas$2","_activeObject$canvas2","height","scaleY","top","sy","originY","x1","x2","type","Infinity","getDistance","push"],"mappings":"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"}