* refactor(editor): separate canvas view state - Classify shared and view-local editor state explicitly - Let canvas surfaces render supplied view state and report their viewport - Preserve the existing one-canvas behavior by default * fix(canvas): preserve loading render state * feat(editor): model split canvas panes - Add pure recursive split-tree operations with validated sizes - Add explicit pane registry and independent view-state cloning - Cap visible panes and cover close and split behavior * refactor(editor): group state ownership modules - Move shared and view state into the editor state namespace - Model the partition with explicit interfaces and default factories - Derive runtime view keys from the default view object * feat(editor): model split canvas panes - Add pure recursive split-tree operations with validated sizes - Add explicit pane registry and independent view-state cloning - Cap visible panes and cover close and split behavior * feat(editor): add split canvas views - Render recursive pane layouts with Reka UI splitters and pane-local headers - Route canvas input, selection, viewport state, and close actions to the active pane - Repaint every canvas during shared document previews and cover split lifecycle in tests * fix(editor): clean up inactive pane interactions - Cancel drag, padding preview, and text editing state when pane focus changes - Remove duplicate changelog entries introduced while updating master
24 lines
733 B
TypeScript
24 lines
733 B
TypeScript
const splitterTheme = {
|
|
slots: {
|
|
handle:
|
|
'group relative z-10 shrink-0 touch-none outline-none focus-visible:ring-1 focus-visible:ring-panel-focus',
|
|
divider:
|
|
'pointer-events-none absolute bg-border transition-colors group-data-[state=drag]:bg-accent group-data-[state=hover]:bg-accent group-focus-visible:bg-accent'
|
|
},
|
|
variants: {
|
|
direction: {
|
|
horizontal: {
|
|
handle: '-mx-1 w-2 cursor-col-resize',
|
|
divider: 'inset-y-0 left-1/2 w-px -translate-x-1/2'
|
|
},
|
|
vertical: {
|
|
handle: '-my-1 h-2 cursor-row-resize',
|
|
divider: 'inset-x-0 top-1/2 h-px -translate-y-1/2'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export type SplitterTheme = typeof splitterTheme
|
|
export default splitterTheme
|