Move engine (scene-graph, renderer, layout, codec, kiwi) into packages/core/ as a Bun workspace package. The app's src/engine/ files become thin re-export shims so all existing imports still work. - Bun workspace with packages/core - Zero DOM dependencies in core - Headless-friendly CanvasKit init (locateFile option) - Constants split: engine constants in core, UI constants in app - All 76 unit tests pass, lint + typecheck clean, vite build works
101 lines
2.3 KiB
TypeScript
101 lines
2.3 KiB
TypeScript
export {
|
|
IS_TAURI,
|
|
SELECTION_COLOR,
|
|
COMPONENT_COLOR,
|
|
SNAP_COLOR,
|
|
CANVAS_BG_COLOR,
|
|
ROTATION_HANDLE_OFFSET,
|
|
SNAP_THRESHOLD,
|
|
RULER_SIZE,
|
|
RULER_BG_COLOR,
|
|
RULER_TICK_COLOR,
|
|
RULER_TEXT_COLOR,
|
|
RULER_BADGE_HEIGHT,
|
|
RULER_BADGE_PADDING,
|
|
RULER_BADGE_RADIUS,
|
|
RULER_BADGE_EXCLUSION,
|
|
RULER_TEXT_BASELINE,
|
|
RULER_MAJOR_TICK,
|
|
RULER_MINOR_TICK,
|
|
RULER_HIGHLIGHT_ALPHA,
|
|
PEN_HANDLE_RADIUS,
|
|
PEN_VERTEX_RADIUS,
|
|
PEN_CLOSE_RADIUS_BOOST,
|
|
PEN_PATH_STROKE_WIDTH,
|
|
PARENT_OUTLINE_ALPHA,
|
|
PARENT_OUTLINE_DASH,
|
|
DEFAULT_FONT_SIZE,
|
|
LABEL_FONT_SIZE,
|
|
SIZE_FONT_SIZE,
|
|
ROTATION_HANDLE_RADIUS,
|
|
HANDLE_HALF_SIZE,
|
|
LABEL_OFFSET_Y,
|
|
SIZE_PILL_PADDING_X,
|
|
SIZE_PILL_PADDING_Y,
|
|
SIZE_PILL_HEIGHT,
|
|
SIZE_PILL_RADIUS,
|
|
SIZE_PILL_TEXT_OFFSET_Y,
|
|
MARQUEE_FILL_ALPHA,
|
|
SELECTION_DASH_ALPHA,
|
|
DROP_HIGHLIGHT_ALPHA,
|
|
DROP_HIGHLIGHT_STROKE,
|
|
LAYOUT_INDICATOR_STROKE,
|
|
SECTION_CORNER_RADIUS,
|
|
SECTION_TITLE_HEIGHT,
|
|
SECTION_TITLE_PADDING_X,
|
|
SECTION_TITLE_RADIUS,
|
|
SECTION_TITLE_FONT_SIZE,
|
|
SECTION_TITLE_GAP,
|
|
COMPONENT_SET_DASH,
|
|
COMPONENT_SET_DASH_GAP,
|
|
COMPONENT_SET_BORDER_WIDTH,
|
|
COMPONENT_LABEL_FONT_SIZE,
|
|
COMPONENT_LABEL_GAP,
|
|
COMPONENT_LABEL_ICON_SIZE,
|
|
COMPONENT_LABEL_ICON_GAP,
|
|
RULER_TARGET_PIXEL_SPACING,
|
|
RULER_MAJOR_TOLERANCE
|
|
} from '@open-pencil/core'
|
|
|
|
import type { Fill, Stroke } from '@open-pencil/core'
|
|
|
|
export const DEFAULT_SHAPE_FILL: Fill = {
|
|
type: 'SOLID',
|
|
color: { r: 0.83, g: 0.83, b: 0.83, a: 1 },
|
|
opacity: 1,
|
|
visible: true
|
|
}
|
|
|
|
export const DEFAULT_FRAME_FILL: Fill = {
|
|
type: 'SOLID',
|
|
color: { r: 1, g: 1, b: 1, a: 1 },
|
|
opacity: 1,
|
|
visible: true
|
|
}
|
|
|
|
export const HANDLE_SIZE = 6
|
|
export const DRAG_DEAD_ZONE = 4
|
|
export const PEN_CLOSE_THRESHOLD = 8
|
|
export const ROTATION_SNAP_DEGREES = 15
|
|
export const ROTATION_HIT_OFFSET = 24
|
|
export const DEFAULT_TEXT_WIDTH = 200
|
|
export const DEFAULT_TEXT_HEIGHT = 24
|
|
export const AUTO_LAYOUT_BREAK_THRESHOLD = 8
|
|
export const HANDLE_HIT_RADIUS = 6
|
|
export const ROTATION_HIT_RADIUS = 8
|
|
export const ZOOM_SENSITIVITY = 0.99
|
|
|
|
export const SECTION_DEFAULT_FILL: Fill = {
|
|
type: 'SOLID',
|
|
color: { r: 0.37, g: 0.37, b: 0.37, a: 1 },
|
|
opacity: 1,
|
|
visible: true
|
|
}
|
|
export const SECTION_DEFAULT_STROKE: Stroke = {
|
|
color: { r: 0.55, g: 0.55, b: 0.55, a: 1 },
|
|
weight: 1,
|
|
opacity: 1,
|
|
visible: true,
|
|
align: 'INSIDE'
|
|
}
|