@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.
@@ -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
+
@@ -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
+
@@ -102,6 +102,7 @@ export interface CanvasInteractionPresetConfig {
102
102
  multiSelectionKey?: string[];
103
103
  minZoom?: number;
104
104
  maxZoom?: number;
105
+ selectionMode?: 'partial' | 'full';
105
106
  }
106
107
 
107
108
  /**