@sepveneto/free-dom 0.7.4 → 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 CHANGED
@@ -1,4 +1,4 @@
1
- /* ../../../../../../../tmp/tmp-1908-q9UqIZsteSO4/core/src/style/index.css */
1
+ /* ../../../../../../../tmp/tmp-1883-O1p5mboxRMKz/core/src/style/index.css */
2
2
  :root {
3
3
  --vv-free-dom--theme: #4089ef;
4
4
  --vv-free-dom--line: var(--vv-free-dom--theme);
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
- dargFn: {
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
- dargFn: {
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,7 +658,6 @@ 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;
package/dist/index.js CHANGED
@@ -314,12 +314,15 @@ function useDraggableData(props) {
314
314
  (0, import_vue_demi6.watchEffect)(() => {
315
315
  y.value = props.y || props.modelValue.y || 0;
316
316
  });
317
+ const handleDragStart = (evt, data) => {
318
+ props.dragStartFn(evt, data);
319
+ };
317
320
  const handleDrag = (evt, data) => {
318
321
  x.value = data.x;
319
322
  y.value = data.y;
320
323
  deltaX.value = data.deltaX;
321
324
  deltaY.value = data.deltaY;
322
- props.dargFn(evt, data);
325
+ props.dragFn(evt, data);
323
326
  };
324
327
  const handleDragStop = (evt, coreData) => {
325
328
  const data = dragData.value = create(coreData);
@@ -342,6 +345,7 @@ function useDraggableData(props) {
342
345
  deltaX,
343
346
  deltaY,
344
347
  create,
348
+ handleDragStart,
345
349
  handleDrag,
346
350
  handleDragStop
347
351
  };
@@ -353,6 +357,7 @@ var id = 0;
353
357
  function useSceneContext(context, props) {
354
358
  const SceneContext = (0, import_vue_demi7.inject)(SceneToken, void 0);
355
359
  const uuid = id++;
360
+ const handle = (0, import_vue_demi7.computed)(() => SceneContext?.handle || props.handle);
356
361
  const lockAspectRatio = (0, import_vue_demi7.computed)(() => SceneContext?.lockAspectRatio || props.lockAspectRatio);
357
362
  const minWidth = (0, import_vue_demi7.computed)(() => SceneContext?.minWidth || props.minWidth);
358
363
  const minHeight = (0, import_vue_demi7.computed)(() => SceneContext?.minHeight || props.minHeight);
@@ -376,6 +381,7 @@ function useSceneContext(context, props) {
376
381
  width: SceneContext?.width,
377
382
  height: SceneContext?.height,
378
383
  scale,
384
+ handle,
379
385
  lockAspectRatio,
380
386
  minWidth,
381
387
  minHeight,
@@ -1149,6 +1155,10 @@ var freeDomProps = {
1149
1155
  type: Number,
1150
1156
  default: void 0
1151
1157
  },
1158
+ handle: {
1159
+ type: String,
1160
+ default: void 0
1161
+ },
1152
1162
  lockAspectRatio: Boolean,
1153
1163
  dragStartFn: {
1154
1164
  type: Function,
@@ -1158,7 +1168,7 @@ var freeDomProps = {
1158
1168
  type: Function,
1159
1169
  default: noop3
1160
1170
  },
1161
- dargFn: {
1171
+ dragFn: {
1162
1172
  type: Function,
1163
1173
  default: noop3
1164
1174
  },
@@ -1203,6 +1213,7 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
1203
1213
  deltaX,
1204
1214
  deltaY,
1205
1215
  create,
1216
+ handleDragStart,
1206
1217
  handleDrag,
1207
1218
  handleDragStop
1208
1219
  } = useDraggableData(props);
@@ -1227,6 +1238,7 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
1227
1238
  sceneContext.minHeight.value
1228
1239
  );
1229
1240
  };
1241
+ const canDrag = (0, import_vue_demi13.ref)(false);
1230
1242
  (0, import_vue_demi13.onMounted)(() => {
1231
1243
  props.autoSize && syncSize();
1232
1244
  });
@@ -1237,6 +1249,8 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
1237
1249
  transform: `translate(${x.value}px, ${y.value}px)`
1238
1250
  }));
1239
1251
  const onDrag = (evt, coreData) => {
1252
+ if (!canDrag.value)
1253
+ return;
1240
1254
  const data = create(coreData);
1241
1255
  const newPos = {
1242
1256
  x: data.x,
@@ -1251,6 +1265,8 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
1251
1265
  sceneContext.emit("move");
1252
1266
  };
1253
1267
  const onDragStop = (evt, coreData) => {
1268
+ if (!canDrag.value)
1269
+ return;
1254
1270
  const newPos = {
1255
1271
  x: x.value,
1256
1272
  y: y.value,
@@ -1268,6 +1284,22 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
1268
1284
  emit("update:y", y.value);
1269
1285
  emit("update:modelValue", { x: x.value, y: y.value, w: width.value, h: height.value });
1270
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
+ };
1271
1303
  const onResize = (evt, { node, width: w, height: h5, handle: axis }) => {
1272
1304
  const offsetW = -(w - width.value);
1273
1305
  const offsetH = -(h5 - height.value);
@@ -1291,23 +1323,28 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
1291
1323
  props.resizeFn(evt, { node, width: w, height: h5, handle: axis });
1292
1324
  sceneContext?.emit("move");
1293
1325
  };
1294
- const onResizeStop = () => {
1326
+ const onResizeStop = (evt, data) => {
1295
1327
  const isValid = sceneContext.check?.({ x: x.value, y: y.value, width: width.value, height: height.value });
1296
1328
  if (!isValid) {
1297
1329
  x.value = clamp(x.value, 0, sceneContext.width);
1298
1330
  y.value = clamp(y.value, 0, sceneContext.height);
1299
1331
  }
1332
+ props.resizeStopFn(evt, data);
1300
1333
  emit("update:width", width.value);
1301
1334
  emit("update:height", height.value);
1302
1335
  emit("update:modelValue", { x: x.value, y: y.value, w: width.value, h: height.value });
1303
1336
  sceneContext.emit("moveup");
1304
1337
  };
1338
+ const onResizeStart = (evt, data) => {
1339
+ props.resizeStartFn(evt, data);
1340
+ };
1305
1341
  const resizeNode = () => {
1306
1342
  const props2 = {
1307
1343
  width: width.value,
1308
1344
  height: height.value,
1309
1345
  lockAspectRatio: sceneContext.lockAspectRatio.value,
1310
1346
  dragOpts: { disabled: sceneContext.disabledResize.value },
1347
+ startFn: onResizeStart,
1311
1348
  resizeFn: onResize,
1312
1349
  stopFn: onResizeStop,
1313
1350
  minHeight: sceneContext.minHeight.value,
@@ -1324,12 +1361,14 @@ var freeDom = (0, import_vue_demi13.defineComponent)({
1324
1361
  style,
1325
1362
  onDragStop,
1326
1363
  onDrag,
1364
+ onDragStart,
1327
1365
  resizeNode,
1328
1366
  disabled: sceneContext.disabledDrag
1329
1367
  };
1330
1368
  },
1331
1369
  render() {
1332
1370
  const props = {
1371
+ startFn: this.onDragStart,
1333
1372
  stopFn: this.onDragStop,
1334
1373
  dragFn: this.onDrag,
1335
1374
  disabled: this.disabled
@@ -1366,6 +1405,7 @@ var freeDomWrapProps = {
1366
1405
  type: Boolean,
1367
1406
  default: true
1368
1407
  },
1408
+ handle: freeDomProps.handle,
1369
1409
  minWidth: freeDomProps.minWidth,
1370
1410
  minHeight: freeDomProps.minHeight,
1371
1411
  lockAspectRatio: freeDomProps.lockAspectRatio,
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.dargFn(evt, data);
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
- dargFn: {
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,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sepveneto/free-dom",
3
- "version": "0.7.4",
3
+ "version": "0.8.0",
4
4
  "description": "",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",