directix 1.0.0 → 1.2.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/index.d.ts CHANGED
@@ -13,6 +13,32 @@ export declare function addCleanupVue2(el: Element, fn: () => void): void;
13
13
  */
14
14
  export declare function addCleanupVue3(el: Element, fn: () => void): void;
15
15
 
16
+ /**
17
+ * Directive binding value type
18
+ */
19
+ export declare type CapitalcaseBinding = boolean | CapitalcaseOptions;
20
+
21
+ /**
22
+ * Capitalcase directive options
23
+ */
24
+ export declare interface CapitalcaseOptions {
25
+ /**
26
+ * Whether to capitalize each word or just the first word
27
+ * @default true
28
+ */
29
+ every?: boolean;
30
+ /**
31
+ * Words to keep lowercase (articles, prepositions, etc.)
32
+ * @default ['a', 'an', 'the', 'and', 'but', 'or', 'for', 'nor', 'on', 'at', 'to', 'from', 'by']
33
+ */
34
+ keepLower?: string[];
35
+ /**
36
+ * Whether to transform on input (for input elements)
37
+ * @default true
38
+ */
39
+ onInput?: boolean;
40
+ }
41
+
16
42
  /**
17
43
  * Directive binding value type
18
44
  */
@@ -63,6 +89,11 @@ export declare interface ClickOutsideOptions {
63
89
  prevent?: boolean;
64
90
  }
65
91
 
92
+ /**
93
+ * Configure permission directive
94
+ */
95
+ export declare function configurePermission(config: PermissionConfig): void;
96
+
66
97
  /**
67
98
  * Directive binding value type
68
99
  */
