@sepveneto/free-dom 0.2.0 → 0.3.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 +18 -0
- package/dist/index.js +21 -4
- package/dist/index.mjs +21 -4
- package/package.json +8 -8
package/dist/index.css
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -43,6 +43,10 @@ declare const freeDom: vue_demi.DefineComponent<{
|
|
|
43
43
|
type: BooleanConstructor;
|
|
44
44
|
default: undefined;
|
|
45
45
|
};
|
|
46
|
+
grid: {
|
|
47
|
+
type: vue_demi.PropType<[number, number]>;
|
|
48
|
+
default: undefined;
|
|
49
|
+
};
|
|
46
50
|
}, {
|
|
47
51
|
widgetRef: vue_demi.ShallowRef<any>;
|
|
48
52
|
canMove: vue_demi.ComputedRef<boolean>;
|
|
@@ -101,6 +105,10 @@ declare const freeDom: vue_demi.DefineComponent<{
|
|
|
101
105
|
type: BooleanConstructor;
|
|
102
106
|
default: undefined;
|
|
103
107
|
};
|
|
108
|
+
grid: {
|
|
109
|
+
type: vue_demi.PropType<[number, number]>;
|
|
110
|
+
default: undefined;
|
|
111
|
+
};
|
|
104
112
|
}>> & {
|
|
105
113
|
"onUpdate:x"?: ((...args: any[]) => any) | undefined;
|
|
106
114
|
"onUpdate:y"?: ((...args: any[]) => any) | undefined;
|
|
@@ -120,6 +128,7 @@ declare const freeDom: vue_demi.DefineComponent<{
|
|
|
120
128
|
limitHeight: number;
|
|
121
129
|
handler: "dot" | "mark";
|
|
122
130
|
diagonal: boolean;
|
|
131
|
+
grid: [number, number];
|
|
123
132
|
}>;
|
|
124
133
|
declare const freeScene: vue_demi.DefineComponent<{
|
|
125
134
|
absolute: {
|
|
@@ -141,6 +150,10 @@ declare const freeScene: vue_demi.DefineComponent<{
|
|
|
141
150
|
type: BooleanConstructor;
|
|
142
151
|
default: undefined;
|
|
143
152
|
};
|
|
153
|
+
grid: {
|
|
154
|
+
type: vue_demi.PropType<[number, number]>;
|
|
155
|
+
default: undefined;
|
|
156
|
+
};
|
|
144
157
|
}, {
|
|
145
158
|
rectRef: vue_demi.ShallowRef<null>;
|
|
146
159
|
}, unknown, {}, {}, vue_demi.ComponentOptionsMixin, vue_demi.ComponentOptionsMixin, {}, string, vue_demi.VNodeProps & vue_demi.AllowedComponentProps & vue_demi.ComponentCustomProps, Readonly<vue_demi.ExtractPropTypes<{
|
|
@@ -163,12 +176,17 @@ declare const freeScene: vue_demi.DefineComponent<{
|
|
|
163
176
|
type: BooleanConstructor;
|
|
164
177
|
default: undefined;
|
|
165
178
|
};
|
|
179
|
+
grid: {
|
|
180
|
+
type: vue_demi.PropType<[number, number]>;
|
|
181
|
+
default: undefined;
|
|
182
|
+
};
|
|
166
183
|
}>>, {
|
|
167
184
|
absolute: boolean;
|
|
168
185
|
move: boolean;
|
|
169
186
|
preview: boolean;
|
|
170
187
|
handler: "dot" | "mark";
|
|
171
188
|
diagonal: boolean;
|
|
189
|
+
grid: [number, number];
|
|
172
190
|
diff: number;
|
|
173
191
|
}>;
|
|
174
192
|
|
package/dist/index.js
CHANGED
|
@@ -85,10 +85,15 @@ var SceneToken = Symbol("Scene");
|
|
|
85
85
|
function clamp(value, min, max = Infinity) {
|
|
86
86
|
return Math.max(Math.min(value, max), min);
|
|
87
87
|
}
|
|
88
|
+
function snapToGrid(grid, pendingX, pendingY) {
|
|
89
|
+
const x = Math.round(pendingX / grid[0]) * grid[0];
|
|
90
|
+
const y = Math.round(pendingY / grid[1]) * grid[1];
|
|
91
|
+
return [x, y];
|
|
92
|
+
}
|
|
88
93
|
|
|
89
94
|
// src/hooks/use-resize.ts
|
|
90
95
|
var MIN_SIZE = 20;
|
|
91
|
-
function useResize(startX, startY, rect, dot, diagonal, callbacks) {
|
|
96
|
+
function useResize(startX, startY, rect, dot, diagonal, snapGrid, callbacks) {
|
|
92
97
|
const isT = dot ? /t/.test(dot) : false;
|
|
93
98
|
const isL = dot ? /l/.test(dot) : false;
|
|
94
99
|
const isB = dot ? /b/.test(dot) : false;
|
|
@@ -97,8 +102,11 @@ function useResize(startX, startY, rect, dot, diagonal, callbacks) {
|
|
|
97
102
|
const { width: cWidth, height: cHeight, x, y } = rect;
|
|
98
103
|
const move = (mouseEvt) => {
|
|
99
104
|
const { clientX, clientY } = mouseEvt;
|
|
100
|
-
|
|
101
|
-
|
|
105
|
+
let deltaX = clientX - startX;
|
|
106
|
+
let deltaY = clientY - startY;
|
|
107
|
+
if (Array.isArray(snapGrid)) {
|
|
108
|
+
[deltaX, deltaY] = snapToGrid(snapGrid, deltaX, deltaY);
|
|
109
|
+
}
|
|
102
110
|
const rate = cWidth / cHeight;
|
|
103
111
|
const newWidth = cWidth + (isL ? -deltaX : isR ? deltaX : 0);
|
|
104
112
|
const newHeight = cHeight + (isT ? -deltaY : isB ? deltaY : 0);
|
|
@@ -177,6 +185,10 @@ var FreeDom = (0, import_vue_demi2.defineComponent)({
|
|
|
177
185
|
diagonal: {
|
|
178
186
|
type: Boolean,
|
|
179
187
|
default: void 0
|
|
188
|
+
},
|
|
189
|
+
grid: {
|
|
190
|
+
type: Object,
|
|
191
|
+
default: void 0
|
|
180
192
|
}
|
|
181
193
|
},
|
|
182
194
|
emits: ["update:x", "update:y", "update:width", "update:height", "select"],
|
|
@@ -188,6 +200,7 @@ var FreeDom = (0, import_vue_demi2.defineComponent)({
|
|
|
188
200
|
const canMove = (0, import_vue_demi2.computed)(() => !_preview.value && (SceneContext?.move || props.move));
|
|
189
201
|
const isAbsolute = (0, import_vue_demi2.computed)(() => props.absolute ?? SceneContext?.absolute ?? true);
|
|
190
202
|
const handlerType = (0, import_vue_demi2.computed)(() => props.handler ?? SceneContext?.handler ?? "dot");
|
|
203
|
+
const snapGrid = (0, import_vue_demi2.computed)(() => props.grid ?? SceneContext?.grid);
|
|
191
204
|
const diagonal = (0, import_vue_demi2.computed)(() => props.diagonal ?? SceneContext?.diagonal ?? true);
|
|
192
205
|
const widgetRef = (0, import_vue_demi2.shallowRef)();
|
|
193
206
|
const _style = (0, import_vue_demi2.ref)({});
|
|
@@ -263,7 +276,7 @@ var FreeDom = (0, import_vue_demi2.defineComponent)({
|
|
|
263
276
|
isScale.value = true;
|
|
264
277
|
active.value = true;
|
|
265
278
|
const { clientX, clientY } = evt;
|
|
266
|
-
useResize(clientX, clientY, _rect, dot, diagonal.value, {
|
|
279
|
+
useResize(clientX, clientY, _rect, dot, diagonal.value, snapGrid.value, {
|
|
267
280
|
onMove() {
|
|
268
281
|
if (!checkValid(_rect))
|
|
269
282
|
return;
|
|
@@ -628,6 +641,10 @@ var freeDomWrapProps = {
|
|
|
628
641
|
diagonal: {
|
|
629
642
|
type: Boolean,
|
|
630
643
|
default: void 0
|
|
644
|
+
},
|
|
645
|
+
grid: {
|
|
646
|
+
type: Object,
|
|
647
|
+
default: void 0
|
|
631
648
|
}
|
|
632
649
|
};
|
|
633
650
|
var FreeDomWrap = (0, import_vue_demi4.defineComponent)({
|
package/dist/index.mjs
CHANGED
|
@@ -72,10 +72,15 @@ var SceneToken = Symbol("Scene");
|
|
|
72
72
|
function clamp(value, min, max = Infinity) {
|
|
73
73
|
return Math.max(Math.min(value, max), min);
|
|
74
74
|
}
|
|
75
|
+
function snapToGrid(grid, pendingX, pendingY) {
|
|
76
|
+
const x = Math.round(pendingX / grid[0]) * grid[0];
|
|
77
|
+
const y = Math.round(pendingY / grid[1]) * grid[1];
|
|
78
|
+
return [x, y];
|
|
79
|
+
}
|
|
75
80
|
|
|
76
81
|
// src/hooks/use-resize.ts
|
|
77
82
|
var MIN_SIZE = 20;
|
|
78
|
-
function useResize(startX, startY, rect, dot, diagonal, callbacks) {
|
|
83
|
+
function useResize(startX, startY, rect, dot, diagonal, snapGrid, callbacks) {
|
|
79
84
|
const isT = dot ? /t/.test(dot) : false;
|
|
80
85
|
const isL = dot ? /l/.test(dot) : false;
|
|
81
86
|
const isB = dot ? /b/.test(dot) : false;
|
|
@@ -84,8 +89,11 @@ function useResize(startX, startY, rect, dot, diagonal, callbacks) {
|
|
|
84
89
|
const { width: cWidth, height: cHeight, x, y } = rect;
|
|
85
90
|
const move = (mouseEvt) => {
|
|
86
91
|
const { clientX, clientY } = mouseEvt;
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
let deltaX = clientX - startX;
|
|
93
|
+
let deltaY = clientY - startY;
|
|
94
|
+
if (Array.isArray(snapGrid)) {
|
|
95
|
+
[deltaX, deltaY] = snapToGrid(snapGrid, deltaX, deltaY);
|
|
96
|
+
}
|
|
89
97
|
const rate = cWidth / cHeight;
|
|
90
98
|
const newWidth = cWidth + (isL ? -deltaX : isR ? deltaX : 0);
|
|
91
99
|
const newHeight = cHeight + (isT ? -deltaY : isB ? deltaY : 0);
|
|
@@ -164,6 +172,10 @@ var FreeDom = defineComponent({
|
|
|
164
172
|
diagonal: {
|
|
165
173
|
type: Boolean,
|
|
166
174
|
default: void 0
|
|
175
|
+
},
|
|
176
|
+
grid: {
|
|
177
|
+
type: Object,
|
|
178
|
+
default: void 0
|
|
167
179
|
}
|
|
168
180
|
},
|
|
169
181
|
emits: ["update:x", "update:y", "update:width", "update:height", "select"],
|
|
@@ -175,6 +187,7 @@ var FreeDom = defineComponent({
|
|
|
175
187
|
const canMove = computed(() => !_preview.value && (SceneContext?.move || props.move));
|
|
176
188
|
const isAbsolute = computed(() => props.absolute ?? SceneContext?.absolute ?? true);
|
|
177
189
|
const handlerType = computed(() => props.handler ?? SceneContext?.handler ?? "dot");
|
|
190
|
+
const snapGrid = computed(() => props.grid ?? SceneContext?.grid);
|
|
178
191
|
const diagonal = computed(() => props.diagonal ?? SceneContext?.diagonal ?? true);
|
|
179
192
|
const widgetRef = shallowRef();
|
|
180
193
|
const _style = ref2({});
|
|
@@ -250,7 +263,7 @@ var FreeDom = defineComponent({
|
|
|
250
263
|
isScale.value = true;
|
|
251
264
|
active.value = true;
|
|
252
265
|
const { clientX, clientY } = evt;
|
|
253
|
-
useResize(clientX, clientY, _rect, dot, diagonal.value, {
|
|
266
|
+
useResize(clientX, clientY, _rect, dot, diagonal.value, snapGrid.value, {
|
|
254
267
|
onMove() {
|
|
255
268
|
if (!checkValid(_rect))
|
|
256
269
|
return;
|
|
@@ -615,6 +628,10 @@ var freeDomWrapProps = {
|
|
|
615
628
|
diagonal: {
|
|
616
629
|
type: Boolean,
|
|
617
630
|
default: void 0
|
|
631
|
+
},
|
|
632
|
+
grid: {
|
|
633
|
+
type: Object,
|
|
634
|
+
default: void 0
|
|
618
635
|
}
|
|
619
636
|
};
|
|
620
637
|
var FreeDomWrap = defineComponent3({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sepveneto/free-dom",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -15,6 +15,12 @@
|
|
|
15
15
|
},
|
|
16
16
|
"./css": "./dist/index.css"
|
|
17
17
|
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsup",
|
|
20
|
+
"dev": "vue-demi-switch 3 && vitepress dev docs",
|
|
21
|
+
"release": "bumpp package.json --commit --push --tag",
|
|
22
|
+
"test": "vitest"
|
|
23
|
+
},
|
|
18
24
|
"keywords": [],
|
|
19
25
|
"author": "",
|
|
20
26
|
"license": "ISC",
|
|
@@ -35,11 +41,5 @@
|
|
|
35
41
|
"repository": {
|
|
36
42
|
"type": "git",
|
|
37
43
|
"url": "https://github.com/SepVeneto/free-dom"
|
|
38
|
-
},
|
|
39
|
-
"scripts": {
|
|
40
|
-
"build": "tsup",
|
|
41
|
-
"dev": "vue-demi-switch 3 && vitepress dev docs",
|
|
42
|
-
"release": "bumpp package.json --commit --push --tag",
|
|
43
|
-
"test": "vitest"
|
|
44
44
|
}
|
|
45
|
-
}
|
|
45
|
+
}
|