횡단설계(B06) 다음을 상세설계 → 수량산출 → 설계도서 순으로 재배열하고, 폴더 번호가 흐름과 일치하도록 이름을 맞바꾼다. - B08_DesignDetail → B07_DesignDetail, B07_Quantity → B08_Quantity (파일 접두어·식별자·라우트·locale 키 전량 스왑) - STAGE_KEYS 4=DESIGN_DETAIL, 5=QUANTITY 스왑 + 라우터 stage 리터럴 교체 - CAD 마운트 /b08-cad → /b07-cad (main.py·vite proxy·iframe URL), openwebcad Toolbar 라벨 B07로 수정 후 재빌드 - 유지: openwebcad postMessage 프로토콜 aislo:b08:*·패키지명(내부 식별자) - 기존 프로젝트 storage 폴더 rename + project_manifest 갱신, DB project_workflow_stages stage_no 4↔5 행 스왑 완료 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
19 lines
793 B
TypeScript
19 lines
793 B
TypeScript
import {Tool} from '../tools';
|
|
import {createMachine} from 'xstate';
|
|
import type {BoundingBox} from "../helpers/get-bounding-box-of-multiple-entities.ts";
|
|
import {GET_ALIGN_ACTION, GET_ALIGN_TOOL_STATE} from "./align-tool.helpers.ts";
|
|
import type {Entity} from "../entities/Entity.ts";
|
|
|
|
/**
|
|
* AlignRight tool state machine
|
|
* This state machine is responsible for aligning entities on the canvas
|
|
* It uses the select tool state machine to select entities to align
|
|
* When the user presses enter, the selected entities are right aligned
|
|
*/
|
|
export const alignRightToolStateMachine = createMachine(
|
|
GET_ALIGN_TOOL_STATE(Tool.ALIGN_RIGHT),
|
|
GET_ALIGN_ACTION((entity: Entity, boundingBox: BoundingBox) => {
|
|
entity.move(boundingBox.maxX - entity.getBoundingBox().xmax, 0);
|
|
})
|
|
);
|