feat: 用缓存处理对话中的项目切换问题

This commit is contained in:
2026-04-02 10:05:29 +08:00
parent b205633d0d
commit 836431788a
15 changed files with 208 additions and 51 deletions

View File

@@ -179,10 +179,10 @@ export class AISelectboxToolManager {
mouseMoveEvent(e) {
if (!this.targetObject) return;
if (!this.isDragging) return;
var width = e.absolutePointer.x - this.startX
var height = e.absolutePointer.y - this.startY
var left = this.startX
var top = this.startY
let width = e.absolutePointer.x - this.startX
let height = e.absolutePointer.y - this.startY
let left = this.startX
let top = this.startY
if (width < 0) {
left += width
width = -width

View File

@@ -17,7 +17,7 @@ fabric.Object.prototype.toObject = function () {
const arr = [...fabric.Object.prototype.customProperties]
args.forEach(v => (Array.isArray(v) ? arr.push(...v) : arr.push(v)))
if (this.fill?.source === null) {
let image = new Image()
const image = new Image()
image.crossOrigin = 'anonymous'
image.src = this.info?.fill?.source
this.fill.source = image
@@ -65,17 +65,17 @@ export class CanvasManager {
}
}
setCanvasViewSize(options) {
var canvasViewWidth = options.canvasViewWidth || 1920
var canvasViewHeight = options.canvasViewHeight || 1080
const canvasViewWidth = options.canvasViewWidth || 1920
const canvasViewHeight = options.canvasViewHeight || 1080
this.canvas.setWidth(canvasViewWidth)
this.canvas.setHeight(canvasViewHeight)
}
/** 初始化画布 */
async initCanvas(options: CanvasInitOptions) {
this.layerManager = this.stateManager.layerManager
var canvasWidth = options.canvasWidth || 750
var canvasHeight = options.canvasHeight || 600
var image = null;
let canvasWidth = options.canvasWidth || 750
let canvasHeight = options.canvasHeight || 600
let image = null;
if (options.url) {
await new Promise((resolve) => {
fabric.Image.fromURL(options.url, async (img) => {
@@ -188,8 +188,8 @@ export class CanvasManager {
async updateSubLayerClipPath() {
const objects = this.getObjects().filter((v: any) => v.type !== "group" && !!v.info?.id);
for (let i = 0; i < objects.length; i++) {
let object = objects[i]
let path = this.getObjectById(object.info.parentId)?.clipPath
const object = objects[i]
const path = this.getObjectById(object.info.parentId)?.clipPath
object.set({ clipPath: path || null })
}
this.renderAll()
@@ -381,7 +381,7 @@ export class CanvasManager {
}
/** 处理JSON为正常画布 */
processCanvasDisUrlJSON(obj: { canvas: string, images: Object }) {
var json = obj.canvas;
let json = obj.canvas;
const images = obj.images || {}
for (const key in images) {
json = json.replace(new RegExp(key), images[key])

View File

@@ -64,10 +64,10 @@ export class LayerManager {
getLayerById(id) {
function call(arr) {
for (let i = 0; i < arr.length; i++) {
let v = arr[i]
const v = arr[i]
if (v.info.id === id) return v
if (v.children) {
let layer = call(v.children)
const layer = call(v.children)
if (layer) return layer
}
}

View File

@@ -220,8 +220,8 @@ export class ObjectManager {
const isWidth = object.hasOwnProperty('width')
const isHeight = object.hasOwnProperty('height')
if (isWidth || isHeight) {
let width = isWidth ? options.width : object.width
let height = isHeight ? options.height : object.height
const width = isWidth ? options.width : object.width
const height = isHeight ? options.height : object.height
if (type === "polygon") {
if (object.points.length === 10) {// 五角星
options.points = getStarArr(width, height)

View File

@@ -58,10 +58,10 @@ export class ShapeToolManager {
}
mouseMoveEvent(e) {
if (!this.isDragging) return;
var width = e.absolutePointer.x - this.startX
var height = e.absolutePointer.y - this.startY
var left = this.startX
var top = this.startY
let width = e.absolutePointer.x - this.startX
let height = e.absolutePointer.y - this.startY
let left = this.startX
let top = this.startY
if (width < 0) {
left += width
width = -width

View File

@@ -89,7 +89,7 @@ export class StateManager {
/** 撤回状态 */
undoState() {
if (this.running.value) return
var index = this.historyIndex.value - 1
const index = this.historyIndex.value - 1
const state = this.historyList.value[index]
if (!state) return
this.running.value = true
@@ -103,7 +103,7 @@ export class StateManager {
/** 重做状态 */
redoState() {
if (this.running.value) return
var index = this.historyIndex.value + 1
const index = this.historyIndex.value + 1
const state = this.historyList.value[index]
if (!state) return
this.running.value = true