@@ -275,6 +306,70 @@ export declare interface DirectiveInstallOptions {
275
306
  */
276
307
  export declare const Directix: Plugin_2;
277
308
 
309
+ /**
310
+ * Draggable axis
311
+ */
312
+ export declare type DraggableAxis = 'x' | 'y' | 'both';
313
+
314
+ /**
315
+ * Directive binding value type
316
+ */
317
+ export declare type DraggableBinding = boolean | DraggableOptions;
318
+
319
+ /**
320
+ * Draggable directive options
321
+ */
322
+ export declare interface DraggableOptions {
323
+ /**
324
+ * Drag axis
325
+ * @default 'both'
326
+ */
327
+ axis?: DraggableAxis;
328
+ /**
329
+ * Constrain to parent element
330
+ * @default false
331
+ */
332
+ constrain?: boolean;
333
+ /**
334
+ * Boundary element selector or element
335
+ */
336
+ boundary?: string | HTMLElement | (() => HTMLElement | null);
337
+ /**
338
+ * Handle element selector
339
+ */
340
+ handle?: string;
341
+ /**
342
+ * Whether dragging is disabled
343
+ * @default false
344
+ */
345
+ disabled?: boolean;
346
+ /**
347
+ * Grid snapping [x, y]
348
+ */
349
+ grid?: [number, number];
350
+ /**
351
+ * Start drag callback
352
+ */
353
+ onStart?: (position: {
354
+ x: number;
355
+ y: number;
356
+ }, event: MouseEvent | TouchEvent) => void;
357
+ /**
358
+ * Drag callback
359
+ */
360
+ onDrag?: (position: {
361
+ x: number;
362
+ y: number;
363
+ }, event: MouseEvent | TouchEvent) => void;
364
+ /**
365
+ * End drag callback
366
+ */
367
+ onEnd?: (position: {
368
+ x: number;
369
+ y: number;
370
+ }, event: MouseEvent | TouchEvent) => void;
371
+ }
372
+
278
373
  /**
279
374
  * Directive binding value type
280
375
  */
@@ -315,10 +410,201 @@ export declare function generateId(prefix?: string): string;
315
410
  */
316
411
  export declare function get<T = any>(obj: Record<string, any>, path: string, defaultValue?: T): T;
317
412
 
413
+ /**
414
+ * Get current configuration
415
+ */
416
+ export declare function getPermissionConfig(): PermissionConfig | null;
417
+
318
418
  /**
319
419
  * Get current Vue version
320
420
  */
321
- export declare function getVueVersion(): 2 | 3;
421
+ export declare function getVueVersion(): VueVersion;
422
+
423
+ /**
424
+ * Directive binding value type
425
+ */
426
+ export declare type HoverBinding = HoverHandler | HoverOptions;
427
+
428
+ /**
429
+ * Hover state change handler
430
+ */
431
+ export declare type HoverHandler = (isHovering: boolean, event: MouseEvent) => void;
432
+
433
+ /**
434
+ * Hover directive options
435
+ */
436
+ export declare interface HoverOptions {
437
+ /**
438
+ * Callback when hover state changes
439
+ */
440
+ handler?: HoverHandler;
441
+ /**
442
+ * Callback when mouse enters
443
+ */
444
+ onEnter?: (event: MouseEvent) => void;
445
+ /**
446
+ * Callback when mouse leaves
447
+ */
448
+ onLeave?: (event: MouseEvent) => void;
449
+ /**
450
+ * CSS class to add when hovering
451
+ * @default 'v-hover'
452
+ */
453
+ class?: string;
454
+ /**
455
+ * Whether to disable
456
+ * @default false
457
+ */
458
+ disabled?: boolean;
459
+ /**
460
+ * Delay in milliseconds before triggering enter
461
+ * @default 0
462
+ */
463
+ enterDelay?: number;
464
+ /**
465
+ * Delay in milliseconds before triggering leave
466
+ * @default 0
467
+ */
468
+ leaveDelay?: number;
469
+ }
470
+
471
+ export declare type ImagePreviewBinding = string | ImagePreviewOptions;
472
+
473
+ /**
474
+ * Image preview options
475
+ */
476
+ export declare interface ImagePreviewOptions {
477
+ /** Image source URL */
478
+ src?: string;
479
+ /** Preview image source URL (higher resolution) */
480
+ previewSrc?: string;
481
+ /** Alt text for accessibility */
482
+ alt?: string;
483
+ /** Whether preview is disabled @default false */
484
+ disabled?: boolean;
485
+ /** Close on click outside @default true */
486
+ closeOnClickOutside?: boolean;
487
+ /** Close on escape key @default true */
488
+ closeOnEsc?: boolean;
489
+ /** Show close button @default true */
490
+ showCloseButton?: boolean;
491
+ /** Z-index of the preview overlay @default 9999 */
492
+ zIndex?: number;
493
+ /** Custom class for the preview overlay */
494
+ class?: string;
495
+ /** Enable pinch zoom on mobile @default true */
496
+ enablePinchZoom?: boolean;
497
+ /** Enable double tap to zoom @default true */
498
+ enableDoubleTap?: boolean;
499
+ /** Enable swipe up to close @default true */
500
+ enableSwipeClose?: boolean;
501
+ /** Show zoom indicator @default true */
502
+ showZoomIndicator?: boolean;
503
+ /** Minimum zoom scale @default 0.5 */
504
+ minScale?: number;
505
+ /** Maximum zoom scale @default 5 */
506
+ maxScale?: number;
507
+ /** Callback when preview opens */
508
+ onOpen?: () => void;
509
+ /** Callback when preview closes */
510
+ onClose?: () => void;
511
+ }
512
+
513
+ /**
514
+ * Directive binding value type
515
+ */
516
+ export declare type InfiniteScrollBinding = InfiniteScrollHandler | InfiniteScrollOptions;
517
+
518
+ /**
519
+ * Infinite scroll handler
520
+ */
521
+ export declare type InfiniteScrollHandler = () => void | Promise<void>;
522
+
523
+ /**
524
+ * Infinite scroll directive options
525
+ */
526
+ export declare interface InfiniteScrollOptions {
527
+ /**
528
+ * Handler to call when scrolling to bottom
529
+ * @required
530
+ */
531
+ handler: InfiniteScrollHandler;
532
+ /**
533
+ * Distance from bottom to trigger load (in pixels)
534
+ * @default 0
535
+ */
536
+ distance?: number;
537
+ /**
538
+ * Whether to disable
539
+ * @default false
540
+ */
541
+ disabled?: boolean;
542
+ /**
543
+ * Whether currently loading
544
+ * @default false
545
+ */
546
+ loading?: boolean;
547
+ /**
548
+ * Whether to use IntersectionObserver (more efficient)
549
+ * @default true
550
+ */
551
+ useIntersection?: boolean;
552
+ /**
553
+ * Throttle time in milliseconds
554
+ * @default 200
555
+ */
556
+ throttle?: number;
557
+ /**
558
+ * Custom scroll container
559
+ */
560
+ container?: string | Element | null;
561
+ /**
562
+ * Callback when load starts
563
+ */
564
+ onLoadStart?: () => void;
565
+ /**
566
+ * Callback when load completes
567
+ */
568
+ onLoadEnd?: () => void;
569
+ /**
570
+ * Callback on error
571
+ */
572
+ onError?: (error: Error) => void;
573
+ }
574
+
575
+ /**
576
+ * Directive binding value type
577
+ */
578
+ export declare type IntersectBinding = IntersectHandler | IntersectOptions;
579
+
580
+ /**
581
+ * Intersect event handler
582
+ */
583
+ export declare type IntersectHandler = (entry: IntersectionObserverEntry, observer: IntersectionObserver) => void;
584
+
585
+ /**
586
+ * Intersect directive options
587
+ */
588
+ export declare interface IntersectOptions {
589
+ /** Callback when element intersects */
590
+ handler?: IntersectHandler;
591
+ /** Callback when element enters viewport */
592
+ onEnter?: (entry: IntersectionObserverEntry, observer: IntersectionObserver) => void;
593
+ /** Callback when element leaves viewport */
594
+ onLeave?: (entry: IntersectionObserverEntry, observer: IntersectionObserver) => void;
595
+ /** Callback when element changes intersection */
596
+ onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;
597
+ /** Root element for intersection @default null (viewport) */
598
+ root?: Element | null;
599
+ /** Margin around the root @default '0px' */
600
+ rootMargin?: string;
601
+ /** Threshold(s) at which to trigger callback @default 0 */
602
+ threshold?: number | number[];
603
+ /** Whether to disable @default false */
604
+ disabled?: boolean;
605
+ /** Whether to trigger only once @default false */
606
+ once?: boolean;
607
+ }
322
608
 
323
609
  /**
324
610
  * Check if value is an array
@@ -371,103 +657,941 @@ export declare const isSSR: () => boolean;
371
657
  export declare function isString(value: unknown): value is string;
372
658
 
373
659
  /**
374
- * Check if Vue 2
375
- */
376
- export declare const isVue2: () => boolean;
377
-
378
- /**
379
- * Check if Vue 3
660
+ * Check if Vue 2 (includes 2.7)
380
661
  */
381
- export declare const isVue3: () => boolean;
662
+ export declare function isVue2(): boolean;
382
663
 
383
664
  /**
384
- * Parse time argument
385
- * Supports formats: "300" | "300ms" | "1s"
665
+ * Check if Vue 2.7 (has built-in Composition API support)
386
666
  */
387
- export declare function parseTime(arg?: string): number | null;
667
+ export declare function isVue27(): boolean;
388
668
 
389
669
  /**
390
- * Set nested property value by path
670
+ * Check if Vue 3
391
671
  */
392
- export declare function set(obj: Record<string, any>, path: string, value: any): void;
672
+ export declare function isVue3(): boolean;
393
673
 
394
674
  /**
395
- * Check if Clipboard API is supported
675
+ * Directive binding value type
396
676
  */
397
- export declare const supportsClipboard: () => boolean;
677
+ export declare type LazyBinding = string | LazyOptions;
398
678
 
399
679
  /**
400
- * Check if IntersectionObserver is supported
680
+ * Lazy directive options
401
681
  */
402
- export declare const supportsIntersectionObserver: () => boolean;
682
+ export declare interface LazyOptions {
683
+ /**
684
+ * Image source URL
685
+ */
686
+ src?: string;
687
+ /**
688
+ * Placeholder image URL
689
+ */
690
+ placeholder?: string;
691
+ /**
692
+ * Error image URL (shown when loading fails)
693
+ */
694
+ error?: string;
695
+ /**
696
+ * Preload distance in pixels
697
+ * @default 0
698
+ */
699
+ preload?: number;
700
+ /**
701
+ * Callback when image loads successfully
702
+ */
703
+ onLoad?: (el: HTMLElement) => void;
704
+ /**
705
+ * Callback when image fails to load
706
+ */
707
+ onError?: (el: HTMLElement, error: Error) => void;
708
+ /**
709
+ * Number of retry attempts
710
+ * @default 1
711
+ */
712
+ attempt?: number;
713
+ /**
714
+ * Filter function, return false to skip loading
715
+ */
716
+ filter?: (src: string) => boolean;
717
+ /**
718
+ * Custom IntersectionObserver
719
+ */
720
+ observer?: IntersectionObserver;
721
+ /**
722
+ * Whether to disable lazy loading
723
+ * @default false
724
+ */
725
+ disabled?: boolean;
726
+ }
403
727
 
404
728
  /**
405
- * Check if MutationObserver is supported
729
+ * Lazy loading state
406
730
  */
407
- export declare const supportsMutationObserver: () => boolean;
731
+ export declare type LazyState = 'pending' | 'loading' | 'loaded' | 'error';
408
732
 
409
733
  /**
410
- * Check if passive event listening is supported
734
+ * Directive binding value type
411
735
  */
412
- export declare const supportsPassive: () => boolean;
736
+ export declare type LoadingBinding = boolean | LoadingOptions;
413
737
 
414
738
  /**
415
- * Check if ResizeObserver is supported
739
+ * Loading directive options
416
740
  */
417
- export declare const supportsResizeObserver: () => boolean;
741
+ export declare interface LoadingOptions {
742
+ /**
743
+ * Loading state
744
+ * @default true
745
+ */
746
+ value?: boolean;
747
+ /**
748
+ * Loading text to display
749
+ */
750
+ text?: string;
751
+ /**
752
+ * CSS class for loading overlay
753
+ * @default 'v-loading'
754
+ */
755
+ loadingClass?: string;
756
+ /**
757
+ * CSS class for loading spinner
758
+ * @default 'v-loading__spinner'
759
+ */
760
+ spinnerClass?: string;
761
+ /**
762
+ * CSS class for loading text
763
+ * @default 'v-loading__text'
764
+ */
765
+ textClass?: string;
766
+ /**
767
+ * Custom spinner HTML
768
+ */
769
+ spinner?: string;
770
+ /**
771
+ * Background color
772
+ * @default 'rgba(255, 255, 255, 0.9)'
773
+ */
774
+ background?: string;
775
+ /**
776
+ * Whether to lock scroll while loading
777
+ * @default false
778
+ */
779
+ lock?: boolean;
780
+ /**
781
+ * Whether to disable
782
+ * @default false
783
+ */
784
+ disabled?: boolean;
785
+ }
418
786
 
419
787
  /**
420
788
  * Directive binding value type
421
789
  */
422
- export declare type ThrottleBinding<T extends (...args: any[]) => any = any> = T | ThrottleOptions<T>;
423
-
424
- /**
425
- * Throttled function type
426
- */
427
- export declare interface ThrottledFunction<T extends (...args: any[]) => any> {
428
- (...args: Parameters<T>): void;
429
- cancel: () => void;
430
- }
790
+ export declare type LongPressBinding = LongPressHandler | LongPressOptions;
431
791
 
432
792
  /**
433
- * Throttle function
793
+ * Long press handler
434
794
  */
435
- export declare function throttleFn<T extends (...args: any[]) => any>(func: T, wait?: number, options?: {
436
- leading?: boolean;
437
- trailing?: boolean;
438
- }): ((...args: Parameters<T>) => void) & {
439
- cancel: () => void;
440
- };
795
+ export declare type LongPressHandler = (event: MouseEvent | TouchEvent) => void;
441
796
 
442
797
  /**
443
- * Throttle directive options
798
+ * Long press directive options
444
799
  */
445
- export declare interface ThrottleOptions<T extends (...args: any[]) => any = any> {
800
+ export declare interface LongPressOptions {
446
801
  /**
447
- * Function to throttle
802
+ * Callback when long press is triggered
803
+ * @required
448
804
  */
449
- handler: T;
805
+ handler: LongPressHandler;
450
806
  /**
451
- * Delay time in milliseconds
452
- * @default 300
807
+ * Duration in milliseconds to trigger long press
808
+ * @default 500
453
809
  */
454
- wait?: number;
810
+ duration?: number;
455
811
  /**
456
- * Whether to invoke immediately before delay starts
457
- * @default true
812
+ * Whether to disable
813
+ * @default false
458
814
  */
459
- leading?: boolean;
815
+ disabled?: boolean;
460
816
  /**
461
- * Whether to invoke after delay ends
817
+ * Maximum movement distance before canceling
818
+ * @default 10
819
+ */
820
+ distance?: number;
821
+ /**
822
+ * Callback when long press starts (on mousedown/touchstart)
823
+ */
824
+ onStart?: (event: MouseEvent | TouchEvent) => void;
825
+ /**
826
+ * Callback when long press is canceled
827
+ */
828
+ onCancel?: (event: MouseEvent | TouchEvent) => void;
829
+ /**
830
+ * Callback on each tick during long press
831
+ */
832
+ onTick?: (remaining: number) => void;
833
+ /**
834
+ * Interval for onTick callback in milliseconds
835
+ * @default 100
836
+ */
837
+ tickInterval?: number;
838
+ /**
839
+ * Whether to prevent default behavior
462
840
  * @default true
463
841
  */
464
- trailing?: boolean;
842
+ prevent?: boolean;
843
+ /**
844
+ * Whether to stop propagation
845
+ * @default false
846
+ */
847
+ stop?: boolean;
465
848
  }
466
849
 
467
850
  /**
468
- * v-click-outside directive
469
- *
470
- * @example
851
+ * Directive binding value type
852
+ */
853
+ export declare type LowercaseBinding = boolean | LowercaseOptions;
854
+
855
+ /**
856
+ * Lowercase directive options
857
+ */
858
+ export declare interface LowercaseOptions {
859
+ /**
860
+ * Transform only the first character
861
+ * @default false
862
+ */
863
+ first?: boolean;
864
+ /**
865
+ * Transform on input event (for input elements)
866
+ * @default true
867
+ */
868
+ onInput?: boolean;
869
+ }
870
+
871
+ export declare type MaskBinding = string | MaskOptions;
872
+
873
+ /**
874
+ * Mask directive options
875
+ */
876
+ export declare interface MaskOptions {
877
+ /** Mask pattern: # digit, A letter, N alphanumeric, X any, others as literals */
878
+ mask: string;
879
+ /** Placeholder character @default '_' */
880
+ placeholder?: string;
881
+ /** Show mask placeholder on focus @default true */
882
+ showPlaceholder?: boolean;
883
+ /** Show mask on blur @default false */
884
+ showMaskOnBlur?: boolean;
885
+ /** Clear incomplete on blur @default false */
886
+ clearIncomplete?: boolean;
887
+ /** Disable @default false */
888
+ disabled?: boolean;
889
+ /** Callback when value changes */
890
+ onChange?: (value: string, rawValue: string) => void;
891
+ /** Callback when mask is complete */
892
+ onComplete?: (value: string) => void;
893
+ }
894
+
895
+ export declare type MoneyBinding = string | MoneyOptions;
896
+
897
+ /**
898
+ * Money directive options
899
+ */
900
+ export declare interface MoneyOptions extends NumberFormatOptions {
901
+ /** Currency symbol @default '$' */
902
+ symbol?: string;
903
+ /** Symbol position @default 'before' */
904
+ symbolPosition?: 'before' | 'after';
905
+ }
906
+
907
+ /**
908
+ * Directive binding value type
909
+ */
910
+ export declare type MutationBinding = MutationHandler | MutationOptions;
911
+
912
+ /**
913
+ * Mutation change handler
914
+ */
915
+ export declare type MutationHandler = (mutations: MutationRecord[], observer: MutationObserver) => void;
916
+
917
+ /**
918
+ * Mutation directive options
919
+ */
920
+ export declare interface MutationOptions {
921
+ /**
922
+ * Callback when mutations occur
923
+ * @required
924
+ */
925
+ handler: MutationHandler;
926
+ /**
927
+ * Whether to observe attribute changes
928
+ * @default false
929
+ */
930
+ attributes?: boolean;
931
+ /**
932
+ * Specific attributes to observe
933
+ */
934
+ attributeFilter?: string[];
935
+ /**
936
+ * Whether to observe child node additions/removals
937
+ * @default true
938
+ */
939
+ childList?: boolean;
940
+ /**
941
+ * Whether to observe all descendants, not just direct children
942
+ * @default false
943
+ */
944
+ subtree?: boolean;
945
+ /**
946
+ * Whether to observe character data changes
947
+ * @default false
948
+ */
949
+ characterData?: boolean;
950
+ /**
951
+ * Whether to record old attribute values
952
+ * @default false
953
+ */
954
+ attributeOldValue?: boolean;
955
+ /**
956
+ * Whether to record old character data
957
+ * @default false
958
+ */
959
+ characterDataOldValue?: boolean;
960
+ /**
961
+ * Whether to disable
962
+ * @default false
963
+ */
964
+ disabled?: boolean;
965
+ }
966
+
967
+ export declare type NumberBinding = number | NumberOptions;
968
+
969
+ /**
970
+ * Shared utilities for number and money formatting directives
971
+ */
972
+ /**
973
+ * Base options shared by number and money formatting
974
+ */
975
+ declare interface NumberFormatOptions {
976
+ /** Number of decimal places */
977
+ precision?: number;
978
+ /** Thousands separator */
979
+ separator?: string;
980
+ /** Decimal separator */
981
+ decimal?: string;
982
+ /** Whether to allow negative numbers @default true */
983
+ allowNegative?: boolean;
984
+ /** Minimum value */
985
+ min?: number;
986
+ /** Maximum value */
987
+ max?: number;
988
+ }
989
+
990
+ /**
991
+ * Number directive options
992
+ */
993
+ export declare interface NumberOptions extends NumberFormatOptions {
994
+ /** Prefix string (e.g., '$') */
995
+ prefix?: string;
996
+ /** Suffix string (e.g., '%') */
997
+ suffix?: string;
998
+ }
999
+
1000
+ /**
1001
+ * Parse time argument
1002
+ * Supports formats: "300" | "300ms" | "1s"
1003
+ */
1004
+ export declare function parseTime(arg?: string): number | null;
1005
+
1006
+ /**
1007
+ * Permission action mode
1008
+ */
1009
+ export declare type PermissionAction = 'remove' | 'disable' | 'hide';
1010
+
1011
+ /**
1012
+ * Directive binding value type
1013
+ */
1014
+ export declare type PermissionBinding = string | string[] | PermissionOptions;
1015
+
1016
+ /**
1017
+ * Permission configuration
1018
+ */
1019
+ export declare interface PermissionConfig {
1020
+ /** Get current user's permissions */
1021
+ getPermissions: () => string[];
1022
+ /** Get current user's roles */
1023
+ getRoles?: () => string[];
1024
+ /** Role to permission mapping */
1025
+ roleMap?: Record<string, string[]>;
1026
+ }
1027
+
1028
+ /**
1029
+ * Permission check mode
1030
+ */
1031
+ declare type PermissionMode = 'some' | 'every';
1032
+
1033
+ /**
1034
+ * Permission directive options
1035
+ */
1036
+ export declare interface PermissionOptions {
1037
+ /** Permission value(s) to check */
1038
+ value: string | string[];
1039
+ /** Logic for multiple permissions: 'some' (OR) or 'every' (AND). Default: 'some' */
1040
+ mode?: PermissionMode;
1041
+ /** Action when permission denied. Default: 'remove' */
1042
+ action?: PermissionAction;
1043
+ /** Custom permission check function */
1044
+ check?: (permission: string | string[], mode: PermissionMode) => boolean;
1045
+ /** Callback when permission state changes */
1046
+ onChange?: (hasPermission: boolean) => void;
1047
+ }
1048
+
1049
+ /**
1050
+ * Reset Vue version (useful for testing)
1051
+ */
1052
+ export declare function resetVueVersion(): void;
1053
+
1054
+ /**
1055
+ * Directive binding value type
1056
+ */
1057
+ export declare type ResizeBinding = ResizeHandler | ResizeOptions;
1058
+
1059
+ /**
1060
+ * Resize event handler
1061
+ */
1062
+ export declare type ResizeHandler = (entry: ResizeObserverEntry) => void;
1063
+
1064
+ /**
1065
+ * Resize information
1066
+ */
1067
+ export declare interface ResizeInfo {
1068
+ /** New width */
1069
+ width: number;
1070
+ /** New height */
1071
+ height: number;
1072
+ /** Content rect */
1073
+ contentRect: DOMRectReadOnly;
1074
+ /** Border box size */
1075
+ borderBoxSize: ReadonlyArray<ResizeObserverSize>;
1076
+ /** Content box size */
1077
+ contentBoxSize: ReadonlyArray<ResizeObserverSize>;
1078
+ /** Device pixel content box size */
1079
+ devicePixelContentBoxSize: ReadonlyArray<ResizeObserverSize>;
1080
+ }
1081
+
1082
+ /**
1083
+ * Resize directive options
1084
+ */
1085
+ export declare interface ResizeOptions {
1086
+ /**
1087
+ * Resize event handler
1088
+ * @required
1089
+ */
1090
+ handler: ResizeHandler;
1091
+ /**
1092
+ * Whether to disable
1093
+ * @default false
1094
+ */
1095
+ disabled?: boolean;
1096
+ /**
1097
+ * Whether to use box model
1098
+ * - 'content-box': size of content area
1099
+ * - 'border-box': size of border box
1100
+ * - 'device-pixel-content-box': size in device pixels
1101
+ * @default 'content-box'
1102
+ */
1103
+ box?: 'content-box' | 'border-box' | 'device-pixel-content-box';
1104
+ /**
1105
+ * Debounce time in milliseconds
1106
+ * @default 0 (no debounce)
1107
+ */
1108
+ debounce?: number;
1109
+ /**
1110
+ * Callback for browsers without ResizeObserver (uses object fallback)
1111
+ */
1112
+ onFallback?: (info: ResizeInfo) => void;
1113
+ }
1114
+
1115
+ /**
1116
+ * Directive binding value type
1117
+ */
1118
+ export declare type RippleBinding = boolean | string | RippleOptions;
1119
+
1120
+ /**
1121
+ * Ripple directive options
1122
+ */
1123
+ export declare interface RippleOptions {
1124
+ /**
1125
+ * Ripple color
1126
+ * @default 'currentColor'
1127
+ */
1128
+ color?: string;
1129
+ /**
1130
+ * Ripple duration in milliseconds
1131
+ * @default 600
1132
+ */
1133
+ duration?: number;
1134
+ /**
1135
+ * Whether to disable ripple
1136
+ * @default false
1137
+ */
1138
+ disabled?: boolean;
1139
+ /**
1140
+ * Initial scale of ripple
1141
+ * @default 0
1142
+ */
1143
+ initialScale?: number;
1144
+ /**
1145
+ * Final scale of ripple
1146
+ * @default 2
1147
+ */
1148
+ finalScale?: number;
1149
+ }
1150
+
1151
+ /**
1152
+ * Directive binding value type
1153
+ */
1154
+ export declare type SanitizeBinding = boolean | SanitizeOptions;
1155
+
1156
+ /**
1157
+ * Sanitize handler
1158
+ */
1159
+ export declare type SanitizeHandler = (value: string) => string;
1160
+
1161
+ /**
1162
+ * Sanitize directive options
1163
+ */
1164
+ export declare interface SanitizeOptions {
1165
+ /**
1166
+ * Tags to allow (whitelist)
1167
+ * @default []
1168
+ */
1169
+ allowedTags?: string[];
1170
+ /**
1171
+ * Attributes to allow (whitelist)
1172
+ * @default []
1173
+ */
1174
+ allowedAttributes?: string[];
1175
+ /**
1176
+ * Whether to allow data URLs
1177
+ * @default false
1178
+ */
1179
+ allowDataUrls?: boolean;
1180
+ /**
1181
+ * Whether to allow inline styles
1182
+ * @default false
1183
+ */
1184
+ allowStyles?: boolean;
1185
+ /**
1186
+ * Whether to allow class attribute
1187
+ * @default false
1188
+ */
1189
+ allowClass?: boolean;
1190
+ /**
1191
+ * Whether to allow id attribute
1192
+ * @default false
1193
+ */
1194
+ allowId?: boolean;
1195
+ /**
1196
+ * Custom sanitize function
1197
+ */
1198
+ handler?: SanitizeHandler;
1199
+ /**
1200
+ * Whether to disable
1201
+ * @default false
1202
+ */
1203
+ disabled?: boolean;
1204
+ /**
1205
+ * Whether to sanitize on update
1206
+ * @default true
1207
+ */
1208
+ sanitizeOnUpdate?: boolean;
1209
+ }
1210
+
1211
+ /**
1212
+ * Directive binding value type
1213
+ */
1214
+ export declare type ScrollBinding = ScrollHandler | ScrollOptions_2;
1215
+
1216
+ /**
1217
+ * Scroll event handler
1218
+ */
1219
+ export declare type ScrollHandler = (event: Event, info: ScrollInfo) => void;
1220
+
1221
+ /**
1222
+ * Scroll information
1223
+ */
1224
+ export declare interface ScrollInfo {
1225
+ /** Current scroll left position */
1226
+ scrollLeft: number;
1227
+ /** Current scroll top position */
1228
+ scrollTop: number;
1229
+ /** Maximum scroll left */
1230
+ scrollLeftMax: number;
1231
+ /** Maximum scroll top */
1232
+ scrollTopMax: number;
1233
+ /** Horizontal scroll progress (0-1) */
1234
+ progressX: number;
1235
+ /** Vertical scroll progress (0-1) */
1236
+ progressY: number;
1237
+ /** Direction of horizontal scroll (-1: left, 1: right, 0: none) */
1238
+ directionX: -1 | 0 | 1;
1239
+ /** Direction of vertical scroll (-1: up, 1: down, 0: none) */
1240
+ directionY: -1 | 0 | 1;
1241
+ /** Scroll container element or window */
1242
+ container: Element | Window;
1243
+ }
1244
+
1245
+ /**
1246
+ * Scroll directive options
1247
+ */
1248
+ declare interface ScrollOptions_2 {
1249
+ /**
1250
+ * Scroll event handler
1251
+ * @required
1252
+ */
1253
+ handler: ScrollHandler;
1254
+ /**
1255
+ * Whether to disable
1256
+ * @default false
1257
+ */
1258
+ disabled?: boolean;
1259
+ /**
1260
+ * Whether to use passive event listener
1261
+ * @default true
1262
+ */
1263
+ passive?: boolean;
1264
+ /**
1265
+ * Throttle time in milliseconds
1266
+ * @default 0 (no throttle)
1267
+ */
1268
+ throttle?: number;
1269
+ /**
1270
+ * Custom scroll container selector or element
1271
+ */
1272
+ container?: string | Element | Window | null;
1273
+ }
1274
+ export { ScrollOptions_2 as ScrollOptions }
1275
+
1276
+ /**
1277
+ * Set nested property value by path
1278
+ */
1279
+ export declare function set(obj: Record<string, any>, path: string, value: any): void;
1280
+
1281
+ /**
1282
+ * Set Vue version explicitly (for cases where auto-detection fails)
1283
+ */
1284
+ export declare function setVueVersion(version: VueVersion): void;
1285
+
1286
+ export declare type StickyBinding = boolean | number | StickyOptions;
1287
+
1288
+ /**
1289
+ * Sticky directive options
1290
+ */
1291
+ export declare interface StickyOptions {
1292
+ /** Top offset when sticky @default 0 */
1293
+ top?: number | string;
1294
+ /** Bottom offset when sticky */
1295
+ bottom?: number | string;
1296
+ /** Z-index when sticky @default 100 */
1297
+ zIndex?: number;
1298
+ /** CSS class to add when sticky @default 'v-sticky--fixed' */
1299
+ stickyClass?: string;
1300
+ /** Whether to disable @default false */
1301
+ disabled?: boolean;
1302
+ /** Callback when sticky state changes */
1303
+ onChange?: (isSticky: boolean) => void;
1304
+ /** Custom scroll container */
1305
+ container?: string | Element | null;
1306
+ }
1307
+
1308
+ /**
1309
+ * Check if Clipboard API is supported
1310
+ */
1311
+ export declare const supportsClipboard: () => boolean;
1312
+
1313
+ /**
1314
+ * Check if IntersectionObserver is supported
1315
+ */
1316
+ export declare const supportsIntersectionObserver: () => boolean;
1317
+
1318
+ /**
1319
+ * Check if MutationObserver is supported
1320
+ */
1321
+ export declare const supportsMutationObserver: () => boolean;
1322
+
1323
+ /**
1324
+ * Check if passive event listening is supported
1325
+ */
1326
+ export declare const supportsPassive: () => boolean;
1327
+
1328
+ /**
1329
+ * Check if ResizeObserver is supported
1330
+ */
1331
+ export declare const supportsResizeObserver: () => boolean;
1332
+
1333
+ /**
1334
+ * Swipe direction
1335
+ */
1336
+ export declare type SwipeDirection = 'left' | 'right' | 'up' | 'down';
1337
+
1338
+ /**
1339
+ * Directive binding value type
1340
+ */
1341
+ export declare type ThrottleBinding<T extends (...args: any[]) => any = any> = T | ThrottleOptions<T>;
1342
+
1343
+ /**
1344
+ * Throttled function type
1345
+ */
1346
+ export declare interface ThrottledFunction<T extends (...args: any[]) => any> {
1347
+ (...args: Parameters<T>): void;
1348
+ cancel: () => void;
1349
+ }
1350
+
1351
+ /**
1352
+ * Throttle function
1353
+ */
1354
+ export declare function throttleFn<T extends (...args: any[]) => any>(func: T, wait?: number, options?: {
1355
+ leading?: boolean;
1356
+ trailing?: boolean;
1357
+ }): ((...args: Parameters<T>) => void) & {
1358
+ cancel: () => void;
1359
+ };
1360
+
1361
+ /**
1362
+ * Throttle directive options
1363
+ */
1364
+ export declare interface ThrottleOptions<T extends (...args: any[]) => any = any> {
1365
+ /**
1366
+ * Function to throttle
1367
+ */
1368
+ handler: T;
1369
+ /**
1370
+ * Delay time in milliseconds
1371
+ * @default 300
1372
+ */
1373
+ wait?: number;
1374
+ /**
1375
+ * Whether to invoke immediately before delay starts
1376
+ * @default true
1377
+ */
1378
+ leading?: boolean;
1379
+ /**
1380
+ * Whether to invoke after delay ends
1381
+ * @default true
1382
+ */
1383
+ trailing?: boolean;
1384
+ }
1385
+
1386
+ export declare type TooltipBinding = string | TooltipOptions;
1387
+
1388
+ /**
1389
+ * Tooltip directive options
1390
+ */
1391
+ export declare interface TooltipOptions {
1392
+ /** Tooltip content */
1393
+ content: string;
1394
+ /** Tooltip placement @default 'top' */
1395
+ placement?: TooltipPlacement;
1396
+ /** Trigger type @default 'hover' */
1397
+ trigger?: TooltipTrigger;
1398
+ /** Show delay in milliseconds @default 0 */
1399
+ delay?: number;
1400
+ /** Hide delay in milliseconds @default 0 */
1401
+ hideDelay?: number;
1402
+ /** Offset from the element in pixels @default 8 */
1403
+ offset?: number;
1404
+ /** Custom class for the tooltip */
1405
+ class?: string;
1406
+ /** Whether to show arrow @default true */
1407
+ arrow?: boolean;
1408
+ /** Whether the tooltip is disabled @default false */
1409
+ disabled?: boolean;
1410
+ /** Maximum width of the tooltip */
1411
+ maxWidth?: number | string;
1412
+ /** Z-index of the tooltip @default 9999 */
1413
+ zIndex?: number;
1414
+ /** Callback when tooltip is shown */
1415
+ onShow?: () => void;
1416
+ /** Callback when tooltip is hidden */
1417
+ onHide?: () => void;
1418
+ }
1419
+
1420
+ /**
1421
+ * Tooltip placement
1422
+ */
1423
+ export declare type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
1424
+
1425
+ /**
1426
+ * Tooltip trigger
1427
+ */
1428
+ export declare type TooltipTrigger = 'hover' | 'click' | 'focus' | 'manual';
1429
+
1430
+ /**
1431
+ * Touch gesture options
1432
+ */
1433
+ export declare interface TouchOptions {
1434
+ /** Minimum swipe distance in pixels @default 30 */
1435
+ swipeThreshold?: number;
1436
+ /** Maximum time for a swipe in milliseconds @default 500 */
1437
+ swipeTimeout?: number;
1438
+ /** Minimum pinch scale change @default 0.1 */
1439
+ pinchThreshold?: number;
1440
+ /** Enable swipe detection @default true */
1441
+ enableSwipe?: boolean;
1442
+ /** Enable pinch detection @default true */
1443
+ enablePinch?: boolean;
1444
+ /** Enable rotate detection @default true */
1445
+ enableRotate?: boolean;
1446
+ /** Enable tap detection @default true */
1447
+ enableTap?: boolean;
1448
+ /** Maximum time for a tap in milliseconds @default 250 */
1449
+ tapTimeout?: number;
1450
+ /** Maximum movement for a tap in pixels @default 10 */
1451
+ tapThreshold?: number;
1452
+ /** Enable long press detection @default true */
1453
+ enableLongPress?: boolean;
1454
+ /** Long press timeout in milliseconds @default 500 */
1455
+ longPressTimeout?: number;
1456
+ /** Enable mouse event simulation for desktop @default true */
1457
+ enableMouse?: boolean;
1458
+ onSwipe?: (direction: SwipeDirection, event: TouchEvent | MouseEvent) => void;
1459
+ onSwipeLeft?: (event: TouchEvent | MouseEvent) => void;
1460
+ onSwipeRight?: (event: TouchEvent | MouseEvent) => void;
1461
+ onSwipeUp?: (event: TouchEvent | MouseEvent) => void;
1462
+ onSwipeDown?: (event: TouchEvent | MouseEvent) => void;
1463
+ onPinch?: (scale: number, event: TouchEvent) => void;
1464
+ onRotate?: (angle: number, event: TouchEvent) => void;
1465
+ onTap?: (event: TouchEvent | MouseEvent) => void;
1466
+ onLongPress?: (event: TouchEvent | MouseEvent) => void;
1467
+ onTouchStart?: (event: TouchEvent | MouseEvent) => void;
1468
+ onTouchMove?: (event: TouchEvent | MouseEvent) => void;
1469
+ onTouchEnd?: (event: TouchEvent | MouseEvent) => void;
1470
+ }
1471
+
1472
+ /**
1473
+ * Directive binding value type
1474
+ */
1475
+ export declare type TrimBinding = boolean | TrimPosition | TrimOptions;
1476
+
1477
+ /**
1478
+ * Trim directive options
1479
+ */
1480
+ export declare interface TrimOptions {
1481
+ /**
1482
+ * Trim position
1483
+ * @default 'both'
1484
+ */
1485
+ position?: TrimPosition;
1486
+ /**
1487
+ * Whether to trim on input (for input elements)
1488
+ * @default true
1489
+ */
1490
+ onInput?: boolean;
1491
+ /**
1492
+ * Whether to trim on blur
1493
+ * @default true
1494
+ */
1495
+ onBlur?: boolean;
1496
+ /**
1497
+ * Custom characters to trim (in addition to whitespace)
1498
+ */
1499
+ chars?: string;
1500
+ }
1501
+
1502
+ /**
1503
+ * Trim position
1504
+ */
1505
+ export declare type TrimPosition = 'start' | 'end' | 'both';
1506
+
1507
+ /**
1508
+ * Directive binding value type
1509
+ */
1510
+ export declare type TruncateBinding = number | TruncateOptions;
1511
+
1512
+ /**
1513
+ * Truncate directive options
1514
+ */
1515
+ export declare interface TruncateOptions {
1516
+ /**
1517
+ * Maximum length of text
1518
+ * @default 100
1519
+ */
1520
+ length?: number;
1521
+ /**
1522
+ * Truncation position
1523
+ * @default 'end'
1524
+ */
1525
+ position?: TruncatePosition;
1526
+ /**
1527
+ * Ellipsis string
1528
+ * @default '...'
1529
+ */
1530
+ ellipsis?: string;
1531
+ /**
1532
+ * Whether to use CSS truncation (use text-overflow: ellipsis)
1533
+ * When true, length and position options are ignored
1534
+ * @default false
1535
+ */
1536
+ useCss?: boolean;
1537
+ /**
1538
+ * Show full text on hover (as title attribute)
1539
+ * @default true
1540
+ */
1541
+ showTitle?: boolean;
1542
+ }
1543
+
1544
+ /**
1545
+ * Truncate position
1546
+ */
1547
+ export declare type TruncatePosition = 'start' | 'middle' | 'end';
1548
+
1549
+ /**
1550
+ * Directive binding value type
1551
+ */
1552
+ export declare type UppercaseBinding = boolean | UppercaseOptions;
1553
+
1554
+ /**
1555
+ * Uppercase directive options
1556
+ */
1557
+ export declare interface UppercaseOptions {
1558
+ /**
1559
+ * Transform only the first character
1560
+ * @default false
1561
+ */
1562
+ first?: boolean;
1563
+ /**
1564
+ * Transform on input event (for input elements)
1565
+ * @default true
1566
+ */
1567
+ onInput?: boolean;
1568
+ }
1569
+
1570
+ /**
1571
+ * v-capitalcase directive
1572
+ *
1573
+ * @example
1574
+ * ```vue
1575
+ * <template>
1576
+ * <!-- Simple usage: capitalize each word -->
1577
+ * <input v-capitalcase v-model="title" />
1578
+ *
1579
+ * <!-- Capitalize only first word -->
1580
+ * <span v-capitalcase="{ every: false }">{{ text }}</span>
1581
+ *
1582
+ * <!-- With custom lowercase words -->
1583
+ * <input v-capitalcase="{ keepLower: ['a', 'the'] }" v-model="title" />
1584
+ * </template>
1585
+ * ```
1586
+ */
1587
+ declare const vCapitalcase: Directive;
1588
+ export { vCapitalcase as capitalcase }
1589
+ export { vCapitalcase }
1590
+
1591
+ /**
1592
+ * v-click-outside directive
1593
+ *
1594
+ * @example
471
1595
  * ```vue
472
1596
  * <template>
473
1597
  * <div v-click-outside="handleClickOutside">
@@ -512,6 +1636,33 @@ declare const vDebounce: Directive;
512
1636
  export { vDebounce as debounce }
513
1637
  export { vDebounce }
514
1638
 
1639
+ /**
1640
+ * v-draggable directive
1641
+ *
1642
+ * @example
1643
+ * ```vue
1644
+ * <template>
1645
+ * <!-- Simple usage -->
1646
+ * <div v-draggable>Drag me</div>
1647
+ *
1648
+ * <!-- Constrain to parent -->
1649
+ * <div v-draggable="{ constrain: true }">Drag me</div>
1650
+ *
1651
+ * <!-- With handle -->
1652
+ * <div v-draggable="{ handle: '.drag-handle' }">
1653
+ * <div class="drag-handle">Drag here</div>
1654
+ * <div>Content</div>
1655
+ * </div>
1656
+ *
1657
+ * <!-- With callbacks -->
1658
+ * <div v-draggable="{ onDrag: handleDrag }">Drag me</div>
1659
+ * </template>
1660
+ * ```
1661
+ */
1662
+ declare const vDraggable: Directive;
1663
+ export { vDraggable as draggable }
1664
+ export { vDraggable }
1665
+
515
1666
  /**
516
1667
  * v-focus directive
517
1668
  *
@@ -527,6 +1678,330 @@ declare const vFocus: Directive;
527
1678
  export { vFocus as focus }
528
1679
  export { vFocus }
529
1680
 
1681
+ /**
1682
+ * v-hover directive
1683
+ *
1684
+ * @example
1685
+ * ```vue
1686
+ * <template>
1687
+ * <div v-hover="handleHover">Hover me</div>
1688
+ * <div v-hover="{ onEnter: handleEnter, onLeave: handleLeave, class: 'is-hovering' }">Hover me</div>
1689
+ * </template>
1690
+ * ```
1691
+ */
1692
+ declare const vHover: Directive;
1693
+ export { vHover as hover }
1694
+ export { vHover }
1695
+
1696
+ /**
1697
+ * v-image-preview directive
1698
+ *
1699
+ * @example
1700
+ * ```vue
1701
+ * <template>
1702
+ * <!-- Simple usage -->
1703
+ * <img v-image-preview src="thumbnail.jpg" data-preview="full.jpg" />
1704
+ *
1705
+ * <!-- With options -->
1706
+ * <img v-image-preview="{ src: 'thumbnail.jpg', previewSrc: 'full.jpg' }" />
1707
+ *
1708
+ * <!-- On non-img element -->
1709
+ * <div v-image-preview="{ src: 'image.jpg' }">Click to preview</div>
1710
+ * </template>
1711
+ * ```
1712
+ */
1713
+ declare const vImagePreview: Directive;
1714
+ export { vImagePreview as imagePreview }
1715
+ export { vImagePreview }
1716
+
1717
+ /**
1718
+ * v-infinite-scroll directive
1719
+ *
1720
+ * @example
1721
+ * ```vue
1722
+ * <template>
1723
+ * <div v-infinite-scroll="loadMore" class="scroll-container">
1724
+ * <div v-for="item in items" :key="item.id">{{ item.name }}</div>
1725
+ * </div>
1726
+ *
1727
+ * <div v-infinite-scroll="{ handler: loadMore, distance: 100, disabled: isLoading }">
1728
+ * <div v-for="item in items" :key="item.id">{{ item.name }}</div>
1729
+ * </div>
1730
+ * </template>
1731
+ * ```
1732
+ */
1733
+ declare const vInfiniteScroll: Directive;
1734
+ export { vInfiniteScroll as infiniteScroll }
1735
+ export { vInfiniteScroll }
1736
+
1737
+ /**
1738
+ * v-intersect directive
1739
+ *
1740
+ * @example
1741
+ * ```vue
1742
+ * <div v-intersect="handleIntersect">Observe me</div>
1743
+ * <div v-intersect="{ onEnter: handleEnter, onLeave: handleLeave }">Track visibility</div>
1744
+ * <div v-intersect="{ threshold: 0.5, once: true }">Trigger once at 50%</div>
1745
+ * ```
1746
+ */
1747
+ declare const vIntersect: Directive;
1748
+ export { vIntersect as intersect }
1749
+ export { vIntersect }
1750
+
1751
+ /**
1752
+ * Directive binding value type
1753
+ */
1754
+ export declare type VisibleBinding = boolean | VisibleOptions;
1755
+
1756
+ /**
1757
+ * Visible change handler
1758
+ */
1759
+ export declare type VisibleHandler = (isVisible: boolean) => void;
1760
+
1761
+ /**
1762
+ * Visible directive options
1763
+ */
1764
+ export declare interface VisibleOptions {
1765
+ /**
1766
+ * Callback when visibility changes
1767
+ */
1768
+ handler?: VisibleHandler;
1769
+ /**
1770
+ * Whether to disable
1771
+ * @default false
1772
+ */
1773
+ disabled?: boolean;
1774
+ /**
1775
+ * Whether to set visibility: hidden instead of display: none
1776
+ * @default false
1777
+ */
1778
+ useHidden?: boolean;
1779
+ /**
1780
+ * Initial visibility
1781
+ * @default true
1782
+ */
1783
+ initial?: boolean;
1784
+ }
1785
+
1786
+ /**
1787
+ * v-lazy directive
1788
+ *
1789
+ * @example
1790
+ * ```vue
1791
+ * <template>
1792
+ * <img v-lazy="imageUrl" />
1793
+ * <img v-lazy="{ src: imageUrl, placeholder: 'placeholder.jpg' }" />
1794
+ * <div v-lazy="backgroundImageUrl"></div>
1795
+ * </template>
1796
+ * ```
1797
+ */
1798
+ declare const vLazy: Directive;
1799
+ export { vLazy as lazy }
1800
+ export { vLazy }
1801
+
1802
+ /**
1803
+ * v-loading directive
1804
+ *
1805
+ * @example
1806
+ * ```vue
1807
+ * <template>
1808
+ * <div v-loading="isLoading">Content</div>
1809
+ * <div v-loading="{ value: isLoading, text: 'Loading...' }">Content</div>
1810
+ * <div v-loading="{ value: isLoading, lock: true }">Locked scroll while loading</div>
1811
+ * </template>
1812
+ * ```
1813
+ */
1814
+ declare const vLoading: Directive;
1815
+ export { vLoading as loading }
1816
+ export { vLoading }
1817
+
1818
+ /**
1819
+ * v-long-press directive
1820
+ *
1821
+ * @example
1822
+ * ```vue
1823
+ * <template>
1824
+ * <button v-long-press="handleLongPress">Long Press Me</button>
1825
+ * <button v-long-press="{ handler: handleLongPress, duration: 1000 }">1 Second Press</button>
1826
+ * </template>
1827
+ * ```
1828
+ */
1829
+ declare const vLongPress: Directive;
1830
+ export { vLongPress as longPress }
1831
+ export { vLongPress }
1832
+
1833
+ /**
1834
+ * v-lowercase directive
1835
+ *
1836
+ * @example
1837
+ * ```vue
1838
+ * <template>
1839
+ * <!-- Transform all characters to lowercase -->
1840
+ * <input v-lowercase v-model="text" />
1841
+ *
1842
+ * <!-- Transform only first character -->
1843
+ * <span v-lowercase="{ first: true }">{{ text }}</span>
1844
+ * </template>
1845
+ * ```
1846
+ */
1847
+ declare const vLowercase: Directive;
1848
+ export { vLowercase as lowercase }
1849
+ export { vLowercase }
1850
+
1851
+ /**
1852
+ * v-mask directive
1853
+ *
1854
+ * @example
1855
+ * ```vue
1856
+ * <input v-mask="'###-##-####'" placeholder="SSN" />
1857
+ * <input v-mask="'(###) ###-####'" placeholder="Phone" />
1858
+ * <input v-mask="{ mask: '##/##/####' }" placeholder="Date" />
1859
+ * ```
1860
+ */
1861
+ declare const vMask: Directive;
1862
+ export { vMask as mask }
1863
+ export { vMask }
1864
+
1865
+ declare const vMoney: Directive;
1866
+ export { vMoney as money }
1867
+ export { vMoney }
1868
+
1869
+ /**
1870
+ * v-mutation directive
1871
+ *
1872
+ * @example
1873
+ * ```vue
1874
+ * <template>
1875
+ * <div v-mutation="handleMutation">Observe my changes</div>
1876
+ * <div v-mutation="{ handler: handleMutation, attributes: true, subtree: true }">
1877
+ * Observe attributes and subtree
1878
+ * </div>
1879
+ * </template>
1880
+ *
1881
+ * <script setup>
1882
+ * function handleMutation(mutations: MutationRecord[], observer: MutationObserver) {
1883
+ * mutations.forEach(mutation => {
1884
+ * console.log('Type:', mutation.type)
1885
+ * console.log('Target:', mutation.target)
1886
+ * })
1887
+ * }
1888
+ * </script>
1889
+ * ```
1890
+ */
1891
+ declare const vMutation: Directive;
1892
+ export { vMutation as mutation }
1893
+ export { vMutation }
1894
+
1895
+ declare const vNumber: Directive;
1896
+ export { vNumber as number }
1897
+ export { vNumber }
1898
+
1899
+ /**
1900
+ * v-permission directive
1901
+ *
1902
+ * Controls element visibility and state based on user permissions.
1903
+ * Supports role-based and permission-based access control with wildcard support.
1904
+ *
1905
+ * @example
1906
+ * ```vue
1907
+ * <template>
1908
+ * <button v-permission="'admin'">Admin Only</button>
1909
+ * <button v-permission="['admin', 'editor']">Admin or Editor</button>
1910
+ * <button v-permission="{ value: ['read', 'write'], mode: 'every' }">Read & Write</button>
1911
+ * <button v-permission="{ value: 'admin', action: 'disable' }">Disabled for non-admin</button>
1912
+ * </template>
1913
+ *
1914
+ * <script setup>
1915
+ * import { configurePermission } from 'directix'
1916
+ *
1917
+ * configurePermission({
1918
+ * getPermissions: () => store.getters.permissions,
1919
+ * getRoles: () => store.getters.roles,
1920
+ * roleMap: { admin: ['*'], editor: ['read', 'write'] }
1921
+ * })
1922
+ * </script>
1923
+ * ```
1924
+ */
1925
+ declare const vPermission: Directive;
1926
+ export { vPermission as permission }
1927
+ export { vPermission }
1928
+
1929
+ /**
1930
+ * v-resize directive
1931
+ *
1932
+ * @example
1933
+ * ```vue
1934
+ * <template>
1935
+ * <div v-resize="handleResize">Resize me</div>
1936
+ * <div v-resize="{ handler: handleResize, debounce: 200 }">Debounced resize</div>
1937
+ * </template>
1938
+ * ```
1939
+ */
1940
+ declare const vResize: Directive;
1941
+ export { vResize as resize }
1942
+ export { vResize }
1943
+
1944
+ /**
1945
+ * v-ripple directive
1946
+ *
1947
+ * @example
1948
+ * ```vue
1949
+ * <template>
1950
+ * <button v-ripple>Click me</button>
1951
+ * <button v-ripple="'rgba(255, 255, 255, 0.3)'">Custom color</button>
1952
+ * <button v-ripple="{ color: 'red', duration: 800 }">Custom options</button>
1953
+ * </template>
1954
+ * ```
1955
+ */
1956
+ declare const vRipple: Directive;
1957
+ export { vRipple as ripple }
1958
+ export { vRipple }
1959
+
1960
+ /**
1961
+ * v-sanitize directive
1962
+ *
1963
+ * @example
1964
+ * ```vue
1965
+ * <template>
1966
+ * <div v-sanitize v-html="userContent"></div>
1967
+ * <div v-sanitize="{ allowedTags: ['b', 'i', 'p'] }" v-html="userContent"></div>
1968
+ * <div v-sanitize="{ handler: customSanitizer }" v-html="userContent"></div>
1969
+ * </template>
1970
+ * ```
1971
+ */
1972
+ declare const vSanitize: Directive;
1973
+ export { vSanitize as sanitize }
1974
+ export { vSanitize }
1975
+
1976
+ /**
1977
+ * v-scroll directive
1978
+ *
1979
+ * @example
1980
+ * ```vue
1981
+ * <template>
1982
+ * <div v-scroll="handleScroll">Scroll container</div>
1983
+ * <div v-scroll="{ handler: handleScroll, throttle: 100 }">Throttled scroll</div>
1984
+ * </template>
1985
+ * ```
1986
+ */
1987
+ declare const vScroll: Directive;
1988
+ export { vScroll as scroll }
1989
+ export { vScroll }
1990
+
1991
+ /**
1992
+ * v-sticky directive
1993
+ *
1994
+ * @example
1995
+ * ```vue
1996
+ * <div v-sticky>Sticky header</div>
1997
+ * <div v-sticky="50">Sticky with 50px top offset</div>
1998
+ * <div v-sticky="{ top: 60, zIndex: 1000 }">Custom sticky</div>
1999
+ * ```
2000
+ */
2001
+ declare const vSticky: Directive;
2002
+ export { vSticky as sticky }
2003
+ export { vSticky }
2004
+
530
2005
  /**
531
2006
  * v-throttle directive
532
2007
  *
@@ -544,6 +2019,62 @@ declare const vThrottle: Directive;
544
2019
  export { vThrottle as throttle }
545
2020
  export { vThrottle }
546
2021
 
2022
+ declare const vTooltip: Directive;
2023
+ export { vTooltip as tooltip }
2024
+ export { vTooltip }
2025
+
2026
+ declare const vTouch: Directive;
2027
+ export { vTouch as touch }
2028
+ export { vTouch }
2029
+
2030
+ /**
2031
+ * v-trim directive
2032
+ *
2033
+ * @example
2034
+ * ```vue
2035
+ * <template>
2036
+ * <!-- Simple usage: trim both sides -->
2037
+ * <input v-trim v-model="text" />
2038
+ *
2039
+ * <!-- Trim only start -->
2040
+ * <input v-trim="'start'" v-model="text" />
2041
+ *
2042
+ * <!-- Trim only end -->
2043
+ * <input v-trim="'end'" v-model="text" />
2044
+ *
2045
+ * <!-- With options -->
2046
+ * <input v-trim="{ position: 'both', onBlur: true }" v-model="text" />
2047
+ *
2048
+ * <!-- For display only -->
2049
+ * <span v-trim> Text with spaces </span>
2050
+ * </template>
2051
+ * ```
2052
+ */
2053
+ declare const vTrim: Directive;
2054
+ export { vTrim as trim }
2055
+ export { vTrim }
2056
+
2057
+ /**
2058
+ * v-truncate directive
2059
+ *
2060
+ * @example
2061
+ * ```vue
2062
+ * <template>
2063
+ * <!-- Simple usage: truncate to 50 characters -->
2064
+ * <p v-truncate="50">Long text here...</p>
2065
+ *
2066
+ * <!-- With options -->
2067
+ * <p v-truncate="{ length: 100, position: 'middle' }">Long text here...</p>
2068
+ *
2069
+ * <!-- CSS truncation -->
2070
+ * <p v-truncate="{ useCss: true }">Long text here...</p>
2071
+ * </template>
2072
+ * ```
2073
+ */
2074
+ declare const vTruncate: Directive;
2075
+ export { vTruncate as truncate }
2076
+ export { vTruncate }
2077
+
547
2078
  /**
548
2079
  * Vue 2 directive hooks
549
2080
  */
@@ -568,4 +2099,46 @@ export declare interface Vue3DirectiveHooks {
568
2099
  unmounted?: (el: any, binding: any, vnode: any, prevVnode: any) => void;
569
2100
  }
570
2101
 
2102
+ /**
2103
+ * Vue version type
2104
+ * - 2: Vue 2.6.x (requires @vue/composition-api for Composition API)
2105
+ * - 2.7: Vue 2.7.x (has built-in Composition API support)
2106
+ * - 3: Vue 3.x
2107
+ */
2108
+ export declare type VueVersion = 2 | 2.7 | 3;
2109
+
2110
+ /**
2111
+ * v-uppercase directive
2112
+ *
2113
+ * @example
2114
+ * ```vue
2115
+ * <template>
2116
+ * <!-- Transform all characters to uppercase -->
2117
+ * <input v-uppercase v-model="text" />
2118
+ *
2119
+ * <!-- Transform only first character -->
2120
+ * <span v-uppercase="{ first: true }">{{ text }}</span>
2121
+ * </template>
2122
+ * ```
2123
+ */
2124
+ declare const vUppercase: Directive;
2125
+ export { vUppercase as uppercase }
2126
+ export { vUppercase }
2127
+
2128
+ /**
2129
+ * v-visible directive
2130
+ *
2131
+ * @example
2132
+ * ```vue
2133
+ * <template>
2134
+ * <div v-visible="showElement">Show/Hide</div>
2135
+ * <div v-visible="{ handler: onVisibleChange }">Track visibility</div>
2136
+ * <div v-visible="{ useHidden: true, initial: false }">Uses visibility: hidden</div>
2137
+ * </template>
2138
+ * ```
2139
+ */
2140
+ declare const vVisible: Directive;
2141
+ export { vVisible }
2142
+ export { vVisible as visible }
2143
+
571
2144
  export { }