From a7e16da855a6aa0181662612d05949e6e3ecf040 Mon Sep 17 00:00:00 2001 From: qq_41923622 Date: Fri, 24 Jan 2025 10:44:00 +0800 Subject: [PATCH] Fri Jan 24 10:44:00 CST 2025 inscode --- .inscode | 5 +- basic.jpg | Bin 0 -> 492198 bytes index.d.ts | 1 + index.html | 20 + index.js | 1 - package.json | 46 +- src/assets/add.svg | 1 + src/assets/arrow.svg | 1 + src/assets/cancel.svg | 1 + src/assets/circle.svg | 1 + src/assets/confirm.svg | 1 + src/assets/crop.svg | 1 + src/assets/download.svg | 1 + src/assets/draw.svg | 1 + src/assets/extend.svg | 1 + src/assets/flip.svg | 1 + src/assets/flipX.svg | 1 + src/assets/flipY.svg | 1 + src/assets/hand.svg | 1 + src/assets/history.svg | 1 + src/assets/mask.svg | 1 + src/assets/mosaic.svg | 1 + src/assets/rect.svg | 1 + src/assets/redo.svg | 1 + src/assets/reset.svg | 1 + src/assets/rotate.svg | 1 + src/assets/shrink.svg | 1 + src/assets/subtract.svg | 1 + src/assets/text.svg | 1 + src/assets/triangle.svg | 1 + src/assets/undo.svg | 1 + src/assets/upload.svg | 1 + src/assets/zoomIn.svg | 1 + src/assets/zoomOut.svg | 1 + src/element_manager.ts | 1661 ++++++++++++++++++++++++++++++ src/history.ts | 731 +++++++++++++ src/image_editor.ts | 251 +++++ src/image_editor_operator.ts | 27 + src/main.ts | 316 ++++++ src/operator/arrow_operator.ts | 104 ++ src/operator/draw_operator.ts | 79 ++ src/operator/ellipse_operator.ts | 123 +++ src/operator/fabric_arrow.ts | 64 ++ src/operator/mosaic_operator.ts | 137 +++ src/operator/move_helper.ts | 157 +++ src/operator/rect_operator.ts | 114 ++ src/operator/text_operator.ts | 118 +++ src/screenshoter.ts | 619 +++++++++++ src/shortcut_manager.ts | 39 + src/uitls.ts | 7 + tsconfig.json | 23 + vite.config.ts | 16 + yarn.lock | 1190 +++++++++++++++++++++ 53 files changed, 5859 insertions(+), 18 deletions(-) create mode 100644 basic.jpg create mode 100644 index.d.ts create mode 100644 index.html delete mode 100644 index.js create mode 100644 src/assets/add.svg create mode 100644 src/assets/arrow.svg create mode 100644 src/assets/cancel.svg create mode 100644 src/assets/circle.svg create mode 100644 src/assets/confirm.svg create mode 100644 src/assets/crop.svg create mode 100644 src/assets/download.svg create mode 100644 src/assets/draw.svg create mode 100644 src/assets/extend.svg create mode 100644 src/assets/flip.svg create mode 100644 src/assets/flipX.svg create mode 100644 src/assets/flipY.svg create mode 100644 src/assets/hand.svg create mode 100644 src/assets/history.svg create mode 100644 src/assets/mask.svg create mode 100644 src/assets/mosaic.svg create mode 100644 src/assets/rect.svg create mode 100644 src/assets/redo.svg create mode 100644 src/assets/reset.svg create mode 100644 src/assets/rotate.svg create mode 100644 src/assets/shrink.svg create mode 100644 src/assets/subtract.svg create mode 100644 src/assets/text.svg create mode 100644 src/assets/triangle.svg create mode 100644 src/assets/undo.svg create mode 100644 src/assets/upload.svg create mode 100644 src/assets/zoomIn.svg create mode 100644 src/assets/zoomOut.svg create mode 100644 src/element_manager.ts create mode 100644 src/history.ts create mode 100644 src/image_editor.ts create mode 100644 src/image_editor_operator.ts create mode 100644 src/main.ts create mode 100644 src/operator/arrow_operator.ts create mode 100644 src/operator/draw_operator.ts create mode 100644 src/operator/ellipse_operator.ts create mode 100644 src/operator/fabric_arrow.ts create mode 100644 src/operator/mosaic_operator.ts create mode 100644 src/operator/move_helper.ts create mode 100644 src/operator/rect_operator.ts create mode 100644 src/operator/text_operator.ts create mode 100644 src/screenshoter.ts create mode 100644 src/shortcut_manager.ts create mode 100644 src/uitls.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts create mode 100644 yarn.lock diff --git a/.inscode b/.inscode index e177731..53bd567 100644 --- a/.inscode +++ b/.inscode @@ -1,6 +1,9 @@ -run = "npm i && npm run dev" language = "node" +[deployment] +build = "npm i && npm run build" +run = "npm run preview" + [env] PATH = "/root/${PROJECT_DIR}/.config/npm/node_global/bin:/root/${PROJECT_DIR}/node_modules/.bin:${PATH}" XDG_CONFIG_HOME = "/root/.config" diff --git a/basic.jpg b/basic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e497340b42a6c7bebb67f51dbb883a0ae321528c GIT binary patch literal 492198 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

