@marsio/vue-draggable-mcp 1.0.1

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.js ADDED
@@ -0,0 +1,1718 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync } from 'fs';
3
+ import { fileURLToPath } from 'url';
4
+ import { dirname, join } from 'path';
5
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
7
+ import { z } from 'zod';
8
+
9
+ // src/props.generated.ts
10
+ var DRAGGABLE_CORE_PROPS = [
11
+ {
12
+ "name": "allowAnyClick",
13
+ "component": "DraggableCore",
14
+ "definedIn": "draggableCoreDefaultProps",
15
+ "vueRuntimeTypes": [
16
+ "Boolean"
17
+ ],
18
+ "tsType": "boolean",
19
+ "default": "false",
20
+ "hasDefault": true,
21
+ "defaultIsFactory": false,
22
+ "required": null,
23
+ "validator": null,
24
+ "sourceType": "Boolean",
25
+ "source": {
26
+ "file": "lib/DraggableCore.tsx"
27
+ }
28
+ },
29
+ {
30
+ "name": "disabled",
31
+ "component": "DraggableCore",
32
+ "definedIn": "draggableCoreDefaultProps",
33
+ "vueRuntimeTypes": [
34
+ "Boolean"
35
+ ],
36
+ "tsType": "boolean",
37
+ "default": "false",
38
+ "hasDefault": true,
39
+ "defaultIsFactory": false,
40
+ "required": null,
41
+ "validator": null,
42
+ "sourceType": "Boolean",
43
+ "source": {
44
+ "file": "lib/DraggableCore.tsx"
45
+ }
46
+ },
47
+ {
48
+ "name": "allowMobileScroll",
49
+ "component": "DraggableCore",
50
+ "definedIn": "draggableCoreDefaultProps",
51
+ "vueRuntimeTypes": [
52
+ "Boolean"
53
+ ],
54
+ "tsType": "boolean",
55
+ "default": "false",
56
+ "hasDefault": true,
57
+ "defaultIsFactory": false,
58
+ "required": null,
59
+ "validator": null,
60
+ "sourceType": "Boolean",
61
+ "source": {
62
+ "file": "lib/DraggableCore.tsx"
63
+ }
64
+ },
65
+ {
66
+ "name": "autoScroll",
67
+ "component": "DraggableCore",
68
+ "definedIn": "draggableCoreDefaultProps",
69
+ "vueRuntimeTypes": [
70
+ "Boolean"
71
+ ],
72
+ "tsType": "boolean",
73
+ "default": "false",
74
+ "hasDefault": true,
75
+ "defaultIsFactory": false,
76
+ "required": null,
77
+ "validator": null,
78
+ "sourceType": "Boolean",
79
+ "source": {
80
+ "file": "lib/DraggableCore.tsx"
81
+ }
82
+ },
83
+ {
84
+ "name": "autoScrollThreshold",
85
+ "component": "DraggableCore",
86
+ "definedIn": "draggableCoreDefaultProps",
87
+ "vueRuntimeTypes": [
88
+ "Number"
89
+ ],
90
+ "tsType": "number",
91
+ "default": "30",
92
+ "hasDefault": true,
93
+ "defaultIsFactory": false,
94
+ "required": null,
95
+ "validator": null,
96
+ "sourceType": "Number",
97
+ "source": {
98
+ "file": "lib/DraggableCore.tsx"
99
+ }
100
+ },
101
+ {
102
+ "name": "autoScrollMaxSpeed",
103
+ "component": "DraggableCore",
104
+ "definedIn": "draggableCoreDefaultProps",
105
+ "vueRuntimeTypes": [
106
+ "Number"
107
+ ],
108
+ "tsType": "number",
109
+ "default": "20",
110
+ "hasDefault": true,
111
+ "defaultIsFactory": false,
112
+ "required": null,
113
+ "validator": null,
114
+ "sourceType": "Number",
115
+ "source": {
116
+ "file": "lib/DraggableCore.tsx"
117
+ }
118
+ },
119
+ {
120
+ "name": "autoScrollAxis",
121
+ "component": "DraggableCore",
122
+ "definedIn": "draggableCoreDefaultProps",
123
+ "vueRuntimeTypes": [
124
+ "String"
125
+ ],
126
+ "tsType": "Axis",
127
+ "default": "'both'",
128
+ "hasDefault": true,
129
+ "defaultIsFactory": false,
130
+ "required": null,
131
+ "validator": null,
132
+ "sourceType": "String as PropType<Axis>",
133
+ "source": {
134
+ "file": "lib/DraggableCore.tsx"
135
+ }
136
+ },
137
+ {
138
+ "name": "autoScrollIncludeWindow",
139
+ "component": "DraggableCore",
140
+ "definedIn": "draggableCoreDefaultProps",
141
+ "vueRuntimeTypes": [
142
+ "Boolean"
143
+ ],
144
+ "tsType": "boolean",
145
+ "default": "true",
146
+ "hasDefault": true,
147
+ "defaultIsFactory": false,
148
+ "required": null,
149
+ "validator": null,
150
+ "sourceType": "Boolean",
151
+ "source": {
152
+ "file": "lib/DraggableCore.tsx"
153
+ }
154
+ },
155
+ {
156
+ "name": "autoScrollContainer",
157
+ "component": "DraggableCore",
158
+ "definedIn": "draggableCoreDefaultProps",
159
+ "vueRuntimeTypes": [
160
+ "Object",
161
+ "String",
162
+ "Array"
163
+ ],
164
+ "tsType": "AutoScrollContainerProp",
165
+ "default": "null",
166
+ "hasDefault": true,
167
+ "defaultIsFactory": false,
168
+ "required": null,
169
+ "validator": null,
170
+ "sourceType": "[Object, String, Array] as PropType<AutoScrollContainerProp>",
171
+ "source": {
172
+ "file": "lib/DraggableCore.tsx"
173
+ }
174
+ },
175
+ {
176
+ "name": "cancelInteractiveElements",
177
+ "component": "DraggableCore",
178
+ "definedIn": "draggableCoreDefaultProps",
179
+ "vueRuntimeTypes": [
180
+ "Boolean"
181
+ ],
182
+ "tsType": "boolean",
183
+ "default": "false",
184
+ "hasDefault": true,
185
+ "defaultIsFactory": false,
186
+ "required": null,
187
+ "validator": null,
188
+ "sourceType": "Boolean",
189
+ "source": {
190
+ "file": "lib/DraggableCore.tsx"
191
+ }
192
+ },
193
+ {
194
+ "name": "enableClickSuppression",
195
+ "component": "DraggableCore",
196
+ "definedIn": "draggableCoreDefaultProps",
197
+ "vueRuntimeTypes": [
198
+ "Boolean"
199
+ ],
200
+ "tsType": "boolean",
201
+ "default": "false",
202
+ "hasDefault": true,
203
+ "defaultIsFactory": false,
204
+ "required": null,
205
+ "validator": null,
206
+ "sourceType": "Boolean",
207
+ "source": {
208
+ "file": "lib/DraggableCore.tsx"
209
+ }
210
+ },
211
+ {
212
+ "name": "clickSuppressionDuration",
213
+ "component": "DraggableCore",
214
+ "definedIn": "draggableCoreDefaultProps",
215
+ "vueRuntimeTypes": [
216
+ "Number"
217
+ ],
218
+ "tsType": "number",
219
+ "default": "250",
220
+ "hasDefault": true,
221
+ "defaultIsFactory": false,
222
+ "required": null,
223
+ "validator": null,
224
+ "sourceType": "Number",
225
+ "source": {
226
+ "file": "lib/DraggableCore.tsx"
227
+ }
228
+ },
229
+ {
230
+ "name": "dragStartThreshold",
231
+ "component": "DraggableCore",
232
+ "definedIn": "draggableCoreDefaultProps",
233
+ "vueRuntimeTypes": [
234
+ "Number"
235
+ ],
236
+ "tsType": "number",
237
+ "default": "0",
238
+ "hasDefault": true,
239
+ "defaultIsFactory": false,
240
+ "required": null,
241
+ "validator": null,
242
+ "sourceType": "Number",
243
+ "source": {
244
+ "file": "lib/DraggableCore.tsx"
245
+ }
246
+ },
247
+ {
248
+ "name": "dragStartDelay",
249
+ "component": "DraggableCore",
250
+ "definedIn": "draggableCoreDefaultProps",
251
+ "vueRuntimeTypes": [
252
+ "Number"
253
+ ],
254
+ "tsType": "number",
255
+ "default": "0",
256
+ "hasDefault": true,
257
+ "defaultIsFactory": false,
258
+ "required": null,
259
+ "validator": null,
260
+ "sourceType": "Number",
261
+ "source": {
262
+ "file": "lib/DraggableCore.tsx"
263
+ }
264
+ },
265
+ {
266
+ "name": "dragStartDelayTolerance",
267
+ "component": "DraggableCore",
268
+ "definedIn": "draggableCoreDefaultProps",
269
+ "vueRuntimeTypes": [
270
+ "Number"
271
+ ],
272
+ "tsType": "number",
273
+ "default": "5",
274
+ "hasDefault": true,
275
+ "defaultIsFactory": false,
276
+ "required": null,
277
+ "validator": null,
278
+ "sourceType": "Number",
279
+ "source": {
280
+ "file": "lib/DraggableCore.tsx"
281
+ }
282
+ },
283
+ {
284
+ "name": "enableUserSelectHack",
285
+ "component": "DraggableCore",
286
+ "definedIn": "draggableCoreDefaultProps",
287
+ "vueRuntimeTypes": [
288
+ "Boolean"
289
+ ],
290
+ "tsType": "boolean",
291
+ "default": "true",
292
+ "hasDefault": true,
293
+ "defaultIsFactory": false,
294
+ "required": null,
295
+ "validator": null,
296
+ "sourceType": "Boolean",
297
+ "source": {
298
+ "file": "lib/DraggableCore.tsx"
299
+ }
300
+ },
301
+ {
302
+ "name": "useRafDrag",
303
+ "component": "DraggableCore",
304
+ "definedIn": "draggableCoreDefaultProps",
305
+ "vueRuntimeTypes": [
306
+ "Boolean"
307
+ ],
308
+ "tsType": "boolean",
309
+ "default": "false",
310
+ "hasDefault": true,
311
+ "defaultIsFactory": false,
312
+ "required": null,
313
+ "validator": null,
314
+ "sourceType": "Boolean",
315
+ "source": {
316
+ "file": "lib/DraggableCore.tsx"
317
+ }
318
+ },
319
+ {
320
+ "name": "startFn",
321
+ "component": "DraggableCore",
322
+ "definedIn": "draggableCoreDefaultProps",
323
+ "vueRuntimeTypes": [
324
+ "Function"
325
+ ],
326
+ "tsType": "(e: DraggableEvent, data: DraggableData) => void | false",
327
+ "default": "noop",
328
+ "hasDefault": true,
329
+ "defaultIsFactory": false,
330
+ "required": null,
331
+ "validator": null,
332
+ "sourceType": "Function as PropType<(e: DraggableEvent, data: DraggableData) => void | false>",
333
+ "source": {
334
+ "file": "lib/DraggableCore.tsx"
335
+ }
336
+ },
337
+ {
338
+ "name": "dragFn",
339
+ "component": "DraggableCore",
340
+ "definedIn": "draggableCoreDefaultProps",
341
+ "vueRuntimeTypes": [
342
+ "Function"
343
+ ],
344
+ "tsType": "(e: DraggableEvent, data: DraggableData) => void | false",
345
+ "default": "noop",
346
+ "hasDefault": true,
347
+ "defaultIsFactory": false,
348
+ "required": null,
349
+ "validator": null,
350
+ "sourceType": "Function as PropType<(e: DraggableEvent, data: DraggableData) => void | false>",
351
+ "source": {
352
+ "file": "lib/DraggableCore.tsx"
353
+ }
354
+ },
355
+ {
356
+ "name": "stopFn",
357
+ "component": "DraggableCore",
358
+ "definedIn": "draggableCoreDefaultProps",
359
+ "vueRuntimeTypes": [
360
+ "Function"
361
+ ],
362
+ "tsType": "(e: DraggableEvent, data: DraggableData) => void | false",
363
+ "default": "noop",
364
+ "hasDefault": true,
365
+ "defaultIsFactory": false,
366
+ "required": null,
367
+ "validator": null,
368
+ "sourceType": "Function as PropType<(e: DraggableEvent, data: DraggableData) => void | false>",
369
+ "source": {
370
+ "file": "lib/DraggableCore.tsx"
371
+ }
372
+ },
373
+ {
374
+ "name": "scale",
375
+ "component": "DraggableCore",
376
+ "definedIn": "draggableCoreDefaultProps",
377
+ "vueRuntimeTypes": [
378
+ "Number"
379
+ ],
380
+ "tsType": "number",
381
+ "default": "1",
382
+ "hasDefault": true,
383
+ "defaultIsFactory": false,
384
+ "required": null,
385
+ "validator": null,
386
+ "sourceType": "Number",
387
+ "source": {
388
+ "file": "lib/DraggableCore.tsx"
389
+ }
390
+ },
391
+ {
392
+ "name": "cancel",
393
+ "component": "DraggableCore",
394
+ "definedIn": "draggableCoreProps",
395
+ "vueRuntimeTypes": [
396
+ "String"
397
+ ],
398
+ "tsType": "string",
399
+ "default": null,
400
+ "hasDefault": false,
401
+ "defaultIsFactory": false,
402
+ "required": null,
403
+ "validator": null,
404
+ "sourceType": "String",
405
+ "source": {
406
+ "file": "lib/DraggableCore.tsx"
407
+ }
408
+ },
409
+ {
410
+ "name": "offsetParent",
411
+ "component": "DraggableCore",
412
+ "definedIn": "draggableCoreProps",
413
+ "vueRuntimeTypes": [
414
+ "Object"
415
+ ],
416
+ "tsType": "HTMLElement",
417
+ "default": null,
418
+ "hasDefault": false,
419
+ "defaultIsFactory": false,
420
+ "required": null,
421
+ "validator": "(value: unknown): boolean => propIsNotNode(value)",
422
+ "sourceType": "Object as PropType<HTMLElement>",
423
+ "source": {
424
+ "file": "lib/DraggableCore.tsx"
425
+ }
426
+ },
427
+ {
428
+ "name": "grid",
429
+ "component": "DraggableCore",
430
+ "definedIn": "draggableCoreProps",
431
+ "vueRuntimeTypes": [
432
+ "Array"
433
+ ],
434
+ "tsType": "number[]",
435
+ "default": null,
436
+ "hasDefault": false,
437
+ "defaultIsFactory": false,
438
+ "required": null,
439
+ "validator": null,
440
+ "sourceType": "Array as PropType<number[]>",
441
+ "source": {
442
+ "file": "lib/DraggableCore.tsx"
443
+ }
444
+ },
445
+ {
446
+ "name": "handle",
447
+ "component": "DraggableCore",
448
+ "definedIn": "draggableCoreProps",
449
+ "vueRuntimeTypes": [
450
+ "String"
451
+ ],
452
+ "tsType": "string",
453
+ "default": null,
454
+ "hasDefault": false,
455
+ "defaultIsFactory": false,
456
+ "required": null,
457
+ "validator": null,
458
+ "sourceType": "String",
459
+ "source": {
460
+ "file": "lib/DraggableCore.tsx"
461
+ }
462
+ },
463
+ {
464
+ "name": "nodeRef",
465
+ "component": "DraggableCore",
466
+ "definedIn": "draggableCoreProps",
467
+ "vueRuntimeTypes": [
468
+ "Object"
469
+ ],
470
+ "tsType": "HTMLElement | null",
471
+ "default": "() => null",
472
+ "hasDefault": true,
473
+ "defaultIsFactory": true,
474
+ "required": null,
475
+ "validator": null,
476
+ "sourceType": "Object as PropType<HTMLElement | null>",
477
+ "source": {
478
+ "file": "lib/DraggableCore.tsx"
479
+ }
480
+ }
481
+ ];
482
+ var DRAGGABLE_PROPS = [
483
+ {
484
+ "name": "allowAnyClick",
485
+ "component": "Draggable",
486
+ "inheritedFrom": "DraggableCore",
487
+ "definedIn": "draggableCoreDefaultProps",
488
+ "vueRuntimeTypes": [
489
+ "Boolean"
490
+ ],
491
+ "tsType": "boolean",
492
+ "default": "false",
493
+ "hasDefault": true,
494
+ "defaultIsFactory": false,
495
+ "required": null,
496
+ "validator": null,
497
+ "sourceType": "Boolean",
498
+ "source": {
499
+ "file": "lib/DraggableCore.tsx"
500
+ }
501
+ },
502
+ {
503
+ "name": "disabled",
504
+ "component": "Draggable",
505
+ "inheritedFrom": "DraggableCore",
506
+ "definedIn": "draggableCoreDefaultProps",
507
+ "vueRuntimeTypes": [
508
+ "Boolean"
509
+ ],
510
+ "tsType": "boolean",
511
+ "default": "false",
512
+ "hasDefault": true,
513
+ "defaultIsFactory": false,
514
+ "required": null,
515
+ "validator": null,
516
+ "sourceType": "Boolean",
517
+ "source": {
518
+ "file": "lib/DraggableCore.tsx"
519
+ }
520
+ },
521
+ {
522
+ "name": "allowMobileScroll",
523
+ "component": "Draggable",
524
+ "inheritedFrom": "DraggableCore",
525
+ "definedIn": "draggableCoreDefaultProps",
526
+ "vueRuntimeTypes": [
527
+ "Boolean"
528
+ ],
529
+ "tsType": "boolean",
530
+ "default": "false",
531
+ "hasDefault": true,
532
+ "defaultIsFactory": false,
533
+ "required": null,
534
+ "validator": null,
535
+ "sourceType": "Boolean",
536
+ "source": {
537
+ "file": "lib/DraggableCore.tsx"
538
+ }
539
+ },
540
+ {
541
+ "name": "autoScroll",
542
+ "component": "Draggable",
543
+ "inheritedFrom": "DraggableCore",
544
+ "definedIn": "draggableCoreDefaultProps",
545
+ "vueRuntimeTypes": [
546
+ "Boolean"
547
+ ],
548
+ "tsType": "boolean",
549
+ "default": "false",
550
+ "hasDefault": true,
551
+ "defaultIsFactory": false,
552
+ "required": null,
553
+ "validator": null,
554
+ "sourceType": "Boolean",
555
+ "source": {
556
+ "file": "lib/DraggableCore.tsx"
557
+ }
558
+ },
559
+ {
560
+ "name": "autoScrollThreshold",
561
+ "component": "Draggable",
562
+ "inheritedFrom": "DraggableCore",
563
+ "definedIn": "draggableCoreDefaultProps",
564
+ "vueRuntimeTypes": [
565
+ "Number"
566
+ ],
567
+ "tsType": "number",
568
+ "default": "30",
569
+ "hasDefault": true,
570
+ "defaultIsFactory": false,
571
+ "required": null,
572
+ "validator": null,
573
+ "sourceType": "Number",
574
+ "source": {
575
+ "file": "lib/DraggableCore.tsx"
576
+ }
577
+ },
578
+ {
579
+ "name": "autoScrollMaxSpeed",
580
+ "component": "Draggable",
581
+ "inheritedFrom": "DraggableCore",
582
+ "definedIn": "draggableCoreDefaultProps",
583
+ "vueRuntimeTypes": [
584
+ "Number"
585
+ ],
586
+ "tsType": "number",
587
+ "default": "20",
588
+ "hasDefault": true,
589
+ "defaultIsFactory": false,
590
+ "required": null,
591
+ "validator": null,
592
+ "sourceType": "Number",
593
+ "source": {
594
+ "file": "lib/DraggableCore.tsx"
595
+ }
596
+ },
597
+ {
598
+ "name": "autoScrollAxis",
599
+ "component": "Draggable",
600
+ "inheritedFrom": "DraggableCore",
601
+ "definedIn": "draggableCoreDefaultProps",
602
+ "vueRuntimeTypes": [
603
+ "String"
604
+ ],
605
+ "tsType": "Axis",
606
+ "default": "'both'",
607
+ "hasDefault": true,
608
+ "defaultIsFactory": false,
609
+ "required": null,
610
+ "validator": null,
611
+ "sourceType": "String as PropType<Axis>",
612
+ "source": {
613
+ "file": "lib/DraggableCore.tsx"
614
+ }
615
+ },
616
+ {
617
+ "name": "autoScrollIncludeWindow",
618
+ "component": "Draggable",
619
+ "inheritedFrom": "DraggableCore",
620
+ "definedIn": "draggableCoreDefaultProps",
621
+ "vueRuntimeTypes": [
622
+ "Boolean"
623
+ ],
624
+ "tsType": "boolean",
625
+ "default": "true",
626
+ "hasDefault": true,
627
+ "defaultIsFactory": false,
628
+ "required": null,
629
+ "validator": null,
630
+ "sourceType": "Boolean",
631
+ "source": {
632
+ "file": "lib/DraggableCore.tsx"
633
+ }
634
+ },
635
+ {
636
+ "name": "autoScrollContainer",
637
+ "component": "Draggable",
638
+ "inheritedFrom": "DraggableCore",
639
+ "definedIn": "draggableCoreDefaultProps",
640
+ "vueRuntimeTypes": [
641
+ "Object",
642
+ "String",
643
+ "Array"
644
+ ],
645
+ "tsType": "AutoScrollContainerProp",
646
+ "default": "null",
647
+ "hasDefault": true,
648
+ "defaultIsFactory": false,
649
+ "required": null,
650
+ "validator": null,
651
+ "sourceType": "[Object, String, Array] as PropType<AutoScrollContainerProp>",
652
+ "source": {
653
+ "file": "lib/DraggableCore.tsx"
654
+ }
655
+ },
656
+ {
657
+ "name": "cancelInteractiveElements",
658
+ "component": "Draggable",
659
+ "inheritedFrom": "DraggableCore",
660
+ "definedIn": "draggableCoreDefaultProps",
661
+ "vueRuntimeTypes": [
662
+ "Boolean"
663
+ ],
664
+ "tsType": "boolean",
665
+ "default": "false",
666
+ "hasDefault": true,
667
+ "defaultIsFactory": false,
668
+ "required": null,
669
+ "validator": null,
670
+ "sourceType": "Boolean",
671
+ "source": {
672
+ "file": "lib/DraggableCore.tsx"
673
+ }
674
+ },
675
+ {
676
+ "name": "enableClickSuppression",
677
+ "component": "Draggable",
678
+ "inheritedFrom": "DraggableCore",
679
+ "definedIn": "draggableCoreDefaultProps",
680
+ "vueRuntimeTypes": [
681
+ "Boolean"
682
+ ],
683
+ "tsType": "boolean",
684
+ "default": "false",
685
+ "hasDefault": true,
686
+ "defaultIsFactory": false,
687
+ "required": null,
688
+ "validator": null,
689
+ "sourceType": "Boolean",
690
+ "source": {
691
+ "file": "lib/DraggableCore.tsx"
692
+ }
693
+ },
694
+ {
695
+ "name": "clickSuppressionDuration",
696
+ "component": "Draggable",
697
+ "inheritedFrom": "DraggableCore",
698
+ "definedIn": "draggableCoreDefaultProps",
699
+ "vueRuntimeTypes": [
700
+ "Number"
701
+ ],
702
+ "tsType": "number",
703
+ "default": "250",
704
+ "hasDefault": true,
705
+ "defaultIsFactory": false,
706
+ "required": null,
707
+ "validator": null,
708
+ "sourceType": "Number",
709
+ "source": {
710
+ "file": "lib/DraggableCore.tsx"
711
+ }
712
+ },
713
+ {
714
+ "name": "dragStartThreshold",
715
+ "component": "Draggable",
716
+ "inheritedFrom": "DraggableCore",
717
+ "definedIn": "draggableCoreDefaultProps",
718
+ "vueRuntimeTypes": [
719
+ "Number"
720
+ ],
721
+ "tsType": "number",
722
+ "default": "0",
723
+ "hasDefault": true,
724
+ "defaultIsFactory": false,
725
+ "required": null,
726
+ "validator": null,
727
+ "sourceType": "Number",
728
+ "source": {
729
+ "file": "lib/DraggableCore.tsx"
730
+ }
731
+ },
732
+ {
733
+ "name": "dragStartDelay",
734
+ "component": "Draggable",
735
+ "inheritedFrom": "DraggableCore",
736
+ "definedIn": "draggableCoreDefaultProps",
737
+ "vueRuntimeTypes": [
738
+ "Number"
739
+ ],
740
+ "tsType": "number",
741
+ "default": "0",
742
+ "hasDefault": true,
743
+ "defaultIsFactory": false,
744
+ "required": null,
745
+ "validator": null,
746
+ "sourceType": "Number",
747
+ "source": {
748
+ "file": "lib/DraggableCore.tsx"
749
+ }
750
+ },
751
+ {
752
+ "name": "dragStartDelayTolerance",
753
+ "component": "Draggable",
754
+ "inheritedFrom": "DraggableCore",
755
+ "definedIn": "draggableCoreDefaultProps",
756
+ "vueRuntimeTypes": [
757
+ "Number"
758
+ ],
759
+ "tsType": "number",
760
+ "default": "5",
761
+ "hasDefault": true,
762
+ "defaultIsFactory": false,
763
+ "required": null,
764
+ "validator": null,
765
+ "sourceType": "Number",
766
+ "source": {
767
+ "file": "lib/DraggableCore.tsx"
768
+ }
769
+ },
770
+ {
771
+ "name": "enableUserSelectHack",
772
+ "component": "Draggable",
773
+ "inheritedFrom": "DraggableCore",
774
+ "definedIn": "draggableCoreDefaultProps",
775
+ "vueRuntimeTypes": [
776
+ "Boolean"
777
+ ],
778
+ "tsType": "boolean",
779
+ "default": "true",
780
+ "hasDefault": true,
781
+ "defaultIsFactory": false,
782
+ "required": null,
783
+ "validator": null,
784
+ "sourceType": "Boolean",
785
+ "source": {
786
+ "file": "lib/DraggableCore.tsx"
787
+ }
788
+ },
789
+ {
790
+ "name": "useRafDrag",
791
+ "component": "Draggable",
792
+ "inheritedFrom": "DraggableCore",
793
+ "definedIn": "draggableCoreDefaultProps",
794
+ "vueRuntimeTypes": [
795
+ "Boolean"
796
+ ],
797
+ "tsType": "boolean",
798
+ "default": "false",
799
+ "hasDefault": true,
800
+ "defaultIsFactory": false,
801
+ "required": null,
802
+ "validator": null,
803
+ "sourceType": "Boolean",
804
+ "source": {
805
+ "file": "lib/DraggableCore.tsx"
806
+ }
807
+ },
808
+ {
809
+ "name": "startFn",
810
+ "component": "Draggable",
811
+ "inheritedFrom": "DraggableCore",
812
+ "definedIn": "draggableCoreDefaultProps",
813
+ "vueRuntimeTypes": [
814
+ "Function"
815
+ ],
816
+ "tsType": "(e: DraggableEvent, data: DraggableData) => void | false",
817
+ "default": "noop",
818
+ "hasDefault": true,
819
+ "defaultIsFactory": false,
820
+ "required": null,
821
+ "validator": null,
822
+ "sourceType": "Function as PropType<(e: DraggableEvent, data: DraggableData) => void | false>",
823
+ "source": {
824
+ "file": "lib/DraggableCore.tsx"
825
+ }
826
+ },
827
+ {
828
+ "name": "dragFn",
829
+ "component": "Draggable",
830
+ "inheritedFrom": "DraggableCore",
831
+ "definedIn": "draggableCoreDefaultProps",
832
+ "vueRuntimeTypes": [
833
+ "Function"
834
+ ],
835
+ "tsType": "(e: DraggableEvent, data: DraggableData) => void | false",
836
+ "default": "noop",
837
+ "hasDefault": true,
838
+ "defaultIsFactory": false,
839
+ "required": null,
840
+ "validator": null,
841
+ "sourceType": "Function as PropType<(e: DraggableEvent, data: DraggableData) => void | false>",
842
+ "source": {
843
+ "file": "lib/DraggableCore.tsx"
844
+ }
845
+ },
846
+ {
847
+ "name": "stopFn",
848
+ "component": "Draggable",
849
+ "inheritedFrom": "DraggableCore",
850
+ "definedIn": "draggableCoreDefaultProps",
851
+ "vueRuntimeTypes": [
852
+ "Function"
853
+ ],
854
+ "tsType": "(e: DraggableEvent, data: DraggableData) => void | false",
855
+ "default": "noop",
856
+ "hasDefault": true,
857
+ "defaultIsFactory": false,
858
+ "required": null,
859
+ "validator": null,
860
+ "sourceType": "Function as PropType<(e: DraggableEvent, data: DraggableData) => void | false>",
861
+ "source": {
862
+ "file": "lib/DraggableCore.tsx"
863
+ }
864
+ },
865
+ {
866
+ "name": "scale",
867
+ "component": "Draggable",
868
+ "inheritedFrom": "DraggableCore",
869
+ "definedIn": "draggableCoreDefaultProps",
870
+ "vueRuntimeTypes": [
871
+ "Number"
872
+ ],
873
+ "tsType": "number",
874
+ "default": "1",
875
+ "hasDefault": true,
876
+ "defaultIsFactory": false,
877
+ "required": null,
878
+ "validator": null,
879
+ "sourceType": "Number",
880
+ "source": {
881
+ "file": "lib/DraggableCore.tsx"
882
+ }
883
+ },
884
+ {
885
+ "name": "cancel",
886
+ "component": "Draggable",
887
+ "inheritedFrom": "DraggableCore",
888
+ "definedIn": "draggableCoreProps",
889
+ "vueRuntimeTypes": [
890
+ "String"
891
+ ],
892
+ "tsType": "string",
893
+ "default": null,
894
+ "hasDefault": false,
895
+ "defaultIsFactory": false,
896
+ "required": null,
897
+ "validator": null,
898
+ "sourceType": "String",
899
+ "source": {
900
+ "file": "lib/DraggableCore.tsx"
901
+ }
902
+ },
903
+ {
904
+ "name": "offsetParent",
905
+ "component": "Draggable",
906
+ "inheritedFrom": "DraggableCore",
907
+ "definedIn": "draggableCoreProps",
908
+ "vueRuntimeTypes": [
909
+ "Object"
910
+ ],
911
+ "tsType": "HTMLElement",
912
+ "default": null,
913
+ "hasDefault": false,
914
+ "defaultIsFactory": false,
915
+ "required": null,
916
+ "validator": "(value: unknown): boolean => propIsNotNode(value)",
917
+ "sourceType": "Object as PropType<HTMLElement>",
918
+ "source": {
919
+ "file": "lib/DraggableCore.tsx"
920
+ }
921
+ },
922
+ {
923
+ "name": "grid",
924
+ "component": "Draggable",
925
+ "inheritedFrom": "DraggableCore",
926
+ "definedIn": "draggableCoreProps",
927
+ "vueRuntimeTypes": [
928
+ "Array"
929
+ ],
930
+ "tsType": "number[]",
931
+ "default": null,
932
+ "hasDefault": false,
933
+ "defaultIsFactory": false,
934
+ "required": null,
935
+ "validator": null,
936
+ "sourceType": "Array as PropType<number[]>",
937
+ "source": {
938
+ "file": "lib/DraggableCore.tsx"
939
+ }
940
+ },
941
+ {
942
+ "name": "handle",
943
+ "component": "Draggable",
944
+ "inheritedFrom": "DraggableCore",
945
+ "definedIn": "draggableCoreProps",
946
+ "vueRuntimeTypes": [
947
+ "String"
948
+ ],
949
+ "tsType": "string",
950
+ "default": null,
951
+ "hasDefault": false,
952
+ "defaultIsFactory": false,
953
+ "required": null,
954
+ "validator": null,
955
+ "sourceType": "String",
956
+ "source": {
957
+ "file": "lib/DraggableCore.tsx"
958
+ }
959
+ },
960
+ {
961
+ "name": "nodeRef",
962
+ "component": "Draggable",
963
+ "inheritedFrom": "DraggableCore",
964
+ "definedIn": "draggableCoreProps",
965
+ "vueRuntimeTypes": [
966
+ "Object"
967
+ ],
968
+ "tsType": "HTMLElement | null",
969
+ "default": "() => null",
970
+ "hasDefault": true,
971
+ "defaultIsFactory": true,
972
+ "required": null,
973
+ "validator": null,
974
+ "sourceType": "Object as PropType<HTMLElement | null>",
975
+ "source": {
976
+ "file": "lib/DraggableCore.tsx"
977
+ }
978
+ },
979
+ {
980
+ "name": "axis",
981
+ "component": "Draggable",
982
+ "inheritedFrom": null,
983
+ "definedIn": "draggableProps",
984
+ "vueRuntimeTypes": [
985
+ "String"
986
+ ],
987
+ "tsType": "Axis",
988
+ "default": "'both'",
989
+ "hasDefault": true,
990
+ "defaultIsFactory": false,
991
+ "required": null,
992
+ "validator": null,
993
+ "sourceType": "String as PropType<Axis>",
994
+ "source": {
995
+ "file": "lib/Draggable.tsx"
996
+ }
997
+ },
998
+ {
999
+ "name": "directionLock",
1000
+ "component": "Draggable",
1001
+ "inheritedFrom": null,
1002
+ "definedIn": "draggableProps",
1003
+ "vueRuntimeTypes": [
1004
+ "Boolean"
1005
+ ],
1006
+ "tsType": "boolean",
1007
+ "default": "false",
1008
+ "hasDefault": true,
1009
+ "defaultIsFactory": false,
1010
+ "required": null,
1011
+ "validator": null,
1012
+ "sourceType": "Boolean",
1013
+ "source": {
1014
+ "file": "lib/Draggable.tsx"
1015
+ }
1016
+ },
1017
+ {
1018
+ "name": "directionLockThreshold",
1019
+ "component": "Draggable",
1020
+ "inheritedFrom": null,
1021
+ "definedIn": "draggableProps",
1022
+ "vueRuntimeTypes": [
1023
+ "Number"
1024
+ ],
1025
+ "tsType": "number",
1026
+ "default": "4",
1027
+ "hasDefault": true,
1028
+ "defaultIsFactory": false,
1029
+ "required": null,
1030
+ "validator": null,
1031
+ "sourceType": "Number",
1032
+ "source": {
1033
+ "file": "lib/Draggable.tsx"
1034
+ }
1035
+ },
1036
+ {
1037
+ "name": "bounds",
1038
+ "component": "Draggable",
1039
+ "inheritedFrom": null,
1040
+ "definedIn": "draggableProps",
1041
+ "vueRuntimeTypes": [
1042
+ "Object",
1043
+ "String",
1044
+ "Boolean"
1045
+ ],
1046
+ "tsType": "DraggableBounds",
1047
+ "default": "false",
1048
+ "hasDefault": true,
1049
+ "defaultIsFactory": false,
1050
+ "required": null,
1051
+ "validator": null,
1052
+ "sourceType": "[Object, String, Boolean] as PropType<DraggableBounds>",
1053
+ "source": {
1054
+ "file": "lib/Draggable.tsx"
1055
+ }
1056
+ },
1057
+ {
1058
+ "name": "defaultClassName",
1059
+ "component": "Draggable",
1060
+ "inheritedFrom": null,
1061
+ "definedIn": "draggableProps",
1062
+ "vueRuntimeTypes": [
1063
+ "String"
1064
+ ],
1065
+ "tsType": "string",
1066
+ "default": "'vue-draggable'",
1067
+ "hasDefault": true,
1068
+ "defaultIsFactory": false,
1069
+ "required": null,
1070
+ "validator": null,
1071
+ "sourceType": "String",
1072
+ "source": {
1073
+ "file": "lib/Draggable.tsx"
1074
+ }
1075
+ },
1076
+ {
1077
+ "name": "defaultClassNameDragging",
1078
+ "component": "Draggable",
1079
+ "inheritedFrom": null,
1080
+ "definedIn": "draggableProps",
1081
+ "vueRuntimeTypes": [
1082
+ "String"
1083
+ ],
1084
+ "tsType": "string",
1085
+ "default": "'vue-draggable-dragging'",
1086
+ "hasDefault": true,
1087
+ "defaultIsFactory": false,
1088
+ "required": null,
1089
+ "validator": null,
1090
+ "sourceType": "String",
1091
+ "source": {
1092
+ "file": "lib/Draggable.tsx"
1093
+ }
1094
+ },
1095
+ {
1096
+ "name": "defaultClassNameDragged",
1097
+ "component": "Draggable",
1098
+ "inheritedFrom": null,
1099
+ "definedIn": "draggableProps",
1100
+ "vueRuntimeTypes": [
1101
+ "String"
1102
+ ],
1103
+ "tsType": "string",
1104
+ "default": "'vue-draggable-dragged'",
1105
+ "hasDefault": true,
1106
+ "defaultIsFactory": false,
1107
+ "required": null,
1108
+ "validator": null,
1109
+ "sourceType": "String",
1110
+ "source": {
1111
+ "file": "lib/Draggable.tsx"
1112
+ }
1113
+ },
1114
+ {
1115
+ "name": "defaultPosition",
1116
+ "component": "Draggable",
1117
+ "inheritedFrom": null,
1118
+ "definedIn": "draggableProps",
1119
+ "vueRuntimeTypes": [
1120
+ "Object"
1121
+ ],
1122
+ "tsType": "ControlPosition",
1123
+ "default": "() => ({ x: 0, y: 0 })",
1124
+ "hasDefault": true,
1125
+ "defaultIsFactory": true,
1126
+ "required": null,
1127
+ "validator": null,
1128
+ "sourceType": "Object as PropType<ControlPosition>",
1129
+ "source": {
1130
+ "file": "lib/Draggable.tsx"
1131
+ }
1132
+ },
1133
+ {
1134
+ "name": "positionOffset",
1135
+ "component": "Draggable",
1136
+ "inheritedFrom": null,
1137
+ "definedIn": "draggableProps",
1138
+ "vueRuntimeTypes": [
1139
+ "Object"
1140
+ ],
1141
+ "tsType": "PositionOffsetControlPosition",
1142
+ "default": null,
1143
+ "hasDefault": false,
1144
+ "defaultIsFactory": false,
1145
+ "required": null,
1146
+ "validator": null,
1147
+ "sourceType": "Object as PropType<PositionOffsetControlPosition>",
1148
+ "source": {
1149
+ "file": "lib/Draggable.tsx"
1150
+ }
1151
+ },
1152
+ {
1153
+ "name": "position",
1154
+ "component": "Draggable",
1155
+ "inheritedFrom": null,
1156
+ "definedIn": "draggableProps",
1157
+ "vueRuntimeTypes": [
1158
+ "Object"
1159
+ ],
1160
+ "tsType": "ControlPosition",
1161
+ "default": "undefined",
1162
+ "hasDefault": true,
1163
+ "defaultIsFactory": false,
1164
+ "required": null,
1165
+ "validator": null,
1166
+ "sourceType": "Object as PropType<ControlPosition>",
1167
+ "source": {
1168
+ "file": "lib/Draggable.tsx"
1169
+ }
1170
+ }
1171
+ ];
1172
+
1173
+ // src/propDescriptions.ts
1174
+ var DRAGGABLE_SPECIFIC_PROP_DESCRIPTIONS = {
1175
+ axis: "\u9650\u5236\u62D6\u62FD\u65B9\u5411",
1176
+ bounds: "\u62D6\u62FD\u8FB9\u754C\u3002\u53EF\u4EE5\u662F\u8FB9\u754C\u5BF9\u8C61\uFF0CCSS \u9009\u62E9\u5668\u5982 `'parent'` \u6216 `'.container'`\uFF0C\u6216 `false` \u4E0D\u9650\u5236",
1177
+ position: "\u53D7\u63A7\u6A21\u5F0F\u7684\u4F4D\u7F6E\uFF0C\u8BBE\u7F6E\u540E\u5FC5\u987B\u901A\u8FC7 `dragFn` \u66F4\u65B0",
1178
+ defaultPosition: "\u521D\u59CB\u4F4D\u7F6E\uFF08\u4EC5\u521D\u59CB\u5316\u65F6\u751F\u6548\uFF09",
1179
+ positionOffset: "\u4F4D\u7F6E\u504F\u79FB\u91CF",
1180
+ directionLock: "\u9501\u5B9A\u5230\u9996\u6B21\u79FB\u52A8\u7684\u65B9\u5411",
1181
+ directionLockThreshold: "\u65B9\u5411\u9501\u5B9A\u7684\u9608\u503C\u50CF\u7D20",
1182
+ defaultClassName: "\u9ED8\u8BA4\u7C7B\u540D",
1183
+ defaultClassNameDragging: "\u62D6\u62FD\u4E2D\u7684\u7C7B\u540D",
1184
+ defaultClassNameDragged: "\u62D6\u62FD\u540E\u7684\u7C7B\u540D"
1185
+ };
1186
+ var DRAGGABLE_CORE_PROP_DESCRIPTIONS = {
1187
+ disabled: "\u7981\u7528\u62D6\u62FD",
1188
+ allowAnyClick: "\u5141\u8BB8\u4EFB\u610F\u9F20\u6807\u6309\u952E\u89E6\u53D1",
1189
+ handle: "\u62D6\u62FD\u624B\u67C4 CSS \u9009\u62E9\u5668",
1190
+ cancel: "\u963B\u6B62\u62D6\u62FD\u7684\u5143\u7D20\u9009\u62E9\u5668",
1191
+ grid: "\u7F51\u683C\u5438\u9644\uFF0C\u5982 `[25, 25]`",
1192
+ scale: "\u7F29\u653E\u6BD4\u4F8B\uFF08\u7528\u4E8E\u7F29\u653E\u5BB9\u5668\u5185\u7684\u62D6\u62FD\uFF09",
1193
+ offsetParent: "\u504F\u79FB\u7236\u5143\u7D20",
1194
+ nodeRef: "\u62D6\u62FD\u8282\u70B9\u7684 ref \u5F15\u7528",
1195
+ enableUserSelectHack: "\u542F\u7528\u9632\u6B62\u6587\u672C\u9009\u4E2D\u7684 hack",
1196
+ allowMobileScroll: "\u5141\u8BB8\u79FB\u52A8\u7AEF\u6EDA\u52A8\uFF08\u89E6\u6478\u4E8B\u4EF6\u4E0D\u963B\u6B62\u9ED8\u8BA4\u884C\u4E3A\uFF09",
1197
+ autoScroll: "\u542F\u7528\u8FB9\u7F18\u81EA\u52A8\u6EDA\u52A8",
1198
+ autoScrollThreshold: "\u89E6\u53D1\u81EA\u52A8\u6EDA\u52A8\u7684\u8FB9\u7F18\u8DDD\u79BB\uFF08\u50CF\u7D20\uFF09",
1199
+ autoScrollMaxSpeed: "\u81EA\u52A8\u6EDA\u52A8\u6700\u5927\u901F\u5EA6",
1200
+ autoScrollAxis: "\u81EA\u52A8\u6EDA\u52A8\u65B9\u5411",
1201
+ autoScrollIncludeWindow: "\u81EA\u52A8\u6EDA\u52A8\u662F\u5426\u5305\u542B window",
1202
+ autoScrollContainer: "\u81EA\u52A8\u6EDA\u52A8\u5BB9\u5668",
1203
+ cancelInteractiveElements: "\u81EA\u52A8\u53D6\u6D88\u4EA4\u4E92\u5143\u7D20\uFF08input, textarea \u7B49\uFF09\u4E0A\u7684\u62D6\u62FD",
1204
+ enableClickSuppression: "\u62D6\u62FD\u540E\u6291\u5236 click \u4E8B\u4EF6",
1205
+ clickSuppressionDuration: "click \u6291\u5236\u6301\u7EED\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09",
1206
+ dragStartThreshold: "\u89E6\u53D1\u62D6\u62FD\u7684\u6700\u5C0F\u79FB\u52A8\u8DDD\u79BB\uFF08\u50CF\u7D20\uFF09",
1207
+ dragStartDelay: "\u89E6\u53D1\u62D6\u62FD\u7684\u5EF6\u8FDF\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09",
1208
+ dragStartDelayTolerance: "\u5EF6\u8FDF\u671F\u95F4\u5141\u8BB8\u7684\u79FB\u52A8\u5BB9\u5DEE\uFF08\u50CF\u7D20\uFF09",
1209
+ useRafDrag: "\u4F7F\u7528 requestAnimationFrame \u4F18\u5316\u6027\u80FD"
1210
+ };
1211
+ var EVENT_CALLBACK_DESCRIPTIONS = {
1212
+ startFn: "\u62D6\u62FD\u5F00\u59CB\uFF0C\u8FD4\u56DE `false` \u53D6\u6D88\u62D6\u62FD",
1213
+ dragFn: "\u62D6\u62FD\u4E2D\uFF0C\u8FD4\u56DE `false` \u53D6\u6D88\u672C\u6B21\u79FB\u52A8",
1214
+ stopFn: "\u62D6\u62FD\u7ED3\u675F"
1215
+ };
1216
+
1217
+ // src/data.ts
1218
+ var EVENT_CALLBACK_NAMES = ["startFn", "dragFn", "stopFn"];
1219
+ var EVENT_CALLBACK_SET = new Set(EVENT_CALLBACK_NAMES);
1220
+ var corePropsCount = DRAGGABLE_CORE_PROPS.length;
1221
+ var draggablePropsCount = DRAGGABLE_PROPS.length;
1222
+ var draggableSpecificProps = DRAGGABLE_PROPS.filter((p) => !p.inheritedFrom);
1223
+ var draggableSpecificCount = draggableSpecificProps.length;
1224
+ function escapeTableCell(text) {
1225
+ return text.replace(/\|/g, "\\|").replace(/\r?\n/g, "<br>").trim();
1226
+ }
1227
+ function formatCodeCell(text) {
1228
+ if (!text) return "-";
1229
+ return `\`${escapeTableCell(text)}\``;
1230
+ }
1231
+ function formatDefault(prop) {
1232
+ if (!prop.default) return "-";
1233
+ let output = prop.default;
1234
+ if (prop.defaultIsFactory) {
1235
+ const arrow = output.match(/=>\s*(.+)$/);
1236
+ if (arrow) output = arrow[1].trim();
1237
+ if (output.startsWith("(") && output.endsWith(")")) {
1238
+ const inner = output.slice(1, -1).trim();
1239
+ if (inner.startsWith("{") || inner.startsWith("[") || inner === "null") output = inner;
1240
+ }
1241
+ }
1242
+ return formatCodeCell(output);
1243
+ }
1244
+ function formatType(prop) {
1245
+ if (prop.tsType) return formatCodeCell(prop.tsType);
1246
+ if (prop.vueRuntimeTypes.length > 0) return formatCodeCell(prop.vueRuntimeTypes.join(" | "));
1247
+ return formatCodeCell("unknown");
1248
+ }
1249
+ function sortByPreferredOrder(items, preferredOrder) {
1250
+ const index = /* @__PURE__ */ new Map();
1251
+ preferredOrder.forEach((name, i) => index.set(name, i));
1252
+ return [...items].sort((a, b) => {
1253
+ const ai = index.has(a.name) ? index.get(a.name) : Number.POSITIVE_INFINITY;
1254
+ const bi = index.has(b.name) ? index.get(b.name) : Number.POSITIVE_INFINITY;
1255
+ if (ai !== bi) return ai - bi;
1256
+ return a.name.localeCompare(b.name);
1257
+ });
1258
+ }
1259
+ function buildPropsTable(props, descriptionMap, preferredOrder) {
1260
+ const rows = sortByPreferredOrder(props, preferredOrder).map((p) => {
1261
+ const desc = descriptionMap[p.name] ?? "";
1262
+ return `| \`${p.name}\` | ${formatType(p)} | ${formatDefault(p)} | ${escapeTableCell(desc)} |`;
1263
+ });
1264
+ return ["| Prop | \u7C7B\u578B | \u9ED8\u8BA4\u503C | \u8BF4\u660E |", "|------|------|--------|------|", ...rows].join("\n");
1265
+ }
1266
+ function buildEventCallbackTable(preferredOrder) {
1267
+ const rows = sortByPreferredOrder(
1268
+ DRAGGABLE_CORE_PROPS.filter((p) => EVENT_CALLBACK_SET.has(p.name)),
1269
+ [...preferredOrder]
1270
+ ).map((p) => {
1271
+ const desc = EVENT_CALLBACK_DESCRIPTIONS[p.name] ?? "";
1272
+ return `| \`${p.name}\` | ${formatType(p)} | ${escapeTableCell(desc)} |`;
1273
+ });
1274
+ return ["| Prop | \u7C7B\u578B | \u8BF4\u660E |", "|------|------|------|", ...rows].join("\n");
1275
+ }
1276
+ var PREFERRED_DRAGGABLE_SPECIFIC_ORDER = [
1277
+ "axis",
1278
+ "bounds",
1279
+ "position",
1280
+ "defaultPosition",
1281
+ "positionOffset",
1282
+ "directionLock",
1283
+ "directionLockThreshold",
1284
+ "defaultClassName",
1285
+ "defaultClassNameDragging",
1286
+ "defaultClassNameDragged"
1287
+ ];
1288
+ var PREFERRED_CORE_ORDER = [
1289
+ "disabled",
1290
+ "allowAnyClick",
1291
+ "handle",
1292
+ "cancel",
1293
+ "grid",
1294
+ "scale",
1295
+ "offsetParent",
1296
+ "nodeRef",
1297
+ "enableUserSelectHack",
1298
+ "allowMobileScroll",
1299
+ "autoScroll",
1300
+ "autoScrollThreshold",
1301
+ "autoScrollMaxSpeed",
1302
+ "autoScrollAxis",
1303
+ "autoScrollIncludeWindow",
1304
+ "autoScrollContainer",
1305
+ "cancelInteractiveElements",
1306
+ "enableClickSuppression",
1307
+ "clickSuppressionDuration",
1308
+ "dragStartThreshold",
1309
+ "dragStartDelay",
1310
+ "dragStartDelayTolerance",
1311
+ "useRafDrag"
1312
+ ];
1313
+ var draggableSpecificPropsTable = buildPropsTable(
1314
+ draggableSpecificProps,
1315
+ DRAGGABLE_SPECIFIC_PROP_DESCRIPTIONS,
1316
+ PREFERRED_DRAGGABLE_SPECIFIC_ORDER
1317
+ );
1318
+ var draggableCorePropsTable = buildPropsTable(
1319
+ DRAGGABLE_CORE_PROPS.filter((p) => !EVENT_CALLBACK_SET.has(p.name)),
1320
+ DRAGGABLE_CORE_PROP_DESCRIPTIONS,
1321
+ PREFERRED_CORE_ORDER
1322
+ );
1323
+ var eventCallbacksTable = buildEventCallbackTable(EVENT_CALLBACK_NAMES);
1324
+ var DOCS = `# @marsio/vue-draggable
1325
+
1326
+ Vue 3 \u62D6\u62FD\u7EC4\u4EF6\u5E93\uFF0C\u63D0\u4F9B\u7B80\u5355\u6613\u7528\u7684\u62D6\u62FD\u529F\u80FD\u3002
1327
+
1328
+ ## \u5B89\u88C5
1329
+
1330
+ \`\`\`bash
1331
+ npm install @marsio/vue-draggable
1332
+ # \u6216
1333
+ yarn add @marsio/vue-draggable
1334
+ # \u6216
1335
+ pnpm add @marsio/vue-draggable
1336
+ \`\`\`
1337
+
1338
+ ## \u7EC4\u4EF6\u9009\u62E9\u6307\u5357
1339
+
1340
+ | \u7EC4\u4EF6 | \u4F7F\u7528\u573A\u666F |
1341
+ |------|---------|
1342
+ | \`Draggable\` | \u5927\u591A\u6570\u573A\u666F\uFF0C\u81EA\u52A8\u7BA1\u7406\u4F4D\u7F6E\u72B6\u6001\uFF0C\u652F\u6301\u8FB9\u754C\u9650\u5236\u3001\u7F51\u683C\u5438\u9644\u7B49 |
1343
+ | \`DraggableCore\` | \u9700\u8981\u5B8C\u5168\u63A7\u5236\u4F4D\u7F6E\u65F6\u4F7F\u7528\uFF0C\u53EA\u63D0\u4F9B\u4E8B\u4EF6\u56DE\u8C03\uFF0C\u4E0D\u7BA1\u7406\u72B6\u6001 |
1344
+
1345
+ **\u63A8\u8350**\uFF1A\u4F18\u5148\u4F7F\u7528 \`Draggable\`\uFF0C\u53EA\u6709\u9700\u8981\u5B8C\u5168\u63A7\u5236\u4F4D\u7F6E\u8BA1\u7B97\u65F6\u624D\u7528 \`DraggableCore\`\u3002
1346
+
1347
+ ---
1348
+
1349
+ ## Draggable \u7EC4\u4EF6\uFF08\u6570\u91CF\uFF09
1350
+
1351
+ - Props\uFF1A${draggablePropsCount} \u4E2A\uFF08\u7EE7\u627F DraggableCore ${corePropsCount} \u4E2A + \u672C\u7EC4\u4EF6 ${draggableSpecificCount} \u4E2A\uFF09
1352
+ - Events\uFF1A3 \u4E2A\uFF08\u901A\u8FC7 props: startFn / dragFn / stopFn\uFF09
1353
+ - Slots\uFF1A1 \u4E2A\uFF08\u9ED8\u8BA4\u63D2\u69FD\uFF0C\u5305\u88F9\u5B50\u8282\u70B9\uFF09
1354
+
1355
+ \u7EE7\u627F DraggableCore \u7684\u6240\u6709 props\uFF0C\u5E76\u589E\u52A0\u4EE5\u4E0B props\uFF1A
1356
+
1357
+ ### Draggable \u4E13\u6709 Props
1358
+
1359
+ ${draggableSpecificPropsTable}
1360
+
1361
+ ---
1362
+
1363
+ ## DraggableCore \u7EC4\u4EF6\uFF08\u6570\u91CF\uFF09
1364
+
1365
+ - Props\uFF1A${corePropsCount} \u4E2A\uFF08\u4E0B\u8868\u5217\u51FA\uFF09
1366
+ - Events\uFF1A3 \u4E2A emits\uFF08mousedown / mouseup / touchend\uFF09\uFF1B\u56DE\u8C03\u901A\u8FC7 startFn / dragFn / stopFn
1367
+ - Slots\uFF1A1 \u4E2A\uFF08\u9ED8\u8BA4\u63D2\u69FD\uFF0C\u5305\u88F9\u5B50\u8282\u70B9\uFF09
1368
+
1369
+ \u4F4E\u7EA7\u7EC4\u4EF6\uFF0C\u53EA\u63D0\u4F9B\u62D6\u62FD\u4E8B\u4EF6\uFF0C\u4E0D\u7BA1\u7406\u4F4D\u7F6E\u72B6\u6001\u3002Draggable \u7EE7\u627F\u4E86\u4EE5\u4E0B\u6240\u6709 props\u3002
1370
+
1371
+ ### DraggableCore Props
1372
+
1373
+ ${draggableCorePropsTable}
1374
+
1375
+ ### \u4E8B\u4EF6\u56DE\u8C03\uFF08\u4E24\u4E2A\u7EC4\u4EF6\u901A\u7528\uFF09
1376
+
1377
+ ${eventCallbacksTable}
1378
+
1379
+ ### DraggableData \u5BF9\u8C61
1380
+
1381
+ \`\`\`typescript
1382
+ interface DraggableData {
1383
+ node: HTMLElement // \u88AB\u62D6\u62FD\u7684\u5143\u7D20
1384
+ x: number // \u5F53\u524D X \u4F4D\u7F6E
1385
+ y: number // \u5F53\u524D Y \u4F4D\u7F6E
1386
+ deltaX: number // X \u65B9\u5411\u7684\u589E\u91CF
1387
+ deltaY: number // Y \u65B9\u5411\u7684\u589E\u91CF
1388
+ lastX: number // \u4E0A\u4E00\u6B21\u7684 X \u4F4D\u7F6E
1389
+ lastY: number // \u4E0A\u4E00\u6B21\u7684 Y \u4F4D\u7F6E
1390
+ }
1391
+ \`\`\`
1392
+
1393
+ ---
1394
+
1395
+ ## \u4EE3\u7801\u793A\u4F8B
1396
+
1397
+ ### \u57FA\u7840\u62D6\u62FD
1398
+
1399
+ \`\`\`vue
1400
+ <template>
1401
+ <Draggable>
1402
+ <div class="box">\u62D6\u62FD\u6211</div>
1403
+ </Draggable>
1404
+ </template>
1405
+
1406
+ <script setup>
1407
+ import { Draggable } from '@marsio/vue-draggable'
1408
+ </script>
1409
+
1410
+ <style>
1411
+ .box {
1412
+ width: 100px;
1413
+ height: 100px;
1414
+ background: #3498db;
1415
+ cursor: move;
1416
+ }
1417
+ </style>
1418
+ \`\`\`
1419
+
1420
+ ### \u9650\u5236\u65B9\u5411
1421
+
1422
+ \`\`\`vue
1423
+ <template>
1424
+ <!-- \u53EA\u80FD\u6C34\u5E73\u62D6\u52A8 -->
1425
+ <Draggable axis="x">
1426
+ <div class="box">\u6C34\u5E73\u62D6\u52A8</div>
1427
+ </Draggable>
1428
+
1429
+ <!-- \u53EA\u80FD\u5782\u76F4\u62D6\u52A8 -->
1430
+ <Draggable axis="y">
1431
+ <div class="box">\u5782\u76F4\u62D6\u52A8</div>
1432
+ </Draggable>
1433
+ </template>
1434
+
1435
+ <script setup>
1436
+ import { Draggable } from '@marsio/vue-draggable'
1437
+ </script>
1438
+ \`\`\`
1439
+
1440
+ ### \u8FB9\u754C\u9650\u5236
1441
+
1442
+ \`\`\`vue
1443
+ <template>
1444
+ <!-- \u9650\u5236\u5728\u7236\u5143\u7D20\u5185 -->
1445
+ <div class="container">
1446
+ <Draggable bounds="parent">
1447
+ <div class="box">\u9650\u5236\u5728\u7236\u5143\u7D20\u5185</div>
1448
+ </Draggable>
1449
+ </div>
1450
+
1451
+ <!-- \u81EA\u5B9A\u4E49\u8FB9\u754C -->
1452
+ <Draggable :bounds="{ left: 0, top: 0, right: 200, bottom: 200 }">
1453
+ <div class="box">\u81EA\u5B9A\u4E49\u8FB9\u754C</div>
1454
+ </Draggable>
1455
+ </template>
1456
+
1457
+ <script setup>
1458
+ import { Draggable } from '@marsio/vue-draggable'
1459
+ </script>
1460
+ \`\`\`
1461
+
1462
+ ### \u7F51\u683C\u5438\u9644
1463
+
1464
+ \`\`\`vue
1465
+ <template>
1466
+ <Draggable :grid="[25, 25]">
1467
+ <div class="box">\u6BCF\u6B21\u79FB\u52A8 25px</div>
1468
+ </Draggable>
1469
+ </template>
1470
+
1471
+ <script setup>
1472
+ import { Draggable } from '@marsio/vue-draggable'
1473
+ </script>
1474
+ \`\`\`
1475
+
1476
+ ### \u62D6\u62FD\u624B\u67C4
1477
+
1478
+ \`\`\`vue
1479
+ <template>
1480
+ <Draggable handle=".handle">
1481
+ <div class="box">
1482
+ <div class="handle">\u62D6\u8FD9\u91CC</div>
1483
+ <div>\u5185\u5BB9\u533A\u57DF\uFF08\u4E0D\u53EF\u62D6\u62FD\uFF09</div>
1484
+ </div>
1485
+ </Draggable>
1486
+ </template>
1487
+
1488
+ <script setup>
1489
+ import { Draggable } from '@marsio/vue-draggable'
1490
+ </script>
1491
+ \`\`\`
1492
+
1493
+ ### \u53D7\u63A7\u6A21\u5F0F
1494
+
1495
+ \`\`\`vue
1496
+ <template>
1497
+ <Draggable :position="position" :dragFn="handleDrag">
1498
+ <div class="box">\u53D7\u63A7\u62D6\u62FD</div>
1499
+ </Draggable>
1500
+ <p>\u4F4D\u7F6E: x={{ position.x }}, y={{ position.y }}</p>
1501
+ </template>
1502
+
1503
+ <script setup>
1504
+ import { ref } from 'vue'
1505
+ import { Draggable } from '@marsio/vue-draggable'
1506
+
1507
+ const position = ref({ x: 0, y: 0 })
1508
+
1509
+ const handleDrag = (e, data) => {
1510
+ position.value = { x: data.x, y: data.y }
1511
+ }
1512
+ </script>
1513
+ \`\`\`
1514
+
1515
+ ### \u4E8B\u4EF6\u5904\u7406
1516
+
1517
+ \`\`\`vue
1518
+ <template>
1519
+ <Draggable
1520
+ :startFn="onStart"
1521
+ :dragFn="onDrag"
1522
+ :stopFn="onStop"
1523
+ >
1524
+ <div class="box">\u62D6\u62FD\u6211</div>
1525
+ </Draggable>
1526
+ </template>
1527
+
1528
+ <script setup>
1529
+ import { Draggable } from '@marsio/vue-draggable'
1530
+
1531
+ const onStart = (e, data) => {
1532
+ console.log('\u5F00\u59CB\u62D6\u62FD', data.x, data.y)
1533
+ }
1534
+
1535
+ const onDrag = (e, data) => {
1536
+ console.log('\u62D6\u62FD\u4E2D', data.x, data.y, 'delta:', data.deltaX, data.deltaY)
1537
+ }
1538
+
1539
+ const onStop = (e, data) => {
1540
+ console.log('\u62D6\u62FD\u7ED3\u675F', data.x, data.y)
1541
+ }
1542
+ </script>
1543
+ \`\`\`
1544
+
1545
+ ### \u4F7F\u7528 DraggableCore\uFF08\u5B8C\u5168\u63A7\u5236\uFF09
1546
+
1547
+ \`\`\`vue
1548
+ <template>
1549
+ <DraggableCore :dragFn="handleDrag" :stopFn="handleStop">
1550
+ <div class="box" :style="{ transform: \`translate(\${x}px, \${y}px)\` }">
1551
+ \u5B8C\u5168\u63A7\u5236
1552
+ </div>
1553
+ </DraggableCore>
1554
+ </template>
1555
+
1556
+ <script setup>
1557
+ import { ref } from 'vue'
1558
+ import { DraggableCore } from '@marsio/vue-draggable'
1559
+
1560
+ const x = ref(0)
1561
+ const y = ref(0)
1562
+
1563
+ const handleDrag = (e, data) => {
1564
+ x.value += data.deltaX
1565
+ y.value += data.deltaY
1566
+ }
1567
+
1568
+ const handleStop = () => {
1569
+ console.log('\u6700\u7EC8\u4F4D\u7F6E:', x.value, y.value)
1570
+ }
1571
+ </script>
1572
+ \`\`\`
1573
+
1574
+ ---
1575
+
1576
+ ## \u5E38\u89C1\u95EE\u9898
1577
+
1578
+ ### \u62D6\u62FD\u65F6\u6587\u5B57\u88AB\u9009\u4E2D\uFF1F
1579
+ \u9ED8\u8BA4\u5DF2\u542F\u7528 \`enableUserSelectHack\`\uFF0C\u5982\u679C\u4ECD\u6709\u95EE\u9898\uFF0C\u6DFB\u52A0 CSS\uFF1A
1580
+ \`\`\`css
1581
+ .box { user-select: none; }
1582
+ \`\`\`
1583
+
1584
+ ### \u5728\u7F29\u653E\u5BB9\u5668\u5185\u62D6\u62FD\u4E0D\u51C6\uFF1F
1585
+ \u8BBE\u7F6E \`scale\` prop \u5339\u914D\u5BB9\u5668\u7684\u7F29\u653E\u6BD4\u4F8B\uFF1A
1586
+ \`\`\`vue
1587
+ <Draggable :scale="0.5">...</Draggable>
1588
+ \`\`\`
1589
+
1590
+ ### \u79FB\u52A8\u7AEF\u89E6\u6478\u95EE\u9898\uFF1F
1591
+ \u5982\u679C\u9700\u8981\u540C\u65F6\u652F\u6301\u6EDA\u52A8\u548C\u62D6\u62FD\uFF0C\u8BBE\u7F6E \`allowMobileScroll\`\uFF1A
1592
+ \`\`\`vue
1593
+ <DraggableCore :allowMobileScroll="true">...</DraggableCore>
1594
+ \`\`\`
1595
+ `;
1596
+
1597
+ // src/types.generated.ts
1598
+ var VUE_DRAGGABLE_TYPE_DEFS = {
1599
+ "Axis": "type Axis = 'both' | 'x' | 'y' | 'none';",
1600
+ "DraggableBounds": "interface DraggableBounds {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n}",
1601
+ "ControlPosition": "interface ControlPosition {x: number, y: number}",
1602
+ "PositionOffsetControlPosition": "interface PositionOffsetControlPosition {x: number|string, y: number|string}",
1603
+ "DraggableEvent": "type DraggableEvent = MouseEvent | TouchEvent | PointerEvent",
1604
+ "DraggableData": "interface DraggableData {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number\n}",
1605
+ "AutoScrollContainerInput": "type AutoScrollContainerInput = HTMLElement | Window | string",
1606
+ "AutoScrollContainerProp": "type AutoScrollContainerProp = AutoScrollContainerInput | AutoScrollContainerInput[] | null"
1607
+ };
1608
+
1609
+ // src/index.ts
1610
+ var __filename$1 = fileURLToPath(import.meta.url);
1611
+ var __dirname$1 = dirname(__filename$1);
1612
+ var pkg = JSON.parse(readFileSync(join(__dirname$1, "../package.json"), "utf8"));
1613
+ var serverVersion = pkg.version ?? "0.0.0";
1614
+ function log(message, ...args) {
1615
+ console.error(`[${(/* @__PURE__ */ new Date()).toISOString()}] ${message}`, ...args);
1616
+ }
1617
+ var server = new McpServer({
1618
+ name: "vue-draggable",
1619
+ version: serverVersion
1620
+ });
1621
+ server.tool(
1622
+ "get_vue_draggable_docs",
1623
+ "\u83B7\u53D6 @marsio/vue-draggable \u5B8C\u6574\u6587\u6863\uFF0C\u5305\u542B\u7EC4\u4EF6 API\u3001Props\u3001Events \u548C\u4EE3\u7801\u793A\u4F8B",
1624
+ {},
1625
+ async () => {
1626
+ log("\u{1F527} Tool called: get_vue_draggable_docs");
1627
+ try {
1628
+ log(`\u{1F4C4} Returning docs (${DOCS.length} chars)`);
1629
+ return {
1630
+ content: [
1631
+ {
1632
+ type: "text",
1633
+ text: DOCS
1634
+ }
1635
+ ]
1636
+ };
1637
+ } catch (error) {
1638
+ log("\u274C Failed to serve docs", error);
1639
+ return {
1640
+ content: [
1641
+ {
1642
+ type: "text",
1643
+ text: "Failed to load docs. Please retry."
1644
+ }
1645
+ ],
1646
+ isError: true
1647
+ };
1648
+ }
1649
+ }
1650
+ );
1651
+ server.tool(
1652
+ "list_vue_draggable_props",
1653
+ "\u5217\u51FA Draggable / DraggableCore \u7684 props\uFF08\u7ED3\u6784\u5316 JSON\uFF0C\u5305\u542B\u7C7B\u578B\u4E0E\u9ED8\u8BA4\u503C\uFF09",
1654
+ {
1655
+ component: z.enum(["Draggable", "DraggableCore"]).optional().describe("\u4E0D\u4F20\u5219\u8FD4\u56DE\u4E24\u4E2A\u7EC4\u4EF6"),
1656
+ includeInherited: z.boolean().optional().describe("\u4EC5\u5BF9 Draggable \u751F\u6548\uFF1A\u662F\u5426\u5305\u542B\u4ECE DraggableCore \u7EE7\u627F\u7684 props\uFF08\u9ED8\u8BA4 true\uFF09")
1657
+ },
1658
+ async ({ component, includeInherited }) => {
1659
+ log(`\u{1F527} Tool called: list_vue_draggable_props (${component ?? "all"})`);
1660
+ const includeInheritedResolved = includeInherited ?? true;
1661
+ const draggableProps = includeInheritedResolved ? DRAGGABLE_PROPS : DRAGGABLE_PROPS.filter((p) => !p.inheritedFrom);
1662
+ const payload = component === "Draggable" ? { component: "Draggable", props: draggableProps } : component === "DraggableCore" ? { component: "DraggableCore", props: DRAGGABLE_CORE_PROPS } : { Draggable: draggableProps, DraggableCore: DRAGGABLE_CORE_PROPS };
1663
+ return {
1664
+ content: [
1665
+ {
1666
+ type: "text",
1667
+ text: JSON.stringify(payload, null, 2)
1668
+ }
1669
+ ]
1670
+ };
1671
+ }
1672
+ );
1673
+ server.tool(
1674
+ "get_vue_draggable_type",
1675
+ "\u83B7\u53D6\u67D0\u4E2A TypeScript \u7C7B\u578B\u7684\u5B9A\u4E49\uFF08\u7528\u4E8E\u89E3\u91CA props \u7684\u522B\u540D\u7C7B\u578B\uFF09",
1676
+ {
1677
+ name: z.string().min(1).describe("\u7C7B\u578B\u540D\uFF0C\u4F8B\u5982\uFF1AAxis / DraggableBounds / DraggableData")
1678
+ },
1679
+ async ({ name }) => {
1680
+ const typeName = name.trim();
1681
+ log(`\u{1F527} Tool called: get_vue_draggable_type (${typeName})`);
1682
+ if (Object.prototype.hasOwnProperty.call(VUE_DRAGGABLE_TYPE_DEFS, typeName)) {
1683
+ const def = VUE_DRAGGABLE_TYPE_DEFS[typeName];
1684
+ return {
1685
+ content: [
1686
+ {
1687
+ type: "text",
1688
+ text: def
1689
+ }
1690
+ ]
1691
+ };
1692
+ }
1693
+ const allNames = Object.keys(VUE_DRAGGABLE_TYPE_DEFS);
1694
+ const q = typeName.toLowerCase();
1695
+ const suggestions = allNames.filter((n) => n.toLowerCase().includes(q)).slice(0, 10);
1696
+ return {
1697
+ content: [
1698
+ {
1699
+ type: "text",
1700
+ text: suggestions.length > 0 ? `\u672A\u627E\u5230\u7C7B\u578B\uFF1A${typeName}
1701
+
1702
+ \u53EF\u80FD\u60F3\u627E\uFF1A
1703
+ ${suggestions.map((s) => `- ${s}`).join("\n")}` : `\u672A\u627E\u5230\u7C7B\u578B\uFF1A${typeName}`
1704
+ }
1705
+ ],
1706
+ isError: true
1707
+ };
1708
+ }
1709
+ );
1710
+ async function main() {
1711
+ const transport = new StdioServerTransport();
1712
+ await server.connect(transport);
1713
+ console.error(`vue-draggable MCP server started (v${serverVersion})`);
1714
+ }
1715
+ main().catch((error) => {
1716
+ console.error("Failed to start server:", error);
1717
+ process.exit(1);
1718
+ });