@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 CHANGED
@@ -1,4 +1,4 @@
1
- /* ../../../../../../../tmp/tmp-1770-kjBys2smNgfg/core/src/style/index.css */
1
+ /* ../../../../../../../tmp/tmp-1812-xR8NNKBE7ahD/core/src/style/index.css */
2
2
  :root {
3
3
  --free-dom-theme: #4089ef;
4
4
  --free-dom-line: var(--free-dom-theme);
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
- const deltaX = clientX - startX;
101
- const deltaY = clientY - startY;
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
- const deltaX = clientX - startX;
88
- const deltaY = clientY - startY;
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.2.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
+ }