%K`SsBnDCPG0?CgIn{{WBj>3b(Y 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ȣd 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 z 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

7mPN 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�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%0A}ti{{Sy=DRo!>03X@C0;BUYm~fnj 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

kx$U=psNl{AvujW9at+87BXv$BaDX)Tsq(F8Q_ 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

    { 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 literal 0 HcmV?d00001 diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..534c632 --- /dev/null +++ b/index.d.ts @@ -0,0 +1 @@ +export function setupCounter(element: HTMLButtonElement): void diff --git a/index.html b/index.html new file mode 100644 index 0000000..0e64843 --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + Vite App + + + +
    + + + diff --git a/index.js b/index.js deleted file mode 100644 index 2d7e683..0000000 --- a/index.js +++ /dev/null @@ -1 +0,0 @@ -console.log("欢迎来到 InsCode"); \ No newline at end of file diff --git a/package.json b/package.json index 72caa17..2f26c97 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,32 @@ { - "name": "nodejs", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "dev": "node index.js", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@types/node": "^18.0.6", - "node-fetch": "^3.2.6" - } + "name": "online-image-editor", + "private": true, + "version": "0.0.0", + "type": "module", + "files": [ + "dist", + "index.d.ts" + ], + "main": "./dist/counter.umd.cjs", + "module": "./dist/counter.js", + "types": "./index.d.ts", + "exports": { + "types": "./index.d.ts", + "import": "./dist/counter.js", + "require": "./dist/counter.umd.cjs" + }, + "scripts": { + "dev": "vite", + "build": "tsc && vite build" + }, + "devDependencies": { + "typescript": "^5.4.5", + "vite": "^5.4.8", + "vite-plugin-copy": "^0.1.6", + "vite-plugin-static-copy": "^2.0.0" + }, + "dependencies": { + "fabric": "^6.4.3", + "rollup-plugin-copy": "^3.5.0" } - \ No newline at end of file +} diff --git a/src/assets/add.svg b/src/assets/add.svg new file mode 100644 index 0000000..10c0744 --- /dev/null +++ b/src/assets/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/arrow.svg b/src/assets/arrow.svg new file mode 100644 index 0000000..f29aa8e --- /dev/null +++ b/src/assets/arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/cancel.svg b/src/assets/cancel.svg new file mode 100644 index 0000000..399fb03 --- /dev/null +++ b/src/assets/cancel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/circle.svg b/src/assets/circle.svg new file mode 100644 index 0000000..3f16d19 --- /dev/null +++ b/src/assets/circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/confirm.svg b/src/assets/confirm.svg new file mode 100644 index 0000000..8c3afe2 --- /dev/null +++ b/src/assets/confirm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/crop.svg b/src/assets/crop.svg new file mode 100644 index 0000000..1d88a1e --- /dev/null +++ b/src/assets/crop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/download.svg b/src/assets/download.svg new file mode 100644 index 0000000..c9c092b --- /dev/null +++ b/src/assets/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/draw.svg b/src/assets/draw.svg new file mode 100644 index 0000000..f9cb1a2 --- /dev/null +++ b/src/assets/draw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/extend.svg b/src/assets/extend.svg new file mode 100644 index 0000000..22a58b5 --- /dev/null +++ b/src/assets/extend.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/flip.svg b/src/assets/flip.svg new file mode 100644 index 0000000..7f99bfa --- /dev/null +++ b/src/assets/flip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/flipX.svg b/src/assets/flipX.svg new file mode 100644 index 0000000..2223d66 --- /dev/null +++ b/src/assets/flipX.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/flipY.svg b/src/assets/flipY.svg new file mode 100644 index 0000000..061f108 --- /dev/null +++ b/src/assets/flipY.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/hand.svg b/src/assets/hand.svg new file mode 100644 index 0000000..1e828b4 --- /dev/null +++ b/src/assets/hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/history.svg b/src/assets/history.svg new file mode 100644 index 0000000..8774fc6 --- /dev/null +++ b/src/assets/history.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/mask.svg b/src/assets/mask.svg new file mode 100644 index 0000000..680ed44 --- /dev/null +++ b/src/assets/mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/mosaic.svg b/src/assets/mosaic.svg new file mode 100644 index 0000000..7b930e7 --- /dev/null +++ b/src/assets/mosaic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/rect.svg b/src/assets/rect.svg new file mode 100644 index 0000000..e87bb5d --- /dev/null +++ b/src/assets/rect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/redo.svg b/src/assets/redo.svg new file mode 100644 index 0000000..6cce263 --- /dev/null +++ b/src/assets/redo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/reset.svg b/src/assets/reset.svg new file mode 100644 index 0000000..15d4981 --- /dev/null +++ b/src/assets/reset.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/rotate.svg b/src/assets/rotate.svg new file mode 100644 index 0000000..497e6f1 --- /dev/null +++ b/src/assets/rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/shrink.svg b/src/assets/shrink.svg new file mode 100644 index 0000000..44af73b --- /dev/null +++ b/src/assets/shrink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/subtract.svg b/src/assets/subtract.svg new file mode 100644 index 0000000..ed9b062 --- /dev/null +++ b/src/assets/subtract.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/text.svg b/src/assets/text.svg new file mode 100644 index 0000000..ebb3823 --- /dev/null +++ b/src/assets/text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/triangle.svg b/src/assets/triangle.svg new file mode 100644 index 0000000..df668de --- /dev/null +++ b/src/assets/triangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/undo.svg b/src/assets/undo.svg new file mode 100644 index 0000000..3b60e19 --- /dev/null +++ b/src/assets/undo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/upload.svg b/src/assets/upload.svg new file mode 100644 index 0000000..92bec0c --- /dev/null +++ b/src/assets/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/zoomIn.svg b/src/assets/zoomIn.svg new file mode 100644 index 0000000..87cbca7 --- /dev/null +++ b/src/assets/zoomIn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/zoomOut.svg b/src/assets/zoomOut.svg new file mode 100644 index 0000000..038669d --- /dev/null +++ b/src/assets/zoomOut.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/element_manager.ts b/src/element_manager.ts new file mode 100644 index 0000000..2042594 --- /dev/null +++ b/src/element_manager.ts @@ -0,0 +1,1661 @@ +import { FabricObject, Point } from "fabric"; +import { CanvasDetailedProps, FabricCanvasProps, FlipXUndoProps, FlipYUndoProps, RotateProps } from "./history"; +import ImageEditor from "./image_editor"; +import { OperatorProps, OperatorType } from "./image_editor_operator"; +import MosaicOperator from "./operator/mosaic_operator"; +import TextOperator from "./operator/text_operator"; +import { getAbsolutePosition } from "./uitls"; + +const COLOR_MAP = { + RED: '#FF0000', + ORANGLE: '#FFA500', + BLUE: '#1A9BFF', + GREEN: '#1AAF19', + BLACK: '#323232', + GREY: '#808080', + WHITE: '#FFFFFF' +} + +const DEFAULT_FUNCTION = () => { } + +export const pxielToNumber = (length: string) => { + if (length == null) { + return 0; + } + length = length.replace('px', ''); + if (length == '') { + return 0; + } + return Number(length); +} + +const toNumber = (str: string) => { + if (str == '') { + str = '0'; + } + return Number(str); +} + +export default class ElementManager { + + public static HAS_CURSOR_CSS_ADDED = false; + + private static COLOR_ACTIVE_FLAG = "color_in_active"; + + private static ACTIVE_SIZE_COLOR = '#1AAD19'; + + private static DEACTIVE_SIZE_COLOR = '#C8C8C8'; + + private imageEditor: ImageEditor | null = null; + + readonly canvasWrapper: HTMLDivElement; + readonly canvas: HTMLCanvasElement; + private fabricWrapperEl: HTMLDivElement | null = null; + private northResizer: HTMLDivElement; + private northWestResizer: HTMLDivElement; + private westResizer: HTMLDivElement; + private southWestResizer: HTMLDivElement; + private southResizer: HTMLDivElement; + private southEastResizer: HTMLDivElement; + private eastResizer: HTMLDivElement; + private northEastResizer: HTMLDivElement; + + private topInResize: boolean = false; + // fw Fabric Wrapper + private topChange = { y: NaN, top: NaN, height: NaN, fwTop: NaN, changeHeight: NaN }; + private topStartFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private topMoveFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private topFinsihFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private leftInResize: boolean = false; + private leftChange = { x: NaN, left: NaN, width: NaN, fwLeft: NaN, changeWidth: NaN }; + private leftStartFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private leftMoveFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private leftFinishFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private bottomInResize: boolean = false; + private bottomChange = { y: NaN, height: NaN, top: NaN, leftRightTop: NaN, changeHeight: NaN }; + private bottomStartFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private bottomMoveFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private bottomFinishFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private rightInResize: boolean = false; + private rightChange = { x: NaN, width: NaN, left: NaN, topBottomLeft: NaN, changeWidth: NaN }; + private rightStartFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private rightMoveFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private rightFinishFunc: (e: MouseEvent) => void = DEFAULT_FUNCTION; + private squareSize: number = NaN; + + readonly wrapper: HTMLDivElement; + + private screenshotCanvas: HTMLCanvasElement; + private screenshotResizer: { + northWest: HTMLDivElement, + north: HTMLDivElement, + northEast: HTMLDivElement, + east: HTMLDivElement, + southEast: HTMLDivElement, + south: HTMLDivElement, + southWest: HTMLDivElement, + west: HTMLDivElement + }; + + private screenshotToolbar: HTMLDivElement; + private screenshotConfirmButton: HTMLDivElement; + private screenshotCancelButton: HTMLDivElement; + + private toolbar: HTMLDivElement; + private rectangleMenu: HTMLDivElement; + private ellipseMenu: HTMLDivElement; + private arrowMenu: HTMLDivElement; + private drawMenu: HTMLDivElement; + private textMenu: HTMLDivElement; + private mosaicMenu: HTMLDivElement; + + private shrinkMenu: HTMLDivElement; + private extendMenu: HTMLDivElement; + + private flipXMenu: HTMLDivElement; + private flipYMenu: HTMLDivElement; + private rotateClockwiseMenu: HTMLDivElement; + private rotateCounterClockwiseMenu: HTMLDivElement; + private cropMenu: HTMLDivElement; + + + private undoMenu: HTMLDivElement; + private redoMenu: HTMLDivElement; + private resetMenu: HTMLDivElement; + private cancelMenu: HTMLDivElement; + private confirmMenu: HTMLDivElement; + private optionBar: HTMLDivElement; + + private small: HTMLSpanElement; + private normal: HTMLSpanElement; + private big: HTMLSpanElement; + + private red: HTMLSpanElement; + private orangle: HTMLSpanElement; + private blue: HTMLSpanElement; + private green: HTMLSpanElement; + private black: HTMLSpanElement; + private white: HTMLSpanElement; + private grey: HTMLSpanElement; + + private sizeOptions: HTMLSpanElement; + private colorOptions: HTMLSpanElement; + private optionArrow: HTMLDivElement; + + private menuMap = new Map(); + private eleColorMap = new Map(); + private colorEleMap = new Map(); + + constructor(options: any) { + + this.wrapper = options.wrapper; + this.canvas = options.canvas; + + this.screenshotCanvas = options.screenshotCanvas; + this.screenshotResizer = options.screenshotResizer; + this.screenshotToolbar = options.screenshotToolbar.toolbar; + this.screenshotConfirmButton = options.screenshotToolbar.screenshot.confirm; + this.screenshotCancelButton = options.screenshotToolbar.screenshot.cancel; + + this.canvasWrapper = options.canvasWrapper; + this.northResizer = options.northResizer; + this.northWestResizer = options.northWestResizer; + this.westResizer = options.westResizer; + this.southWestResizer = options.southWestResizer; + this.southResizer = options.southResizer; + this.southEastResizer = options.southEastResizer; + this.eastResizer = options.eastResizer; + this.northEastResizer = options.northEastResizer; + + this.fixResizerPosition(); + + this.squareSize = this.southResizer.getBoundingClientRect().width; + + this.toolbar = options.toolbar; + + this.rectangleMenu = options.rectangleMenu; + this.menuMap.set(OperatorType.RECT, this.rectangleMenu); + this.ellipseMenu = options.ellipseMenu; + this.menuMap.set(OperatorType.ELLIPSE, this.ellipseMenu); + this.arrowMenu = options.arrowMenu; + this.menuMap.set(OperatorType.ARROW, this.arrowMenu); + this.drawMenu = options.drawMenu; + this.menuMap.set(OperatorType.DRAW, this.drawMenu); + this.textMenu = options.textMenu; + this.menuMap.set(OperatorType.TEXT, this.textMenu); + this.mosaicMenu = options.mosaicMenu; + this.menuMap.set(OperatorType.MOSAIC, this.mosaicMenu); + + this.shrinkMenu = options.shrinkMenu; + this.extendMenu = options.extendMenu; + this.flipXMenu = options.flipXMenu; + this.flipYMenu = options.flipYMenu; + this.rotateClockwiseMenu = options.rotateClockwiseMenu; + this.rotateCounterClockwiseMenu = options.rotateCounterClockwiseMenu; + this.cropMenu = options.cropMenu; + + this.undoMenu = options.undoMenu; + this.redoMenu = options.redoMenu; + this.resetMenu = options.resetMenu; + this.cancelMenu = options.cancelMenu; + this.confirmMenu = options.confirmMenu; + + const ele = this.createOperatorOptionBar(); + this.optionBar = ele.optionBar; + this.small = ele.small; + this.normal = ele.normal; + this.big = ele.big; + this.red = ele.red; + this.orangle = ele.orangle; + this.green = ele.green; + this.blue = ele.blue; + this.black = ele.black; + this.white = ele.white; + this.grey = ele.grey; + + this.sizeOptions = ele.sizeOptions; + this.colorOptions = ele.colorOptions; + this.optionArrow = ele.arrow; + + this.eleColorMap.set(this.red, COLOR_MAP.RED); + this.eleColorMap.set(this.orangle, COLOR_MAP.ORANGLE); + this.eleColorMap.set(this.green, COLOR_MAP.GREEN); + this.eleColorMap.set(this.blue, COLOR_MAP.BLUE); + this.eleColorMap.set(this.black, COLOR_MAP.BLACK); + this.eleColorMap.set(this.white, COLOR_MAP.WHITE); + this.eleColorMap.set(this.grey, COLOR_MAP.GREY); + + this.colorEleMap.set(COLOR_MAP.RED, this.red); + this.colorEleMap.set(COLOR_MAP.ORANGLE, this.orangle); + this.colorEleMap.set(COLOR_MAP.GREEN, this.green); + this.colorEleMap.set(COLOR_MAP.BLUE, this.black); + this.colorEleMap.set(COLOR_MAP.BLACK, this.black); + this.colorEleMap.set(COLOR_MAP.WHITE, this.white); + this.colorEleMap.set(COLOR_MAP.GREY, this.grey); + } + + init(imageEditor: ImageEditor) { + this.imageEditor = imageEditor; + this.fabricWrapperEl = imageEditor.getCanvas().wrapperEl; + this.initResizers(); + this.fixToolbarPosition(); + this.appendHoverCSS(); + } + + appendHoverCSS() { + if (ElementManager.HAS_CURSOR_CSS_ADDED) { + return; + } + const style = document.createElement('style'); + const css = ` + .north-cursor-resize:hover, .south-cursor-resize:hover{ + cursor: ns-resize; + } + + .west-cursor-resize:hover, .east-cursor-resize:hover{ + cursor: ew-resize; + } + + .north-east-cursor-resize:hover, .south-west-cursor-resize:hover{ + cursor: nesw-resize; + } + + .north-west-cursor-resize:hover, .south-east-cursor-resize:hover{ + cursor: nwse-resize; + } + ` + style.appendChild(document.createTextNode(css)); + document.head.appendChild(style); + ElementManager.HAS_CURSOR_CSS_ADDED = true; + + this.northResizer.classList.add('north-cursor-resize'); + this.westResizer.classList.add('west-cursor-resize'); + this.southResizer.classList.add('south-cursor-resize'); + this.eastResizer.classList.add('east-cursor-resize'); + + this.screenshotResizer.north.classList.add('north-cursor-resize'); + this.screenshotResizer.northWest.classList.add('north-west-cursor-resize'); + this.screenshotResizer.west.classList.add('west-cursor-resize'); + this.screenshotResizer.southWest.classList.add('south-west-cursor-resize'); + this.screenshotResizer.south.classList.add('south-cursor-resize'); + this.screenshotResizer.southEast.classList.add('south-east-cursor-resize'); + this.screenshotResizer.east.classList.add('east-cursor-resize'); + this.screenshotResizer.northEast.classList.add('north-east-cursor-resize'); + } + + createOperatorOptionBar() { + const wrapper = document.createElement("div"); + // 默认隐藏 + wrapper.style.display = 'none'; + wrapper.style.backgroundColor = 'white'; + wrapper.style.position = 'absolute'; + wrapper.style.borderRadius = '4px'; + // 解决行高预留空白问题 + wrapper.style.fontSize = '0'; + const sizeOptions = document.createElement("span"); + const colorOptions = document.createElement("span"); + sizeOptions.style.display = 'inline-block'; + colorOptions.style.display = 'inline-block'; + wrapper.append(sizeOptions); + wrapper.append(colorOptions); + const small = document.createElement("span"); + small.style.width = '8px'; + small.style.height = '8px'; + small.style.margin = '16px 0 16px 16px'; + small.style.backgroundColor = ElementManager.DEACTIVE_SIZE_COLOR; + small.style.display = 'inline-block'; + small.style.borderRadius = '50%'; + const normal = document.createElement("span"); + normal.style.width = '12px'; + normal.style.height = '12px'; + normal.style.margin = '14px 0 14px 14px'; + normal.style.backgroundColor = ElementManager.DEACTIVE_SIZE_COLOR; + normal.style.display = 'inline-block'; + normal.style.borderRadius = '50%'; + const big = document.createElement("span"); + big.style.width = '16px'; + big.style.height = '16px'; + big.style.margin = '12px 16px 12px 14px'; + big.style.backgroundColor = ElementManager.DEACTIVE_SIZE_COLOR; + big.style.display = 'inline-block'; + big.style.borderRadius = '50%'; + sizeOptions.append(small); + small.classList.add('online-image-editor-operator-option'); + sizeOptions.append(normal); + normal.classList.add('online-image-editor-operator-option'); + sizeOptions.append(big); + big.classList.add('online-image-editor-operator-option'); + + const red = document.createElement("span"); + red.style.backgroundColor = COLOR_MAP.RED; + const orangle = document.createElement("span"); + orangle.style.backgroundColor = COLOR_MAP.ORANGLE; + const blue = document.createElement("span"); + blue.style.backgroundColor = COLOR_MAP.BLUE; + const green = document.createElement("span"); + green.style.backgroundColor = COLOR_MAP.GREEN; + const black = document.createElement("span"); + black.style.backgroundColor = COLOR_MAP.BLACK; + const white = document.createElement("span"); + white.style.backgroundColor = COLOR_MAP.WHITE; + const grey = document.createElement("span"); + grey.style.backgroundColor = COLOR_MAP.GREY; + colorOptions.append(red); + colorOptions.append(orangle); + colorOptions.append(blue); + colorOptions.append(green); + colorOptions.append(black); + colorOptions.append(white); + colorOptions.append(grey); + const colors = [red, orangle, blue, green, black, white, grey]; + + for (const color of colors) { + const style = color.style; + style.display = 'inline-block'; + style.width = '20px'; + style.height = '20px'; + style.margin = '10px 0 10px 8px'; + style.boxSizing = 'border-box'; + color.classList.add('online-image-editor-operator-option'); + } + + red.style.margin = '10px 0 10px 0'; + grey.style.marginRight = '8px'; + white.style.border = 'solid 1px #E6E6E6'; + white.style.boxSizing = 'border-box'; + + const arrowWrapper = document.createElement('div'); + const arrow = document.createElement('div'); + arrow.style.position = 'absolute'; + arrow.style.left = '142px'; + arrow.style.top = '-8px'; + arrow.style.borderTopWidth = '0'; + arrow.classList.add('online-image-editor-operator-option-arrow'); + arrowWrapper.append(arrow); + wrapper.append(arrowWrapper); + + const style = document.createElement('style'); + const css = ` + .online-image-editor-operator-option:hover{ + cursor: pointer; + } + + .online-image-editor-operator-option-arrow:after{ + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 8px; + content: ""; + top:1px; + margin-left:-8px; + border-top-width:0; + border-bottom-color: #FFF; + } + ` + style.appendChild(document.createTextNode(css)); + document.head.appendChild(style); + document.body.append(wrapper); + return { + optionBar: wrapper, + small, normal, big, red, orangle, green, blue, black, white, grey, + sizeOptions, colorOptions, arrow + }; + } + + bindEvents() { + + const imageEditor = this.imageEditor!; + + this.rectangleMenu.onclick = () => { this.switchOperator(OperatorType.RECT) }; + this.ellipseMenu.onclick = () => { this.switchOperator(OperatorType.ELLIPSE) }; + this.arrowMenu.onclick = () => { this.switchOperator(OperatorType.ARROW) }; + this.drawMenu.onclick = () => { this.switchOperator(OperatorType.DRAW) }; + this.mosaicMenu.onclick = () => { this.switchOperator(OperatorType.MOSAIC) }; + this.textMenu.onclick = () => { this.switchOperator(OperatorType.TEXT) }; + + this.shrinkMenu.onclick = () => { this.shrinkCanvasToBackgroundImage(); } + this.extendMenu.onclick = () => { this.extendsCanvas(); } + + this.flipXMenu.onclick = () => { this.flipHorizontal(); } + this.flipYMenu.onclick = () => { this.flipVertical(); } + this.rotateClockwiseMenu.onclick = () => { this.rotateClockwise(); } + this.rotateCounterClockwiseMenu.onclick = () => { this.rotateCounterClockwise(); } + this.cropMenu.onclick = () => { this.cropImage(); } + + this.undoMenu.onclick = () => { imageEditor.getHistory().undo(); } + this.redoMenu.onclick = () => { imageEditor.getHistory().redo(); } + + this.resetMenu.onclick = () => { this.resetImageEditor(); } + + this.confirmMenu.onclick = () => { this.downloadAreaImage(); } + } + + + + switchOperator(type: OperatorType) { + const imageEditor = this.imageEditor!; + const previous = imageEditor.getOperatorType(); + if (imageEditor.getOperatorType() == type) { + imageEditor.changeOperatorType(OperatorType.NONE); + } else { + imageEditor.changeOperatorType(type); + } + const current = imageEditor.getOperatorType(); + if (previous != OperatorType.NONE) { + const preEle = this.menuMap.get(previous); + preEle.style.backgroundColor = 'transparent'; + this.hideOptionBar(); + } + if (current != OperatorType.NONE) { + const currEle = this.menuMap.get(current); + currEle.style.backgroundColor = '#FFF'; + this.showOptionBar(currEle); + } + } + + hideOptionBar() { + this.optionBar.style.display = 'none'; + } + + showOptionBarDirect() { + this.optionBar.style.display = 'inline-block'; + } + + showOptionBar(currEle: HTMLDivElement) { + const imageEditor = this.imageEditor!; + this.adjustOptionBarPosition(currEle) + const operator = imageEditor.getActiveOperator(); + // 马赛克不显示颜色选项 + const isMosaic = operator instanceof MosaicOperator; + if (!isMosaic) { + this.showFullOptions(); + const that = this; + const color = operator.getOperatorColor(); + const eles = this.eleColorMap.keys(); + for (const ele of eles) { + const eleColor = this.eleColorMap.get(ele); + if (eleColor == color) { + this.activeColor(ele); + } else { + this.deactiveColor(ele); + } + } + + this.red.onclick = () => { that.changeColor(operator, COLOR_MAP.RED, that.red) }; + this.orangle.onclick = () => { that.changeColor(operator, COLOR_MAP.ORANGLE, that.orangle) }; + this.green.onclick = () => { that.changeColor(operator, COLOR_MAP.GREEN, that.green) }; + this.blue.onclick = () => { that.changeColor(operator, COLOR_MAP.BLUE, that.blue) }; + this.black.onclick = () => { that.changeColor(operator, COLOR_MAP.BLACK, that.black) }; + this.white.onclick = () => { that.changeColor(operator, COLOR_MAP.WHITE, that.white) }; + this.grey.onclick = () => { that.changeColor(operator, COLOR_MAP.GREY, that.grey) }; + } else { + this.showSizeOptions(); + } + + let s = 2, n = 4, b = 6; + if (operator instanceof MosaicOperator) { + s = 10, n = 20, b = 40; + } else if (operator instanceof TextOperator) { + s = 15, n = 20, b = 25; + } + const size = operator.getOperatorSize(); + switch (size) { + case s: this.selectSize(this.small); break; + case n: this.selectSize(this.normal); break; + case b: this.selectSize(this.big); break; + } + const that = this; + this.small.onclick = () => { operator.setOperatorSize(s); that.selectSize(that.small); } + this.normal.onclick = () => { operator.setOperatorSize(n); that.selectSize(that.normal); } + this.big.onclick = () => { operator.setOperatorSize(b); that.selectSize(that.big); } + } + + showSizeOptions() { + const isColorVisiable = this.imageEditor!.getOperatorType() != OperatorType.MOSAIC; + if (!isColorVisiable) { + this.colorOptions.style.display = 'none'; + // 196 / 2,196是整个颜色区域的宽度,去除之后,大小选择框,要向右移动这么多 + let left = Number(this.optionBar.style.left.replace('px', '')); + left = left + (196) / 2; + let width = this.optionBar.getBoundingClientRect().width; + this.optionBar.style.left = left + 'px'; + const arrowLeft = width / 2; + this.optionArrow.style.left = arrowLeft + 'px'; + } + } + showFullOptions() { + const isColorVisiable = this.colorOptions.style.display == 'inline-block'; + if (!isColorVisiable) { + this.colorOptions.style.display = 'inline-block'; + let arrowLeft = Number(this.optionArrow.style.left.replace('px', '')); + arrowLeft = arrowLeft + 168 / 2; + this.optionArrow.style.left = arrowLeft + 'px'; + } + } + + changeColor(operator: OperatorProps, color: string, ele: HTMLSpanElement) { + operator.setOperatorColor(color); + const colors = [this.red, this.orangle, this.green, this.blue, this.black, this.white, this.grey]; + for (const color of colors) { + if (color == ele) { + this.activeColor(color); + } else { + this.deactiveColor(color); + } + } + } + + activeColor(ele: HTMLSpanElement) { + ele.setAttribute(ElementManager.COLOR_ACTIVE_FLAG, 'true'); + if (ele != this.white) { + ele.style.border = '6px solid ' + this.eleColorMap.get(ele); + ele.style.backgroundColor = 'white'; + } else { + ele.style.border = '6px solid #E6E6E6'; + ele.style.backgroundColor = 'white'; + } + } + + deactiveColor(ele: HTMLSpanElement) { + if (ele.getAttribute(ElementManager.COLOR_ACTIVE_FLAG)) { + if (ele != this.white) { + ele.style.border = '0'; + ele.style.backgroundColor = this.eleColorMap.get(ele); + } else { + ele.style.border = 'solid 1px #E6E6E6'; + ele.style.backgroundColor = 'white'; + } + ele.removeAttribute(ElementManager.COLOR_ACTIVE_FLAG); + } + } + + selectSize(ele: HTMLSpanElement) { + const sizes = [this.small, this.normal, this.big]; + for (const size of sizes) { + if (ele == size) { + this.activeSize(size); + } else { + this.deactiveSize(size); + } + } + } + + activeSize(ele: HTMLSpanElement) { + ele.style.backgroundColor = ElementManager.ACTIVE_SIZE_COLOR; + } + + deactiveSize(ele: HTMLSpanElement) { + ele.style.backgroundColor = ElementManager.DEACTIVE_SIZE_COLOR; + } + + hideToolbar() { + this.toolbar.style.display = 'none'; + this.hideOptionBar(); + } + + showToolbar() { + this.toolbar.style.display = 'block'; + const optType = this.imageEditor!.getOperatorType(); + // 对于要显示的toolbar,直接显示 + if (optType != OperatorType.NONE) { + this.showOptionBarDirect(); + } + this.fixToolbarPosition(); + } + + initResizers() { + + const that = this; + + /********************** 开始处理头部的拉伸箭头 *****************/ + this.northResizer.removeEventListener('mousedown', this.topStartFunc) + window.removeEventListener('mousemove', this.topMoveFunc); + window.removeEventListener('mouseup', this.topFinsihFunc); + + this.topStartFunc = (event: MouseEvent) => { + that.topInResize = true; + let fwTop = this.fabricWrapperEl!.style.top.replace('px', ''); + if (fwTop == '') { + fwTop = '0'; + } + const top = this.canvasWrapper.style.top.replace('px', ''); + const height = this.canvasWrapper.style.height.replace('px', ''); + that.topChange.y = event.pageY; + that.topChange.top = Number(top); + that.topChange.height = Number(height); + that.topChange.fwTop = Number(fwTop); + that.topChange.changeHeight = 0; + const body = document.querySelector('body'); + body!.style.cursor = 'n-resize' + that.hideToolbar(); + } + + this.topMoveFunc = (event: MouseEvent) => { + if (!that.topInResize) return; + that.changeHeightFromTop(event.pageY); + } + this.topFinsihFunc = (_event: MouseEvent) => { + if (!that.topInResize) { + return; + } + that.finishResize(); + that.showToolbar(); + } + + this.northResizer.addEventListener('mousedown', this.topStartFunc) + window.addEventListener('mousemove', this.topMoveFunc); + window.addEventListener('mouseup', this.topFinsihFunc); + + /********************** 开始处理左侧的拉伸箭头 *****************/ + this.westResizer.removeEventListener('mousedown', this.leftStartFunc) + window.removeEventListener('mousemove', this.leftMoveFunc); + window.removeEventListener('mouseup', this.leftFinishFunc); + + this.leftStartFunc = (event: MouseEvent) => { + that.leftInResize = true; + let fwLeft = this.fabricWrapperEl!.style.left.replace('px', ''); + if (fwLeft == '') { + fwLeft = '0'; + } + let left = this.canvasWrapper.style.left.replace('px', ''); + const width = this.canvasWrapper.style.width.replace('px', '') + that.leftChange.x = event.pageX; + that.leftChange.left = Number(left); + that.leftChange.width = Number(width); + that.leftChange.fwLeft = Number(fwLeft); + that.leftChange.changeWidth = 0; + const body = document.querySelector('body'); + body!.style.cursor = 'w-resize' + that.hideToolbar(); + } + + this.leftMoveFunc = (event: MouseEvent) => { + if (!that.leftInResize) return; + that.changeHeightFromLeft(event.pageX); + } + this.leftFinishFunc = (_event: MouseEvent) => { + if (!that.leftInResize) return; + that.finishResize(); + that.showToolbar(); + } + + this.westResizer.addEventListener('mousedown', this.leftStartFunc) + window.addEventListener('mousemove', this.leftMoveFunc); + window.addEventListener('mouseup', this.leftFinishFunc); + + /********************** 开始处理底部的拉伸箭头 *****************/ + + this.southResizer.removeEventListener('mousedown', this.bottomStartFunc) + window.removeEventListener('mousemove', this.bottomMoveFunc); + window.removeEventListener('mouseup', this.bottomFinishFunc); + + this.bottomStartFunc = (event: MouseEvent) => { + that.bottomInResize = true; + const height = this.canvasWrapper.style.height.replace('px', ''); + const top = this.southResizer.style.top.replace('px', ''); + const leftRightTop = this.westResizer.style.top.replace('px', ''); + that.bottomChange.height = Number(height); + that.bottomChange.y = event.pageY; + that.bottomChange.top = Number(top); + that.bottomChange.leftRightTop = Number(leftRightTop); + that.bottomChange.changeHeight = 0; + const body = document.querySelector('body'); + body!.style.cursor = 's-resize' + that.hideToolbar(); + } + + this.bottomMoveFunc = (event: MouseEvent) => { + if (!that.bottomInResize) return; + that.changeHeightFromBottom(event.pageY); + } + this.bottomFinishFunc = (_event: MouseEvent) => { + if (!that.bottomInResize) return; + that.finishResize(); + that.showToolbar(); + } + + this.southResizer.addEventListener('mousedown', this.bottomStartFunc) + window.addEventListener('mousemove', this.bottomMoveFunc); + window.addEventListener('mouseup', this.bottomFinishFunc); + + /********************** 开始处理右侧的拉伸箭头 *****************/ + + this.southResizer.removeEventListener('mousedown', this.rightStartFunc) + window.removeEventListener('mousemove', this.rightMoveFunc); + window.removeEventListener('mouseup', this.rightFinishFunc); + + this.rightStartFunc = (event: MouseEvent) => { + that.rightInResize = true; + const width = this.canvasWrapper.style.width.replace('px', ''); + const left = this.eastResizer.style.left.replace('px', ''); + const topBottomLeft = this.northResizer.style.left.replace('px', ''); + that.rightChange.width = Number(width) + that.rightChange.x = event.pageX; + that.rightChange.left = Number(left); + that.rightChange.topBottomLeft = Number(topBottomLeft); + that.rightChange.changeWidth = 0; + const body = document.querySelector('body'); + body!.style.cursor = 'e-resize' + that.hideToolbar(); + } + + this.rightMoveFunc = (event: MouseEvent) => { + if (!that.rightInResize) return; + that.changeWidthFromRight(event.pageX); + } + this.rightFinishFunc = (_event: MouseEvent) => { + if (!that.rightInResize) return; + that.finishResize(); + that.showToolbar(); + } + + this.eastResizer.addEventListener('mousedown', this.rightStartFunc) + window.addEventListener('mousemove', this.rightMoveFunc); + window.addEventListener('mouseup', this.rightFinishFunc); + + /********************** 拉伸箭头的部分处理结束 *****************/ + } + + changeHeightFromLeft(pageX: number) { + const currentX = this.leftChange.x; + const oldLeft = this.leftChange.left; + const oldWidth = this.leftChange.width; + + // 用当前Y值,减去开始的Y值,得到的一段长度是top增加的值,和高度减少的值 + let changedWidth = pageX - currentX; + let newWidth = oldWidth - changedWidth; + + if (newWidth < 80) { + newWidth = 80; + changedWidth = oldWidth - newWidth; + } + + const newLeft = Number(oldLeft) + changedWidth; + const newFwLeft = this.leftChange.fwLeft - changedWidth; + + this.canvasWrapper.style.width = newWidth + 'px'; + this.canvasWrapper.style.left = newLeft + 'px'; + this.westResizer.style.left = (newLeft - this.squareSize) + 'px'; + this.fabricWrapperEl!.style.left = newFwLeft + 'px'; + this.leftChange.changeWidth = changedWidth; + this.fixResizerPosition(); + } + + changeHeightFromTop(pageY: number) { + const currentY = this.topChange.y; + const oldTop = this.topChange.top; + const oldHeight = this.topChange.height; + + // 用当前Y值,减去开始的Y值,得到的一段长度是top增加的值,和高度减少的值 + let changedHeight = pageY - currentY; + let newHeight = oldHeight - changedHeight; + if (newHeight < 80) { + newHeight = 80; + changedHeight = oldHeight - newHeight; + } + + const newTop = Number(oldTop) + changedHeight; + const newFwTop = this.topChange.fwTop - changedHeight; + + this.canvasWrapper.style.height = newHeight + 'px'; + this.canvasWrapper.style.top = newTop + 'px'; + this.northResizer.style.top = (newTop - this.squareSize) + 'px'; + this.fabricWrapperEl!.style.top = (newFwTop) + 'px'; + this.topChange.changeHeight = changedHeight; + + this.fixResizerPosition(); + } + + changeHeightFromBottom(pageY: number) { + const currentY = this.bottomChange.y; + const oldHeight = this.bottomChange.height; + let changedHeight = pageY - currentY; + let newHeight = oldHeight + changedHeight; + // 给个最小值 + if (newHeight < 80) { + newHeight = 80; + changedHeight = newHeight - oldHeight; + } + this.canvasWrapper.style.height = newHeight + 'px'; + this.bottomChange.changeHeight = changedHeight; + this.fixResizerPosition(); + } + + changeWidthFromRight(pageX: number) { + const currentY = this.rightChange.x; + const oldWidth = this.rightChange.width; + let changedWidth = pageX - currentY; + let newWidth = Number(oldWidth) + changedWidth; + if (newWidth < 80) { + newWidth = 80; + changedWidth = newWidth - oldWidth; + } + const newLeft = this.rightChange.left + changedWidth; + this.canvasWrapper.style.width = newWidth + 'px'; + this.eastResizer.style.left = newLeft + 'px'; + // bottom和top也要跟着同步改变 + this.northResizer.style.left = this.rightChange.topBottomLeft + (changedWidth / 2) + 'px'; + this.southResizer.style.left = this.rightChange.topBottomLeft + (changedWidth / 2) + 'px'; + this.rightChange.changeWidth = changedWidth; + + this.fixResizerPosition(); + } + + finishResize() { + const body = document.querySelector('body'); + body!.style.cursor = 'default' + if (this.topInResize) { + this.topInResize = false; + this.expandTopToBaseMap(); + } + if (this.bottomInResize) { + this.bottomInResize = false; + this.expandBottomToBaseMap(); + } + if (this.leftInResize) { + this.leftInResize = false; + this.expandLeftToBaseMap(); + } + if (this.rightInResize) { + this.rightInResize = false; + this.expandRightToBaseMap(); + } + } + + expandTopToBaseMap() { + let fabricTopStr = this.fabricWrapperEl?.style.top.replace('px', ''); + let fabricHeightStr = this.fabricWrapperEl?.style.height.replace('px', ''); + if (fabricTopStr == '') { + fabricTopStr = '0'; + } + const fabricTop = Number(fabricTopStr); + const fabricHeight = Number(fabricHeightStr); + // 小于0不用考虑,大于0要考虑,将大于0部分的宽度扩展出来 + if (fabricTop > 0) { + this.fabricWrapperEl!.style.top = '0'; + const newHeight = fabricHeight + fabricTop; + this.imageEditor!.setCanvasHeight(newHeight); + this.imageEditor!.transformY(fabricTop); + } + } + + expandLeftToBaseMap() { + let fabricLeftStr = this.fabricWrapperEl?.style.left.replace('px', ''); + let fabricWidthStr = this.fabricWrapperEl?.style.width.replace('px', ''); + if (fabricLeftStr == '') { + fabricLeftStr = '0'; + } + const fabricLeft = Number(fabricLeftStr); + const fabricWidth = Number(fabricWidthStr); + // 小于0不用考虑,大于0要考虑,将大于0部分的宽度扩展出来 + if (fabricLeft > 0) { + this.fabricWrapperEl!.style.left = '0'; + const newWidth = fabricWidth + fabricLeft; + this.imageEditor!.setCanvasWidth(newWidth); + this.imageEditor!.transformX(fabricLeft); + } + } + + expandBottomToBaseMap() { + let fabricTopStr = this.fabricWrapperEl?.style.top.replace('px', ''); + if (fabricTopStr == '') { + fabricTopStr = '0' + } + const fabricTop = Number(fabricTopStr); + const fabricHeightStr = this.fabricWrapperEl?.style.height.replace('px', ''); + const fabircHeight = Number(fabricHeightStr); + const heightExcludeLeftTop = fabircHeight + fabricTop; + const wrapperHeightStr = this.canvasWrapper.style.height.replace('px', ''); + const wrapperHeight = Number(wrapperHeightStr); + let newHeight = fabircHeight; + if (heightExcludeLeftTop < wrapperHeight) { + const diffHeight = wrapperHeight - heightExcludeLeftTop; + newHeight = fabircHeight + diffHeight; + } + this.imageEditor?.setCanvasHeight(newHeight); + } + + expandRightToBaseMap() { + let fabricLeftStr = this.fabricWrapperEl?.style.left.replace('px', ''); + if (fabricLeftStr == '') { + fabricLeftStr = '0'; + } + const fabricLeft = Number(fabricLeftStr); + const fabricWidthStr = this.fabricWrapperEl?.style.width.replace('px', ''); + // 可以肯定的是Top和left必然是小于0的,大于0的直接扩展了 + const fabricWidth = Number(fabricWidthStr); + // 这里的可见范围不是全部的可见范围,不包括因为left、top是负数而被隐藏的那一部分 + // 但是包括右边和下边被隐藏的部分 + const widthExcludeLeftTop = fabricWidth + fabricLeft; + const wrapperWidthStr = this.canvasWrapper.style.width.replace('px', ''); + const wrapperWidth = Number(wrapperWidthStr); + // 如果wrapper大于可见区域,那么要计算差值,然后在canvas上加上这个差值 + let newWidth = fabricWidth; + if (widthExcludeLeftTop < wrapperWidth) { + const diffWidth = wrapperWidth - widthExcludeLeftTop; + newWidth = fabricWidth + diffWidth; + } + this.imageEditor?.setCanvasWidth(newWidth) + } + + // 四周如果有白板,就把白板都缩了,其它的不同,相当于只动画板,不动画布 + shrinkCanvasToBackgroundImage() { + const canvas = this.imageEditor!.getCanvas(); + const image = canvas.backgroundImage!; + const point = image.getXY(); + + const { visiableHeight, visiableWidth, left, top } = this.getCanvasAreaInfo(); + const shrinkRight = point.x + image.width - left < visiableWidth; + const shrinkBottom = point.y + image.height - top < visiableHeight; + + const cutWrapperLeft = point.x > left ? point.x - left : 0; + const cutWrapperTop = point.y > top ? point.y - top : 0; + + const cutWrapperRight = shrinkRight ? visiableWidth - (point.x + image.width - left) : 0; + const cutWrapperBottom = shrinkBottom ? visiableHeight - (point.y + image.height - top) : 0; + + const wrapperWidth = pxielToNumber(this.canvasWrapper.style.width) + const wrapperHeight = pxielToNumber(this.canvasWrapper.style.height) + const wrapperTop = pxielToNumber(this.canvasWrapper.style.top) + const wrapperLeft = pxielToNumber(this.canvasWrapper.style.left) + + this.canvasWrapper.style.width = wrapperWidth - cutWrapperRight - cutWrapperLeft + 'px'; + this.canvasWrapper.style.height = wrapperHeight - cutWrapperBottom - cutWrapperTop + 'px'; + + // 视口向下移动的时候,画板不要动,也就是说画板left、top要相应的变化 + this.canvasWrapper.style.top = wrapperTop + cutWrapperTop + 'px'; + this.canvasWrapper.style.left = wrapperLeft + cutWrapperLeft + 'px'; + this.fabricWrapperEl!.style.top = -top - cutWrapperTop + 'px'; + this.fabricWrapperEl!.style.left = -left - cutWrapperLeft + 'px'; + + this.fixComponentsPosition(); + } + + // 如果图片没有显示全,那么先显示全图片 + extendsCanvas() { + + const canvas = this.imageEditor!.getCanvas(); + const image = canvas.backgroundImage!; + + const point = image.getXY(); + const { visiableHeight, visiableWidth, left, top, canvasHeight, canvasWidth } = this.getCanvasAreaInfo(); + + const topExtend = point.y - top; + const leftExtend = point.x - left; + const bottomExtend = visiableHeight - (point.y + image.height - top); + const rightExtend = visiableWidth - (point.x + image.width - left); + + const wrapperWidth = pxielToNumber(this.canvasWrapper.style.width) + const wrapperHeight = pxielToNumber(this.canvasWrapper.style.height) + const wrapperTop = pxielToNumber(this.canvasWrapper.style.top) + const wrapperLeft = pxielToNumber(this.canvasWrapper.style.left) + + let maxXExtend = Math.max(leftExtend, rightExtend); + let maxYExtend = Math.max(topExtend, bottomExtend); + let minXExtend = Math.min(leftExtend, rightExtend); + let minYExtend = Math.min(topExtend, bottomExtend); + + let xExtend = 0, yExtend = 0; + if (maxXExtend >= 0 && maxXExtend !== minXExtend) { + xExtend = maxXExtend; + } else if (maxXExtend >= 0 && maxXExtend === minXExtend) { + xExtend = maxXExtend + Math.round(image.width * 0.2); + } + + if (maxYExtend >= 0 && maxYExtend !== minYExtend) { + yExtend = maxYExtend; + } else if (maxYExtend >= 0 && maxYExtend === minYExtend) { + yExtend = maxYExtend + Math.round(image.height * 0.15); + } + + + const extendLeft = xExtend - leftExtend; + const extendRight = xExtend - rightExtend; + const extendTop = yExtend - topExtend; + const extendBottom = yExtend - bottomExtend; + + const newWrapperHeight = wrapperHeight + extendBottom + extendTop; + const newWrapperWidth = wrapperWidth + extendLeft + extendRight; + + this.canvasWrapper.style.width = newWrapperWidth + 'px'; + this.canvasWrapper.style.height = newWrapperHeight + 'px'; + + this.canvasWrapper.style.top = wrapperTop - extendTop + 'px'; + this.canvasWrapper.style.left = wrapperLeft - extendLeft + 'px'; + + let newLeft = 0, newTop = 0; + // 如果只是扩展现有的 + if (extendLeft < left) { + newLeft = extendLeft - left; + this.fabricWrapperEl!.style.left = newLeft + 'px'; + } else if (extendLeft >= left) { + const newExtend = extendLeft - left; + this.fabricWrapperEl!.style.left = '0' + this.imageEditor!.transformX(newExtend); + } + + if (extendTop < top) { + newTop = extendTop - top; + this.fabricWrapperEl!.style.top = newTop + 'px'; + } else if (extendTop >= top) { + const newExtend = extendTop - top; + this.fabricWrapperEl!.style.top = '0' + this.imageEditor!.transformY(newExtend); + } + + const extendWidth = newWrapperWidth - (canvasWidth - left); + const extendHeight = newWrapperHeight - (canvasHeight - top); + + const newCanvasWidth = extendWidth > 0 ? canvasWidth + extendWidth : canvasWidth; + const newCanvasHeight = extendHeight > 0 ? canvasHeight + extendHeight : canvasHeight + + this.imageEditor!.setCanvasDims(newCanvasWidth, newCanvasHeight); + + this.fixComponentsPosition(); + } + + flipHorizontal() { + // 左右翻转时,上下是不要动的,然后左侧多余的部分移动到右侧,右侧多余的部分移动到左侧 + const { right, canvasWidth } = this.getCanvasAreaInfo(); + + const previous = new FlipXUndoProps(); + const current = new FlipXUndoProps(); + previous.fabricWrapperEl = this.fabricWrapperEl!; + current.fabricWrapperEl = this.fabricWrapperEl!; + + previous.left = this.fabricWrapperEl!.style.left; + // 内容翻转,左偏移变右偏移 + this.fabricWrapperEl!.style.left = -right + 'px'; + current.left = this.fabricWrapperEl!.style.left; + + const canvas = this.imageEditor?.getCanvas()!; + // 翻转状态换一下 + const backgroundImage = canvas.backgroundImage!; + current.backgroundImage = previous.backgroundImage = backgroundImage; + + const flipX = backgroundImage!.flipX; + previous.flipX = flipX; + backgroundImage!.flipX = !flipX; + current.flipX = backgroundImage!.flipX; + + // 左右偏移互换一下 + const x = backgroundImage.getX(); + const biWidth = backgroundImage.width; + const newX = canvasWidth - biWidth - x; + backgroundImage.setX(newX); + previous.x = x; + current.x = newX; + + const objs = canvas.getObjects() ?? []; + for (const obj of objs) { + previous.objs.push(obj); + current.objs.push(obj); + + const objFlipX = obj.flipX; + previous.objFlipX.push(objFlipX); + + const x = obj.getX() + previous.objX.push(x); + + const width = obj.width; + const nx = canvasWidth - width - x; + obj.flipX = !objFlipX; + obj.setX(nx); + + current.objFlipX.push(obj.flipX); + current.objX.push(nx); + canvas.setActiveObject(obj); + } + + canvas.renderAll(); + this.imageEditor!.getHistory().recordFlipXAction(previous, current); + } + + flipVertical() { + // 上下翻转时,左右是不要动的,然后上侧多余的部分移动到下侧,下侧多余的部分移动到上侧 + const { bottom, canvasHeight } = this.getCanvasAreaInfo(); + + const previous = new FlipYUndoProps(); + const current = new FlipYUndoProps(); + previous.fabricWrapperEl = this.fabricWrapperEl!; + current.fabricWrapperEl = this.fabricWrapperEl!; + + // 内容翻转,下偏移变上偏移 + previous.top = this.fabricWrapperEl!.style.top; + this.fabricWrapperEl!.style.top = -bottom + 'px'; + current.top = this.fabricWrapperEl!.style.top; + + const canvas = this.imageEditor?.getCanvas()!; + // 翻转状态换一下 + const backgroundImage = canvas.backgroundImage!; + current.backgroundImage = previous.backgroundImage = backgroundImage; + + const flipY = backgroundImage!.flipY; + previous.flipY = flipY; + backgroundImage!.flipY = !flipY; + current.flipY = backgroundImage!.flipY; + + // 上下偏移互换一下 + const y = backgroundImage.getY(); + const biHeight = backgroundImage.height; + const newY = canvasHeight - biHeight - y; + backgroundImage.setY(newY); + previous.y = y; + current.y = newY; + + const objs = canvas.getObjects() ?? []; + for (const obj of objs) { + previous.objs.push(obj); + current.objs.push(obj); + + const objFlipY = obj.flipY; + previous.objFlipY.push(objFlipY); + + const y = obj.getY() + previous.objY.push(y); + + const height = obj.height; + const ny = canvasHeight - height - y; + obj.flipY = !objFlipY; + obj.setY(ny); + + current.objFlipY.push(obj.flipY); + current.objY.push(ny); + canvas.setActiveObject(obj); + } + + canvas.renderAll(); + this.imageEditor!.getHistory().recordFlipYAction(previous, current); + } + + // 顺时针旋转90度 + rotateClockwise() { + + const previous = new RotateProps(); + const current = new RotateProps(); + previous.canvasWrapper = current.canvasWrapper = this.canvasWrapper; + previous.fabricWrapperEl = current.fabricWrapperEl = this.fabricWrapperEl!; + previous.imageEditor = current.imageEditor = this.imageEditor!; + + const canvasArea = this.getCanvasAreaInfo(); + const { left, bottom } = canvasArea; + const { canvasWidth, canvasHeight } = canvasArea; + const { visiableHeight, visiableWidth } = canvasArea; + const canvas = this.imageEditor!.getCanvas()!; + + previous.canvasHeight = canvasHeight; previous.canvasWidth = canvasWidth; + // 顺时针旋转90度的时候,长高要做一个互换 + this.imageEditor!.setCanvasDims(canvasHeight, canvasWidth); + current.canvasHeight = canvasWidth; current.canvasWidth = canvasHeight; + + const fwStyle = this.fabricWrapperEl!.style; + previous.left = fwStyle.left; + previous.top = fwStyle.top; + fwStyle.left = (-1) * bottom + 'px'; + fwStyle.top = (-1) * left + 'px'; + current.left = fwStyle.left; + current.top = fwStyle.top; + + // 可见区域也要一同进行变换 + previous.width = this.canvasWrapper.style.width; + previous.height = this.canvasWrapper.style.height; + + this.canvasWrapper.style.width = visiableHeight + 'px'; + this.canvasWrapper.style.height = visiableWidth + 'px'; + + current.width = this.canvasWrapper.style.width; + current.height = this.canvasWrapper.style.height; + + const image = canvas.backgroundImage! + const objs = canvas.getObjects() as FabricObject[] ?? []; + objs.unshift(image); + + // 还要考虑自带旋转度数的对象 + const oriAngle = image.angle; + for (const obj of objs) { + const { x, y } = obj.getXY(); + // 旋转时是按照左上角的顶点进行旋转的 + // 所以要注意到左上角的位置 + let newX, newY; + // 旋转90度的时候,left变成top(y),bottom变成left(x) + if (oriAngle == 0) { + newY = x; + // 底部的长度是canvas的长度减去top,减去图片高度 + const imgBottom = canvasHeight - y - obj.height; + // 按照左上角旋转过后,左上角的顶点去了右上角因此还要向右移动一个宽度的位置 + newX = imgBottom + obj.height; + } else if (oriAngle == 90) { + // 旋转时,依旧是left(x)变为top(y),bottom变成left(x) + // 但是由于现在已经旋转了,定位的顶点在右上角,所以实际left值要减去一个图片的宽度 + const imgLeft = x - obj.height; + // 实际的bottom值依旧是画板高度减去y值减去底图高度 + const imgBottom = canvasHeight - y - obj.width; + + // 但是因为旋转了180度,所以要向右平移一个宽度,向下平移一个高度 + newX = imgBottom + obj.width; + newY = imgLeft + obj.height; + + } else if (oriAngle == 180) { + // 同上 + const imgLeft = x - obj.width; + const imgBottom = canvasHeight - y; + newX = imgBottom; + newY = imgLeft + obj.width; + } else if (oriAngle == 270) { + // 同上 + const imgLeft = x; + const imgBottom = canvasHeight - y; + newX = imgBottom; + newY = imgLeft; + } else { + throw Error('不满足预期的度数' + oriAngle) + } + + const angle = obj.angle; + const newAngle = (angle + 90) % 360; + obj.set('angle', newAngle); + obj.setXY(new Point(newX, newY)); + + previous.objs.push(obj); + previous.objAngle.push(angle); + previous.objPos.push({ x, y }) + + current.objs.push(obj); + current.objAngle.push(newAngle); + current.objPos.push({ x: newX, y: newY }); + } + + const shapes = canvas.getObjects() as FabricObject[] ?? []; + for (const shape of shapes) { + canvas.setActiveObject(shape); + shape.setCoords(); + } + canvas.renderAll(); + + previous.canvasWrapperProps = this.calculateCanvasWrapper(); + + // 旋转后,整个图会回到界面的正中央 + this.moveCanvasToCenter(); + + current.canvasWrapperProps = this.calculateCanvasWrapper(); + + this.imageEditor!.getHistory().recordRotateAction(previous, current); + } + + calculateCanvasWrapper() { + const prop = new CanvasDetailedProps(); + prop.canvasWrapper = this.canvasWrapper; + prop.canvasWrapperLeft = this.canvasWrapper.style.left; + prop.canvasWrapperTop = this.canvasWrapper.style.top; + prop.canvasWrapperHeight = this.canvasWrapper.style.height; + prop.canvasWrapperWidth = this.canvasWrapper.style.width; + + prop.topResizer = this.northResizer; + prop.topResizerLeft = this.northResizer.style.left; + prop.topResizerTop = this.northResizer.style.top; + + prop.leftResizer = this.westResizer; + prop.leftResizerLeft = this.westResizer.style.left; + prop.leftResizerTop = this.westResizer.style.top; + + prop.bottomResizer = this.southResizer; + prop.bottomResizerLeft = this.southResizer.style.left; + prop.bottomResizerTop = this.southResizer.style.top; + + prop.rightResizer = this.eastResizer; + prop.rightResizerLeft = this.eastResizer.style.left; + prop.rightResizerTop = this.eastResizer.style.top; + + prop.toolbar = this.toolbar; + prop.toolbarLeft = this.toolbar.style.left; + prop.toolbarTop = this.toolbar.style.top; + + prop.optionBar = this.optionBar; + prop.optionBarLeft = this.optionBar.style.left; + prop.optionBarTop = this.optionBar.style.top; + return prop; + } + + + // 逆时针旋转90度 + rotateCounterClockwise() { + + const previous = new RotateProps(); + const current = new RotateProps(); + previous.canvasWrapper = current.canvasWrapper = this.canvasWrapper; + previous.fabricWrapperEl = current.fabricWrapperEl = this.fabricWrapperEl!; + previous.imageEditor = current.imageEditor = this.imageEditor!; + + const canvasArea = this.getCanvasAreaInfo(); + const { right, top } = canvasArea; + const { canvasWidth, canvasHeight } = canvasArea; + const { visiableHeight, visiableWidth } = canvasArea; + const canvas = this.imageEditor!.getCanvas()!; + + previous.canvasHeight = canvasHeight; previous.canvasWidth = canvasWidth; + // 逆时针旋转90度的时候,长高要做一个互换 + this.imageEditor!.setCanvasDims(canvasHeight, canvasWidth); + current.canvasHeight = canvasWidth; current.canvasWidth = canvasHeight; + + const fwStyle = this.fabricWrapperEl!.style; + previous.left = fwStyle.left; + previous.top = fwStyle.top; + + fwStyle.left = (-1) * top + 'px'; + fwStyle.top = (-1) * right + 'px'; + + current.left = fwStyle.left; + current.top = fwStyle.top; + + // 可见区域也要一同进行变换 + previous.width = this.canvasWrapper.style.width; + previous.height = this.canvasWrapper.style.height; + + this.canvasWrapper.style.width = visiableHeight + 'px'; + this.canvasWrapper.style.height = visiableWidth + 'px'; + + current.width = this.canvasWrapper.style.width; + current.height = this.canvasWrapper.style.height; + + const image = canvas.backgroundImage! + const objs = canvas.getObjects() as FabricObject[] ?? []; + objs.unshift(image); + + // 还要考虑自带旋转度数的对象 + const oriAngle = image.angle; + for (const obj of objs) { + const { x, y } = obj.getXY(); + // 旋转时是按照左上角的顶点进行旋转的 + // 所以要注意到左上角的位置 + let newX, newY; + // 直接参考顺时针 + if (oriAngle == 0) { + newX = y; + const imageRight = canvasWidth - x - obj.width; + newY = imageRight + obj.width; + } else if (oriAngle == 270) { + const imgTop = y - obj.width; + const imgRight = canvasWidth - x - obj.height; + newX = imgTop + obj.width; + newY = imgRight + obj.height; + } else if (oriAngle == 180) { + const imgTop = y - obj.height; + const imgRight = canvasWidth - x; + newX = imgTop + obj.height; + newY = imgRight; + } else if (oriAngle == 90) { + const imgRight = canvasWidth - x; + const imgTop = y; + newX = imgTop; + newY = imgRight; + } else { + throw Error('不满足预期的度数' + oriAngle) + } + const angle = obj.angle; + const newAngle = (angle - 90 + 360) % 360; + + obj.set('angle', newAngle); + obj.setXY(new Point(newX, newY)); + + previous.objs.push(obj); + previous.objAngle.push(angle); + previous.objPos.push({ x, y }) + + current.objs.push(obj); + current.objAngle.push(newAngle); + current.objPos.push({ x: newX, y: newY }); + + } + + const shapes = canvas.getObjects() as FabricObject[] ?? []; + for (const shape of shapes) { + canvas.setActiveObject(shape); + shape.setCoords(); + } + canvas.renderAll(); + + + previous.canvasWrapperProps = this.calculateCanvasWrapper(); + + // 旋转后,整个图会回到界面的正中央 + this.moveCanvasToCenter(); + + current.canvasWrapperProps = this.calculateCanvasWrapper(); + + this.imageEditor!.getHistory().recordRotateAction(previous, current); + + } + + moveCanvasToCenter() { + + // 先旋转,旋转完看看会不会出滚动条 + // 如果会出滚动条,那么就要考虑把滚动条的值算进去了 + // 如果没有出现滚动条,那么就不用考虑滚动条了 + const { width: parentWidth, height: parentHeight } = this.wrapper.getBoundingClientRect(); + const { width: wrapperWidth, height: wrapperHeight, left: wrapperLeft, top: wrapperTop } = this.canvasWrapper.getBoundingClientRect(); + + let cwLeft, cwTop; + if (parentWidth <= wrapperWidth) { + cwLeft = 0; + this.canvasWrapper.style.left = String(cwLeft); + } else { + const extra = parentWidth - wrapperWidth; + cwLeft = extra / 2; + this.canvasWrapper.style.left = cwLeft + 'px'; + } + if (parentHeight <= wrapperHeight) { + cwTop = 0; + this.canvasWrapper.style.top = String(cwTop); + } else { + const extra = parentHeight - wrapperHeight; + cwTop = extra / 2; + this.canvasWrapper.style.top = cwTop + 'px'; + } + + this.fixComponentsPosition(); + } + + fixComponentsPosition() { + this.fixToolbarPosition(); + this.fixResizerPosition(); + } + + fixResizerPosition() { + + const cwTop = pxielToNumber(this.canvasWrapper.style.top) + const cwLeft = pxielToNumber(this.canvasWrapper.style.left) + const wrapperWidth = pxielToNumber(this.canvasWrapper.style.width) + const wrapperHeight = pxielToNumber(this.canvasWrapper.style.height) + + // 12是拉伸按钮的大小,6是拉伸大小的一半,用来做偏移用 + const northResizerTop = cwTop - 12; + const northResizerLeft = cwLeft + wrapperWidth / 2 - 6; + + const westResizerTop = cwTop + wrapperHeight / 2 - 6; + const westResizerLeft = cwLeft - 12; + + const southResizerTop = cwTop + wrapperHeight; + const southResizerLeft = cwLeft + wrapperWidth / 2 - 6; + const eastResizerTop = cwTop + wrapperHeight / 2 - 6; + const eastResizerLeft = cwLeft + wrapperWidth; + + this.northResizer.style.top = northResizerTop + 'px'; + this.northResizer.style.left = northResizerLeft + 'px'; + + this.northWestResizer.style.top = northResizerTop + 'px'; + this.northWestResizer.style.left = westResizerLeft + 'px'; + + this.westResizer.style.top = westResizerTop + 'px'; + this.westResizer.style.left = westResizerLeft + 'px'; + + this.southWestResizer.style.top = southResizerTop + 'px'; + this.southWestResizer.style.left = westResizerLeft + 'px'; + + this.southResizer.style.top = southResizerTop + 'px'; + this.southResizer.style.left = southResizerLeft + 'px'; + + this.southEastResizer.style.top = southResizerTop + 'px'; + this.southEastResizer.style.left = eastResizerLeft + 'px'; + + this.eastResizer.style.top = eastResizerTop + 'px'; + this.eastResizer.style.left = eastResizerLeft + 'px'; + + this.northEastResizer.style.top = northResizerTop + 'px'; + this.northEastResizer.style.left = eastResizerLeft + 'px'; + } + + fixToolbarPosition() { + const top = pxielToNumber(this.canvasWrapper.style.top); + const left = pxielToNumber(this.canvasWrapper.style.left); + const width = pxielToNumber(this.canvasWrapper.style.width); + const toolbarWidth = pxielToNumber(this.toolbar.style.width) + 2 * pxielToNumber(this.toolbar.style.padding); + const height = pxielToNumber(this.canvasWrapper.style.height); + // 20是一个间隔高度 + this.toolbar.style.top = top + height + 20 + 'px'; + this.toolbar.style.left = left + width / 2 - toolbarWidth / 2 + 'px'; + const current = this.imageEditor!.getOperatorType() + const currEle = this.menuMap.get(current); + this.adjustOptionBarPosition(currEle); + if (current == OperatorType.MOSAIC) { + this.showSizeOptions(); + } + } + + adjustOptionBarPosition(currEle?: HTMLDivElement) { + if (currEle == null) { + return; + } + const pos = getAbsolutePosition(currEle); + const optionBar = this.optionBar; + optionBar.style.display = 'inline-block'; + optionBar.style.left = Math.round(pos.x - 130) + 'px'; + optionBar.style.top = Math.round(pos.y + 36) + 'px'; + } + + getCanvasAreaInfo() { + + // 完整的canvas区域,包括可见与不可见的区域 + const canvasWidth = toNumber(this.fabricWrapperEl!.style.width.replace('px', '')); + const canvasHeight = toNumber(this.fabricWrapperEl!.style.height.replace('px', '')); + + // canvas在左侧和上侧隐藏的区域,值是left和top的绝对值 + const left = (-1) * toNumber(this.fabricWrapperEl!.style.left.replace('px', '')); + const top = (-1) * toNumber(this.fabricWrapperEl!.style.top.replace('px', '')); + + const visiableWidth = toNumber(this.canvasWrapper!.style.width.replace('px', '')); + const visiableHeight = toNumber(this.canvasWrapper!.style.height.replace('px', '')); + + // canvas的宽高 减去 可见区域的长度 减去 左侧上侧的区域 + // 就能得到右侧和下侧部分的长度 + const right = canvasWidth - visiableWidth - left; + const bottom = canvasHeight - visiableHeight - top; + + return { + canvasWidth, canvasHeight, visiableWidth, visiableHeight, top, bottom, left, right + } + } + + getScreenshotCanvas() { + return this.screenshotCanvas; + } + + getScreenshotResizers() { + return this.screenshotResizer; + } + + getScreenshotToolbar() { + return this.screenshotToolbar; + } + getScreenshotConfirmButton() { + return this.screenshotConfirmButton; + } + getScreenshotCancelButton() { + return this.screenshotCancelButton; + } + + getFabricWrapper() { + return this.fabricWrapperEl; + } + + // 不能用两个canvas,两个canvas会带来闪烁的问题,直接在原来的canvas上操作 + cropImage() { + this.hideToolbar(); + const width = pxielToNumber(this.canvasWrapper!.style.width); + const height = pxielToNumber(this.canvasWrapper!.style.height); + const screenshot = this.imageEditor!.getScreenshoter(); + const left = pxielToNumber(this.canvasWrapper!.style.left); + const top = pxielToNumber(this.canvasWrapper!.style.top); + screenshot.initMask(left, top, width, height); + } + + resetWrapper(width: number, height: number) { + this.canvasWrapper.style.width = width + 'px'; + this.canvasWrapper.style.height = height + 'px'; + this.moveCanvasToCenter(); + } + + hideResizer() { + this.northResizer.style.display = 'none'; + this.westResizer.style.display = 'none'; + this.southResizer.style.display = 'none'; + this.eastResizer.style.display = 'none'; + } + + showResizer() { + this.northResizer.style.display = 'block'; + this.westResizer.style.display = 'block'; + this.southResizer.style.display = 'block'; + this.eastResizer.style.display = 'block'; + } + + calculateCanvasInfo() { + const info = new FabricCanvasProps(); + info.fabricWrapperEl = this.fabricWrapperEl!; + info.fabricWrapperElLeft = this.fabricWrapperEl!.style.left; + info.fabricWrapperElTop = this.fabricWrapperEl!.style.top; + const canvas = this.imageEditor!.getCanvas(); + info.canvasWidth = canvas.width; + info.canvasHeight = canvas.height; + info.canvasBackgroundColor = canvas.backgroundColor as string; + info.canvasBackgroundImage = canvas.backgroundImage; + info.objects = canvas.getObjects(); + return info; + } + + resetImageEditor() { + const canvas = this.imageEditor!.getCanvas() + const image = canvas.backgroundImage!; + const width = image.width; + const height = image.height; + this.imageEditor!.setCanvasDims(width, height); + image.setXY(new Point(0, 0)); + const objects = canvas.getObjects() + for (const o of objects) { + canvas.remove(o); + } + this.fabricWrapperEl!.style.width = '0'; + this.fabricWrapperEl!.style.height = '0'; + this.canvasWrapper.style.width = canvas.width + 'px'; + this.canvasWrapper.style.height = canvas.height + 'px'; + this.canvasWrapper.style.left = this.imageEditor!.initWrapperLeft; + this.canvasWrapper.style.top = this.imageEditor!.initWrapperTop; + this.fixComponentsPosition(); + this.imageEditor!.getHistory().clearRedoStack(); + } + + downloadAreaImage() { + const width = pxielToNumber(this.canvasWrapper.style.width); + const height = pxielToNumber(this.canvasWrapper.style.height); + const left = pxielToNumber(this.fabricWrapperEl!.style.left) + const top = pxielToNumber(this.fabricWrapperEl!.style.top) + const start = new Point(left, top); + const end = new Point(left + width, top + height); + const image = this.imageEditor!.getAreaImageInfo(start, end); + const link = document.createElement("a"); + link.href = image; + link.download = 'image.png'; + link.click(); + } +} \ No newline at end of file diff --git a/src/history.ts b/src/history.ts new file mode 100644 index 0000000..efc6258 --- /dev/null +++ b/src/history.ts @@ -0,0 +1,731 @@ +import { Canvas, Ellipse, FabricObject, Point, TDegree } from "fabric"; +import ImageEditor from "./image_editor"; + +interface OperationAction { + + undo(): void; + + redo(): void; +} + +enum State { + CAN_UNDO, CAN_REDO +} + +class CreateAction implements OperationAction { + + protected canvas: Canvas; + + protected object: FabricObject; + + protected state: State = State.CAN_UNDO; + + constructor(canvas: Canvas, object: FabricObject) { + this.canvas = canvas; + this.object = object; + } + + undo() { + if (this.state == State.CAN_UNDO) { + this.canvas.remove(this.object); + this.canvas.renderAll(); + this.state = State.CAN_REDO; + } + } + + redo() { + if (this.state == State.CAN_REDO) { + this.canvas.add(this.object); + this.canvas.renderAll(); + this.state = State.CAN_UNDO; + } + } +} + +class RemoveAction implements OperationAction { + + protected canvas: Canvas; + + protected object: FabricObject; + + protected state: State = State.CAN_UNDO; + + constructor(canvas: Canvas, object: FabricObject) { + this.canvas = canvas; + this.object = object; + } + + undo() { + if (this.state == State.CAN_UNDO) { + this.canvas.add(this.object); + this.canvas.renderAll(); + this.state = State.CAN_REDO; + } + } + + redo() { + if (this.state == State.CAN_REDO) { + this.canvas.remove(this.object); + this.canvas.renderAll(); + this.state = State.CAN_UNDO; + } + } +} + +class MoveAction implements OperationAction { + + protected canvas: Canvas; + + protected object: FabricObject; + + protected previousX: number; + + protected previousY: number; + + protected currentX: number; + + protected currentY: number; + + constructor(canvas: Canvas, object: FabricObject, previousX: number, previousY: number) { + this.object = object; + this.previousX = previousX; + this.previousY = previousY; + this.currentX = object.getX(); + this.currentY = object.getY(); + this.canvas = canvas; + } + + undo(): void { + this.object.setX(this.previousX); + this.object.setY(this.previousY); + this.canvas.renderAll(); + } + + redo(): void { + this.object.setX(this.currentX); + this.object.setY(this.currentY); + this.canvas.renderAll(); + } + +} + +class ScaleAction implements OperationAction { + + protected canvas: Canvas; + + protected object: FabricObject; + + protected previousWidth: number; + + protected previousHeight: number; + + protected previousX: number; + + protected previousY: number; + + protected currentWidth: number; + + protected currentHeight: number; + + protected currentX: number; + + protected currentY: number; + + constructor(canvas: Canvas, object: FabricObject, previousWidth: number, previousHeight: number, previousX: number, previousY: number) { + this.canvas = canvas; + this.object = object; + this.previousWidth = previousWidth; + this.previousHeight = previousHeight; + this.previousX = previousX; + this.previousY = previousY; + this.currentWidth = object.get('width'); + this.currentHeight = object.get('height'); + this.currentX = object.getX(); + this.currentY = object.getY(); + } + + undo(): void { + this.object.set({ width: this.previousWidth, height: this.previousHeight }); + this.object.setX(this.previousX); + this.object.setY(this.previousY); + this.canvas.renderAll(); + } + + redo(): void { + this.object.set({ width: this.currentWidth, height: this.currentHeight }); + this.object.setX(this.currentX); + this.object.setY(this.currentY); + this.canvas.renderAll(); + } +} + +class EllipseScaleAction extends ScaleAction { + + protected previousRX: number; + + protected previousRY: number; + + protected currentRX: number; + + protected currentRY: number; + + constructor(canvas: Canvas, object: Ellipse, previousWidth: number, previousHeight: number + , previousX: number, previousY: number, previousRX: number, previousRY: number) { + super(canvas, object, previousWidth, previousHeight, previousX, previousY); + this.previousRX = previousRX; + this.previousRY = previousRY; + console.log(this.previousRX) + console.log(this.previousRY) + this.currentRX = object.rx; + this.currentRY = object.ry; + } + + undo(): void { + const obj = this.object as Ellipse; + obj.rx = this.previousRX; + obj.ry = this.previousRY; + super.undo(); + } + + redo(): void { + const obj = this.object as Ellipse; + obj.rx = this.currentRX; + obj.ry = this.currentRY; + super.redo(); + } +} + + +class RatioScaleAction implements OperationAction { + + protected canvas: Canvas; + + protected object: FabricObject; + + protected previousScaleX: number; + + protected previousScaleY: number; + + protected previousX: number; + + protected previousY: number; + + protected currentScaleX: number; + + protected currentScaleY: number; + + protected currentX: number; + + protected currentY: number; + + constructor(canvas: Canvas, object: FabricObject, previousScaleX: number, previousScaleY: number, previousX: number, previousY: number) { + this.canvas = canvas; + this.object = object; + this.previousScaleX = previousScaleX; + this.previousScaleY = previousScaleY; + this.previousX = previousX; + this.previousY = previousY; + this.currentScaleX = object.scaleX; + this.currentScaleY = object.scaleY; + this.currentX = object.getX(); + this.currentY = object.getY(); + } + + undo(): void { + this.object.scaleX = this.previousScaleX; + this.object.scaleY = this.previousScaleY; + this.object.setX(this.previousX); + this.object.setY(this.previousY); + this.canvas.renderAll(); + } + + redo(): void { + this.object.scaleX = this.currentScaleX; + this.object.scaleY = this.currentScaleY; + this.object.setX(this.currentX); + this.object.setY(this.currentY); + this.canvas.renderAll(); + } +} + +export class FlipXUndoProps { + fabricWrapperEl?: HTMLDivElement; + left: string = ''; + backgroundImage?: FabricObject; + flipX: boolean = false; + x: number = 0; + objs: FabricObject[] = []; + objX: number[] = []; + objFlipX: boolean[] = []; +} + +class FlipXAction implements OperationAction { + + private canvas: Canvas; + + private previous: FlipXUndoProps; + + private current: FlipXUndoProps; + + private hasUndo = false; + + constructor(canvas: Canvas, previous: FlipXUndoProps, current: FlipXUndoProps) { + this.canvas = canvas; + this.previous = previous; + this.current = current; + } + undo(): void { + if (this.hasUndo) { + return; + } + const previous = this.previous; + const bi = previous.backgroundImage; + const fabricWrapperEl = previous.fabricWrapperEl; + fabricWrapperEl!.style.left = previous.left; + bi!.flipX = previous.flipX; + bi!.setX(previous.x); + for (const index in previous.objs) { + const obj = previous.objs[index]; + const flipX = previous.objFlipX[index]; + const x = previous.objX[index]; + obj.flipX = flipX; + obj.setX(x); + obj.setCoords(); + } + this.canvas.renderAll(); + this.hasUndo = true; + } + redo(): void { + if (!this.hasUndo) { + return; + } + const current = this.current; + const bi = current.backgroundImage; + const fabricWrapperEl = current.fabricWrapperEl; + fabricWrapperEl!.style.left = current.left; + bi!.flipX = current.flipX; + bi!.setX(current.x); + for (const index in current.objs) { + const obj = current.objs[index]; + const flipX = current.objFlipX[index]; + const x = current.objX[index]; + obj.flipX = flipX; + obj.setX(x); + obj.setCoords(); + } + this.canvas.renderAll(); + this.hasUndo = false + } +} + +export class FlipYUndoProps { + fabricWrapperEl?: HTMLDivElement; + top: string = ''; + backgroundImage?: FabricObject; + flipY: boolean = false; + y: number = 0; + objs: FabricObject[] = []; + objY: number[] = []; + objFlipY: boolean[] = []; +} + +class FlipYAction implements OperationAction { + + private canvas: Canvas; + + private previous: FlipYUndoProps; + + private current: FlipYUndoProps; + + private hasUndo = false; + + constructor(canvas: Canvas, previous: FlipYUndoProps, current: FlipYUndoProps) { + this.canvas = canvas; + this.previous = previous; + this.current = current; + } + undo(): void { + if (this.hasUndo) { + return; + } + const previous = this.previous; + const bi = previous.backgroundImage; + const fabricWrapperEl = previous.fabricWrapperEl; + fabricWrapperEl!.style.top = previous.top; + bi!.flipY = previous.flipY; + bi!.setY(previous.y); + for (const index in previous.objs) { + const obj = previous.objs[index]; + const flipY = previous.objFlipY[index]; + const y = previous.objY[index]; + obj.flipY = flipY; + obj.setY(y); + obj.setCoords(); + } + this.canvas.renderAll(); + this.hasUndo = true; + } + redo(): void { + if (!this.hasUndo) { + return; + } + const current = this.current; + const bi = current.backgroundImage; + const fabricWrapperEl = current.fabricWrapperEl; + fabricWrapperEl!.style.top = current.top; + bi!.flipY = current.flipY; + bi!.setY(current.y); + for (const index in current.objs) { + const obj = current.objs[index]; + const flipY = current.objFlipY[index]; + const y = current.objY[index]; + obj.flipY = flipY; + obj.setY(y); + obj.setCoords(); + } + this.canvas.renderAll(); + this.hasUndo = false + } +} + +export class CanvasWrapperProps { + canvasWrapper?: HTMLDivElement; + canvasWrapperLeft = ''; + canvasWrapperTop = ''; + topResizer?: HTMLDivElement; + topResizerLeft = ''; + topResizerTop = ''; + leftResizer?: HTMLDivElement; + leftResizerLeft = ''; + leftResizerTop = ''; + bottomResizer?: HTMLDivElement; + bottomResizerTop = ''; + bottomResizerLeft = ''; + rightResizer?: HTMLDivElement; + rightResizerTop = ''; + rightResizerLeft = ''; + toolbar?: HTMLDivElement; + toolbarLeft = ''; + toolbarTop = ''; + optionBar?: HTMLDivElement; + optionBarLeft = ''; + optionBarTop = ''; +} + +export class CanvasDetailedProps extends CanvasWrapperProps { + canvasWrapperHeight = '' + canvasWrapperWidth = ''; +} + +export class FabricCanvasProps { + fabricWrapperEl?: HTMLDivElement; + fabricWrapperElLeft = ''; + fabricWrapperElTop = ''; + canvasWidth = 0; + canvasHeight = 0; + canvasBackgroundColor = ''; + canvasBackgroundImage?: FabricObject + objects = [] as FabricObject[] +} + +export class RotateProps { + fabricWrapperEl?: HTMLDivElement; + canvasWrapper?: HTMLDivElement; + imageEditor?: ImageEditor; + left: string = ''; + top: string = ''; + canvasHeight: number = 0; + canvasWidth: number = 0; + height: string = ''; + width: string = ''; + objs: FabricObject[] = []; + objPos: any[] = []; + objAngle: TDegree[] = []; + canvasWrapperProps?: CanvasWrapperProps; +} + +abstract class CanvasSetAction implements OperationAction { + undo(): void { + + } + redo(): void { + } + resetCanvasWrapper(prop: CanvasWrapperProps) { + prop.canvasWrapper!.style.top = prop.canvasWrapperTop; + prop.canvasWrapper!.style.left = prop.canvasWrapperLeft; + + prop.topResizer!.style.top = prop.topResizerTop; + prop.topResizer!.style.left = prop.topResizerLeft; + + prop.leftResizer!.style.top = prop.leftResizerTop; + prop.leftResizer!.style.left = prop.leftResizerLeft; + + prop.bottomResizer!.style.top = prop.bottomResizerTop; + prop.bottomResizer!.style.left = prop.bottomResizerLeft; + + prop.rightResizer!.style.top = prop.rightResizerTop; + prop.rightResizer!.style.left = prop.rightResizerLeft; + + prop.toolbar!.style.top = prop.toolbarTop; + prop.toolbar!.style.left = prop.toolbarLeft; + + prop.optionBar!.style.top = prop.optionBarTop; + prop.optionBar!.style.left = prop.optionBarLeft; + } +} + +class RotationAction extends CanvasSetAction { + + private previous: RotateProps; + private current: RotateProps; + private canvas: Canvas; + private hasUndo = false; + + constructor(canvas: Canvas, previous: RotateProps, current: RotateProps) { + super(); + this.canvas = canvas; + this.current = current; + this.previous = previous; + } + undo(): void { + if (this.hasUndo) { + return; + } + const previous = this.previous; + previous.imageEditor!.setCanvasDims(previous.canvasWidth, previous.canvasHeight); + const fwStyle = previous.fabricWrapperEl!.style; + fwStyle.left = previous.left; + fwStyle.top = previous.top; + + const canvasWrapper = previous.canvasWrapper!; + canvasWrapper.style.width = previous.width; + canvasWrapper.style.height = previous.height; + + for (const index in previous.objs) { + const obj = previous.objs[index]; + const xy = previous.objPos[index]; + const angle = previous.objAngle[index]; + obj.set('angle', angle) + obj.setXY(new Point(xy.x, xy.y)); + obj.setCoords(); + } + this.canvas.renderAll(); + this.resetCanvasWrapper(previous.canvasWrapperProps!); + this.hasUndo = true; + + } + + + redo(): void { + if (!this.hasUndo) { + return; + } + const current = this.current; + current.imageEditor!.setCanvasDims(current.canvasWidth, current.canvasHeight); + const fwStyle = current.fabricWrapperEl!.style; + fwStyle.left = current.left; + fwStyle.top = current.top; + + const canvasWrapper = current.canvasWrapper!; + canvasWrapper.style.width = current.width; + canvasWrapper.style.height = current.height; + + for (const index in current.objs) { + const obj = current.objs[index]; + const xy = current.objPos[index]; + const angle = current.objAngle[index]; + obj.set('angle', angle) + obj.setXY(new Point(xy.x, xy.y)); + obj.setCoords(); + } + this.canvas.renderAll(); + this.resetCanvasWrapper(current.canvasWrapperProps!); + this.hasUndo = false; + } + +} + +class CropAction extends CanvasSetAction { + + private previousWrapper: CanvasDetailedProps; + private previousCanvas: FabricCanvasProps; + private cropWrapper: CanvasDetailedProps; + private cropCanvas: FabricCanvasProps; + private canvas: Canvas; + private hasUndo = false; + + constructor(canvas: Canvas, previousWrapper: CanvasDetailedProps, previousCanvas: FabricCanvasProps + , cropWrapper: CanvasDetailedProps, cropCanvas: FabricCanvasProps + ) { + super(); + this.canvas = canvas; + this.previousWrapper = previousWrapper; + this.previousCanvas = previousCanvas; + this.cropWrapper = cropWrapper; + this.cropCanvas = cropCanvas; + } + + undo(): void { + if (this.hasUndo) { + return; + } + this.clearCanvas(); + super.resetCanvasWrapper(this.previousWrapper); + const pw = this.previousWrapper; + pw.canvasWrapper!.style.width = pw.canvasWrapperWidth; + pw.canvasWrapper!.style.height = pw.canvasWrapperHeight; + const pc = this.previousCanvas; + pc.fabricWrapperEl!.style.left = pc.fabricWrapperElLeft; + pc.fabricWrapperEl!.style.top = pc.fabricWrapperElTop; + this.canvas.setDimensions({ width: pc.canvasWidth, height: pc.canvasHeight }); + this.canvas.backgroundColor = pc.canvasBackgroundColor; + this.canvas.backgroundImage = pc.canvasBackgroundImage!; + for (const object of pc.objects) { + this.canvas.add(object); + object.setCoords(); + } + + this.canvas.renderAll(); + this.hasUndo = true; + } + + redo(): void { + if (!this.hasUndo) { + return; + } + this.clearCanvas(); + super.resetCanvasWrapper(this.cropWrapper); + const cw = this.cropWrapper; + cw.canvasWrapper!.style.width = cw.canvasWrapperWidth; + cw.canvasWrapper!.style.height = cw.canvasWrapperHeight; + const cc = this.cropCanvas; + cc.fabricWrapperEl!.style.left = cc.fabricWrapperElLeft; + cc.fabricWrapperEl!.style.top = cc.fabricWrapperElTop; + this.canvas.setDimensions({ width: cc.canvasWidth, height: cc.canvasHeight }); + this.canvas.backgroundColor = cc.canvasBackgroundColor; + this.canvas.backgroundImage = cc.canvasBackgroundImage!; + for (const object of cc.objects) { + this.canvas.add(object); + object.setCoords(); + } + + this.canvas.renderAll(); + this.hasUndo = false; + } + + clearCanvas() { + // 不太清楚fabric会不会destory这些对象,所以防止万一起见,还是先删除了 + const canvas = this.canvas; + canvas.backgroundImage = undefined; + const objects = canvas.getObjects(); + for (const obj of objects) { + canvas.remove(obj); + } + this.canvas.clear(); + } +} + + +export default class OperationHistory { + + protected undoStack: OperationAction[]; + + protected redoStack: OperationAction[]; + + protected canvas: Canvas; + + constructor(canvas: Canvas) { + this.undoStack = []; + this.redoStack = []; + this.canvas = canvas; + } + + getCanvas() { + return this.canvas; + } + + redo(): boolean { + if (this.redoStack.length > 0) { + const opr = this.redoStack.pop()!; + opr.redo(); + this.undoStack.push(opr!); + return true; + } + return false; + } + + undo(): boolean { + if (this.undoStack.length > 0) { + const opr = this.undoStack.pop()!; + opr.undo(); + this.redoStack.push(opr); + return true; + } + return false; + } + + + recordCreateAction(object: FabricObject) { + this.undoStack.push(new CreateAction(this.canvas, object)); + this.clearRedoStack(); + } + + recordRemoveAction(object: FabricObject) { + this.undoStack.push(new RemoveAction(this.canvas, object)); + this.clearRedoStack(); + } + + recordMoveAction(object: FabricObject, previousX: number, previousY: number) { + this.undoStack.push(new MoveAction(this.canvas, object, previousX, previousY)); + this.clearRedoStack(); + } + + // 放缩可能会改变图形的位置 + recordScaleAction(object: FabricObject, previousWidth: number, previousHeight: number, + previousX: number, previousY: number) { + this.undoStack.push(new ScaleAction(this.canvas, object, previousWidth, previousHeight, previousX, previousY)); + this.clearRedoStack(); + } + + recordEllipseScaleAction(object: Ellipse, previousWidth: number, previousHeight: number, + previousX: number, previousY: number, previousRX: number, previousRY: number) { + this.undoStack.push(new EllipseScaleAction(this.canvas, object, previousWidth, previousHeight, previousX, previousY, previousRX, previousRY)); + this.clearRedoStack(); + } + + recordRatioScaleAction(object: FabricObject, previousScaleX: number, previousScaleY: number, + previousX: number, previousY: number) { + this.undoStack.push(new RatioScaleAction(this.canvas, object, previousScaleX, previousScaleY, + previousX, previousY)); + this.clearRedoStack(); + } + + recordFlipXAction(previous: FlipXUndoProps, current: FlipXUndoProps) { + this.undoStack.push(new FlipXAction(this.canvas, previous, current)); + this.clearRedoStack(); + } + + recordFlipYAction(previous: FlipYUndoProps, current: FlipYUndoProps) { + this.undoStack.push(new FlipYAction(this.canvas, previous, current)); + this.clearRedoStack(); + } + + recordRotateAction(previous: RotateProps, current: RotateProps) { + this.undoStack.push(new RotationAction(this.canvas, previous, current)); + this.clearRedoStack(); + } + + recordCropAction(wrapper: CanvasDetailedProps, canvas: FabricCanvasProps, cropWrapper: CanvasDetailedProps, cropCanvas: FabricCanvasProps) { + this.undoStack.push(new CropAction(this.canvas, wrapper, canvas, cropWrapper, cropCanvas)); + this.clearRedoStack(); + } + + clearRedoStack() { + this.redoStack = []; + } + + clearStack(){ + this.redoStack = [] + this.undoStack = [] + } +} \ No newline at end of file diff --git a/src/image_editor.ts b/src/image_editor.ts new file mode 100644 index 0000000..710bc3b --- /dev/null +++ b/src/image_editor.ts @@ -0,0 +1,251 @@ +import { Canvas, FabricImage, FabricObject, Point, StaticCanvas } from "fabric"; +import ArrowOperator from "./operator/arrow_operator"; +import DrawOperator from "./operator/draw_operator"; +import EllipseOperator from "./operator/ellipse_operator"; +import { OperatorType } from "./image_editor_operator"; +import ElementManager from "./element_manager"; +import MosaicOperator from "./operator/mosaic_operator"; +import RectangleOperator from "./operator/rect_operator"; +import TextOperator from "./operator/text_operator"; +import OperationHistory from "./history"; +import { Screenshoter } from "./screenshoter"; +import { ImageEditorShortcutManager } from "./shortcut_manager"; + +export default class ImageEditor { + + private canvas: Canvas; + + private screenshoter: Screenshoter; + + private history: OperationHistory; + + private operatorType: OperatorType = OperatorType.NONE; + + private elementManager: ElementManager; + + private rectOperator: RectangleOperator; + + private ellipseOperator: EllipseOperator; + + private arrowOperator: ArrowOperator; + + private drawOperator: DrawOperator; + + private mosaicOperator: MosaicOperator; + + private textOperator: TextOperator; + + private operatorMap = new Map(); + + readonly initWrapperLeft: string; + + readonly initWrapperTop: string; + + private shortcutManager: ImageEditorShortcutManager; + + constructor(canvas: Canvas, elementManager: ElementManager) { + this.elementManager = elementManager; + this.canvas = canvas; + this.history = new OperationHistory(canvas); + this.rectOperator = new RectangleOperator(this); + this.ellipseOperator = new EllipseOperator(this); + this.arrowOperator = new ArrowOperator(this); + this.drawOperator = new DrawOperator(this); + this.mosaicOperator = new MosaicOperator(this); + this.textOperator = new TextOperator(this); + this.bindOperators(); + this.operatorMap.set(OperatorType.RECT, this.rectOperator); + this.operatorMap.set(OperatorType.ELLIPSE, this.ellipseOperator); + this.operatorMap.set(OperatorType.ARROW, this.arrowOperator); + this.operatorMap.set(OperatorType.TEXT, this.textOperator); + this.operatorMap.set(OperatorType.DRAW, this.drawOperator); + this.operatorMap.set(OperatorType.MOSAIC, this.mosaicOperator); + this.canvas.selection = false; + this.screenshoter = new Screenshoter(); + const canvasWrapper = elementManager.canvasWrapper; + this.initWrapperLeft = canvasWrapper.style.left; + this.initWrapperTop = canvasWrapper.style.top; + this.shortcutManager = new ImageEditorShortcutManager(this); + } + + init() { + this.elementManager.init(this); + this.elementManager.bindEvents(); + this.screenshoter.init(this, this.elementManager); + } + + bindOperators() { + const rectOperator = this.rectOperator; + this.canvas.on('mouse:down', rectOperator.handleMouseDown.bind(rectOperator)); + this.canvas.on('mouse:move', rectOperator.handleMouseMove.bind(rectOperator)); + this.canvas.on('mouse:up', rectOperator.handleMouseUp.bind(rectOperator)); + const ellipseOperator = this.ellipseOperator; + this.canvas.on('mouse:down', ellipseOperator.handleMouseDown.bind(ellipseOperator)); + this.canvas.on('mouse:move', ellipseOperator.handleMouseMove.bind(ellipseOperator)); + this.canvas.on('mouse:up', ellipseOperator.handleMouseUp.bind(ellipseOperator)); + const arrowOperator = this.arrowOperator; + this.canvas.on('mouse:down', arrowOperator.handleMouseDown.bind(arrowOperator)); + this.canvas.on('mouse:move', arrowOperator.handleMouseMove.bind(arrowOperator)); + this.canvas.on('mouse:up', arrowOperator.handleMouseUp.bind(arrowOperator)); + const textOperator = this.textOperator; + this.canvas.on('mouse:down:before', textOperator.handleMouseDownBefore.bind(textOperator)) + this.canvas.on('mouse:down', textOperator.handleMouseDown.bind(textOperator)); + this.canvas.on('mouse:up', textOperator.handleMouseUp.bind(textOperator)); + } + + getCanvas() { + return this.canvas; + } + + getActiveOperator() { + return this.operatorMap.get(this.operatorType); + } + + getOperatorType() { + return this.operatorType; + } + + changeOperatorType(type: OperatorType) { + // 如果要修改的type和当前的是一样的话,那么就不变 + if (this.operatorType == type) { + return; + } + const previous = this.operatorType; + const current = type; + switch (previous) { + case OperatorType.MOSAIC: this.mosaicOperator.endMosaicMode(); break + case OperatorType.DRAW: this.drawOperator.endDrawMode(); break; + } + switch (current) { + case OperatorType.MOSAIC: this.mosaicOperator.startMosaicMode(); break + case OperatorType.DRAW: this.drawOperator.startDrawMode(); break; + } + this.operatorType = current; + if (current == OperatorType.NONE) { + this.canvas.getObjects().forEach((obj: FabricObject) => { + // 重新调整完后,要将对象激活一下,这或许是个坑? + this.canvas.setActiveObject(obj); + }) + } + } + + getHistory(): OperationHistory { + return this.history; + } + + setCanvasHeight(height: number) { + this.canvas.setDimensions({ height }) + } + + setCanvasWidth(width: number) { + this.canvas.setDimensions({ width }) + } + + setCanvasDims(width: number, height: number) { + this.canvas.setDimensions({ height, width }); + } + + transformX(fabricLeft: number) { + const x = this.canvas.backgroundImage!.getX() + this.canvas.backgroundImage?.setX(x + fabricLeft) + let objs = this.canvas.getObjects(); + if (objs == null) { + objs = []; + } + for (const obj of objs) { + obj.left += fabricLeft; + obj.setCoords(); + } + this.canvas.renderAll(); + } + + transformY(fabricTop: number) { + const y = this.canvas.backgroundImage!.getY() + this.canvas.backgroundImage?.setY(y + fabricTop) + let objs = this.canvas.getObjects(); + if (objs == null) { + objs = []; + } + for (const obj of objs) { + obj.top += fabricTop; + obj.setCoords(); + } + this.canvas.renderAll(); + } + + getAreaImageInfo(start: Point, bottom: Point) { + + const width = bottom.x - start.x; + const height = bottom.y - start.y; + + const tempCanvas = new StaticCanvas(undefined, { width, height }); + tempCanvas.add(new FabricImage(this.canvas.lowerCanvasEl, { + left: 0, + top: 0, + })) + + const image = tempCanvas.toDataURL({ + format: 'png', + left: start.x, + top: start.y, + width, height, + multiplier: 1 + }); + + return image; + } + + async renderToCanvas(imageDataUrl: string) { + const canvas = this.canvas; + const objects = canvas.getObjects(); + for (const object of objects) { + canvas.remove(object); + } + canvas.backgroundImage = undefined; + canvas.clear(); + const elementManger = this.elementManager; + let ret; + await FabricImage.fromURL(imageDataUrl).then(img => { + ret = img; + const width = img.width; + const height = img.height; + canvas.setDimensions({ width, height }) + img.setX(0); + img.setY(0); + canvas.backgroundImage = img; + canvas.backgroundColor = '#FFF'; + const style = elementManger.getFabricWrapper()!.style; + style.left = '0px'; + style.top = '0px'; + elementManger.resetWrapper(width, height); + canvas.renderAll(); + }) + return ret; + } + + getScreenshoter() { + return this.screenshoter; + } + + // 保存状态,后面还原直接用 + storeCanvasState() { + const wrapperInfo = this.elementManager.calculateCanvasWrapper(); + const canvasInfo = this.elementManager.calculateCanvasInfo(); + return { + wrapper: wrapperInfo, + canvas: canvasInfo + } + } + + destory() { + this.shortcutManager.destroy(); + } + + removeActiveObjects() { + const active = this.canvas!.getActiveObject(); + if (active) { + this.canvas.remove(active); + this.history.recordRemoveAction(active); + } + } +} \ No newline at end of file diff --git a/src/image_editor_operator.ts b/src/image_editor_operator.ts new file mode 100644 index 0000000..282eb72 --- /dev/null +++ b/src/image_editor_operator.ts @@ -0,0 +1,27 @@ + +export interface ImageEditorOperator { + handleMouseDownBefore?(event: any): void; + handleMouseDown?(event: any): void; + handleMouseMove?(event: any): void; + handleMouseUp?(event: any): void; +} + +export interface OperatorProps { + + setOperatorSize(width: number): void; + + setOperatorColor(color: string): void; + + getOperatorSize(): number; + + getOperatorColor(): string; +} + +export const DEFAULT_COLOR = '#FF0000'; + +export const DEFAULT_STROKE_WIDTH = 4; + +export enum OperatorType { + RECT, ELLIPSE, ARROW, DRAW, TEXT, MOSAIC, NONE +} + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..dff202a --- /dev/null +++ b/src/main.ts @@ -0,0 +1,316 @@ +import { Canvas, FabricImage } from 'fabric'; +import ElementManager from './element_manager'; +import ImageEditor from './image_editor'; + +class ImageEditorHelper { + + static currentImageEditor: ImageEditor | undefined; + + static dpr = window.devicePixelRatio || 1; + + static CANVAS_DEFAULT_WIDTH = 100; + + static CANVAS_DEFAULT_HEIGHT = 100; + + static createImageEditor(imageUrl: string) { + + const elements = this.createElement() + const eleManager = new ElementManager(elements); + + const resizer = (canvas: Canvas, width: number, height: number) => { + this.resizeCanvas(canvas, eleManager, width, height); + } + const canvas = this.initCanvas(elements.canvas, imageUrl, resizer); + const editor = new ImageEditor(canvas, eleManager); + editor.init(); + return editor; + } + + private static createElement(): Record { + + const width = this.CANVAS_DEFAULT_WIDTH, height = this.CANVAS_DEFAULT_HEIGHT; + + const wrapper = document.getElementById("app")!; + wrapper.style.width = '100%'; + wrapper.style.height = '100%'; + wrapper.style.position = 'absolute'; + wrapper.style.visibility = 'hidden'; + document.body.appendChild(wrapper); + + const toolbar = document.createElement("div"); + const toolbarMenu = this.initToolbar(toolbar); + + // 不考虑滚动条的事,出现滚动条的话,就给点偏差 + // canvasWrapper,包裹画板 + const canvasWrapper = document.createElement("div"); + canvasWrapper.style.backgroundColor = 'white'; + canvasWrapper.style.position = 'relative'; + canvasWrapper.style.overflow = 'hidden'; + + const resizers = this.createCanvasResizer(wrapper); + + // 添加一张用于截图的canvas,以及8个resizer + const screenshotCanvas = document.createElement("canvas") + screenshotCanvas.style.display = 'none'; + screenshotCanvas.style.left = '0'; + screenshotCanvas.style.top = '0'; + screenshotCanvas.style.position = 'absolute'; + + // 通过wrapper的拉伸,应该是可以的拉伸底图,底图是白色的 + // 拉伸的过程中看不出来,等拉伸完统一结算 + // 拉伸下右不需要考虑太多,拉伸上左要让图片进行偏移 + + // 给的默认值,不需要考虑太多 + const canvas = document.createElement("canvas") + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + canvas.width = width; + canvas.height = height; + + canvasWrapper.append(canvas); + wrapper.appendChild(canvasWrapper) + wrapper.appendChild(toolbar) + wrapper.appendChild(screenshotCanvas); + document.body.appendChild(wrapper); + + const screenshotResizer = this.createScreenshotResizers(wrapper); + const screenshotToolbar = this.createScreenshotToolbar(wrapper); + + const rets = { + ...toolbarMenu, canvas, canvasWrapper, ...resizers, toolbar, wrapper, screenshotCanvas, screenshotResizer, screenshotToolbar + } as any; + return rets; + } + static createScreenshotToolbar(parent: HTMLElement) { + const toolbar = document.createElement("div"); + const style = toolbar.style; + style.position = 'absolute'; + style.backgroundColor = 'rgb(229,230,231)' + style.borderRadius = '4px 4px 4px 4px'; + style.height = '24px'; + style.width = '64px'; + style.paddingTop = '4px'; + style.paddingBottom = '4px'; + style.display = 'none'; + const cancelScreenshot = this.appendMenu(toolbar, './assets/cancel.svg', 8, 0); + const confirmScreenshot = this.appendMenu(toolbar, './assets/confirm.svg', 0, 0); + parent.appendChild(toolbar); + return { + toolbar, + screenshot: { + confirm: confirmScreenshot, + cancel: cancelScreenshot + } + }; + } + static createScreenshotResizers(parent: HTMLElement) { + const createResizer = () => { + const resizer = document.createElement("div"); + const style = resizer.style; + style.left = '0'; + style.top = '0'; + style.position = 'absolute'; + style.width = '8px'; + style.height = '8px'; + style.boxSizing = 'border-box'; + style.border = '1px solid #19a918' + style.transform = 'translate(-50%,-50%)'; + style.display = 'none'; + resizer.addEventListener('dragstart', function (event) { + event.preventDefault(); + }) + resizer.draggable = false; + // style.display = 'none' + parent.appendChild(resizer); + return resizer; + } + const northWest = createResizer(); + const north = createResizer(); + const northEast = createResizer(); + const east = createResizer(); + const southEast = createResizer(); + const south = createResizer(); + const southWest = createResizer(); + const west = createResizer(); + + return { + northWest, north, northEast, east, southEast, south, southWest, west + } + } + + // topbar和bottombar都要做固定width,居中 + // 不要考虑其它的,尾部也是一样的 + private static initToolbar(toolbar: HTMLElement): Record { + + toolbar.style.padding = "8px"; + toolbar.style.backgroundColor = "#e5e6e7"; + toolbar.style.borderRadius = "4px 4px 4px 4px"; + toolbar.style.height = "24px"; + toolbar.style.width = "690px"; + toolbar.style.position = "absolute"; + + const ret = {} as any; + + ret.rectangleMenu = this.appendMenu(toolbar, './assets/rect.svg'); + ret.ellipseMenu = this.appendMenu(toolbar, './assets/circle.svg'); + ret.arrowMenu = this.appendMenu(toolbar, './assets/arrow.svg'); + ret.drawMenu = this.appendMenu(toolbar, './assets/draw.svg'); + ret.textMenu = this.appendMenu(toolbar, './assets/text.svg'); + ret.mosaicMenu = this.appendMenu(toolbar, './assets/mosaic.svg'); + + ret.shrinkMenu = this.appendMenu(toolbar, './assets/shrink.svg', 42); + ret.extendMenu = this.appendMenu(toolbar, './assets/extend.svg'); + ret.flipXMenu = this.appendMenu(toolbar, './assets/flipX.svg'); + ret.flipYMenu = this.appendMenu(toolbar, './assets/flipY.svg'); + + + ret.rotateCounterClockwiseMenu = this.appendMenu(toolbar, './assets/rotate.svg'); + ret.rotateCounterClockwiseMenu.style.transform = 'rotateY(180deg)'; + ret.rotateClockwiseMenu = this.appendMenu(toolbar, './assets/rotate.svg'); + ret.cropMenu = this.appendMenu(toolbar, './assets/crop.svg'); + + ret.undoMenu = this.appendMenu(toolbar, './assets/undo.svg', 38); + ret.redoMenu = this.appendMenu(toolbar, './assets/redo.svg'); + ret.resetMenu = this.appendMenu(toolbar, './assets/reset.svg'); + ret.cancaleMenu = this.appendMenu(toolbar, './assets/cancel.svg', 36); + ret.confirmMenu = this.appendMenu(toolbar, './assets/confirm.svg', 0, 0); + return ret; + } + + private static appendMenu(topbar: HTMLElement, url: string, marginLeft = 0, marginRight = 8): HTMLElement { + const menu = document.createElement("div") + menu.style.display = "inline-block"; + menu.style.width = "24px"; + menu.style.height = "24px"; + menu.style.marginRight = marginRight + 'px'; + menu.style.borderRadius = "4px" + menu.style.lineHeight = "1"; + if (marginLeft != 0) { + menu.style.marginLeft = marginLeft + "px" + } + + const icon = document.createElement("i"); + icon.style.display = "block"; + icon.style.width = "24px"; + icon.style.height = "24px"; + icon.style.backgroundSize = "100% 100%"; + icon.style.backgroundRepeat = "no-repeat"; + icon.style.cursor = "pointer"; + icon.style.opacity = "0.8"; + icon.style.backgroundImage = `url('${url}')` + menu.appendChild(icon); + topbar.appendChild(menu); + return menu; + } + + private static initCanvas(dom: HTMLCanvasElement, imageUrl: string, resizer: (canvas: Canvas, width: number, height: number) => void): fabric.Canvas { + + // 随便给个默认值,后面初始化的时候改掉 + const canvas = new Canvas(dom, { + width: this.CANVAS_DEFAULT_WIDTH, height: this.CANVAS_DEFAULT_HEIGHT + }) + + FabricImage.fromURL(imageUrl).then(img => { + // 使用setX和setY + img.setX(0); + img.setY(0); + canvas.backgroundImage = img; + canvas.backgroundColor = '#FFF'; + // 设置完需要渲染一下 + canvas.renderAll(); + const width = img.width, height = img.height; + resizer(canvas, width, height); + }) + + return canvas; + } + + static resizeCanvas(fbCanvas: Canvas, manager: ElementManager, width: number, height: number) { + const dpr = this.dpr; + const wrapper = manager.wrapper; + const canvasWrapper = manager.canvasWrapper; + const canvas = manager.canvas; + + canvasWrapper.style.width = width + 'px'; + canvasWrapper.style.height = height + 'px'; + + // top和left都要好好计算一下 + const rect = wrapper.getBoundingClientRect(); + const wrapperWidth = rect.width; + const wrapperHeight = rect.height; + + let leftOffset = (wrapperWidth - width) / 2; + if (leftOffset <= 20) { + leftOffset = 20; + } + let topOffset = (wrapperHeight - height) / 2; + if (topOffset <= 20) { + topOffset = 20; + } + + canvasWrapper.style.left = leftOffset + 'px'; + canvasWrapper.style.top = topOffset + 'px'; + + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + canvas.width = Math.round(width * dpr); + canvas.height = Math.round(height * dpr); + + fbCanvas.setDimensions({ width, height }) + + manager.fixComponentsPosition(); + wrapper.style.visibility = 'visible'; + } + + private static createCanvasResizer(wrapper: HTMLElement) { + + const squareSize = 12; + + const northResizer = document.createElement('div'); + const northWestResizer = document.createElement('div'); + const westResizer = document.createElement('div'); + const southWestResizer = document.createElement('div'); + const southResizer = document.createElement('div'); + const southEastResizer = document.createElement('div'); + const eastResizer = document.createElement('div'); + const northEastResizer = document.createElement('div'); + + function format(ele: HTMLDivElement) { + ele.style.width = squareSize + 'px'; + ele.style.height = squareSize + 'px'; + ele.style.backgroundColor = 'white'; + ele.style.position = 'absolute' + ele.style.border = 'solid 1px #000'; + ele.style.boxSizing = 'border-box' + ele.draggable = false; + ele.addEventListener('dragstart', function (event) { + event.preventDefault(); + }) + } + + format(northResizer); + format(northWestResizer); + format(westResizer); + format(southWestResizer); + format(southResizer);; + format(southEastResizer); + format(eastResizer); + format(northEastResizer); + + wrapper.appendChild(northResizer); + wrapper.appendChild(northWestResizer); + wrapper.appendChild(westResizer); + wrapper.appendChild(southWestResizer); + wrapper.appendChild(southResizer); + wrapper.appendChild(southEastResizer); + wrapper.appendChild(eastResizer); + wrapper.appendChild(northEastResizer); + + return { + northResizer, northWestResizer, westResizer, southWestResizer, + southResizer, southEastResizer, eastResizer, northEastResizer + } + } +} + +ImageEditorHelper.currentImageEditor = ImageEditorHelper.createImageEditor('/basic.jpg'); \ No newline at end of file diff --git a/src/operator/arrow_operator.ts b/src/operator/arrow_operator.ts new file mode 100644 index 0000000..a102ebb --- /dev/null +++ b/src/operator/arrow_operator.ts @@ -0,0 +1,104 @@ +import { Canvas } from "fabric"; +import ImageEditor from "../image_editor"; +import { DEFAULT_COLOR, DEFAULT_STROKE_WIDTH, ImageEditorOperator, OperatorProps, OperatorType } from "../image_editor_operator"; +import Arrow from "./fabric_arrow"; +import FabricObjectChangeHelper from "./move_helper"; + +export default class ArrowOperator implements ImageEditorOperator, OperatorProps { + + private imageEditor: ImageEditor; + + private canvas: Canvas; + + private start: boolean; + + private current: Arrow | undefined = undefined; + + private startX: number; + + private startY: number; + + private color: string = DEFAULT_COLOR; + + private strokeWidth: number = DEFAULT_STROKE_WIDTH; + + constructor(imageEditor: ImageEditor) { + this.imageEditor = imageEditor; + this.canvas = imageEditor.getCanvas(); + this.start = false; + this.startX = 0; + this.startY = 0; + } + getOperatorSize(): number { + return this.strokeWidth; + } + getOperatorColor(): string { + return this.color; + } + + setOperatorSize(width: number): void { + this.strokeWidth = width; + } + + setOperatorColor(color: string): void { + this.color = color; + } + + handleMouseDown(event: any): void { + let refuse = this.canvas.getActiveObject() != undefined || this.start; + refuse = refuse || this.imageEditor.getOperatorType() != OperatorType.ARROW; + if (refuse) { + return + } + this.start = true; + const canvas = this.canvas; + canvas.requestRenderAll(); + let point = canvas.getScenePoint(event.e); + const points: [number, number, number, number] = [point.x, point.y, point.x, point.y]; + this.startX = point.x; + this.startY = point.y; + const arrow = new Arrow(points, { + strokeWidth: this.strokeWidth, + stroke: this.color, + lockScalingFlip: true + }) + this.current = arrow; + canvas.add(arrow); + } + + handleMouseMove(event: any): void { + if (!this.start) { + return; + } + const pointer = this.canvas.getScenePoint(event.e); + this.current?.set({ + x2: pointer.x, + y2: pointer.y + }) + this.canvas.renderAll(); + } + + handleMouseUp(event: any): void { + if (this.imageEditor.getOperatorType() != OperatorType.ARROW || !this.start) { + return; + } + this.start = false; + const canvas = this.canvas; + const pointer = canvas.getScenePoint(event.e); + const notMeetMin = Math.abs(pointer.x - this.startX) < 8 && Math.abs(pointer.y - this.startY) < 8; + if (notMeetMin && this.current) { + this.canvas.remove(this.current); + } else { + const lastXY = this.current?.getXY(); + const lastSize = { + width: this.current!.width, + height: this.current!.height + } + this.current!.set('lastXY', lastXY); + this.current!.set('lastDim', lastSize); + FabricObjectChangeHelper.listenMove(this.current!, this.imageEditor.getHistory()); + FabricObjectChangeHelper.listenScale(this.current!, this.imageEditor.getHistory()); + this.imageEditor.getHistory().recordCreateAction(this.current!); + } + } +} \ No newline at end of file diff --git a/src/operator/draw_operator.ts b/src/operator/draw_operator.ts new file mode 100644 index 0000000..e8554ec --- /dev/null +++ b/src/operator/draw_operator.ts @@ -0,0 +1,79 @@ +import { BaseBrush, Canvas, PencilBrush, Shadow } from "fabric"; +import OperationHistory from "../history"; +import ImageEditor from "../image_editor"; +import { DEFAULT_COLOR, DEFAULT_STROKE_WIDTH, OperatorProps } from "../image_editor_operator"; +import FabricObjectChangeHelper from "./move_helper"; + +export default class DrawOperator implements OperatorProps { + + private imageEditor: ImageEditor; + + private canvas: Canvas; + + private history: OperationHistory; + + private color: string = DEFAULT_COLOR; + + private strokeWidth: number = DEFAULT_STROKE_WIDTH; + + private recorder: (event: any) => void; + + private brush: BaseBrush | undefined; + + constructor(imageEditor: ImageEditor) { + this.imageEditor = imageEditor; + this.canvas = imageEditor.getCanvas(); + this.history = imageEditor.getHistory(); + this.recorder = this.recordPathCreate.bind(this); + } + getOperatorSize(): number { + return this.strokeWidth; + } + getOperatorColor(): string { + return this.color; + } + + setOperatorSize(width: number): void { + this.strokeWidth = width; + this.brush!.width = width; + } + + setOperatorColor(color: string): void { + this.color = color; + this.brush!.color = color; + } + + recordPathCreate(event: any) { + const path = event.path; + path.hoverCursor = 'default'; + path.lockScalingFlip = true; + this.canvas.renderAll(); + const lastXY = path.getXY(); + const lastScale = { + x: path.scaleX, + y: path.scaleY + } + path.set('lastXY', lastXY); + path.set('lastScale', lastScale); + FabricObjectChangeHelper.listenMove(path, this.imageEditor.getHistory()); + FabricObjectChangeHelper.listenRatioScale(path, this.imageEditor.getHistory()); + this.history.recordCreateAction(path); + } + + startDrawMode(): void { + const canvas = this.canvas; + canvas.isDrawingMode = true; + canvas.freeDrawingBrush = new PencilBrush(canvas); + this.brush = canvas.freeDrawingBrush; + let brush = canvas.freeDrawingBrush; + brush.color = this.color; + brush.width = this.strokeWidth; + brush.shadow = new Shadow({ blur: 2, offsetX: 0, offsetY: 0, color: '#333' }) + this.canvas.on('path:created', this.recorder); + } + + endDrawMode(): void { + this.canvas.isDrawingMode = false; + this.canvas.off('path:created', this.recorder); + } +} \ No newline at end of file diff --git a/src/operator/ellipse_operator.ts b/src/operator/ellipse_operator.ts new file mode 100644 index 0000000..40a291e --- /dev/null +++ b/src/operator/ellipse_operator.ts @@ -0,0 +1,123 @@ +import { Canvas, Ellipse } from "fabric"; +import ImageEditor from "../image_editor"; +import { DEFAULT_COLOR, DEFAULT_STROKE_WIDTH, ImageEditorOperator, OperatorProps, OperatorType } from "../image_editor_operator"; +import FabricObjectChangeHelper from "./move_helper"; + +export default class EllipseOperator implements ImageEditorOperator, OperatorProps { + + private imageEditor: ImageEditor; + + private canvas: Canvas; + + private start: boolean; + + private current: Ellipse | undefined = undefined; + + private startX: number; + + private startY: number; + + private strokeWidth: number = DEFAULT_STROKE_WIDTH; + + private color: string = DEFAULT_COLOR; + + constructor(imageEditor: ImageEditor) { + this.imageEditor = imageEditor; + this.canvas = imageEditor.getCanvas(); + this.start = false; + this.startX = 0; + this.startY = 0; + } + getOperatorSize(): number { + return this.strokeWidth; + } + getOperatorColor(): string { + return this.color; + } + setOperatorSize(width: number): void { + this.strokeWidth = width; + } + setOperatorColor(color: string): void { + this.color = color; + } + + handleMouseDown(event: any): void { + const canvas = this.canvas; + if (canvas.getActiveObject() != undefined) { + return; + } + if (this.imageEditor.getOperatorType() != OperatorType.ELLIPSE) { + return; + } + if (this.start) { + return; + } + this.start = true; + let pointer = canvas.getScenePoint(event.e); + this.startX = pointer.x; + this.startY = pointer.y; + this.current = new Ellipse({ + left: this.startX, + top: this.startY, + rx: 0, + ry: 0, + fill: 'transparent', + stroke: this.color, + strokeWidth: this.strokeWidth, + lockScalingFlip: true + }) + canvas.add(this.current); + } + + handleMouseMove(event: any): void { + if (!this.start) { + return; + } + let pointer = this.canvas.getScenePoint(event.e); + let rx = Math.abs(pointer.x - this.startX) / 2; + let ry = Math.abs(pointer.y - this.startY) / 2; + if (rx > this.strokeWidth / 2) { + rx = rx - this.strokeWidth / 2 + } + if (ry > this.strokeWidth / 2) { + ry = ry - this.strokeWidth / 2 + } + let top = pointer.y < this.startY ? pointer.y : this.startY; + let left = pointer.x < this.startX ? pointer.x : this.startX; + + this.current?.set('rx', rx); + this.current?.set('ry', ry); + this.current?.set('top', top); + this.current?.set('left', left); + + this.canvas.requestRenderAll(); + } + + handleMouseUp(event: any): void { + if (!this.start || this.imageEditor.getOperatorType() != OperatorType.ELLIPSE) { + return + } + this.start = false; + let pointer = this.canvas.getScenePoint(event.e); + if (pointer.x == this.startX || pointer.y == this.startY) { + this.canvas.remove(this.current!); + } else { + const lastXY = this.current?.getXY(); + const lastSize = { + width: this.current!.width, + height: this.current!.height + } + const lastRXY = { + rx: this.current!.rx, + ry: this.current!.ry + } + this.current!.set('lastXY', lastXY); + this.current!.set('lastDim', lastSize); + this.current!.set('lastRXY', lastRXY); + FabricObjectChangeHelper.listenMove(this.current!, this.imageEditor.getHistory()); + FabricObjectChangeHelper.listenEllipseScale(this.current!, this.imageEditor.getHistory()); + this.imageEditor.getHistory().recordCreateAction(this.current!); + } + this.current = undefined; + } +} \ No newline at end of file diff --git a/src/operator/fabric_arrow.ts b/src/operator/fabric_arrow.ts new file mode 100644 index 0000000..c3dac99 --- /dev/null +++ b/src/operator/fabric_arrow.ts @@ -0,0 +1,64 @@ +/* eslint-disable no-param-reassign */ +import { Line } from 'fabric'; + +// 原来的createClass不太好使了,现在改成使用extends +// 由上到下,由左到右 +export default class Arrow extends Line { + + private arrowWidth: number = 4; + + constructor([x1, y1, x2, y2] = [0, 0, 0, 0], options: any = {}) { + super([x1, y1, x2, y2], options); + } + + // 8种情况的分解 是在所难免的 + _render(ctx: CanvasRenderingContext2D): void { + super._render(ctx); + ctx.save(); + + // 角度要重新计算一下,应该根据宽高来搞 + const xDiff = this.x2 - this.x1; + const yDiff = this.y2 - this.y1; + let y = yDiff > 0 ? this.height : -this.height; + let x = xDiff > 0 ? this.width : -this.width; + if (xDiff == 0) { + x = 0; + } + if (yDiff == 0) { + y = 0; + } + const angle = Math.atan2(y, x); + // 画一个三角形,然后将其移动到合适的位置去 + this.translateArrow(ctx); + ctx.rotate(angle); + ctx.beginPath(); + ctx.moveTo(this.arrowWidth * 2, 0); + ctx.lineTo(-this.arrowWidth * 2, this.arrowWidth * 2); + ctx.lineTo(-this.arrowWidth * 2, -this.arrowWidth * 2); + ctx.closePath(); + ctx.fillStyle = (String)(this.stroke); + ctx.fill(); + ctx.restore(); + } + + translateArrow(ctx: CanvasRenderingContext2D) { + const diffX = this.x2 - this.x1, diffY = this.y2 - this.y1; + if (diffX == 0 && diffY > 0) { + ctx.translate(0, this.height / 2); + } else if (diffX == 0 && diffY < 0) { + ctx.translate(0, -this.height / 2); + } else if (diffY == 0 && diffX > 0) { + ctx.translate(this.width / 2, 0); + } else if (diffY == 0 && diffX < 0) { + ctx.translate(-this.width / 2, 0); + } else if (diffX > 0 && diffY > 0) { + ctx.translate(this.width / 2, this.height / 2); + } else if (diffX > 0 && diffY < 0) { + ctx.translate(this.width / 2, -this.height / 2); + } else if (diffX < 0 && diffY > 0) { + ctx.translate(-this.width / 2, this.height / 2); + } else if (diffX < 0 && diffY < 0) { + ctx.translate(-this.width / 2, -this.height / 2); + } + } +} \ No newline at end of file diff --git a/src/operator/mosaic_operator.ts b/src/operator/mosaic_operator.ts new file mode 100644 index 0000000..d70497f --- /dev/null +++ b/src/operator/mosaic_operator.ts @@ -0,0 +1,137 @@ +import { Canvas, PatternBrush, Shadow } from "fabric"; +import ImageEditor from "../image_editor"; +import OperationHistory from "../history"; +import { DEFAULT_COLOR, OperatorProps } from "../image_editor_operator"; + +const blockSize = 5; + +function mosaicify(imageData: any) { + const { data } = imageData; + const iLen = imageData.height; + const jLen = imageData.width; + let index; + let i, _i, _iLen, j, _j, _jLen, r, g, b, a; + for (i = 0; i < iLen; i += blockSize) { + for (j = 0; j < jLen; j += blockSize) { + index = i * 4 * jLen + j * 4; + r = data[index]; + g = data[index + 1]; + b = data[index + 2]; + a = data[index + 3]; + + _iLen = Math.min(i + blockSize, iLen); + _jLen = Math.min(j + blockSize, jLen); + for (_i = i; _i < _iLen; _i++) { + for (_j = j; _j < _jLen; _j++) { + index = _i * 4 * jLen + _j * 4; + data[index] = r; + data[index + 1] = g; + data[index + 2] = b; + data[index + 3] = a; + } + } + } + } +} + +export default class MosaicOperator implements OperatorProps { + + private canvas: Canvas; + + private history: OperationHistory; + + // 10小 20中 40大 + private width: number = 20; + + private mosaicBrush: PatternBrush | undefined; + + private recorder: (event: any) => void; + + constructor(imageEditor: ImageEditor) { + this.canvas = imageEditor.getCanvas(); + this.history = imageEditor.getHistory(); + this.recorder = this.recordPathCreate.bind(this); + } + getOperatorSize(): number { + return this.width; + } + getOperatorColor(): string { + return DEFAULT_COLOR; + } + setOperatorSize(width: number): void { + this.width = width; + this.mosaicBrush!.width = width; + } + + setOperatorColor(): void { + // ignore + } + + recordPathCreate(event: any) { + const path = event.path; + path.selectable = false; + path.evented = false; + path.hoverCursor = 'default'; + path.lockScalingFlip = true + this.canvas.renderAll(); + this.history.recordCreateAction(path); + } + + startMosaicMode() { + const canvas = this.canvas; + canvas.isDrawingMode = true; + const mosaicBrush = new PatternBrush(canvas); + this.mosaicBrush = mosaicBrush; + canvas.freeDrawingBrush = mosaicBrush; + mosaicBrush.width = this.width; + mosaicBrush.shadow = new Shadow({ + blur: 0, + offsetX: 0, + offsetY: 0, + affectStroke: true, + }); + mosaicBrush.getPatternSrc = function () { + // 创立一个暂存 canvas 来绘製要画的图案 + const cropping = { + left: 0, + top: 0, + width: canvas.width, + height: canvas.height, + }; + + const imageCanvas = canvas.toCanvasElement(1, cropping); + const imageCtx = imageCanvas.getContext('2d')!; + const imageData = imageCtx.getImageData( + 0, + 0, + imageCanvas.width, + imageCanvas.height, + ); + mosaicify(imageData); + imageCtx.putImageData(imageData, 0, 0); + + const patternCanvas = document.createElement('canvas'); // 这里的ceateElement一定要使用fabric内置的方法 + const patternCtx = patternCanvas.getContext('2d')!; + patternCanvas.width = canvas.width || 0; + patternCanvas.height = canvas.height || 0; + patternCtx.drawImage( + imageCanvas, + 0, + 0, + imageCanvas.width, + imageCanvas.height, + cropping.left, + cropping.top, + cropping.width, + cropping.height, + ); + return patternCanvas; + }; + this.canvas.on('path:created', this.recorder); + } + + endMosaicMode() { + this.canvas.isDrawingMode = false; + this.canvas.off('path:created', this.recorder); + } +} \ No newline at end of file diff --git a/src/operator/move_helper.ts b/src/operator/move_helper.ts new file mode 100644 index 0000000..da73a24 --- /dev/null +++ b/src/operator/move_helper.ts @@ -0,0 +1,157 @@ +import { Ellipse, FabricObject } from "fabric"; +import OperationHistory from "../history"; + +export default class FabricObjectChangeHelper { + + static listenMove(obj: FabricObject, history: OperationHistory) { + obj.on('moving', () => { + if (!obj.get('movingFlag')) { + obj.set('movingFlag', true); + } + }) + obj.on('mouseup', () => { + if (!obj.get('movingFlag')) { + return; + } + obj.set('movingFlag', undefined); + const pos = obj.get('lastXY'); + obj.set('lastXY', obj.getXY()); + history.recordMoveAction(obj, pos.x, pos.y); + }) + } + + static listenScale(obj: FabricObject, history: OperationHistory) { + obj.on('scaling', () => { + if (!obj.get('scalingFlag')) { + obj.set('scalingFlag', true); + } + + const { scaleX, scaleY } = obj; + // 这个地方还不能四舍五入,在结束的地方四舍五入比较好 + // 四舍五入导致向左上拉的时候,位置会出现偏差 + obj.set({ + width: obj.width * scaleX, + height: obj.height * scaleY, + scaleX: 1, // 重置缩放 + scaleY: 1 + }); + + // 缓存会导致图像不能正确的放缩 + obj.objectCaching = false; + }) + + obj.on('mouseup', () => { + // 还原缓存 + obj.objectCaching = true; + const flag = obj.get('scalingFlag') + if (!flag) { + return + } + obj.set('scalingFlag', undefined); + const dim = obj.get('lastDim'); + const pos = obj.get('lastXY'); + const width = dim.width; + const height = dim.height; + const currWidth = obj.width; + const currHeight = obj.height; + const currDim = { + width: currWidth, + height: currHeight + } + obj.set('lastDim', currDim); + obj.set('lastXY', obj.getXY()); + history.recordScaleAction(obj, width, height, pos.x, pos.y) + }) + } + + static listenEllipseScale(obj: Ellipse, history: OperationHistory) { + obj.on('scaling', () => { + if (!obj.get('scalingFlag')) { + obj.set('scalingFlag', true); + } + + const { scaleX, scaleY } = obj; + const strokeWidth = obj.strokeWidth; + let rx = obj.width * scaleX / 2; + let ry = obj.height * scaleY / 2; + if (rx > strokeWidth / 2) { + rx = rx - strokeWidth / 2; + } + if (ry > strokeWidth / 2) { + ry = ry - strokeWidth / 2; + } + obj.set({ + rx, ry, + width: obj.width * scaleX, + height: obj.height * scaleY, + scaleX: 1, // 重置缩放 + scaleY: 1 + }); + // 缓存会导致图像不能正确的放缩 + obj.objectCaching = false; + }) + + obj.on('mouseup', () => { + // 还原缓存 + obj.objectCaching = true; + const flag = obj.get('scalingFlag') + if (!flag) { + return + } + obj.set('scalingFlag', undefined); + const dim = obj.get('lastDim'); + const pos = obj.get('lastXY'); + const rxy = obj.get('lastRXY'); + console.log(rxy) + const width = dim.width; + const height = dim.height; + const rx = rxy.rx; + const ry = rxy.ry; + const currWidth = obj.width; + const currHeight = obj.height; + const currDim = { + width: currWidth, + height: currHeight + } + const currRXY = { + rx: obj.rx, + ry: obj.ry + } + obj.set('lastDim', currDim); + obj.set('lastXY', obj.getXY()); + obj.set('lastRXY', currRXY) + history.recordEllipseScaleAction(obj, width, height, pos.x, pos.y, rx, ry) + }) + } + + // 框选,椭圆,箭头,都不是等比例缩放 + // 文字、画笔是等比例缩放,要考虑一下等比例缩放的问题 + static listenRatioScale(obj: FabricObject, history: OperationHistory) { + obj.on('scaling', () => { + if (!obj.get('scalingFlag')) { + obj.set('scalingFlag', true); + } + }) + + obj.on('mouseup', () => { + // 还原缓存 + obj.objectCaching = true; + const flag = obj.get('scalingFlag') + if (!flag) { + return + } + obj.set('scalingFlag', undefined); + const scale = obj.get('lastScale'); + const pos = obj.get('lastXY'); + const scaleX = scale.x; + const scaleY = scale.y; + const currScale = { + x: obj.scaleX, + y: obj.scaleY + } + obj.set('lastScale', currScale); + obj.set('lastXY', obj.getXY()); + history.recordRatioScaleAction(obj, scaleX, scaleY, pos.x, pos.y) + }) + } +} \ No newline at end of file diff --git a/src/operator/rect_operator.ts b/src/operator/rect_operator.ts new file mode 100644 index 0000000..fba994c --- /dev/null +++ b/src/operator/rect_operator.ts @@ -0,0 +1,114 @@ +import { Canvas, Rect } from "fabric"; +import ImageEditor from "../image_editor"; +import { DEFAULT_COLOR, DEFAULT_STROKE_WIDTH, ImageEditorOperator, OperatorProps, OperatorType } from "../image_editor_operator"; +import FabricObjectChangeHelper from "./move_helper"; + +export default class RectangleOperator implements ImageEditorOperator, OperatorProps { + + private imageEditor: ImageEditor; + + private canvas: Canvas; + + private start: boolean; + + private startX: number; + + private startY: number; + + private strokeWidth: number = DEFAULT_STROKE_WIDTH; + + private color: string = DEFAULT_COLOR; + + private current: Rect | undefined; + + constructor(imageEditor: ImageEditor) { + this.imageEditor = imageEditor; + this.canvas = imageEditor.getCanvas(); + this.start = false; + this.startX = 0; + this.startY = 0; + } + getOperatorSize(): number { + return this.strokeWidth; + } + + getOperatorColor(): string { + return this.color; + } + + setOperatorSize(width: number): void { + this.strokeWidth = width; + } + + setOperatorColor(color: string): void { + this.color = color; + } + + handleMouseDown(event: any): void { + const canvas = this.canvas; + if (canvas.getActiveObject() != undefined) { + return; + } + if (this.imageEditor.getOperatorType() != OperatorType.RECT) { + return; + } + if (this.start) { + return; + } + this.start = true; + let pointer = canvas.getScenePoint(event.e); + this.startX = pointer.x; + this.startY = pointer.y; + this.current = new Rect({ + left: this.startX, + top: this.startY, + width: 0, + height: 0, + fill: 'transparent', + stroke: this.color, + strokeWidth: this.strokeWidth, + lockScalingFlip: true + }) + canvas.add(this.current); + } + handleMouseMove(event: any): void { + if (!this.start) { + return; + } + let pointer = this.canvas.getScenePoint(event.e); + let width = Math.abs(pointer.x - this.startX); + let height = Math.abs(pointer.y - this.startY); + const left = pointer.x < this.startX ? pointer.x : this.startX; + const top = pointer.y < this.startY ? pointer.y : this.startY; + + this.current?.set('width', Math.round(width)); + this.current?.set('height', Math.round(height)); + this.current?.set('top', Math.round(top)); + this.current?.set('left', Math.round(left)); + this.canvas.requestRenderAll(); + } + + handleMouseUp(event: any): void { + if (!this.start || this.imageEditor.getOperatorType() != OperatorType.RECT) { + return; + } + this.start = false; + let pointer = this.canvas.getScenePoint(event.e); + let width = Math.abs(pointer.x - this.startX); + let height = Math.abs(pointer.y - this.startY); + if (width <= 0 || height <= 0) { + this.canvas.remove(this.current!); + } else { + const lastXY = this.current?.getXY(); + const lastSize = { + width: this.current!.width, + height: this.current!.height + } + this.current!.set('lastXY', lastXY); + this.current!.set('lastDim', lastSize); + FabricObjectChangeHelper.listenMove(this.current!, this.imageEditor.getHistory()); + FabricObjectChangeHelper.listenScale(this.current!, this.imageEditor.getHistory()); + this.imageEditor.getHistory().recordCreateAction(this.current!); + } + } +} \ No newline at end of file diff --git a/src/operator/text_operator.ts b/src/operator/text_operator.ts new file mode 100644 index 0000000..c601c25 --- /dev/null +++ b/src/operator/text_operator.ts @@ -0,0 +1,118 @@ +import { Canvas, IText } from "fabric"; +import ImageEditor from "../image_editor"; +import { DEFAULT_COLOR, ImageEditorOperator, OperatorProps, OperatorType } from "../image_editor_operator"; +import FabricObjectChangeHelper from "./move_helper"; + +export default class TextOperator implements ImageEditorOperator, OperatorProps { + + private imageEditor: ImageEditor; + + private canvas: Canvas; + + private start: boolean = false; + + private startX: number; + + private startY: number; + + private allowCreate: boolean = true; + + private fontSize: number = 20; + + private color: string = DEFAULT_COLOR; + + constructor(imageEditor: ImageEditor) { + this.imageEditor = imageEditor; + this.canvas = imageEditor.getCanvas(); + this.startX = 0; + this.startY = 0; + } + + getOperatorSize(): number { + return this.fontSize; + } + + getOperatorColor(): string { + return this.color; + } + + setOperatorSize(fontSize: number): void { + this.fontSize = fontSize; + } + + setOperatorColor(color: string): void { + this.color = color; + } + + handleMouseDownBefore(): void { + if (this.imageEditor.getOperatorType() != OperatorType.TEXT) { + return + } + if (this.canvas.getActiveObject()) { + this.allowCreate = false; + } else { + this.allowCreate = true; + } + } + + handleMouseDown(event: any): void { + if (!this.allowCreate) { + return; + } + const canvas = this.canvas; + if (canvas.getActiveObject() || this.imageEditor.getOperatorType() != OperatorType.TEXT) { + return; + } + + const pointer = canvas.getScenePoint(event.e); + this.startX = pointer.x; + this.startY = pointer.y; + this.start = true; + } + + handleMouseUp(event: any): void { + if (!this.allowCreate) { + return; + } + if (!this.start || this.imageEditor.getOperatorType() != OperatorType.TEXT) { + return + } + this.start = false; + const canvas = this.canvas; + const pointer = canvas.getScenePoint(event.e); + const width = Math.abs(pointer.x - this.startX); + const height = Math.abs(pointer.y - this.startY); + + if (width * width + height * height > 100) { + return; + } + + const text = new IText('请输入内容', { + left: pointer.x, + top: pointer.y, + fontSize: this.fontSize, + fill: this.color, + lockScalingFlip: true + } as any); + + text.setControlVisible('mt', false); + text.setControlVisible('mb', false); + text.setControlVisible('ml', false); + text.setControlVisible('mr', false); + + canvas.add(text); + canvas.setActiveObject(text); + canvas.renderAll(); + + const lastXY = text.getXY(); + const lastScale = { + x: text.scaleX, + y: text.scaleY + } + text.set('lastXY', lastXY); + text.set('lastScale', lastScale); + FabricObjectChangeHelper.listenMove(text, this.imageEditor.getHistory()); + FabricObjectChangeHelper.listenRatioScale(text, this.imageEditor.getHistory()); + this.imageEditor.getHistory().recordCreateAction(text); + } +} \ No newline at end of file diff --git a/src/screenshoter.ts b/src/screenshoter.ts new file mode 100644 index 0000000..9758fa4 --- /dev/null +++ b/src/screenshoter.ts @@ -0,0 +1,619 @@ +import { Point } from "fabric"; +import ElementManager, { pxielToNumber } from "./element_manager"; +import ImageEditor from "./image_editor"; + +const DEFAULT_MOUSE_DOWN_FUNC = (_e: MouseEvent) => { }; + +export class Screenshoter { + + private mouseMoving = DEFAULT_MOUSE_DOWN_FUNC; + + private mouseUp = DEFAULT_MOUSE_DOWN_FUNC; + + private resizerPosX = 0; + + private resizerPosY = 0; + + private startX = 0; + + private startY = 0; + + private movingX = 0; + + private movingY = 0; + + private width = 0; + + private height = 0; + + private maxLeft = 0; + + private minLeft = 0; + + private maxTop = 0; + + private minTop = 0; + + // 正在激活的 + private activeResizer = 'none'; + + private mask?: HTMLCanvasElement; + + private maskLeft = 0; + + private maskTop = 0; + + private fabricWrapperEl?: HTMLDivElement; + + private imageEditor?: ImageEditor; + + private elementManager?: ElementManager; + + private clipArea = { startX: 0, startY: 0, width: 0, height: 0 } + + private dragger = { + isClipAreaInDrag: false, + startX: 0, + startY: 0, + width: 0, + height: 0, + // 记录鼠标一开始落在的位置 + pointerDownX: 0, + pointerDownY: 0, + + // 做临时变量用,拖拽结束的时候需要用到 + currentX: 0, + currentY: 0, + } + + private dragRecord: Record = { + northWestTop: 0, + northWestLeft: 0, + northTop: 0, + northLeft: 0, + northEastTop: 0, + northEastLeft: 0, + eastTop: 0, + eastLeft: 0, + southTop: 0, + southLeft: 0, + southWestTop: 0, + southWestLeft: 0, + westTop: 0, + westLeft: 0 + } + + private cursorInClipArea = false; + + private screenshotResizer: { + northWest: HTMLDivElement, + north: HTMLDivElement, + northEast: HTMLDivElement, + east: HTMLDivElement, + southEast: HTMLDivElement, + south: HTMLDivElement, + southWest: HTMLDivElement, + west: HTMLDivElement + } | undefined; + + private toolbar: HTMLDivElement | undefined; + private confirm: HTMLDivElement | undefined; + private cancel: HTMLDivElement | undefined; + + private confirmFunc = () => { }; + private cancelFunc = () => { }; + + private mouseDownNorthWest = DEFAULT_MOUSE_DOWN_FUNC; + private mouseDownNorth = DEFAULT_MOUSE_DOWN_FUNC; + private mouseDownNorthEast = DEFAULT_MOUSE_DOWN_FUNC; + private mouseDownEast = DEFAULT_MOUSE_DOWN_FUNC; + private mouseDownSouthEast = DEFAULT_MOUSE_DOWN_FUNC; + private mosueDownSouth = DEFAULT_MOUSE_DOWN_FUNC; + private mouseDownSouthWest = DEFAULT_MOUSE_DOWN_FUNC; + private mouseDownWest = DEFAULT_MOUSE_DOWN_FUNC; + + private canvasMouseDownFunc = DEFAULT_MOUSE_DOWN_FUNC; + private canvasMouseMoveFunc = DEFAULT_MOUSE_DOWN_FUNC; + private canvasMouseUpFunc = DEFAULT_MOUSE_DOWN_FUNC; + + init(imageEditor: ImageEditor, manager: ElementManager) { + this.elementManager = manager; + this.imageEditor = imageEditor; + this.fabricWrapperEl = manager.getFabricWrapper()!; + this.mask = manager.getScreenshotCanvas(); + this.screenshotResizer = manager.getScreenshotResizers(); + this.toolbar = manager.getScreenshotToolbar(); + this.confirm = manager.getScreenshotConfirmButton(); + this.cancel = manager.getScreenshotCancelButton(); + + const that = this; + + const recordResizer = (name: string, style: CSSStyleDeclaration, e: MouseEvent) => { + that.activeResizer = name; + that.startX = e.pageX; + that.startY = e.pageY; + that.resizerPosX = pxielToNumber(style.left); + that.resizerPosY = pxielToNumber(style.top); + } + + const resizer = that.screenshotResizer!; + + that.mouseDownNorthWest = (e: MouseEvent) => { recordResizer('northwest', resizer.northWest.style, e) } + this.screenshotResizer.northWest.addEventListener('pointerdown', this.mouseDownNorthWest); + + that.mouseDownNorth = (e: MouseEvent) => { recordResizer('north', resizer.north.style, e) } + this.screenshotResizer.north.addEventListener('pointerdown', this.mouseDownNorth); + + that.mouseDownNorthEast = (e: MouseEvent) => { recordResizer('northeast', resizer.northEast.style, e) } + this.screenshotResizer.northEast.addEventListener('pointerdown', this.mouseDownNorthEast); + + that.mouseDownEast = (e: MouseEvent) => { recordResizer('east', resizer.east.style, e) } + this.screenshotResizer.east.addEventListener('pointerdown', this.mouseDownEast); + + that.mouseDownSouthEast = (e: MouseEvent) => { recordResizer('southeast', resizer.southEast.style, e) } + this.screenshotResizer.southEast.addEventListener('pointerdown', this.mouseDownSouthEast); + + that.mosueDownSouth = (e: MouseEvent) => { recordResizer('south', resizer.south.style, e) } + this.screenshotResizer.south.addEventListener('pointerdown', this.mosueDownSouth); + + that.mouseDownSouthWest = (e: MouseEvent) => { recordResizer('southwest', resizer.southWest.style, e) } + this.screenshotResizer.southWest.addEventListener('pointerdown', this.mouseDownSouthWest); + + that.mouseDownWest = (e: MouseEvent) => { recordResizer('west', resizer.west.style, e) } + this.screenshotResizer.west.addEventListener('pointerdown', this.mouseDownWest); + + this.cancel.removeEventListener('click', this.cancelFunc); + this.confirm.removeEventListener('click', this.confirmFunc); + + this.cancelFunc = this.cancelScreenshot.bind(this); + this.confirmFunc = this.confirmScreenshot.bind(this); + + this.cancel.addEventListener('click', this.cancelFunc); + this.confirm.addEventListener('click', this.confirmFunc); + } + + handleDragArea() { + + const canvas = this.mask!; + + canvas.removeEventListener('mousemove', this.canvasMouseMoveFunc); + canvas.removeEventListener('mousedown', this.canvasMouseDownFunc); + document.removeEventListener('mouseup', this.canvasMouseUpFunc); + + this.canvasMouseMoveFunc = (event: MouseEvent) => { + + const clipArea = this.clipArea; + + const xRange = [clipArea.startX, clipArea.startX + clipArea.width]; + const yRange = [clipArea.startY, clipArea.startY + clipArea.height]; + + const currentX = Math.round(event.pageX - this.maskLeft); + const currentY = Math.round(event.pageY - this.maskTop); + + const xInRange = currentX >= xRange[0] && currentX <= xRange[1]; + const yInRange = currentY >= yRange[0] && currentY <= yRange[1]; + + const currentCursor = canvas.style.cursor; + + this.cursorInClipArea = xInRange && yInRange; + + if (xInRange && yInRange && currentCursor != 'move') { + canvas.style.cursor = 'move'; + } else if ((!xInRange || !yInRange) && currentCursor != 'default' && !this.dragger.isClipAreaInDrag) { + canvas.style.cursor = 'default'; + } + + if (this.dragger.isClipAreaInDrag) { + const x = event.pageX; + const y = event.pageY; + + let changeX = x - this.dragger.pointerDownX; + let changeY = y - this.dragger.pointerDownY; + + if (changeX + clipArea.startX < 0) { + changeX = -clipArea.startX; + } else if (clipArea.startX + changeX + clipArea.width > this.width) { + changeX = this.width - clipArea.width - clipArea.startX; + } + + if (changeY + clipArea.startY < 0) { + changeY = -clipArea.startY; + } else if (clipArea.startY + changeY + clipArea.height > this.height) { + changeY = this.height - clipArea.height - clipArea.startY; + } + + this.transferClipArea(changeX, changeY); + + this.adjustToolbarPosition(); + } + } + + this.canvasMouseDownFunc = (event: MouseEvent) => { + if (this.cursorInClipArea === false) { + return; + } + + this.dragger.isClipAreaInDrag = true; + this.dragger.pointerDownX = event.pageX; + this.dragger.pointerDownY = event.pageY; + + const resizers = this.screenshotResizer! + Object.entries(resizers).forEach((value) => { + const eleName = value[0]; + const ele = value[1]; + + this.dragRecord[eleName + 'Left'] = pxielToNumber(ele.style.left); + this.dragRecord[eleName + 'Top'] = pxielToNumber(ele.style.top); + }) + + this.dragger.height = this.clipArea.height; + this.dragger.width = this.clipArea.width; + this.dragger.startX = this.clipArea.startX; + this.dragger.startY = this.clipArea.startY; + } + + this.canvasMouseUpFunc = (_event: MouseEvent) => { + console.log(this.dragger.isClipAreaInDrag); + if (!this.dragger.isClipAreaInDrag) { + return; + } + this.dragger.isClipAreaInDrag = false; + this.clipArea.startX = this.dragger.currentX; + this.clipArea.startY = this.dragger.currentY; + } + + document.addEventListener('mousemove', this.canvasMouseMoveFunc) + canvas.addEventListener('mousedown', this.canvasMouseDownFunc) + document.addEventListener('mouseup', this.canvasMouseUpFunc); + } + + transferClipArea(changeX: number, changeY: number) { + const resizers = this.screenshotResizer! + Object.entries(resizers).forEach((value) => { + const eleName = value[0]; + const left = this.dragRecord[eleName + 'Left']; + const top = this.dragRecord[eleName + 'Top']; + value[1].style.left = left + changeX + 'px'; + value[1].style.top = top + changeY + 'px'; + }) + + const startX = this.dragger.startX + changeX; + const startY = this.dragger.startY + changeY; + const width = this.dragger.width; + const height = this.dragger.height; + + const context = this.mask!.getContext('2d')!; + context.clearRect(0, 0, this.width, this.height); + context.fillStyle = 'rgba(0,0,0,0.4)'; + context.fillRect(0, 0, this.width, this.height); + + context.clearRect(startX, startY, width, height); + + this.dragger.currentX = startX; + this.dragger.currentY = startY; + } + + updateClipArea() { + + } + + getClipAreaRect() { + const resizer = this.screenshotResizer!; + const neTop = pxielToNumber(resizer.northEast.style.top); + const nwTop = pxielToNumber(resizer.northWest.style.top); + const swTop = pxielToNumber(resizer.southWest.style.top); + const seTop = pxielToNumber(resizer.southEast.style.top); + + const nwLeft = pxielToNumber(resizer.northWest.style.left) + const neLeft = pxielToNumber(resizer.northEast.style.left); + const swLeft = pxielToNumber(resizer.southWest.style.left); + const seLeft = pxielToNumber(resizer.southEast.style.left); + + const maxTop = Math.max(neTop, nwTop, swTop, seTop); + const minTop = Math.min(neTop, nwTop, swTop, seTop); + const maxLeft = Math.max(nwLeft, neLeft, swLeft, seLeft); + const minLeft = Math.min(nwLeft, neLeft, swLeft, seLeft); + + // 超出的部分,实际上是不显式的 + const canvasLeft = Math.abs(pxielToNumber(this.fabricWrapperEl!.style.left)); + const canvasTop = Math.abs(pxielToNumber(this.fabricWrapperEl!.style.top)); + + const maskLeft = Math.abs(pxielToNumber(this.mask!.style.left)) + const maskTop = Math.abs(pxielToNumber(this.mask!.style.top)) + + const top = minTop - maskTop + canvasTop; + const left = minLeft - maskLeft + canvasLeft; + const width = maxLeft - minLeft; + const height = maxTop - minTop; + return { top, left, width, height } + } + + // TODO 结束的时候要把所有的事件全部都干掉 + async confirmScreenshot() { + + const storeState = this.imageEditor!.storeCanvasState(); + + const { top, left, width, height } = this.getClipAreaRect(); + + const start = new Point(left, top); + const end = new Point(left + width, height + top); + const image = this.imageEditor!.getAreaImageInfo(start, end); + + this.handleScreenshotFinished(); + + await this.imageEditor!.renderToCanvas(image); + const cropState = this.imageEditor!.storeCanvasState(); + this.imageEditor!.getHistory().recordCropAction(storeState.wrapper, storeState.canvas, cropState.wrapper, cropState.canvas); + } + + cancelScreenshot() { + this.handleScreenshotFinished(); + } + + handleScreenshotFinished() { + this.toolbar!.style.display = 'none'; + const resizer = this.screenshotResizer!; + Object.entries(resizer).forEach(([_k, v]) => { + v.style.display = 'none'; + }) + this.activeResizer = 'none'; + this.mask!.style.display = 'none'; + this.elementManager!.showResizer(); + this.elementManager?.showToolbar(); + document.removeEventListener('pointermove', this.mouseMoving); + document.removeEventListener('pointerup', this.mouseUp); + document.removeEventListener('mouseup', this.canvasMouseUpFunc); + } + + adjustToolbarPosition() { + const toolbar = this.toolbar!; + const resizer = this.screenshotResizer!; + + if (toolbar.style.display == 'none') { + toolbar.style.display = 'block'; + } + const neTop = pxielToNumber(resizer.northEast.style.top); + const nwTop = pxielToNumber(resizer.northWest.style.top); + const swTop = pxielToNumber(resizer.southWest.style.top); + const seTop = pxielToNumber(resizer.southEast.style.top); + + const nwLeft = pxielToNumber(resizer.northWest.style.left) + const neLeft = pxielToNumber(resizer.northEast.style.left); + const swLeft = pxielToNumber(resizer.southWest.style.left); + const seLeft = pxielToNumber(resizer.southEast.style.left); + + const maxTop = Math.max(neTop, nwTop, swTop, seTop); + const maxLeft = Math.max(nwLeft, neLeft, swLeft, seLeft); + + // 64为toolbar的宽度 + toolbar.style.left = (maxLeft - 64) + 'px'; + // 加10为了防止工具条太高 + toolbar.style.top = maxTop + 10 + 'px'; + } + + resizeArea() { + const resizer = this.screenshotResizer!; + const changeX = this.movingX - this.startX; + const changeY = this.movingY - this.startY; + + let newLeft = this.resizerPosX + changeX; + let newTop = this.resizerPosY + changeY; + + if (newLeft < this.minLeft) { + newLeft = this.minLeft; + } else if (newLeft > this.maxLeft) { + newLeft = this.maxLeft; + } + + if (newTop < this.minTop) { + newTop = this.minTop; + } else if (newTop > this.maxTop) { + newTop = this.maxTop; + } + + + if (this.activeResizer == 'northwest') { + resizer.northWest.style.left = newLeft + 'px'; + resizer.northWest.style.top = newTop + 'px'; + + resizer.west.style.left = newLeft + 'px'; + resizer.north.style.top = newTop + 'px'; + + resizer.southWest.style.left = newLeft + 'px'; + resizer.northEast.style.top = newTop + 'px'; + } else if (this.activeResizer == 'north') { + + resizer.north.style.top = newTop + 'px'; + resizer.northEast.style.top = newTop + 'px'; + resizer.northWest.style.top = newTop + 'px'; + + } else if (this.activeResizer == 'northeast') { + resizer.northEast.style.left = newLeft + 'px'; + resizer.northEast.style.top = newTop + 'px'; + + resizer.north.style.top = newTop + 'px'; + resizer.northWest.style.top = newTop + 'px'; + + resizer.east.style.left = newLeft + 'px'; + resizer.southEast.style.left = newLeft + 'px'; + + } else if (this.activeResizer == 'east') { + + resizer.east.style.left = newLeft + 'px'; + resizer.northEast.style.left = newLeft + 'px'; + resizer.southEast.style.left = newLeft + 'px'; + + } else if (this.activeResizer == 'southeast') { + resizer.southEast.style.left = newLeft + 'px'; + resizer.southEast.style.top = newTop + 'px'; + + resizer.east.style.left = newLeft + 'px'; + resizer.south.style.top = newTop + 'px'; + + resizer.northEast.style.left = newLeft + 'px'; + resizer.southWest.style.top = newTop + 'px'; + } else if (this.activeResizer == 'south') { + + resizer.south.style.top = newTop + 'px'; + resizer.southEast.style.top = newTop + 'px'; + resizer.southWest.style.top = newTop + 'px'; + + } else if (this.activeResizer == 'southwest') { + resizer.southWest.style.left = newLeft + 'px'; + resizer.southWest.style.top = newTop + 'px'; + + resizer.west.style.left = newLeft + 'px'; + resizer.south.style.top = newTop + 'px'; + + resizer.northWest.style.left = newLeft + 'px'; + resizer.southEast.style.top = newTop + 'px'; + + } else if (this.activeResizer == 'west') { + resizer.west.style.left = newLeft + 'px'; + resizer.southWest.style.left = newLeft + 'px'; + resizer.northWest.style.left = newLeft + 'px'; + } + + // 调整时,中点位置要重新计算 + this.formatCenterResizer(); + + const canvasLeft = pxielToNumber(this.mask!.style.left); + const canvasTop = pxielToNumber(this.mask!.style.top); + + const northWestLeft = pxielToNumber(resizer.northWest.style.left); + const northWestTop = pxielToNumber(resizer.northWest.style.top); + + const southEastLeft = pxielToNumber(resizer.southEast.style.left); + const southEastTop = pxielToNumber(resizer.southEast.style.top); + + const width = Math.round(southEastLeft - northWestLeft); + const height = Math.round(southEastTop - northWestTop); + + const context = this.mask!.getContext('2d')!; + context.clearRect(0, 0, this.width, this.height); + context.fillStyle = 'rgba(0,0,0,0.4)'; + context.fillRect(0, 0, this.width, this.height); + + // 然后将中间的设置为空白的,完全学习微信 + const startX = northWestLeft - canvasLeft; + const startY = northWestTop - canvasTop; + + context.clearRect(startX, startY, width, height); + this.clipArea.startX = startX; + this.clipArea.startY = startY; + this.clipArea.width = width; + this.clipArea.height = height; + this.adjustToolbarPosition(); + } + + + formatCenterResizer() { + const resizer = this.screenshotResizer!; + const nwLeft = pxielToNumber(resizer.northWest.style.left) + const nwTop = pxielToNumber(resizer.northWest.style.top); + const neLeft = pxielToNumber(resizer.northEast.style.left); + const swTop = pxielToNumber(resizer.southWest.style.top); + + const verticalLeft = (nwLeft + neLeft) / 2; + const horizontalTop = (nwTop + swTop) / 2; + + resizer.north.style.left = verticalLeft + 'px'; + resizer.south.style.left = verticalLeft + 'px'; + + resizer.west.style.top = horizontalTop + 'px'; + resizer.east.style.top = horizontalTop + 'px'; + } + + initMask(left: number, top: number, width: number, height: number) { + this.width = width; + this.height = height; + const mask = this.mask!; + mask.style.left = left + 'px'; + mask.style.top = top + 'px'; + mask.style.width = this.width + 'px'; + mask.style.height = this.height + 'px'; + mask.style.display = 'block'; + mask.width = this.width; + mask.height = this.height; + + this.maskLeft = left; + this.maskTop = top; + + this.minLeft = left; + this.maxLeft = this.minLeft + width; + this.minTop = top; + this.maxTop = this.minTop + height; + + const context = mask.getContext('2d')!; + context.fillStyle = 'rgba(0,0,0,0.4)'; + context.fillRect(0, 0, this.width, this.height); + + const cropLeft = Math.round(this.width * 0.2); + const cropTop = Math.round(this.height * 0.2); + + // 然后将中间的设置为空白的,完全学习微信 + const startX = cropLeft; + const startY = cropTop; + const cropWidth = Math.round(this.width * 0.6); + const cropHeight = Math.round(this.height * 0.6); + + context.clearRect(startX, startY, cropWidth, cropHeight); + + this.clipArea = { + startX, startY, + width: cropWidth, + height: cropHeight + } + + const resizer = this.screenshotResizer!; + resizer.northWest.style.left = left + cropLeft + 'px'; + resizer.northWest.style.top = top + + cropTop + 'px'; + + resizer.north.style.left = left + cropLeft + Math.round(cropWidth / 2) + 'px'; + resizer.north.style.top = top + + cropTop + 'px'; + + resizer.northEast.style.left = left + cropLeft + cropWidth + 'px'; + resizer.northEast.style.top = top + + cropTop + 'px'; + + resizer.east.style.left = left + cropLeft + cropWidth + 'px'; + resizer.east.style.top = top + + cropTop + + Math.round(cropHeight / 2) + 'px'; + + resizer.southEast.style.left = left + cropLeft + cropWidth + 'px'; + resizer.southEast.style.top = top + + cropTop + cropHeight + 'px'; + + resizer.south.style.left = left + cropLeft + Math.round(cropWidth / 2) + 'px'; + resizer.south.style.top = top + + cropTop + + cropHeight + 'px'; + + resizer.southWest.style.left = left + cropLeft + 'px'; + resizer.southWest.style.top = top + + cropTop + cropHeight + 'px'; + + resizer.west.style.left = left + cropLeft + 'px'; + resizer.west.style.top = top + + cropTop + Math.round(cropHeight / 2) + 'px'; + Object.entries(resizer).forEach(([_k, v]) => { + v.style.display = 'block'; + }) + + document.removeEventListener('pointermove', this.mouseMoving); + document.removeEventListener('pointerup', this.mouseUp); + + this.mouseMoving = (e: MouseEvent) => { + if (this.activeResizer != 'none') { + this.movingX = e.pageX; + this.movingY = e.pageY; + this.resizeArea(); + } + }; + document.addEventListener('pointermove', this.mouseMoving); + + this.mouseUp = () => { + this.activeResizer = 'none'; + } + + document.addEventListener('pointerup', this.mouseUp); + this.handleDragArea(); + + this.elementManager!.hideResizer(); + + this.adjustToolbarPosition(); + } +} \ No newline at end of file diff --git a/src/shortcut_manager.ts b/src/shortcut_manager.ts new file mode 100644 index 0000000..85218ea --- /dev/null +++ b/src/shortcut_manager.ts @@ -0,0 +1,39 @@ +import ImageEditor from "./image_editor"; + +export class ImageEditorShortcutManager { + + protected imageEditor: ImageEditor; + + protected keyboardEventHandler: (event: KeyboardEvent) => void; + + constructor(imageEditor: ImageEditor) { + this.imageEditor = imageEditor; + this.keyboardEventHandler = this.handleKeyboardEvent.bind(this); + document.addEventListener('keydown', this.keyboardEventHandler) + } + + handleKeyboardEvent(event: KeyboardEvent) { + const noControlKey = !event.ctrlKey && !event.shiftKey && !event.altKey + const ctrlOnly = event.ctrlKey && !event.shiftKey && !event.altKey; + if (event.key === 'Delete' && noControlKey) { + this.imageEditor.removeActiveObjects(); + } else if (ctrlOnly) { + console.log(this.imageEditor) + switch (event.key) { + case 'z': + this.imageEditor!.getHistory().undo(); + break; + case 'y': + this.imageEditor!.getHistory().redo(); + break; + } + } + } + + destroy() { + document.removeEventListener('keydown', this.keyboardEventHandler); + } + + + +} \ No newline at end of file diff --git a/src/uitls.ts b/src/uitls.ts new file mode 100644 index 0000000..09335fc --- /dev/null +++ b/src/uitls.ts @@ -0,0 +1,7 @@ +export function getAbsolutePosition(element: any) { + const rect = element.getBoundingClientRect(); + // 结合页面的滚动距离来计算相对于整个文档的绝对位置 + const x = rect.left + window.scrollX; + const y = rect.top + window.scrollY; + return { x, y }; +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..f35d222 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "Bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": false, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..7cce0d6 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig } from 'vite' +import { viteStaticCopy } from 'vite-plugin-static-copy' + + +export default defineConfig({ + plugins: [ + viteStaticCopy({ + targets: [ + { src: 'src/assets/*', dest: 'assets/' }, // 将 src/assets 下的文件复制到 dist/assets + { src: 'basic.jpg', dest: '.' }, // 将 src/assets 下的文件复制到 dist/assets + ] + }) + ], + build: { + } +}) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..326adb1 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1190 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@mapbox/node-pre-gyp@^1.0.0": + version "1.0.11" + resolved "https://registry.npmmirror.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz" + integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@rollup/rollup-linux-x64-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz" + integrity sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A== + +"@rollup/rollup-linux-x64-musl@4.24.0": + version "4.24.0" + resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz" + integrity sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ== + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@types/estree@1.0.6": + version "1.0.6" + resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + +"@types/fs-extra@^8.0.1": + version "8.1.5" + resolved "https://registry.npmmirror.com/@types/fs-extra/-/fs-extra-8.1.5.tgz" + integrity sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ== + dependencies: + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/node@*": + version "22.7.8" + resolved "https://registry.npmmirror.com/@types/node/-/node-22.7.8.tgz" + integrity sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg== + dependencies: + undici-types "~6.19.2" + +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +abbrev@1: + version "1.1.1" + resolved "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +acorn-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-7.0.1.tgz" + integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== + dependencies: + acorn "^8.1.0" + acorn-walk "^8.0.2" + +acorn-walk@^8.0.2: + version "8.3.4" + resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.4.tgz" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.1.0, acorn@^8.11.0, acorn@^8.8.1: + version "8.12.1" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +canvas@^2.11.2: + version "2.11.2" + resolved "https://registry.npmmirror.com/canvas/-/canvas-2.11.2.tgz" + integrity sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.0" + nan "^2.17.0" + simple-get "^3.0.3" + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-support/-/color-support-1.1.3.tgz" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colorette@^1.1.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.npmmirror.com/cssom/-/cssom-0.5.0.tgz" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +data-urls@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/data-urls/-/data-urls-3.0.2.tgz" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + +debug@4: + version "4.3.7" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +decimal.js@^10.4.2: + version "10.4.3" + resolved "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.npmmirror.com/decompress-response/-/decompress-response-4.2.1.tgz" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== + dependencies: + mimic-response "^2.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +detect-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.3.tgz" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/domexception/-/domexception-4.0.0.tgz" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/escodegen/-/escodegen-2.1.0.tgz" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fabric@^6.4.3: + version "6.4.3" + resolved "https://registry.npmmirror.com/fabric/-/fabric-6.4.3.tgz" + integrity sha512-z/bJna3kWOBv+wmvVK4XxUQgCXLGb//VaSr5xPFIP708obH7472uuVsWbXam+xq+y21bLBtr4OHO1HuJyYi4FQ== + optionalDependencies: + canvas "^2.11.2" + jsdom "^20.0.1" + +fast-glob@^3.0.3, fast-glob@^3.2.11, fast-glob@^3.2.7: + version "3.3.2" + resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs-extra@^11.1.0: + version "11.2.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.2.0.tgz" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/gauge/-/gauge-3.0.2.tgz" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globby@10.0.1: + version "10.0.1" + resolved "https://registry.npmmirror.com/globby/-/globby-10.0.1.tgz" + integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ignore@^5.1.1: + version "5.3.2" + resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.3, inherits@2: + version "2.0.4" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz" + integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +jsdom@^20.0.1: + version "20.0.3" + resolved "https://registry.npmmirror.com/jsdom/-/jsdom-20.0.3.tgz" + integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== + dependencies: + abab "^2.0.6" + acorn "^8.8.1" + acorn-globals "^7.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.2" + decimal.js "^10.4.2" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.2" + parse5 "^7.1.1" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^4.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.11.0" + xml-name-validator "^4.0.0" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.8" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-2.1.0.tgz" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nan@^2.17.0: + version "2.22.0" + resolved "https://registry.npmmirror.com/nan/-/nan-2.22.0.tgz" + integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/npmlog/-/npmlog-5.0.1.tgz" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +nwsapi@^2.2.2: + version "2.2.13" + resolved "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.13.tgz" + integrity sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +once@^1.3.0, once@^1.3.1: + version "1.4.0" + resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +parse5@^7.1.1: + version "7.1.2" + resolved "https://registry.npmmirror.com/parse5/-/parse5-7.1.2.tgz" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0, picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.0.tgz" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.47.tgz" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.0" + source-map-js "^1.2.1" + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@^2.1.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup-plugin-copy@^3.5.0: + version "3.5.0" + resolved "https://registry.npmmirror.com/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz" + integrity sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA== + dependencies: + "@types/fs-extra" "^8.0.1" + colorette "^1.1.0" + fs-extra "^8.1.0" + globby "10.0.1" + is-plain-object "^3.0.0" + +rollup@^4.20.0: + version "4.24.0" + resolved "https://registry.npmmirror.com/rollup/-/rollup-4.24.0.tgz" + integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg== + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.24.0" + "@rollup/rollup-android-arm64" "4.24.0" + "@rollup/rollup-darwin-arm64" "4.24.0" + "@rollup/rollup-darwin-x64" "4.24.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.24.0" + "@rollup/rollup-linux-arm-musleabihf" "4.24.0" + "@rollup/rollup-linux-arm64-gnu" "4.24.0" + "@rollup/rollup-linux-arm64-musl" "4.24.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0" + "@rollup/rollup-linux-riscv64-gnu" "4.24.0" + "@rollup/rollup-linux-s390x-gnu" "4.24.0" + "@rollup/rollup-linux-x64-gnu" "4.24.0" + "@rollup/rollup-linux-x64-musl" "4.24.0" + "@rollup/rollup-win32-arm64-msvc" "4.24.0" + "@rollup/rollup-win32-ia32-msvc" "4.24.0" + "@rollup/rollup-win32-x64-msvc" "4.24.0" + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/saxes/-/saxes-6.0.0.tgz" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + +semver@^6.0.0: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.5: + version "7.6.3" + resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +signal-exit@^3.0.0: + version "3.0.7" + resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^3.0.3: + version "3.1.1" + resolved "https://registry.npmmirror.com/simple-get/-/simple-get-3.1.1.tgz" + integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== + dependencies: + decompress-response "^4.2.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tar@^6.1.11: + version "6.2.1" + resolved "https://registry.npmmirror.com/tar/-/tar-6.2.1.tgz" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tough-cookie@^4.1.2: + version "4.1.4" + resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.4.tgz" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/tr46/-/tr46-3.0.0.tgz" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +typescript@^5.4.5: + version "5.6.3" + resolved "https://registry.npmmirror.com/typescript/-/typescript-5.6.3.tgz" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.npmmirror.com/undici-types/-/undici-types-6.19.8.tgz" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +vite-plugin-copy@^0.1.6: + version "0.1.6" + resolved "https://registry.npmmirror.com/vite-plugin-copy/-/vite-plugin-copy-0.1.6.tgz" + integrity sha512-bqIaefZOE2Jx8P5wJuHKL5GzCERa/pcwdUQWaocyTNXgalN2xkxXH7LmqRJ34V2OlKF2F9E/zj0zITS7U6PpUg== + dependencies: + fast-glob "^3.2.7" + +vite-plugin-static-copy@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/vite-plugin-static-copy/-/vite-plugin-static-copy-2.1.0.tgz" + integrity sha512-n8lEOIVM00Y/zronm0RG8RdPyFd0SAAFR0sii3NWmgG3PSCyYMsvUNRQTlb3onp1XeMrKIDwCrPGxthKvqX9OQ== + dependencies: + chokidar "^3.5.3" + fast-glob "^3.2.11" + fs-extra "^11.1.0" + picocolors "^1.0.0" + +vite@^5.4.8: + version "5.4.8" + resolved "https://registry.npmmirror.com/vite/-/vite-5.4.8.tgz" + integrity sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.43" + rollup "^4.20.0" + optionalDependencies: + fsevents "~2.3.3" + +w3c-xmlserializer@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" + integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== + dependencies: + xml-name-validator "^4.0.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-11.0.0.tgz" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^8.11.0: + version "8.18.0" + resolved "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -- GitLab