@sepveneto/free-dom 0.7.3 → 0.8.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.css +1 -1
- package/dist/index.d.ts +172 -4
- package/dist/index.js +51 -5
- package/dist/index.mjs +48 -4
- package/package.json +1 -1
package/dist/index.css
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -113,6 +113,10 @@ declare const FreeScene: vue_demi.DefineComponent<{
|
|
|
113
113
|
type: BooleanConstructor;
|
|
114
114
|
default: boolean;
|
|
115
115
|
};
|
|
116
|
+
handle: {
|
|
117
|
+
type: StringConstructor;
|
|
118
|
+
default: undefined;
|
|
119
|
+
};
|
|
116
120
|
minWidth: {
|
|
117
121
|
type: NumberConstructor;
|
|
118
122
|
default: number;
|
|
@@ -155,6 +159,10 @@ declare const FreeScene: vue_demi.DefineComponent<{
|
|
|
155
159
|
type: BooleanConstructor;
|
|
156
160
|
default: boolean;
|
|
157
161
|
};
|
|
162
|
+
handle: {
|
|
163
|
+
type: StringConstructor;
|
|
164
|
+
default: undefined;
|
|
165
|
+
};
|
|
158
166
|
minWidth: {
|
|
159
167
|
type: NumberConstructor;
|
|
160
168
|
default: number;
|
|
@@ -176,6 +184,7 @@ declare const FreeScene: vue_demi.DefineComponent<{
|
|
|
176
184
|
height: number;
|
|
177
185
|
diff: number;
|
|
178
186
|
showLine: boolean;
|
|
187
|
+
handle: string;
|
|
179
188
|
minWidth: number;
|
|
180
189
|
minHeight: number;
|
|
181
190
|
lockAspectRatio: boolean;
|
|
@@ -341,6 +350,10 @@ declare const FreeDom: vue_demi.DefineComponent<{
|
|
|
341
350
|
type: NumberConstructor;
|
|
342
351
|
default: undefined;
|
|
343
352
|
};
|
|
353
|
+
handle: {
|
|
354
|
+
type: StringConstructor;
|
|
355
|
+
default: undefined;
|
|
356
|
+
};
|
|
344
357
|
lockAspectRatio: BooleanConstructor;
|
|
345
358
|
dragStartFn: {
|
|
346
359
|
type: vue_demi.PropType<CoreFnCallback>;
|
|
@@ -350,7 +363,7 @@ declare const FreeDom: vue_demi.DefineComponent<{
|
|
|
350
363
|
type: vue_demi.PropType<CoreFnCallback>;
|
|
351
364
|
default: () => void;
|
|
352
365
|
};
|
|
353
|
-
|
|
366
|
+
dragFn: {
|
|
354
367
|
type: vue_demi.PropType<CoreFnCallback>;
|
|
355
368
|
default: () => void;
|
|
356
369
|
};
|
|
@@ -538,6 +551,7 @@ declare const FreeDom: vue_demi.DefineComponent<{
|
|
|
538
551
|
}>;
|
|
539
552
|
onDragStop: CoreFnCallback;
|
|
540
553
|
onDrag: CoreFnCallback;
|
|
554
|
+
onDragStart: CoreFnCallback;
|
|
541
555
|
resizeNode: () => vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
|
|
542
556
|
[key: string]: any;
|
|
543
557
|
}>;
|
|
@@ -568,6 +582,10 @@ declare const FreeDom: vue_demi.DefineComponent<{
|
|
|
568
582
|
type: NumberConstructor;
|
|
569
583
|
default: undefined;
|
|
570
584
|
};
|
|
585
|
+
handle: {
|
|
586
|
+
type: StringConstructor;
|
|
587
|
+
default: undefined;
|
|
588
|
+
};
|
|
571
589
|
lockAspectRatio: BooleanConstructor;
|
|
572
590
|
dragStartFn: {
|
|
573
591
|
type: vue_demi.PropType<CoreFnCallback>;
|
|
@@ -577,7 +595,7 @@ declare const FreeDom: vue_demi.DefineComponent<{
|
|
|
577
595
|
type: vue_demi.PropType<CoreFnCallback>;
|
|
578
596
|
default: () => void;
|
|
579
597
|
};
|
|
580
|
-
|
|
598
|
+
dragFn: {
|
|
581
599
|
type: vue_demi.PropType<CoreFnCallback>;
|
|
582
600
|
default: () => void;
|
|
583
601
|
};
|
|
@@ -621,8 +639,10 @@ declare const FreeDom: vue_demi.DefineComponent<{
|
|
|
621
639
|
}, {
|
|
622
640
|
x: number;
|
|
623
641
|
y: number;
|
|
642
|
+
dragFn: CoreFnCallback;
|
|
624
643
|
width: number;
|
|
625
644
|
height: number;
|
|
645
|
+
handle: string;
|
|
626
646
|
minWidth: number;
|
|
627
647
|
minHeight: number;
|
|
628
648
|
lockAspectRatio: boolean;
|
|
@@ -638,11 +658,159 @@ declare const FreeDom: vue_demi.DefineComponent<{
|
|
|
638
658
|
}>;
|
|
639
659
|
dragStartFn: CoreFnCallback;
|
|
640
660
|
dragStopFn: CoreFnCallback;
|
|
641
|
-
dargFn: CoreFnCallback;
|
|
642
661
|
resizeStartFn: (evt: MouseEvent, resizeData: ResizeData) => void;
|
|
643
662
|
resizeFn: (evt: MouseEvent, resizeData: ResizeData) => void;
|
|
644
663
|
resizeStopFn: (evt: MouseEvent, resizeData: ResizeData) => void;
|
|
645
664
|
autoSize: boolean;
|
|
646
665
|
}, {}>;
|
|
666
|
+
declare const FreeDomCore: vue_demi.DefineComponent<{
|
|
667
|
+
userSelectHack: {
|
|
668
|
+
type: BooleanConstructor;
|
|
669
|
+
default: boolean;
|
|
670
|
+
};
|
|
671
|
+
startFn: {
|
|
672
|
+
type: vue_demi.PropType<CoreFnCallback>;
|
|
673
|
+
default: () => void;
|
|
674
|
+
};
|
|
675
|
+
stopFn: {
|
|
676
|
+
type: vue_demi.PropType<CoreFnCallback>;
|
|
677
|
+
default: () => void;
|
|
678
|
+
};
|
|
679
|
+
dragFn: {
|
|
680
|
+
type: vue_demi.PropType<CoreFnCallback>;
|
|
681
|
+
default: () => void;
|
|
682
|
+
};
|
|
683
|
+
disabled: BooleanConstructor;
|
|
684
|
+
}, {
|
|
685
|
+
only: vue_demi.ComputedRef<vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
|
|
686
|
+
[key: string]: any;
|
|
687
|
+
}> | undefined>;
|
|
688
|
+
coreRef: vue_demi.Ref<any>;
|
|
689
|
+
mousedownFn: (evt: MouseEvent) => void;
|
|
690
|
+
mouseupFn: (evt: MouseEvent) => void;
|
|
691
|
+
}, unknown, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, {}, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<vue_demi.ExtractPropTypes<{
|
|
692
|
+
userSelectHack: {
|
|
693
|
+
type: BooleanConstructor;
|
|
694
|
+
default: boolean;
|
|
695
|
+
};
|
|
696
|
+
startFn: {
|
|
697
|
+
type: vue_demi.PropType<CoreFnCallback>;
|
|
698
|
+
default: () => void;
|
|
699
|
+
};
|
|
700
|
+
stopFn: {
|
|
701
|
+
type: vue_demi.PropType<CoreFnCallback>;
|
|
702
|
+
default: () => void;
|
|
703
|
+
};
|
|
704
|
+
dragFn: {
|
|
705
|
+
type: vue_demi.PropType<CoreFnCallback>;
|
|
706
|
+
default: () => void;
|
|
707
|
+
};
|
|
708
|
+
disabled: BooleanConstructor;
|
|
709
|
+
}>>, {
|
|
710
|
+
userSelectHack: boolean;
|
|
711
|
+
startFn: CoreFnCallback;
|
|
712
|
+
stopFn: CoreFnCallback;
|
|
713
|
+
dragFn: CoreFnCallback;
|
|
714
|
+
disabled: boolean;
|
|
715
|
+
}, {}>;
|
|
716
|
+
declare const ResizeDomCore: vue_demi.DefineComponent<{
|
|
717
|
+
dragOpts: {
|
|
718
|
+
type: vue_demi.PropType<Partial<FreeDomCoreProps>>;
|
|
719
|
+
default: () => {};
|
|
720
|
+
};
|
|
721
|
+
width: {
|
|
722
|
+
type: NumberConstructor;
|
|
723
|
+
default: number;
|
|
724
|
+
};
|
|
725
|
+
height: {
|
|
726
|
+
type: NumberConstructor;
|
|
727
|
+
default: number;
|
|
728
|
+
};
|
|
729
|
+
scale: {
|
|
730
|
+
type: vue_demi.PropType<boolean | ("t" | "r" | "l" | "b" | "lt" | "lb" | "rt" | "rb")[]>;
|
|
731
|
+
default: undefined;
|
|
732
|
+
};
|
|
733
|
+
startFn: {
|
|
734
|
+
type: vue_demi.PropType<ResizeFnCallback>;
|
|
735
|
+
default: () => void;
|
|
736
|
+
};
|
|
737
|
+
stopFn: {
|
|
738
|
+
type: vue_demi.PropType<ResizeFnCallback>;
|
|
739
|
+
default: () => void;
|
|
740
|
+
};
|
|
741
|
+
resizeFn: {
|
|
742
|
+
type: vue_demi.PropType<ResizeFnCallback>;
|
|
743
|
+
default: () => void;
|
|
744
|
+
};
|
|
745
|
+
minWidth: {
|
|
746
|
+
type: NumberConstructor;
|
|
747
|
+
default: number;
|
|
748
|
+
};
|
|
749
|
+
minHeight: {
|
|
750
|
+
type: NumberConstructor;
|
|
751
|
+
default: number;
|
|
752
|
+
};
|
|
753
|
+
lockAspectRatio: BooleanConstructor;
|
|
754
|
+
}, {
|
|
755
|
+
dots: vue_demi.ComputedRef<readonly ["t", "r", "l", "b", "lt", "lb", "rt", "rb"] | ("t" | "r" | "l" | "b" | "lt" | "lb" | "rt" | "rb")[]>;
|
|
756
|
+
children: vue_demi.ComputedRef<vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
|
|
757
|
+
[key: string]: any;
|
|
758
|
+
}>[] | undefined>;
|
|
759
|
+
handleResize: (handleName: "resize" | "start" | "stop", axis: "t" | "r" | "l" | "b" | "lt" | "lb" | "rt" | "rb") => CoreFnCallback;
|
|
760
|
+
renderResizehandler: (axis: "t" | "r" | "l" | "b" | "lt" | "lb" | "rt" | "rb") => (() => vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
|
|
761
|
+
[key: string]: any;
|
|
762
|
+
}>) | (() => vue_demi.VNode<vue_demi.RendererNode, vue_demi.RendererElement, {
|
|
763
|
+
[key: string]: any;
|
|
764
|
+
}>[] | undefined);
|
|
765
|
+
}, unknown, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, {}, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<vue_demi.ExtractPropTypes<{
|
|
766
|
+
dragOpts: {
|
|
767
|
+
type: vue_demi.PropType<Partial<FreeDomCoreProps>>;
|
|
768
|
+
default: () => {};
|
|
769
|
+
};
|
|
770
|
+
width: {
|
|
771
|
+
type: NumberConstructor;
|
|
772
|
+
default: number;
|
|
773
|
+
};
|
|
774
|
+
height: {
|
|
775
|
+
type: NumberConstructor;
|
|
776
|
+
default: number;
|
|
777
|
+
};
|
|
778
|
+
scale: {
|
|
779
|
+
type: vue_demi.PropType<boolean | ("t" | "r" | "l" | "b" | "lt" | "lb" | "rt" | "rb")[]>;
|
|
780
|
+
default: undefined;
|
|
781
|
+
};
|
|
782
|
+
startFn: {
|
|
783
|
+
type: vue_demi.PropType<ResizeFnCallback>;
|
|
784
|
+
default: () => void;
|
|
785
|
+
};
|
|
786
|
+
stopFn: {
|
|
787
|
+
type: vue_demi.PropType<ResizeFnCallback>;
|
|
788
|
+
default: () => void;
|
|
789
|
+
};
|
|
790
|
+
resizeFn: {
|
|
791
|
+
type: vue_demi.PropType<ResizeFnCallback>;
|
|
792
|
+
default: () => void;
|
|
793
|
+
};
|
|
794
|
+
minWidth: {
|
|
795
|
+
type: NumberConstructor;
|
|
796
|
+
default: number;
|
|
797
|
+
};
|
|
798
|
+
minHeight: {
|
|
799
|
+
type: NumberConstructor;
|
|
800
|
+
default: number;
|
|
801
|
+
};
|
|
802
|
+
lockAspectRatio: BooleanConstructor;
|
|
803
|
+
}>>, {
|
|
804
|
+
startFn: ResizeFnCallback;
|
|
805
|
+
stopFn: ResizeFnCallback;
|
|
806
|
+
width: number;
|
|
807
|
+
height: number;
|
|
808
|
+
minWidth: number;
|
|
809
|
+
minHeight: number;
|
|
810
|
+
lockAspectRatio: boolean;
|
|
811
|
+
scale: boolean | ("t" | "r" | "l" | "b" | "lt" | "lb" | "rt" | "rb")[];
|
|
812
|
+
resizeFn: ResizeFnCallback;
|
|
813
|
+
dragOpts: Partial<FreeDomCoreProps>;
|
|
814
|
+
}, {}>;
|
|
647
815
|
|
|
648
|
-
export { FreeDom, FreeScene, GridLayout };
|
|
816
|
+
export { FreeDom, FreeDomCore, FreeScene, GridLayout, ResizeDomCore };
|
package/dist/index.js
CHANGED
|
@@ -21,8 +21,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
23
|
FreeDom: () => FreeDom,
|
|
24
|
+
FreeDomCore: () => FreeDomCore,
|
|
24
25
|
FreeScene: () => FreeScene,
|
|
25
|
-
GridLayout: () => GridLayout2
|
|
26
|
+
GridLayout: () => GridLayout2,
|
|
27
|
+
ResizeDomCore: () => ResizeDomCore
|
|
26
28
|
});
|
|
27
29
|
module.exports = __toCommonJS(src_exports);
|
|
28
30
|
|
|
@@ -312,12 +314,15 @@ function useDraggableData(props) {
|
|
|
312
314
|
(0, import_vue_demi6.watchEffect)(() => {
|
|
313
315
|
y.value = props.y || props.modelValue.y || 0;
|
|
314
316
|
});
|
|
317
|
+
const handleDragStart = (evt, data) => {
|
|
318
|
+
props.dragStartFn(evt, data);
|
|
319
|
+
};
|
|
315
320
|
const handleDrag = (evt, data) => {
|
|
316
321
|
x.value = data.x;
|
|
317
322
|
y.value = data.y;
|
|
318
323
|
deltaX.value = data.deltaX;
|
|
319
324
|
deltaY.value = data.deltaY;
|
|
320
|
-
props.
|
|
325
|
+
props.dragFn(evt, data);
|
|
321
326
|
};
|
|
322
327
|
const handleDragStop = (evt, coreData) => {
|
|
323
328
|
const data = dragData.value = create(coreData);
|
|
@@ -340,6 +345,7 @@ function useDraggableData(props) {
|
|
|
340
345
|
deltaX,
|
|
341
346
|
deltaY,
|
|
342
347
|
create,
|
|
348
|
+
handleDragStart,
|
|
343
349
|
handleDrag,
|
|
344
350
|
handleDragStop
|
|
345
351
|
};
|
|
@@ -351,6 +357,7 @@ var id = 0;
|
|
|
351
357
|
function useSceneContext(context, props) {
|
|
352
358
|
const SceneContext = (0, import_vue_demi7.inject)(SceneToken, void 0);
|
|
353
359
|
const uuid = id++;
|
|
360
|
+
const handle = (0, import_vue_demi7.computed)(() => SceneContext?.handle || props.handle);
|
|
354
361
|
const lockAspectRatio = (0, import_vue_demi7.computed)(() => SceneContext?.lockAspectRatio || props.lockAspectRatio);
|
|
355
362
|
const minWidth = (0, import_vue_demi7.computed)(() => SceneContext?.minWidth || props.minWidth);
|
|
356
363
|
const minHeight = (0, import_vue_demi7.computed)(() => SceneContext?.minHeight || props.minHeight);
|
|
@@ -374,6 +381,7 @@ function useSceneContext(context, props) {
|
|
|
374
381
|
width: SceneContext?.width,
|
|
375
382
|
height: SceneContext?.height,
|
|
376
383
|
scale,
|
|
384
|
+
handle,
|
|
377
385
|
lockAspectRatio,
|
|
378
386
|
minWidth,
|
|
379
387
|
minHeight,
|
|
@@ -1147,6 +1155,10 @@ var freeDomProps = {
|
|
|
1147
1155
|
type: Number,
|
|
1148
1156
|
default: void 0
|
|
1149
1157
|
},
|
|
1158
|
+
handle: {
|
|
1159
|
+
type: String,
|
|
1160
|
+
default: void 0
|
|
1161
|
+
},
|
|
1150
1162
|
lockAspectRatio: Boolean,
|
|
1151
1163
|
dragStartFn: {
|
|
1152
1164
|
type: Function,
|
|
@@ -1156,7 +1168,7 @@ var freeDomProps = {
|
|
|
1156
1168
|
type: Function,
|
|
1157
1169
|
default: noop3
|
|
1158
1170
|
},
|
|
1159
|
-
|
|
1171
|
+
dragFn: {
|
|
1160
1172
|
type: Function,
|
|
1161
1173
|
default: noop3
|
|
1162
1174
|
},
|
|
@@ -1201,6 +1213,7 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
|
|
|
1201
1213
|
deltaX,
|
|
1202
1214
|
deltaY,
|
|
1203
1215
|
create,
|
|
1216
|
+
handleDragStart,
|
|
1204
1217
|
handleDrag,
|
|
1205
1218
|
handleDragStop
|
|
1206
1219
|
} = useDraggableData(props);
|
|
@@ -1225,6 +1238,7 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
|
|
|
1225
1238
|
sceneContext.minHeight.value
|
|
1226
1239
|
);
|
|
1227
1240
|
};
|
|
1241
|
+
const canDrag = (0, import_vue_demi13.ref)(false);
|
|
1228
1242
|
(0, import_vue_demi13.onMounted)(() => {
|
|
1229
1243
|
props.autoSize && syncSize();
|
|
1230
1244
|
});
|
|
@@ -1235,6 +1249,8 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
|
|
|
1235
1249
|
transform: `translate(${x.value}px, ${y.value}px)`
|
|
1236
1250
|
}));
|
|
1237
1251
|
const onDrag = (evt, coreData) => {
|
|
1252
|
+
if (!canDrag.value)
|
|
1253
|
+
return;
|
|
1238
1254
|
const data = create(coreData);
|
|
1239
1255
|
const newPos = {
|
|
1240
1256
|
x: data.x,
|
|
@@ -1249,6 +1265,8 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
|
|
|
1249
1265
|
sceneContext.emit("move");
|
|
1250
1266
|
};
|
|
1251
1267
|
const onDragStop = (evt, coreData) => {
|
|
1268
|
+
if (!canDrag.value)
|
|
1269
|
+
return;
|
|
1252
1270
|
const newPos = {
|
|
1253
1271
|
x: x.value,
|
|
1254
1272
|
y: y.value,
|
|
@@ -1266,6 +1284,22 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
|
|
|
1266
1284
|
emit("update:y", y.value);
|
|
1267
1285
|
emit("update:modelValue", { x: x.value, y: y.value, w: width.value, h: height.value });
|
|
1268
1286
|
};
|
|
1287
|
+
const onDragStart = (evt, coreData) => {
|
|
1288
|
+
const handle = sceneContext.handle.value;
|
|
1289
|
+
if (handle) {
|
|
1290
|
+
if (handle.startsWith(".")) {
|
|
1291
|
+
canDrag.value = evt.target.classList.contains(handle.slice(1));
|
|
1292
|
+
} else if (handle.startsWith("#")) {
|
|
1293
|
+
canDrag.value = evt.target.id === handle.slice(1);
|
|
1294
|
+
} else {
|
|
1295
|
+
console.warn(`[free-dom] can not find element with ${handle}`);
|
|
1296
|
+
canDrag.value = true;
|
|
1297
|
+
}
|
|
1298
|
+
} else {
|
|
1299
|
+
canDrag.value = true;
|
|
1300
|
+
}
|
|
1301
|
+
canDrag.value && handleDragStart(evt, coreData);
|
|
1302
|
+
};
|
|
1269
1303
|
const onResize = (evt, { node, width: w, height: h5, handle: axis }) => {
|
|
1270
1304
|
const offsetW = -(w - width.value);
|
|
1271
1305
|
const offsetH = -(h5 - height.value);
|
|
@@ -1289,23 +1323,28 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
|
|
|
1289
1323
|
props.resizeFn(evt, { node, width: w, height: h5, handle: axis });
|
|
1290
1324
|
sceneContext?.emit("move");
|
|
1291
1325
|
};
|
|
1292
|
-
const onResizeStop = () => {
|
|
1326
|
+
const onResizeStop = (evt, data) => {
|
|
1293
1327
|
const isValid = sceneContext.check?.({ x: x.value, y: y.value, width: width.value, height: height.value });
|
|
1294
1328
|
if (!isValid) {
|
|
1295
1329
|
x.value = clamp(x.value, 0, sceneContext.width);
|
|
1296
1330
|
y.value = clamp(y.value, 0, sceneContext.height);
|
|
1297
1331
|
}
|
|
1332
|
+
props.resizeStopFn(evt, data);
|
|
1298
1333
|
emit("update:width", width.value);
|
|
1299
1334
|
emit("update:height", height.value);
|
|
1300
1335
|
emit("update:modelValue", { x: x.value, y: y.value, w: width.value, h: height.value });
|
|
1301
1336
|
sceneContext.emit("moveup");
|
|
1302
1337
|
};
|
|
1338
|
+
const onResizeStart = (evt, data) => {
|
|
1339
|
+
props.resizeStartFn(evt, data);
|
|
1340
|
+
};
|
|
1303
1341
|
const resizeNode = () => {
|
|
1304
1342
|
const props2 = {
|
|
1305
1343
|
width: width.value,
|
|
1306
1344
|
height: height.value,
|
|
1307
1345
|
lockAspectRatio: sceneContext.lockAspectRatio.value,
|
|
1308
1346
|
dragOpts: { disabled: sceneContext.disabledResize.value },
|
|
1347
|
+
startFn: onResizeStart,
|
|
1309
1348
|
resizeFn: onResize,
|
|
1310
1349
|
stopFn: onResizeStop,
|
|
1311
1350
|
minHeight: sceneContext.minHeight.value,
|
|
@@ -1322,12 +1361,14 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
|
|
|
1322
1361
|
style,
|
|
1323
1362
|
onDragStop,
|
|
1324
1363
|
onDrag,
|
|
1364
|
+
onDragStart,
|
|
1325
1365
|
resizeNode,
|
|
1326
1366
|
disabled: sceneContext.disabledDrag
|
|
1327
1367
|
};
|
|
1328
1368
|
},
|
|
1329
1369
|
render() {
|
|
1330
1370
|
const props = {
|
|
1371
|
+
startFn: this.onDragStart,
|
|
1331
1372
|
stopFn: this.onDragStop,
|
|
1332
1373
|
dragFn: this.onDrag,
|
|
1333
1374
|
disabled: this.disabled
|
|
@@ -1364,6 +1405,7 @@ var freeDomWrapProps = {
|
|
|
1364
1405
|
type: Boolean,
|
|
1365
1406
|
default: true
|
|
1366
1407
|
},
|
|
1408
|
+
handle: freeDomProps.handle,
|
|
1367
1409
|
minWidth: freeDomProps.minWidth,
|
|
1368
1410
|
minHeight: freeDomProps.minHeight,
|
|
1369
1411
|
lockAspectRatio: freeDomProps.lockAspectRatio,
|
|
@@ -1745,9 +1787,13 @@ var gridLayout_default = GridLayout;
|
|
|
1745
1787
|
var FreeScene = FreeDomWrap;
|
|
1746
1788
|
var GridLayout2 = gridLayout_default;
|
|
1747
1789
|
var FreeDom = freeDom_default;
|
|
1790
|
+
var FreeDomCore = freeDomCore_default;
|
|
1791
|
+
var ResizeDomCore = resizeDomCore_default;
|
|
1748
1792
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1749
1793
|
0 && (module.exports = {
|
|
1750
1794
|
FreeDom,
|
|
1795
|
+
FreeDomCore,
|
|
1751
1796
|
FreeScene,
|
|
1752
|
-
GridLayout
|
|
1797
|
+
GridLayout,
|
|
1798
|
+
ResizeDomCore
|
|
1753
1799
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -284,12 +284,15 @@ function useDraggableData(props) {
|
|
|
284
284
|
watchEffect(() => {
|
|
285
285
|
y.value = props.y || props.modelValue.y || 0;
|
|
286
286
|
});
|
|
287
|
+
const handleDragStart = (evt, data) => {
|
|
288
|
+
props.dragStartFn(evt, data);
|
|
289
|
+
};
|
|
287
290
|
const handleDrag = (evt, data) => {
|
|
288
291
|
x.value = data.x;
|
|
289
292
|
y.value = data.y;
|
|
290
293
|
deltaX.value = data.deltaX;
|
|
291
294
|
deltaY.value = data.deltaY;
|
|
292
|
-
props.
|
|
295
|
+
props.dragFn(evt, data);
|
|
293
296
|
};
|
|
294
297
|
const handleDragStop = (evt, coreData) => {
|
|
295
298
|
const data = dragData.value = create(coreData);
|
|
@@ -312,6 +315,7 @@ function useDraggableData(props) {
|
|
|
312
315
|
deltaX,
|
|
313
316
|
deltaY,
|
|
314
317
|
create,
|
|
318
|
+
handleDragStart,
|
|
315
319
|
handleDrag,
|
|
316
320
|
handleDragStop
|
|
317
321
|
};
|
|
@@ -323,6 +327,7 @@ var id = 0;
|
|
|
323
327
|
function useSceneContext(context, props) {
|
|
324
328
|
const SceneContext = inject2(SceneToken, void 0);
|
|
325
329
|
const uuid = id++;
|
|
330
|
+
const handle = computed2(() => SceneContext?.handle || props.handle);
|
|
326
331
|
const lockAspectRatio = computed2(() => SceneContext?.lockAspectRatio || props.lockAspectRatio);
|
|
327
332
|
const minWidth = computed2(() => SceneContext?.minWidth || props.minWidth);
|
|
328
333
|
const minHeight = computed2(() => SceneContext?.minHeight || props.minHeight);
|
|
@@ -346,6 +351,7 @@ function useSceneContext(context, props) {
|
|
|
346
351
|
width: SceneContext?.width,
|
|
347
352
|
height: SceneContext?.height,
|
|
348
353
|
scale,
|
|
354
|
+
handle,
|
|
349
355
|
lockAspectRatio,
|
|
350
356
|
minWidth,
|
|
351
357
|
minHeight,
|
|
@@ -1119,6 +1125,10 @@ var freeDomProps = {
|
|
|
1119
1125
|
type: Number,
|
|
1120
1126
|
default: void 0
|
|
1121
1127
|
},
|
|
1128
|
+
handle: {
|
|
1129
|
+
type: String,
|
|
1130
|
+
default: void 0
|
|
1131
|
+
},
|
|
1122
1132
|
lockAspectRatio: Boolean,
|
|
1123
1133
|
dragStartFn: {
|
|
1124
1134
|
type: Function,
|
|
@@ -1128,7 +1138,7 @@ var freeDomProps = {
|
|
|
1128
1138
|
type: Function,
|
|
1129
1139
|
default: noop3
|
|
1130
1140
|
},
|
|
1131
|
-
|
|
1141
|
+
dragFn: {
|
|
1132
1142
|
type: Function,
|
|
1133
1143
|
default: noop3
|
|
1134
1144
|
},
|
|
@@ -1173,6 +1183,7 @@ var freeDom = defineComponent4({
|
|
|
1173
1183
|
deltaX,
|
|
1174
1184
|
deltaY,
|
|
1175
1185
|
create,
|
|
1186
|
+
handleDragStart,
|
|
1176
1187
|
handleDrag,
|
|
1177
1188
|
handleDragStop
|
|
1178
1189
|
} = useDraggableData(props);
|
|
@@ -1197,6 +1208,7 @@ var freeDom = defineComponent4({
|
|
|
1197
1208
|
sceneContext.minHeight.value
|
|
1198
1209
|
);
|
|
1199
1210
|
};
|
|
1211
|
+
const canDrag = ref9(false);
|
|
1200
1212
|
onMounted2(() => {
|
|
1201
1213
|
props.autoSize && syncSize();
|
|
1202
1214
|
});
|
|
@@ -1207,6 +1219,8 @@ var freeDom = defineComponent4({
|
|
|
1207
1219
|
transform: `translate(${x.value}px, ${y.value}px)`
|
|
1208
1220
|
}));
|
|
1209
1221
|
const onDrag = (evt, coreData) => {
|
|
1222
|
+
if (!canDrag.value)
|
|
1223
|
+
return;
|
|
1210
1224
|
const data = create(coreData);
|
|
1211
1225
|
const newPos = {
|
|
1212
1226
|
x: data.x,
|
|
@@ -1221,6 +1235,8 @@ var freeDom = defineComponent4({
|
|
|
1221
1235
|
sceneContext.emit("move");
|
|
1222
1236
|
};
|
|
1223
1237
|
const onDragStop = (evt, coreData) => {
|
|
1238
|
+
if (!canDrag.value)
|
|
1239
|
+
return;
|
|
1224
1240
|
const newPos = {
|
|
1225
1241
|
x: x.value,
|
|
1226
1242
|
y: y.value,
|
|
@@ -1238,6 +1254,22 @@ var freeDom = defineComponent4({
|
|
|
1238
1254
|
emit("update:y", y.value);
|
|
1239
1255
|
emit("update:modelValue", { x: x.value, y: y.value, w: width.value, h: height.value });
|
|
1240
1256
|
};
|
|
1257
|
+
const onDragStart = (evt, coreData) => {
|
|
1258
|
+
const handle = sceneContext.handle.value;
|
|
1259
|
+
if (handle) {
|
|
1260
|
+
if (handle.startsWith(".")) {
|
|
1261
|
+
canDrag.value = evt.target.classList.contains(handle.slice(1));
|
|
1262
|
+
} else if (handle.startsWith("#")) {
|
|
1263
|
+
canDrag.value = evt.target.id === handle.slice(1);
|
|
1264
|
+
} else {
|
|
1265
|
+
console.warn(`[free-dom] can not find element with ${handle}`);
|
|
1266
|
+
canDrag.value = true;
|
|
1267
|
+
}
|
|
1268
|
+
} else {
|
|
1269
|
+
canDrag.value = true;
|
|
1270
|
+
}
|
|
1271
|
+
canDrag.value && handleDragStart(evt, coreData);
|
|
1272
|
+
};
|
|
1241
1273
|
const onResize = (evt, { node, width: w, height: h5, handle: axis }) => {
|
|
1242
1274
|
const offsetW = -(w - width.value);
|
|
1243
1275
|
const offsetH = -(h5 - height.value);
|
|
@@ -1261,23 +1293,28 @@ var freeDom = defineComponent4({
|
|
|
1261
1293
|
props.resizeFn(evt, { node, width: w, height: h5, handle: axis });
|
|
1262
1294
|
sceneContext?.emit("move");
|
|
1263
1295
|
};
|
|
1264
|
-
const onResizeStop = () => {
|
|
1296
|
+
const onResizeStop = (evt, data) => {
|
|
1265
1297
|
const isValid = sceneContext.check?.({ x: x.value, y: y.value, width: width.value, height: height.value });
|
|
1266
1298
|
if (!isValid) {
|
|
1267
1299
|
x.value = clamp(x.value, 0, sceneContext.width);
|
|
1268
1300
|
y.value = clamp(y.value, 0, sceneContext.height);
|
|
1269
1301
|
}
|
|
1302
|
+
props.resizeStopFn(evt, data);
|
|
1270
1303
|
emit("update:width", width.value);
|
|
1271
1304
|
emit("update:height", height.value);
|
|
1272
1305
|
emit("update:modelValue", { x: x.value, y: y.value, w: width.value, h: height.value });
|
|
1273
1306
|
sceneContext.emit("moveup");
|
|
1274
1307
|
};
|
|
1308
|
+
const onResizeStart = (evt, data) => {
|
|
1309
|
+
props.resizeStartFn(evt, data);
|
|
1310
|
+
};
|
|
1275
1311
|
const resizeNode = () => {
|
|
1276
1312
|
const props2 = {
|
|
1277
1313
|
width: width.value,
|
|
1278
1314
|
height: height.value,
|
|
1279
1315
|
lockAspectRatio: sceneContext.lockAspectRatio.value,
|
|
1280
1316
|
dragOpts: { disabled: sceneContext.disabledResize.value },
|
|
1317
|
+
startFn: onResizeStart,
|
|
1281
1318
|
resizeFn: onResize,
|
|
1282
1319
|
stopFn: onResizeStop,
|
|
1283
1320
|
minHeight: sceneContext.minHeight.value,
|
|
@@ -1294,12 +1331,14 @@ var freeDom = defineComponent4({
|
|
|
1294
1331
|
style,
|
|
1295
1332
|
onDragStop,
|
|
1296
1333
|
onDrag,
|
|
1334
|
+
onDragStart,
|
|
1297
1335
|
resizeNode,
|
|
1298
1336
|
disabled: sceneContext.disabledDrag
|
|
1299
1337
|
};
|
|
1300
1338
|
},
|
|
1301
1339
|
render() {
|
|
1302
1340
|
const props = {
|
|
1341
|
+
startFn: this.onDragStart,
|
|
1303
1342
|
stopFn: this.onDragStop,
|
|
1304
1343
|
dragFn: this.onDrag,
|
|
1305
1344
|
disabled: this.disabled
|
|
@@ -1336,6 +1375,7 @@ var freeDomWrapProps = {
|
|
|
1336
1375
|
type: Boolean,
|
|
1337
1376
|
default: true
|
|
1338
1377
|
},
|
|
1378
|
+
handle: freeDomProps.handle,
|
|
1339
1379
|
minWidth: freeDomProps.minWidth,
|
|
1340
1380
|
minHeight: freeDomProps.minHeight,
|
|
1341
1381
|
lockAspectRatio: freeDomProps.lockAspectRatio,
|
|
@@ -1717,8 +1757,12 @@ var gridLayout_default = GridLayout;
|
|
|
1717
1757
|
var FreeScene = FreeDomWrap;
|
|
1718
1758
|
var GridLayout2 = gridLayout_default;
|
|
1719
1759
|
var FreeDom = freeDom_default;
|
|
1760
|
+
var FreeDomCore = freeDomCore_default;
|
|
1761
|
+
var ResizeDomCore = resizeDomCore_default;
|
|
1720
1762
|
export {
|
|
1721
1763
|
FreeDom,
|
|
1764
|
+
FreeDomCore,
|
|
1722
1765
|
FreeScene,
|
|
1723
|
-
GridLayout2 as GridLayout
|
|
1766
|
+
GridLayout2 as GridLayout,
|
|
1767
|
+
ResizeDomCore
|
|
1724
1768
|
};
|