Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
224 changes: 0 additions & 224 deletions i18n/literal-baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -713,32 +713,6 @@
"Vertex select (1)",
"X-ray selection"
],
"packages/nodes/src/box-vent/panel.tsx": [
"Actions",
"Base Flange",
"Base Height",
"Base Inset",
"Box",
"Box Vent",
"Cap",
"Cap Height",
"Corner Bevel",
"Delete",
"Depth",
"Dimensions",
"Dome",
"Dome Curvature",
"Duplicate",
"Gap Height",
"Height",
"Hood Overhang",
"Move",
"Position",
"Rotation",
"Style",
"Top Taper",
"Width"
],
"packages/nodes/src/construction-dimension/panel.tsx": [
"Above line",
"Actions",
Expand Down Expand Up @@ -790,141 +764,6 @@
"{activeDrawingLabel} presentation",
"{activeDrawingLabel} suppressed segments"
],
"packages/nodes/src/cupola/panel.tsx": [
"Actions",
"Cupola",
"Delete",
"Depth",
"Dimensions",
"Dome",
"Duplicate",
"Finial",
"Height",
"Move",
"No Finial",
"Position",
"Pyramid",
"Rotation",
"Style",
"Width"
],
"packages/nodes/src/downspout/inspector-editors.tsx": [
"Position"
],
"packages/nodes/src/duct-fitting/inspector-editors.tsx": [
"Swap W/H",
"Swap width and height"
],
"packages/nodes/src/duct-fitting/tool.tsx": [
"Axis",
"Hover a duct face that fits the door",
"Place access door",
"R/T rotate",
"⌥ axis"
],
"packages/nodes/src/duct-terminal/tool.tsx": [
"M surface",
"Mount {mountLabel}",
"R/T rotate",
"Snapped to duct"
],
"packages/nodes/src/eyebrow-vent/panel.tsx": [
"Actions",
"Back height",
"Delete",
"Depth",
"Dimensions",
"Duplicate",
"Eyebrow Vent",
"Half-round",
"Height",
"Louvers",
"Move",
"Position",
"Rotation",
"Scoop",
"Slant-box",
"Style",
"Width"
],
"packages/nodes/src/fence-feature/actions.tsx": [
"Close",
"Open"
],
"packages/nodes/src/fence-feature/inspector.tsx": [
"Board width",
"Bracing",
"Distance from start",
"Fence unavailable.",
"Frame width",
"Gate height",
"Gate style",
"Ground clearance",
"Hinge side",
"Hinges and latch",
"Horizontal boards",
"Infill spacing",
"Jamb posts",
"Keep the opening inside the fence and clear of other gates or passages.",
"Leaf thickness",
"Leaves",
"Left leaf proportion",
"Match fence height",
"Match fence style",
"Open rails",
"Opening angle",
"Opening width",
"Picket",
"Post height",
"Remove gate",
"Remove opening",
"Solid privacy",
"Swing direction",
"Vertical slats"
],
"packages/nodes/src/fence/inspector-editors.tsx": [
"Add point after",
"Choose a slab or shaped surface on this level.",
"Choose a surface",
"Corner",
"Curve",
"Curved",
"Distribution controls {subject}. Spacing is measured between centers. The available width limits the count so pieces do not overlap.",
"Edit path",
"Extend path",
"Follow highest surface",
"Follow selected surface",
"Hold starting height",
"Join",
"Length",
"Picket rail projection",
"Point",
"Remove point",
"Set each span to straight or curved, then drag its points and curve handles in either view.",
"Smooth",
"Span to point",
"Straight",
"Surface",
"Surface behavior",
"points ·"
],
"packages/nodes/src/fence/move-endpoint-tool.tsx": [
"Detach endpoint",
"Drag endpoint"
],
"packages/nodes/src/gutter/downspouts-panel.tsx": [
"Add Downspout",
"Downspout {?}",
"Downspouts",
"Remove downspout"
],
"packages/nodes/src/hvac-equipment/tool.tsx": [
"R/T rotate"
],
"packages/nodes/src/liquid-line/tool.tsx": [
"Click to trace this lineset run",
"Follow: hover a lineset"
],
"packages/nodes/src/measurement/selection.tsx": [
"Align "
],
Expand All @@ -933,48 +772,6 @@
"Extrusion height",
"Extrusion height"
],
"packages/nodes/src/pipe-fitting/tool.tsx": [
"Axis",
"R/T rotate",
"⌥ axis"
],
"packages/nodes/src/pipe-trap/tool.tsx": [
"R/T rotate",
"{diameter}\" Trap"
],
"packages/nodes/src/ridge-vent/panel.tsx": [
"Actions",
"Delete",
"Dimensions",
"Duplicate",
"End Caps",
"Flanged",
"Height",
"Length",
"Move",
"Open",
"Position",
"Ridge Vent",
"Rotation",
"Shingled",
"Standard",
"Style",
"Width"
],
"packages/nodes/src/shared/run-hanger-inspector.tsx": [
"Automatic support",
"Hanger",
"Hanger {?} position in metres",
"Hanger {?} support",
"Individual hangers",
"Missing support",
"No support within reach. Move the hanger or choose another host.",
"Position (m)",
"Positions are measured along each path segment. Changing spacing regenerates the numbered slots.",
"Reveal support",
"Skip",
"· segment"
],
"packages/nodes/src/spawn/panel.tsx": [
"Actions",
"Delete",
Expand All @@ -984,27 +781,6 @@
"Spawn Point",
"Yaw"
],
"packages/nodes/src/turbine-vent/panel.tsx": [
"Actions",
"Cylinder",
"Delete",
"Diameter",
"Dimensions",
"Duplicate",
"Globe",
"Height",
"Motion",
"Move",
"Neck Height",
"Pause",
"Play",
"Position",
"Rotation",
"Spin Speed",
"Style",
"Turbine Vent",
"Vanes"
],
"packages/nodes/src/wall/move-endpoint-tool.tsx": [
"Alt to detach",
"Detaching corner"
Expand Down
76 changes: 75 additions & 1 deletion i18n/pseudo-surfaces.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
import type { Page } from 'playwright-core'
import { DormerNode, SkylightNode, SolarPanelNode } from '../packages/core/src/schema'
import type { SceneGraph } from '@pascal-app/core/clone-scene-graph'
import { template as twoBedroom } from '../packages/mcp/src/templates/two-bedroom'
import { pseudoLocalize } from '../scripts/i18n'
import { cabinetPresetById } from '../packages/nodes/src/cabinet/presets'
import {
BoxVentNode,
CabinetModuleNode,
CabinetNode,
ChimneyNode,
ColumnNode,
CupolaNode,
DormerNode,
EyebrowVentNode,
FenceNode,
RidgeVentNode,
RoofNode,
RoofSegmentNode,
SkylightNode,
SolarPanelNode,
StairNode,
StairSegmentNode,
TurbineVentNode,
} from '../packages/core/src/schema'

/**
Expand Down Expand Up @@ -184,6 +192,29 @@ export const apartmentPath = async (base: string) =>
`/project/${await auditScene(base, 'two-bedroom', twoBedroom)}`
const apartmentData = ['Project #1', 'Living / Kitchen', 'Bedroom 1', 'Bedroom 2', 'Bath']

/** The furnished scene plus the five roof vents on its roof segment and a garden fence. */
function ventsAndFenceScene() {
const graph = furnishedScene() as unknown as {
nodes: Record<string, { children?: string[] }>
}
const onRoof = { parentId: 'rseg_audit', roofSegmentId: 'rseg_audit' }
const vents = [
BoxVentNode.parse({ id: 'bvent_audit', ...onRoof, position: [-1, 0, -1.5] }),
RidgeVentNode.parse({ id: 'rvent_audit', ...onRoof, position: [0, 0, 0] }),
TurbineVentNode.parse({ id: 'tvent_audit', ...onRoof, position: [1, 0, -1.5] }),
EyebrowVentNode.parse({ id: 'eyebrow-vent_audit', ...onRoof, position: [-1, 0, 1.5] }),
CupolaNode.parse({ id: 'cupola_audit', ...onRoof, position: [1, 0, 1.5] }),
]
const fence = FenceNode.parse({ id: 'fence_audit', parentId: 'level_0', start: [-2, 12], end: [6, 12] })
for (const node of [...vents, fence]) graph.nodes[node.id] = node
graph.nodes.rseg_audit?.children?.push(...vents.map((node) => node.id))
graph.nodes.level_0?.children?.push(fence.id)
return graph as unknown as SceneGraph
}

const ventsAndFencePath = async (base: string) =>
`/project/${await auditScene(base, 'vents-fence', ventsAndFenceScene())}`

async function openLevelMenu(page: Page, row = 0): Promise<void> {
const level = page.locator('[data-surface="level-selector"] .group\\/level').nth(row)
await level.hover()
Expand Down Expand Up @@ -325,6 +356,49 @@ export const surfaces: PseudoSurface[] = [
// A kind registered by the external @pascal-app/plugin-streetscape, which owns its copy.
data: ['Road'],
},
{
name: 'box-vent-panel',
path: ventsAndFencePath,
steps: (page) => openLayer(page, 'Box Vent'),
scope: '[data-editor-inspector]',
data: furnishedData,
},
{
name: 'ridge-vent-panel',
path: ventsAndFencePath,
steps: (page) => openLayer(page, 'Ridge Vent'),
scope: '[data-editor-inspector]',
data: furnishedData,
},
{
name: 'turbine-vent-panel',
path: ventsAndFencePath,
steps: (page) => openLayer(page, 'Turbine Vent'),
scope: '[data-editor-inspector]',
// The spin-speed unit symbol.
data: [...furnishedData, 'rad/s'],
},
{
name: 'eyebrow-vent-panel',
path: ventsAndFencePath,
steps: (page) => openLayer(page, 'Eyebrow Vent'),
scope: '[data-editor-inspector]',
data: furnishedData,
},
{
name: 'cupola-panel',
path: ventsAndFencePath,
steps: (page) => openLayer(page, 'Cupola'),
scope: '[data-editor-inspector]',
data: furnishedData,
},
{
name: 'fence-panel',
path: ventsAndFencePath,
steps: (page) => openLayer(page, 'Fence'),
scope: '[data-editor-inspector]',
data: furnishedData,
},
{
name: 'room-panel',
path: furnishedPath,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export function SegmentedControl<T extends string>({
}}
type="button"
>
<span className="relative z-10 flex min-w-0 items-center justify-center gap-1.5 whitespace-normal text-center [&>svg]:shrink-0">
<span className="relative z-10 flex min-w-0 items-center justify-center gap-1.5 whitespace-normal text-center [overflow-wrap:anywhere] [&>svg]:shrink-0">
{option.label}
</span>
</button>
Expand Down
2 changes: 1 addition & 1 deletion packages/editor/src/i18n/locales/en-XA/messages.ts

Large diffs are not rendered by default.

Loading
Loading