@ai-game-assets/phaser 0.5.6 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,7 @@ export type DesignerElements = {
5
5
  root: HTMLDivElement;
6
6
  toggle: HTMLButtonElement;
7
7
  panel: HTMLDivElement;
8
+ title: HTMLDivElement;
8
9
  styleButton: HTMLButtonElement;
9
10
  assetSelect: HTMLSelectElement;
10
11
  assetBrowser: HTMLDivElement;
@@ -33,6 +34,7 @@ export type DesignerElements = {
33
34
  currentAudio: HTMLDivElement;
34
35
  currentAnimation: HTMLDivElement;
35
36
  currentAnimationButton: HTMLButtonElement;
37
+ currentRevertButton: HTMLButtonElement;
36
38
  currentTouchUpButton: HTMLButtonElement;
37
39
  currentPreview: HTMLDivElement;
38
40
  uploadButton: HTMLButtonElement;
@@ -175,7 +177,7 @@ export declare function drawAudioEditorWaveform(canvas: HTMLCanvasElement, optio
175
177
  }): void;
176
178
  export declare function progressForAudio(audio: HTMLAudioElement): number;
177
179
  export declare function clamp(value: number, min: number, max: number): number;
178
- export declare function formatAudioTime(value: number): string;
180
+ export declare function formatAudioTime(value: number, fractional?: boolean): string;
179
181
  export declare function startSpritesheetPreview(options: {
180
182
  element: HTMLDivElement;
181
183
  src: string;
@@ -1 +1 @@
1
- {"version":3,"file":"designer-support.d.ts","sourceRoot":"","sources":["../src/designer-support.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"designer-support.d.ts","sourceRoot":"","sources":["../src/designer-support.ts"],"names":[],"mappings":"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"}
@@ -126,7 +126,12 @@ export function createDesignerElements(options, manifest, selectedAssetId) {
126
126
  currentTouchUpButton.className = "ai-game-assets-designer__animate-button";
127
127
  currentTouchUpButton.textContent = "Touch up...";
128
128
  currentTouchUpButton.hidden = true;
129
- currentPreview.append(currentImage, currentAudio, currentAnimation, currentAnimationButton, currentTouchUpButton);
129
+ const currentRevertButton = document.createElement("button");
130
+ currentRevertButton.type = "button";
131
+ currentRevertButton.className = "ai-game-assets-designer__animate-button";
132
+ currentRevertButton.textContent = "Revert preview";
133
+ currentRevertButton.hidden = true;
134
+ currentPreview.append(currentImage, currentAudio, currentAnimation, currentAnimationButton, currentTouchUpButton, currentRevertButton);
130
135
  const regenerateButton = document.createElement("button");
131
136
  regenerateButton.type = "button";
132
137
  regenerateButton.textContent = "Regenerate";
@@ -161,6 +166,7 @@ export function createDesignerElements(options, manifest, selectedAssetId) {
161
166
  root,
162
167
  toggle,
163
168
  panel,
169
+ title,
164
170
  styleButton,
165
171
  assetSelect,
166
172
  assetBrowser,
@@ -189,6 +195,7 @@ export function createDesignerElements(options, manifest, selectedAssetId) {
189
195
  currentAudio,
190
196
  currentAnimation,
191
197
  currentAnimationButton,
198
+ currentRevertButton,
192
199
  currentTouchUpButton,
193
200
  currentPreview,
194
201
  uploadButton,
@@ -214,7 +221,7 @@ export function renderAssetFolderBrowser(options) {
214
221
  const storedPathValue = options.container.getAttribute("data-path");
215
222
  const storedPath = storedPathValue !== null
216
223
  ? storedPathValue.split("/").filter(Boolean)
217
- : selectedPath;
224
+ : [];
218
225
  const currentPath = pathHasAnyAsset(storedPath, assetPathEntries)
219
226
  ? storedPath
220
227
  : selectedPath;
@@ -390,7 +397,7 @@ export function renderOptions(options) {
390
397
  element: animationStage,
391
398
  src: option.dataUrl,
392
399
  asset: optionAsset,
393
- displaySize: resolvePreviewDisplaySize(options.designerOptions, options.assetId, optionAsset),
400
+ displaySize: { width: 68, height: 68 },
394
401
  applyFrameTransforms: false
395
402
  });
396
403
  });
@@ -574,6 +581,13 @@ export async function spriteSheetFrameToDataUrl(options) {
574
581
  export function isSvgSource(src) {
575
582
  return src.startsWith("data:image/svg+xml") || /\.svg(?:$|\?)/i.test(src);
576
583
  }
584
+ const frameTouchUpPreferences = {
585
+ alpha: 255,
586
+ antiAlias: true,
587
+ brushSize: 4,
588
+ color: "#f8fafc",
589
+ tool: "brush"
590
+ };
577
591
  export async function openFrameTouchUpEditor(options) {
578
592
  const sourceImage = await loadImageElement(options.frameSrc);
579
593
  const dialog = document.createElement("div");
@@ -615,7 +629,7 @@ export async function openFrameTouchUpEditor(options) {
615
629
  brushSizeInput.min = "1";
616
630
  brushSizeInput.max = "32";
617
631
  brushSizeInput.step = "1";
618
- brushSizeInput.value = "4";
632
+ brushSizeInput.value = String(frameTouchUpPreferences.brushSize);
619
633
  const brushSizeValue = document.createElement("span");
620
634
  brushSizeValue.textContent = brushSizeInput.value;
621
635
  const brushSizeField = document.createElement("label");
@@ -623,7 +637,7 @@ export async function openFrameTouchUpEditor(options) {
623
637
  brushSizeField.append("Size", brushSizeInput, brushSizeValue);
624
638
  const antiAliasInput = document.createElement("input");
625
639
  antiAliasInput.type = "checkbox";
626
- antiAliasInput.checked = true;
640
+ antiAliasInput.checked = frameTouchUpPreferences.antiAlias;
627
641
  const antiAliasField = document.createElement("label");
628
642
  antiAliasField.className = "ai-game-assets-designer__inline-checkbox";
629
643
  antiAliasField.append(antiAliasInput, "Anti-aliased round tip");
@@ -639,14 +653,14 @@ export async function openFrameTouchUpEditor(options) {
639
653
  saveButton.classList.add("is-primary");
640
654
  const colorInput = document.createElement("input");
641
655
  colorInput.type = "color";
642
- colorInput.value = "#f8fafc";
656
+ colorInput.value = frameTouchUpPreferences.color;
643
657
  colorInput.setAttribute("aria-label", "Brush color");
644
658
  const alphaInput = document.createElement("input");
645
659
  alphaInput.type = "number";
646
660
  alphaInput.min = "0";
647
661
  alphaInput.max = "255";
648
662
  alphaInput.step = "1";
649
- alphaInput.value = "255";
663
+ alphaInput.value = String(frameTouchUpPreferences.alpha);
650
664
  alphaInput.setAttribute("aria-label", "Alpha");
651
665
  const rgbaLabel = document.createElement("label");
652
666
  rgbaLabel.className = "ai-game-assets-designer__touchup-color";
@@ -698,9 +712,10 @@ export async function openFrameTouchUpEditor(options) {
698
712
  context.clearRect(0, 0, canvas.width, canvas.height);
699
713
  context.drawImage(sourceImage, 0, 0, canvas.width, canvas.height);
700
714
  let zoom = Math.max(1, Math.floor(Math.min(8, 480 / Math.max(canvas.width, canvas.height))));
701
- let tool = "brush";
715
+ let tool = frameTouchUpPreferences.tool;
702
716
  let dirty = false;
703
717
  let drawing = false;
718
+ let drawingPointerId;
704
719
  let selectionStart;
705
720
  let selection;
706
721
  let animationTimeout;
@@ -750,6 +765,11 @@ export async function openFrameTouchUpEditor(options) {
750
765
  }[tool];
751
766
  activeButton.classList.add("is-active");
752
767
  };
768
+ const selectTool = (nextTool) => {
769
+ tool = nextTool;
770
+ frameTouchUpPreferences.tool = nextTool;
771
+ updateToolButtons();
772
+ };
753
773
  const updateUndoRedo = () => {
754
774
  undoButton.disabled = undoStack.length === 0;
755
775
  redoButton.disabled = redoStack.length === 0;
@@ -768,6 +788,22 @@ export async function openFrameTouchUpEditor(options) {
768
788
  redrawEditor();
769
789
  setDirty(true);
770
790
  };
791
+ const undo = () => {
792
+ const previous = undoStack.pop();
793
+ if (!previous)
794
+ return;
795
+ redoStack.push(snapshot());
796
+ restore(previous);
797
+ updateUndoRedo();
798
+ };
799
+ const redo = () => {
800
+ const next = redoStack.pop();
801
+ if (!next)
802
+ return;
803
+ undoStack.push(snapshot());
804
+ restore(next);
805
+ updateUndoRedo();
806
+ };
771
807
  const syncSelectionBox = () => {
772
808
  if (!selection) {
773
809
  selectionBox.hidden = true;
@@ -912,6 +948,8 @@ export async function openFrameTouchUpEditor(options) {
912
948
  const data = context.getImageData(point.x, point.y, 1, 1).data;
913
949
  colorInput.value = `#${hexByte(data[0])}${hexByte(data[1])}${hexByte(data[2])}`;
914
950
  alphaInput.value = String(data[3]);
951
+ frameTouchUpPreferences.color = colorInput.value;
952
+ frameTouchUpPreferences.alpha = data[3];
915
953
  };
916
954
  const fillAt = (point) => {
917
955
  const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
@@ -1019,7 +1057,10 @@ export async function openFrameTouchUpEditor(options) {
1019
1057
  disposed = true;
1020
1058
  if (animationTimeout !== undefined)
1021
1059
  window.clearTimeout(animationTimeout);
1022
- window.removeEventListener("keydown", keyHandler);
1060
+ window.removeEventListener("keydown", keyHandler, true);
1061
+ window.removeEventListener("pointerup", finishPointer, true);
1062
+ window.removeEventListener("pointercancel", finishPointer, true);
1063
+ window.removeEventListener("blur", cancelDrawing);
1023
1064
  document.removeEventListener("pointerdown", closeBrushMenuOnOutsidePointer);
1024
1065
  dialog.remove();
1025
1066
  };
@@ -1031,33 +1072,55 @@ export async function openFrameTouchUpEditor(options) {
1031
1072
  const keyHandler = (event) => {
1032
1073
  if (!dialog.isConnected)
1033
1074
  return;
1075
+ const key = event.key.toLowerCase();
1076
+ const commandModifier = event.metaKey || event.ctrlKey;
1077
+ if (commandModifier && !event.altKey && (key === "z" || key === "y")) {
1078
+ event.preventDefault();
1079
+ event.stopPropagation();
1080
+ if (key === "y" || event.shiftKey) {
1081
+ redo();
1082
+ }
1083
+ else {
1084
+ undo();
1085
+ }
1086
+ return;
1087
+ }
1034
1088
  if (event.key === "Escape") {
1089
+ event.preventDefault();
1090
+ event.stopPropagation();
1035
1091
  requestClose();
1036
1092
  return;
1037
1093
  }
1038
1094
  if (event.key === "Backspace" || event.key === "Delete") {
1039
1095
  event.preventDefault();
1096
+ event.stopPropagation();
1040
1097
  deleteSelection();
1041
1098
  return;
1042
1099
  }
1043
1100
  if (event.key === "ArrowLeft") {
1044
1101
  event.preventDefault();
1102
+ event.stopPropagation();
1045
1103
  moveSelection(-1, 0);
1046
1104
  }
1047
1105
  else if (event.key === "ArrowRight") {
1048
1106
  event.preventDefault();
1107
+ event.stopPropagation();
1049
1108
  moveSelection(1, 0);
1050
1109
  }
1051
1110
  else if (event.key === "ArrowUp") {
1052
1111
  event.preventDefault();
1112
+ event.stopPropagation();
1053
1113
  moveSelection(0, -1);
1054
1114
  }
1055
1115
  else if (event.key === "ArrowDown") {
1056
1116
  event.preventDefault();
1117
+ event.stopPropagation();
1057
1118
  moveSelection(0, 1);
1058
1119
  }
1059
1120
  };
1060
1121
  canvas.addEventListener("pointerdown", (event) => {
1122
+ if (event.pointerType !== "touch" && event.button !== 0)
1123
+ return;
1061
1124
  if (event.pointerType === "touch") {
1062
1125
  activeTouchPointers.set(event.pointerId, {
1063
1126
  x: event.clientX,
@@ -1065,6 +1128,7 @@ export async function openFrameTouchUpEditor(options) {
1065
1128
  });
1066
1129
  if (activeTouchPointers.size >= 2) {
1067
1130
  drawing = false;
1131
+ drawingPointerId = undefined;
1068
1132
  selectionStart = undefined;
1069
1133
  pinchStartDistance = touchPointerDistance();
1070
1134
  pinchStartZoom = zoom;
@@ -1079,6 +1143,7 @@ export async function openFrameTouchUpEditor(options) {
1079
1143
  }
1080
1144
  pushUndo();
1081
1145
  drawing = true;
1146
+ drawingPointerId = event.pointerId;
1082
1147
  canvas.setPointerCapture(event.pointerId);
1083
1148
  if (tool === "select") {
1084
1149
  selectionStart = point;
@@ -1089,6 +1154,7 @@ export async function openFrameTouchUpEditor(options) {
1089
1154
  if (tool === "fill") {
1090
1155
  fillAt(point);
1091
1156
  drawing = false;
1157
+ drawingPointerId = undefined;
1092
1158
  setDirty(true);
1093
1159
  redrawEditor();
1094
1160
  return;
@@ -1111,8 +1177,12 @@ export async function openFrameTouchUpEditor(options) {
1111
1177
  return;
1112
1178
  }
1113
1179
  }
1114
- if (!drawing)
1180
+ if (!drawing || drawingPointerId !== event.pointerId)
1181
+ return;
1182
+ if (event.pointerType !== "touch" && (event.buttons & 1) === 0) {
1183
+ finishPointer(event);
1115
1184
  return;
1185
+ }
1116
1186
  const point = canvasPoint(event);
1117
1187
  if (tool === "select" && selectionStart) {
1118
1188
  const x = Math.min(selectionStart.x, point.x);
@@ -1132,7 +1202,7 @@ export async function openFrameTouchUpEditor(options) {
1132
1202
  redrawEditor();
1133
1203
  }
1134
1204
  });
1135
- const finishPointer = (event) => {
1205
+ function finishPointer(event) {
1136
1206
  if (event.pointerType === "touch") {
1137
1207
  activeTouchPointers.delete(event.pointerId);
1138
1208
  if (activeTouchPointers.size < 2) {
@@ -1143,15 +1213,29 @@ export async function openFrameTouchUpEditor(options) {
1143
1213
  pinchStartZoom = zoom;
1144
1214
  }
1145
1215
  }
1146
- drawing = false;
1147
- selectionStart = undefined;
1216
+ if (drawingPointerId === event.pointerId) {
1217
+ drawing = false;
1218
+ drawingPointerId = undefined;
1219
+ selectionStart = undefined;
1220
+ }
1148
1221
  if (canvas.hasPointerCapture(event.pointerId)) {
1149
1222
  canvas.releasePointerCapture(event.pointerId);
1150
1223
  }
1151
1224
  redrawEditor();
1152
- };
1225
+ }
1226
+ function cancelDrawing() {
1227
+ drawing = false;
1228
+ drawingPointerId = undefined;
1229
+ selectionStart = undefined;
1230
+ activeTouchPointers.clear();
1231
+ pinchStartDistance = undefined;
1232
+ }
1153
1233
  canvas.addEventListener("pointerup", finishPointer);
1154
1234
  canvas.addEventListener("pointercancel", finishPointer);
1235
+ canvas.addEventListener("lostpointercapture", finishPointer);
1236
+ window.addEventListener("pointerup", finishPointer, true);
1237
+ window.addEventListener("pointercancel", finishPointer, true);
1238
+ window.addEventListener("blur", cancelDrawing);
1155
1239
  canvasWrap.addEventListener("wheel", (event) => {
1156
1240
  if (!event.ctrlKey && !event.metaKey)
1157
1241
  return;
@@ -1170,54 +1254,45 @@ export async function openFrameTouchUpEditor(options) {
1170
1254
  setZoom(zoom + 1);
1171
1255
  });
1172
1256
  brushButton.addEventListener("click", () => {
1173
- tool = "brush";
1174
- updateToolButtons();
1257
+ selectTool("brush");
1175
1258
  });
1176
1259
  brushMenuButton.addEventListener("click", () => {
1177
1260
  brushMenu.hidden = !brushMenu.hidden;
1178
1261
  });
1179
1262
  brushSizeInput.addEventListener("input", () => {
1180
1263
  brushSizeValue.textContent = brushSizeInput.value;
1264
+ frameTouchUpPreferences.brushSize = brushSize();
1265
+ });
1266
+ antiAliasInput.addEventListener("change", () => {
1267
+ frameTouchUpPreferences.antiAlias = antiAliasInput.checked;
1268
+ });
1269
+ colorInput.addEventListener("input", () => {
1270
+ frameTouchUpPreferences.color = colorInput.value;
1271
+ });
1272
+ alphaInput.addEventListener("input", () => {
1273
+ frameTouchUpPreferences.alpha = clamp(Math.round(Number(alphaInput.value)), 0, 255);
1181
1274
  });
1182
1275
  document.addEventListener("pointerdown", closeBrushMenuOnOutsidePointer);
1183
1276
  eraserButton.addEventListener("click", () => {
1184
- tool = "eraser";
1185
- updateToolButtons();
1277
+ selectTool("eraser");
1186
1278
  });
1187
1279
  pickerButton.addEventListener("click", () => {
1188
- tool = "picker";
1189
- updateToolButtons();
1280
+ selectTool("picker");
1190
1281
  });
1191
1282
  selectButton.addEventListener("click", () => {
1192
- tool = "select";
1193
- updateToolButtons();
1283
+ selectTool("select");
1194
1284
  });
1195
1285
  fillButton.addEventListener("click", () => {
1196
- tool = "fill";
1197
- updateToolButtons();
1198
- });
1199
- undoButton.addEventListener("click", () => {
1200
- const previous = undoStack.pop();
1201
- if (!previous)
1202
- return;
1203
- redoStack.push(snapshot());
1204
- restore(previous);
1205
- updateUndoRedo();
1206
- });
1207
- redoButton.addEventListener("click", () => {
1208
- const next = redoStack.pop();
1209
- if (!next)
1210
- return;
1211
- undoStack.push(snapshot());
1212
- restore(next);
1213
- updateUndoRedo();
1286
+ selectTool("fill");
1214
1287
  });
1288
+ undoButton.addEventListener("click", undo);
1289
+ redoButton.addEventListener("click", redo);
1215
1290
  saveButton.addEventListener("click", async () => {
1216
1291
  await options.onSave(canvas.toDataURL("image/png"));
1217
1292
  setDirty(false);
1218
1293
  close();
1219
1294
  });
1220
- window.addEventListener("keydown", keyHandler);
1295
+ window.addEventListener("keydown", keyHandler, true);
1221
1296
  updateZoom();
1222
1297
  updateToolButtons();
1223
1298
  updateUndoRedo();
@@ -1358,6 +1433,14 @@ export function renderAudioPlayer(options) {
1358
1433
  state.frame = window.requestAnimationFrame(tick);
1359
1434
  }
1360
1435
  };
1436
+ const handleEnded = () => {
1437
+ if (!options.playback?.loop || state.disposed) {
1438
+ sync();
1439
+ return;
1440
+ }
1441
+ audio.currentTime = state.trimStart;
1442
+ void audio.play().then(() => tick()).catch(() => sync());
1443
+ };
1361
1444
  playButton.addEventListener("click", async () => {
1362
1445
  if (audio.paused) {
1363
1446
  pauseSiblingAudioPlayers(options.container);
@@ -1392,12 +1475,15 @@ export function renderAudioPlayer(options) {
1392
1475
  state.trimStart = clamp(options.playback?.trimStartSeconds ?? 0, 0, state.duration);
1393
1476
  state.trimEnd = clamp(options.playback?.trimEndSeconds ?? state.duration, state.trimStart, state.duration);
1394
1477
  trimLabel.hidden = state.trimStart === 0 && state.trimEnd === state.duration;
1395
- trimLabel.textContent = `Trim ${formatAudioTime(state.trimStart)} – ${formatAudioTime(state.trimEnd)}`;
1478
+ trimLabel.textContent = `Trim ${formatAudioTime(state.trimStart, true)} – ${formatAudioTime(state.trimEnd, true)}`;
1479
+ audio.loop = Boolean(options.playback?.loop) &&
1480
+ state.trimStart === 0 &&
1481
+ state.trimEnd >= state.duration - 0.05;
1396
1482
  audio.currentTime = state.trimStart;
1397
1483
  sync();
1398
1484
  });
1399
1485
  audio.addEventListener("timeupdate", sync);
1400
- audio.addEventListener("ended", sync);
1486
+ audio.addEventListener("ended", handleEnded);
1401
1487
  draw();
1402
1488
  void audioWaveformPeaks(options.src).then((peaks) => {
1403
1489
  if (state.disposed)
@@ -1515,13 +1601,17 @@ export function progressForAudio(audio) {
1515
1601
  export function clamp(value, min, max) {
1516
1602
  return Math.min(max, Math.max(min, value));
1517
1603
  }
1518
- export function formatAudioTime(value) {
1604
+ export function formatAudioTime(value, fractional = false) {
1519
1605
  if (!Number.isFinite(value) || value < 0) {
1520
1606
  return "0:00";
1521
1607
  }
1522
- const minutes = Math.floor(value / 60);
1523
- const seconds = Math.floor(value % 60);
1524
- return `${minutes}:${String(seconds).padStart(2, "0")}`;
1608
+ const precision = fractional ? 2 : 0;
1609
+ const multiplier = 10 ** precision;
1610
+ const roundedValue = Math.round(value * multiplier) / multiplier;
1611
+ const minutes = Math.floor(roundedValue / 60);
1612
+ const seconds = roundedValue % 60;
1613
+ const formattedSeconds = seconds.toFixed(precision).padStart(fractional ? 5 : 2, "0");
1614
+ return `${minutes}:${formattedSeconds}`;
1525
1615
  }
1526
1616
  export function startSpritesheetPreview(options) {
1527
1617
  const frameGrid = options.asset.frameGrid;
@@ -2364,11 +2454,33 @@ export function setFrameBackground(element, options) {
2364
2454
  export function setFrameElementBackground(frameElement, options) {
2365
2455
  const column = options.frame % options.frameGrid.columns;
2366
2456
  const row = Math.floor(options.frame / options.frameGrid.columns);
2457
+ const margin = options.frameGrid.margin ?? 0;
2458
+ const spacing = options.frameGrid.spacing ?? 0;
2459
+ const frameWidth = options.frameGrid.frameWidth;
2460
+ const frameHeight = options.frameGrid.frameHeight;
2461
+ const scale = Math.min(options.displaySize.width / frameWidth, options.displaySize.height / frameHeight);
2462
+ const sheetWidth = (margin * 2) +
2463
+ (options.frameGrid.columns * frameWidth) +
2464
+ (Math.max(0, options.frameGrid.columns - 1) * spacing);
2465
+ const sheetHeight = (margin * 2) +
2466
+ (options.frameGrid.rows * frameHeight) +
2467
+ (Math.max(0, options.frameGrid.rows - 1) * spacing);
2468
+ const sourceX = margin + (column * (frameWidth + spacing));
2469
+ const sourceY = margin + (row * (frameHeight + spacing));
2470
+ const displayFrameWidth = frameWidth * scale;
2471
+ const displayFrameHeight = frameHeight * scale;
2472
+ const frameOffsetX = (options.displaySize.width - displayFrameWidth) / 2;
2473
+ const frameOffsetY = (options.displaySize.height - displayFrameHeight) / 2;
2474
+ frameElement.style.inset = "auto";
2475
+ frameElement.style.left = `${frameOffsetX}px`;
2476
+ frameElement.style.top = `${frameOffsetY}px`;
2477
+ frameElement.style.width = `${displayFrameWidth}px`;
2478
+ frameElement.style.height = `${displayFrameHeight}px`;
2367
2479
  frameElement.style.backgroundImage = `url("${cssUrl(options.src)}")`;
2368
2480
  frameElement.style.backgroundSize =
2369
- `${options.frameGrid.columns * options.displaySize.width}px ${options.frameGrid.rows * options.displaySize.height}px`;
2481
+ `${sheetWidth * scale}px ${sheetHeight * scale}px`;
2370
2482
  frameElement.style.backgroundPosition =
2371
- `${-(column * options.displaySize.width)}px ${-(row * options.displaySize.height)}px`;
2483
+ `${-(sourceX * scale)}px ${-(sourceY * scale)}px`;
2372
2484
  }
2373
2485
  export function ensureFramePreviewElement(element) {
2374
2486
  const existing = element.querySelector(":scope > .ai-game-assets-designer__frame-image");
@@ -3085,6 +3197,7 @@ export function ensureDesignerStyles() {
3085
3197
  background: transparent;
3086
3198
  display: grid;
3087
3199
  place-items: center;
3200
+ overflow: hidden;
3088
3201
  cursor: pointer;
3089
3202
  color: #dbeafe;
3090
3203
  font: inherit;
@@ -3105,12 +3218,18 @@ export function ensureDesignerStyles() {
3105
3218
  object-fit: contain;
3106
3219
  image-rendering: pixelated;
3107
3220
  }
3221
+ .ai-game-assets-designer__option-animation {
3222
+ width: 68px;
3223
+ height: 68px;
3224
+ max-width: 100%;
3225
+ }
3108
3226
  .ai-game-assets-designer__option .ai-game-assets-designer__animate-button {
3109
3227
  width: 100%;
3110
3228
  }
3111
3229
  .ai-game-assets-designer__modal {
3112
3230
  position: fixed;
3113
3231
  inset: 0;
3232
+ z-index: 2147483647;
3114
3233
  display: grid;
3115
3234
  place-items: center;
3116
3235
  padding: 18px;
@@ -3242,14 +3361,24 @@ export function ensureDesignerStyles() {
3242
3361
  }
3243
3362
  .ai-game-assets-designer__frame-thumb {
3244
3363
  flex: 0 0 auto;
3245
- border: 2px solid #384251;
3364
+ border: 0;
3246
3365
  border-radius: 6px;
3247
3366
  background-color: #0f1218;
3248
3367
  position: relative;
3249
3368
  overflow: hidden;
3250
3369
  cursor: pointer;
3251
3370
  }
3252
- .ai-game-assets-designer__frame-thumb.is-selected {
3371
+ .ai-game-assets-designer__frame-thumb::after {
3372
+ content: "";
3373
+ position: absolute;
3374
+ inset: 0;
3375
+ z-index: 2;
3376
+ border: 2px solid #384251;
3377
+ border-radius: inherit;
3378
+ pointer-events: none;
3379
+ box-sizing: border-box;
3380
+ }
3381
+ .ai-game-assets-designer__frame-thumb.is-selected::after {
3253
3382
  border-color: #6ed3ff;
3254
3383
  }
3255
3384
  .ai-game-assets-designer__frame-fields {