@pixerate/editor-svelte 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canvas/index.d.ts +115 -0
- package/dist/canvas/index.js +321 -32
- package/dist/canvas/index.js.map +1 -1
- package/package.json +1 -1
- package/src/canvas/FloatingHorizontalScrollbar.svelte +110 -0
- package/src/canvas/__tests__/canvas-multi-drag.test.ts +112 -0
- package/src/canvas/__tests__/canvas-node-sync.svelte.test.ts +104 -0
- package/src/canvas/createCanvasMultiDrag.svelte.ts +175 -0
- package/src/canvas/createCanvasNodeSync.svelte.ts +150 -0
- package/src/canvas/createCanvasSelection.svelte.ts +51 -0
- package/src/canvas/index.d.ts +115 -0
- package/src/canvas/index.ts +30 -0
- package/src/canvas/types.ts +1 -0
package/src/canvas/index.d.ts
CHANGED
|
@@ -93,6 +93,7 @@ export interface CanvasInteractionPresetConfig {
|
|
|
93
93
|
multiSelectionKey?: string[];
|
|
94
94
|
minZoom?: number;
|
|
95
95
|
maxZoom?: number;
|
|
96
|
+
selectionMode?: 'partial' | 'full';
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
/**
|
|
@@ -571,3 +572,117 @@ export declare function createCanvasExplosion<
|
|
|
571
572
|
getSnapshot(parentId: string): ExplosionSnapshot<TNode, TEdge> | undefined;
|
|
572
573
|
};
|
|
573
574
|
|
|
575
|
+
export interface HandleConfig {
|
|
576
|
+
id?: string | null;
|
|
577
|
+
type: 'source' | 'target';
|
|
578
|
+
position: any;
|
|
579
|
+
x?: number;
|
|
580
|
+
y?: number;
|
|
581
|
+
width?: number;
|
|
582
|
+
height?: number;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
export interface NodeMeasurement {
|
|
586
|
+
width: number;
|
|
587
|
+
height: number;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
export declare function preserveNodeMeasurements<TNode extends CanvasNode = CanvasNode>(
|
|
591
|
+
newNodes: TNode[],
|
|
592
|
+
existingNodes: TNode[] | Map<string, TNode>
|
|
593
|
+
): TNode[];
|
|
594
|
+
|
|
595
|
+
export declare function normalizeNodeHandles<TNode extends CanvasNode = CanvasNode>(
|
|
596
|
+
node: TNode,
|
|
597
|
+
handles?: HandleConfig[]
|
|
598
|
+
): TNode;
|
|
599
|
+
|
|
600
|
+
export interface CreateCanvasNodeSyncOptions<
|
|
601
|
+
TItem,
|
|
602
|
+
TNode extends CanvasNode = CanvasNode,
|
|
603
|
+
TEdge extends CanvasEdge = CanvasEdge
|
|
604
|
+
> {
|
|
605
|
+
items: () => TItem[];
|
|
606
|
+
toNode: (
|
|
607
|
+
item: TItem,
|
|
608
|
+
index: number,
|
|
609
|
+
context: { existingNode?: TNode; prevNodesMap: Map<string, TNode> }
|
|
610
|
+
) => TNode;
|
|
611
|
+
toEdges?: (items: TItem[], nodes: TNode[]) => TEdge[];
|
|
612
|
+
defaultHandles?: (node: TNode) => HandleConfig[] | undefined;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
export declare function createCanvasNodeSync<
|
|
616
|
+
TItem,
|
|
617
|
+
TNode extends CanvasNode = CanvasNode,
|
|
618
|
+
TEdge extends CanvasEdge = CanvasEdge
|
|
619
|
+
>(options: CreateCanvasNodeSyncOptions<TItem, TNode, TEdge>): {
|
|
620
|
+
nodes: TNode[];
|
|
621
|
+
edges: TEdge[];
|
|
622
|
+
updateNodeMeasurements(id: string, width: number, height: number): void;
|
|
623
|
+
};
|
|
624
|
+
|
|
625
|
+
export interface MultiDragFollowerOffset {
|
|
626
|
+
deltaX: number;
|
|
627
|
+
deltaY: number;
|
|
628
|
+
originalPosition: XYPosition;
|
|
629
|
+
stackOffsetX: number;
|
|
630
|
+
stackOffsetY: number;
|
|
631
|
+
rotationDeg: number;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
export interface MultiDragState {
|
|
635
|
+
leadId: string;
|
|
636
|
+
offsets: Record<string, MultiDragFollowerOffset>;
|
|
637
|
+
count: number;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
export interface CreateCanvasMultiDragOptions {
|
|
641
|
+
stackOffsetStepX?: number;
|
|
642
|
+
stackOffsetStepY?: number;
|
|
643
|
+
rotationAngles?: number[];
|
|
644
|
+
baseZIndex?: number;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
export interface FollowerTransform {
|
|
648
|
+
isFollower: boolean;
|
|
649
|
+
stackOffsetX: number;
|
|
650
|
+
stackOffsetY: number;
|
|
651
|
+
rotationDeg: number;
|
|
652
|
+
zIndex: number;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
export declare function createCanvasMultiDrag(options?: CreateCanvasMultiDragOptions): {
|
|
656
|
+
readonly dragState: MultiDragState | null;
|
|
657
|
+
readonly isMultiDrag: boolean;
|
|
658
|
+
readonly count: number;
|
|
659
|
+
readonly leadId: string | null;
|
|
660
|
+
startMultiDrag(
|
|
661
|
+
leadNodeId: string,
|
|
662
|
+
selectedNodeIds: string[] | Set<string>,
|
|
663
|
+
nodes: CanvasNode[] | Map<string, CanvasNode>
|
|
664
|
+
): MultiDragState | null;
|
|
665
|
+
getFollowerTransform(nodeId: string): FollowerTransform;
|
|
666
|
+
cancelMultiDrag(
|
|
667
|
+
applyRestore?: (restores: { id: string; originalPosition: XYPosition }[]) => void
|
|
668
|
+
): { id: string; originalPosition: XYPosition }[];
|
|
669
|
+
commitMultiDrag(): void;
|
|
670
|
+
};
|
|
671
|
+
|
|
672
|
+
export interface CanvasSelectionOptions {
|
|
673
|
+
isSpacebarPanning?: boolean;
|
|
674
|
+
selectionMode?: 'partial' | 'full';
|
|
675
|
+
multiSelectionKey?: string[];
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
export declare function getMarqueeSelectionPreset(
|
|
679
|
+
options?: CanvasSelectionOptions
|
|
680
|
+
): CanvasInteractionPresetConfig;
|
|
681
|
+
|
|
682
|
+
export declare function handleDeselectOnEscape(
|
|
683
|
+
event: KeyboardEvent,
|
|
684
|
+
onDeselect: () => void
|
|
685
|
+
): boolean;
|
|
686
|
+
|
|
687
|
+
export declare const FloatingHorizontalScrollbar: any;
|
|
688
|
+
|
package/src/canvas/index.ts
CHANGED
|
@@ -68,3 +68,33 @@ export {
|
|
|
68
68
|
type CanvasGraphTarget,
|
|
69
69
|
type CreateCanvasExplosionOptions
|
|
70
70
|
} from './createCanvasExplosion.svelte.js';
|
|
71
|
+
|
|
72
|
+
// Node synchronization & handle normalization
|
|
73
|
+
export {
|
|
74
|
+
createCanvasNodeSync,
|
|
75
|
+
preserveNodeMeasurements,
|
|
76
|
+
normalizeNodeHandles,
|
|
77
|
+
type HandleConfig,
|
|
78
|
+
type NodeMeasurement,
|
|
79
|
+
type CreateCanvasNodeSyncOptions
|
|
80
|
+
} from './createCanvasNodeSync.svelte.js';
|
|
81
|
+
|
|
82
|
+
// Multi-node drag coordination rune
|
|
83
|
+
export {
|
|
84
|
+
createCanvasMultiDrag,
|
|
85
|
+
type MultiDragState,
|
|
86
|
+
type MultiDragFollowerOffset,
|
|
87
|
+
type CreateCanvasMultiDragOptions,
|
|
88
|
+
type FollowerTransform
|
|
89
|
+
} from './createCanvasMultiDrag.svelte.js';
|
|
90
|
+
|
|
91
|
+
// Drag selection helpers & presets
|
|
92
|
+
export {
|
|
93
|
+
getMarqueeSelectionPreset,
|
|
94
|
+
handleDeselectOnEscape,
|
|
95
|
+
type CanvasSelectionOptions
|
|
96
|
+
} from './createCanvasSelection.svelte.js';
|
|
97
|
+
|
|
98
|
+
// Viewport floating scrollbar component
|
|
99
|
+
export { default as FloatingHorizontalScrollbar } from './FloatingHorizontalScrollbar.svelte';
|
|
100
|
+
|