Skip to content

Commit 3d80bb0

Browse files
committed
layers type to export
1 parent 310c2de commit 3d80bb0

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

app.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ document.addEventListener('DOMContentLoaded', () => {
7272
deleteBtn,
7373
canvas,
7474
layerManager,
75-
null
75+
null,
76+
registryManager
7677
);
7778
const propertyManager = new PropertyManager(
7879
canvas,

src/export-manager.js

+12-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export class ExportManager {
2-
constructor(layerManager) {
2+
constructor(layerManager, registryManager) {
33
this.layerManager = layerManager;
4+
this.registryManager = registryManager;
45

56
// Define Tailwind color mappings for common colors
67
this.tailwindColors = {
@@ -101,7 +102,7 @@ export class ExportManager {
101102
const rect = element.getBoundingClientRect();
102103
const canvas = this.layerManager.canvas.getBoundingClientRect();
103104

104-
// Calculate pixel positions based on container dimensions
105+
// Calculate positions
105106
const left = Math.round((rect.left - canvas.left) / canvas.width * this.layerManager.CONTAINER_WIDTH);
106107
const top = Math.round((rect.top - canvas.top) / canvas.height * this.layerManager.CONTAINER_HEIGHT);
107108
const width = Math.round(rect.width / canvas.width * this.layerManager.CONTAINER_WIDTH);
@@ -114,16 +115,19 @@ export class ExportManager {
114115
// Get border radius class
115116
const roundedClass = Array.from(element.classList)
116117
.find(cls => cls.startsWith('rounded-')) || '';
118+
119+
// Get layer type from registry or use default 'rectangle'
120+
const layerType = this.registryManager.getLayerType(element.dataset.id) || 'rectangle';
117121

118122
return `
119-
<div class="absolute ${bgClass} ${roundedClass} left-[${left}px] top-[${top}px] w-[${width}px] h-[${height}px]"></div>`;
123+
<div class="absolute ${bgClass} ${roundedClass} left-[${left}px] top-[${top}px] w-[${width}px] h-[${height}px]" layer="${layerType}"></div>`;
120124
}
121125

122126
exportText(element) {
123127
const rect = element.getBoundingClientRect();
124128
const canvas = this.layerManager.canvas.getBoundingClientRect();
125129

126-
// Calculate pixel positions based on container dimensions
130+
// Calculate pixel positions
127131
const left = Math.round((rect.left - canvas.left) / canvas.width * this.layerManager.CONTAINER_WIDTH);
128132
const top = Math.round((rect.top - canvas.top) / canvas.height * this.layerManager.CONTAINER_HEIGHT);
129133
const width = Math.round(rect.width / canvas.width * this.layerManager.CONTAINER_WIDTH);
@@ -137,8 +141,11 @@ export class ExportManager {
137141
.filter(cls => !['layer', 'selected'].includes(cls))
138142
.join(' ');
139143

144+
// Get layer type from registry
145+
const layerType = this.registryManager.getLayerType(element.dataset.id) || '';
146+
140147
return `
141-
<div class="absolute ${classes} left-[${left}px] top-[${top}px] w-[${width}px] h-[${height}px]">
148+
<div class="absolute ${classes} left-[${left}px] top-[${top}px] w-[${width}px] h-[${height}px]" layer="${layerType}">
142149
${content}
143150
</div>`;
144151
}

src/tool-manager.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@ export class ToolManager {
55
deleteBtn,
66
canvas,
77
layerManager,
8-
propertyManager
8+
propertyManager,
9+
registryManager
910
) {
1011
this.rectangleBtn = rectangleBtn;
1112
this.textBtn = textBtn;
1213
this.deleteBtn = deleteBtn;
1314
this.canvas = canvas;
1415
this.layerManager = layerManager;
1516
this.propertyManager = propertyManager;
17+
this.registryManager = registryManager;
1618

1719
this.currentTool = 'rectangle';
1820
this.gridSize = 4; // 0.5rem (8px) grid size
@@ -113,4 +115,16 @@ export class ToolManager {
113115
getCurrentTool() {
114116
return this.currentTool;
115117
}
118+
119+
createRectangle(x, y, width, height) {
120+
const rectangle = document.createElement('div');
121+
rectangle.classList.add('layer');
122+
rectangle.dataset.id = Date.now().toString();
123+
rectangle.dataset.type = 'rectangle';
124+
125+
// Регистрируем тип прямоугольника
126+
this.registryManager.setLayerType(rectangle.dataset.id, 'rectangle');
127+
128+
return rectangle;
129+
}
116130
}

0 commit comments

Comments
 (0)