19 lines
654 B
TypeScript
19 lines
654 B
TypeScript
import type { AnyNode } from '@pascal-app/core'
|
|
import { createSlotPaintCapability, previewSlotByUserData } from '../shared/slot-paint'
|
|
import type { ColumnNode } from './schema'
|
|
|
|
export const columnPaint = createSlotPaintCapability({
|
|
resolveRole: (args) => {
|
|
const slotId = args.hitObject?.userData?.slotId
|
|
return typeof slotId === 'string' ? slotId : null
|
|
},
|
|
applyPreview: previewSlotByUserData,
|
|
legacyEffective: (node: AnyNode) => {
|
|
const column = node as ColumnNode
|
|
if (column.materialPreset || column.material) {
|
|
return { material: column.material, materialPreset: column.materialPreset }
|
|
}
|
|
return null
|
|
},
|
|
})
|