@witchcraft/layout 0.1.3 → 0.2.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.
Files changed (189) hide show
  1. package/README.md +27 -24
  2. package/dist/module.json +1 -1
  3. package/dist/runtime/components/FrameDragHandle.d.vue.ts +15 -0
  4. package/dist/runtime/components/FrameDragHandle.vue +28 -0
  5. package/dist/runtime/components/FrameDragHandle.vue.d.ts +15 -0
  6. package/dist/runtime/components/LayoutDecos.d.vue.ts +2 -4
  7. package/dist/runtime/components/LayoutDecos.vue +10 -29
  8. package/dist/runtime/components/LayoutDecos.vue.d.ts +2 -4
  9. package/dist/runtime/components/LayoutEdges.d.vue.ts +3 -3
  10. package/dist/runtime/components/LayoutEdges.vue +8 -8
  11. package/dist/runtime/components/LayoutEdges.vue.d.ts +3 -3
  12. package/dist/runtime/components/LayoutFrame.d.vue.ts +1 -1
  13. package/dist/runtime/components/LayoutFrame.vue +0 -1
  14. package/dist/runtime/components/LayoutFrame.vue.d.ts +1 -1
  15. package/dist/runtime/components/LayoutShapeSquare.d.vue.ts +3 -1
  16. package/dist/runtime/components/LayoutShapeSquare.vue.d.ts +3 -1
  17. package/dist/runtime/components/LayoutWindow.d.vue.ts +26 -12
  18. package/dist/runtime/components/LayoutWindow.vue +95 -84
  19. package/dist/runtime/components/LayoutWindow.vue.d.ts +26 -12
  20. package/dist/runtime/composables/useFrames.d.ts +15 -13
  21. package/dist/runtime/composables/useFrames.js +59 -39
  22. package/dist/runtime/demo/App.vue +116 -30
  23. package/dist/runtime/demo/DemoControls.d.vue.ts +4 -1
  24. package/dist/runtime/demo/DemoControls.vue +98 -4
  25. package/dist/runtime/demo/DemoControls.vue.d.ts +4 -1
  26. package/dist/runtime/drag/CloseAction.d.ts +26 -5
  27. package/dist/runtime/drag/CloseAction.js +87 -40
  28. package/dist/runtime/drag/DragActionHandler.d.ts +20 -8
  29. package/dist/runtime/drag/DragActionHandler.js +47 -12
  30. package/dist/runtime/drag/FrameDragAction.d.ts +45 -0
  31. package/dist/runtime/drag/FrameDragAction.js +143 -0
  32. package/dist/runtime/drag/SplitAction.d.ts +32 -11
  33. package/dist/runtime/drag/SplitAction.js +82 -24
  34. package/dist/runtime/drag/createDefaultHandlers.d.ts +9 -0
  35. package/dist/runtime/drag/createDefaultHandlers.js +10 -0
  36. package/dist/runtime/drag/defaultDragActions.d.ts +9 -0
  37. package/dist/runtime/drag/defaultDragActions.js +10 -0
  38. package/dist/runtime/drag/types.d.ts +82 -13
  39. package/dist/runtime/drag/types.js +1 -0
  40. package/dist/runtime/helpers/createZoneSideClipPath.d.ts +12 -0
  41. package/dist/runtime/helpers/createZoneSideClipPath.js +17 -0
  42. package/dist/runtime/helpers/doEdgesOverlap.d.ts +3 -1
  43. package/dist/runtime/helpers/doEdgesOverlap.js +5 -5
  44. package/dist/runtime/helpers/getDockBoundaries.d.ts +19 -0
  45. package/dist/runtime/helpers/getDockBoundaries.js +14 -0
  46. package/dist/runtime/helpers/getEdgeLength.d.ts +2 -0
  47. package/dist/runtime/helpers/getEdgeLength.js +5 -0
  48. package/dist/runtime/helpers/getIntersections.js +2 -2
  49. package/dist/runtime/helpers/getIntersectionsCss.js +2 -2
  50. package/dist/runtime/helpers/getMoveEdgeInfo.js +2 -2
  51. package/dist/runtime/helpers/getResizeLimit.js +2 -2
  52. package/dist/runtime/helpers/getShapeSquareCss.js +2 -2
  53. package/dist/runtime/helpers/getVisualEdgeCss.js +2 -2
  54. package/dist/runtime/helpers/getVisualEdges.d.ts +1 -1
  55. package/dist/runtime/helpers/getVisualEdges.js +4 -3
  56. package/dist/runtime/helpers/index.d.ts +4 -0
  57. package/dist/runtime/helpers/index.js +4 -0
  58. package/dist/runtime/helpers/isEdgeEqual.js +2 -4
  59. package/dist/runtime/helpers/isWindowEdge.js +2 -2
  60. package/dist/runtime/helpers/isWindowEdgePoint.js +2 -2
  61. package/dist/runtime/helpers/moveEdge.js +2 -2
  62. package/dist/runtime/helpers/numberToScaledPercent.d.ts +1 -1
  63. package/dist/runtime/helpers/numberToScaledPercent.js +2 -2
  64. package/dist/runtime/helpers/numberToScaledSize.js +2 -2
  65. package/dist/runtime/helpers/rotateFrames.d.ts +7 -0
  66. package/dist/runtime/helpers/rotateFrames.js +36 -0
  67. package/dist/runtime/helpers/scaledPointToPx.d.ts +13 -0
  68. package/dist/runtime/helpers/scaledPointToPx.js +7 -0
  69. package/dist/runtime/helpers/toWindowCoord.js +2 -2
  70. package/dist/runtime/layout/applyFrameChanges.d.ts +10 -0
  71. package/dist/runtime/layout/applyFrameChanges.js +29 -0
  72. package/dist/runtime/layout/createSplitDecoFromDrag.d.ts +6 -1
  73. package/dist/runtime/layout/createSplitDecoFromDrag.js +4 -4
  74. package/dist/runtime/layout/createSplitDecoShapes.d.ts +7 -0
  75. package/dist/runtime/layout/{createSplitDecoEdge.js → createSplitDecoShapes.js} +6 -3
  76. package/dist/runtime/layout/debugFrame.js +2 -1
  77. package/dist/runtime/layout/findSafeSplitEdge.js +2 -2
  78. package/dist/runtime/layout/frameCreate.js +2 -2
  79. package/dist/runtime/layout/getCloseFrameInfo.d.ts +7 -6
  80. package/dist/runtime/layout/getCloseFrameInfo.js +10 -3
  81. package/dist/runtime/layout/getDragZones.d.ts +8 -0
  82. package/dist/runtime/layout/getDragZones.js +32 -0
  83. package/dist/runtime/layout/getFillEmptySpaceInfo.d.ts +65 -0
  84. package/dist/runtime/layout/getFillEmptySpaceInfo.js +69 -0
  85. package/dist/runtime/layout/getFrameCollapseInfo.d.ts +13 -0
  86. package/dist/runtime/layout/getFrameCollapseInfo.js +93 -0
  87. package/dist/runtime/layout/getFrameDockInfo.d.ts +9 -0
  88. package/dist/runtime/layout/getFrameDockInfo.js +82 -0
  89. package/dist/runtime/layout/getFrameDragZones.d.ts +16 -0
  90. package/dist/runtime/layout/getFrameDragZones.js +74 -0
  91. package/dist/runtime/layout/getFrameRearrangeInfo.d.ts +139 -0
  92. package/dist/runtime/layout/getFrameRearrangeInfo.js +87 -0
  93. package/dist/runtime/layout/getFrameSplitInfo.d.ts +7 -5
  94. package/dist/runtime/layout/getFrameSplitInfo.js +10 -3
  95. package/dist/runtime/layout/getFrameSwapInfo.d.ts +9 -0
  96. package/dist/runtime/layout/getFrameSwapInfo.js +27 -0
  97. package/dist/runtime/layout/getFrameTo.js +2 -2
  98. package/dist/runtime/layout/getFrameUncollapseInfo.d.ts +12 -0
  99. package/dist/runtime/layout/getFrameUncollapseInfo.js +88 -0
  100. package/dist/runtime/layout/getFrameUndockInfo.d.ts +13 -0
  101. package/dist/runtime/layout/getFrameUndockInfo.js +51 -0
  102. package/dist/runtime/layout/getFramesRedistributeInfo.d.ts +29 -0
  103. package/dist/runtime/layout/getFramesRedistributeInfo.js +53 -0
  104. package/dist/runtime/layout/getWindowDragZones.d.ts +6 -0
  105. package/dist/runtime/layout/getWindowDragZones.js +49 -0
  106. package/dist/runtime/layout/index.d.ts +14 -5
  107. package/dist/runtime/layout/index.js +14 -5
  108. package/dist/runtime/layout/isPointInRect.d.ts +7 -0
  109. package/dist/runtime/layout/{isPointInFrame.js → isPointInRect.js} +1 -1
  110. package/dist/runtime/layout/resizeFrame.js +2 -2
  111. package/dist/runtime/settings.d.ts +41 -16
  112. package/dist/runtime/settings.js +95 -53
  113. package/dist/runtime/types/index.d.ts +324 -54
  114. package/dist/runtime/types/index.js +54 -20
  115. package/package.json +28 -29
  116. package/src/runtime/components/FrameDragHandle.vue +30 -0
  117. package/src/runtime/components/LayoutDecos.vue +12 -36
  118. package/src/runtime/components/LayoutEdges.vue +27 -23
  119. package/src/runtime/components/LayoutFrame.vue +6 -5
  120. package/src/runtime/components/LayoutShapeSquare.vue +9 -3
  121. package/src/runtime/components/LayoutWindow.vue +110 -101
  122. package/src/runtime/composables/useFrames.ts +80 -50
  123. package/src/runtime/demo/App.vue +126 -36
  124. package/src/runtime/demo/DemoControls.vue +115 -6
  125. package/src/runtime/drag/CloseAction.ts +106 -44
  126. package/src/runtime/drag/DragActionHandler.ts +71 -20
  127. package/src/runtime/drag/FrameDragAction.ts +202 -0
  128. package/src/runtime/drag/SplitAction.ts +106 -34
  129. package/src/runtime/drag/createDefaultHandlers.ts +19 -0
  130. package/src/runtime/drag/defaultDragActions.ts +19 -0
  131. package/src/runtime/drag/types.ts +90 -20
  132. package/src/runtime/helpers/createZoneSideClipPath.ts +41 -0
  133. package/src/runtime/helpers/doEdgesOverlap.ts +11 -5
  134. package/src/runtime/helpers/getDockBoundaries.ts +36 -0
  135. package/src/runtime/helpers/getEdgeLength.ts +10 -0
  136. package/src/runtime/helpers/getIntersections.ts +2 -2
  137. package/src/runtime/helpers/getIntersectionsCss.ts +2 -2
  138. package/src/runtime/helpers/getMoveEdgeInfo.ts +2 -2
  139. package/src/runtime/helpers/getResizeLimit.ts +2 -2
  140. package/src/runtime/helpers/getShapeSquareCss.ts +2 -2
  141. package/src/runtime/helpers/getVisualEdgeCss.ts +2 -2
  142. package/src/runtime/helpers/getVisualEdges.ts +5 -4
  143. package/src/runtime/helpers/index.ts +4 -0
  144. package/src/runtime/helpers/isEdgeEqual.ts +2 -4
  145. package/src/runtime/helpers/isWindowEdge.ts +2 -2
  146. package/src/runtime/helpers/isWindowEdgePoint.ts +2 -2
  147. package/src/runtime/helpers/moveEdge.ts +2 -2
  148. package/src/runtime/helpers/numberToScaledPercent.ts +3 -3
  149. package/src/runtime/helpers/numberToScaledSize.ts +2 -2
  150. package/src/runtime/helpers/rotateFrames.ts +45 -0
  151. package/src/runtime/helpers/scaledPointToPx.ts +13 -0
  152. package/src/runtime/helpers/toWindowCoord.ts +2 -2
  153. package/src/runtime/layout/applyFrameChanges.ts +39 -0
  154. package/src/runtime/layout/createSplitDecoFromDrag.ts +12 -6
  155. package/src/runtime/layout/{createSplitDecoEdge.ts → createSplitDecoShapes.ts} +17 -7
  156. package/src/runtime/layout/debugFrame.ts +1 -1
  157. package/src/runtime/layout/findSafeSplitEdge.ts +3 -3
  158. package/src/runtime/layout/frameCreate.ts +2 -2
  159. package/src/runtime/layout/getCloseFrameInfo.ts +21 -8
  160. package/src/runtime/layout/getDragZones.ts +48 -0
  161. package/src/runtime/layout/getFillEmptySpaceInfo.ts +177 -0
  162. package/src/runtime/layout/getFrameCollapseInfo.ts +164 -0
  163. package/src/runtime/layout/getFrameDockInfo.ts +126 -0
  164. package/src/runtime/layout/getFrameDragZones.ts +100 -0
  165. package/src/runtime/layout/getFrameRearrangeInfo.ts +261 -0
  166. package/src/runtime/layout/getFrameSplitInfo.ts +21 -8
  167. package/src/runtime/layout/getFrameSwapInfo.ts +45 -0
  168. package/src/runtime/layout/getFrameTo.ts +2 -2
  169. package/src/runtime/layout/getFrameUncollapseInfo.ts +160 -0
  170. package/src/runtime/layout/getFrameUndockInfo.ts +97 -0
  171. package/src/runtime/layout/getFramesRedistributeInfo.ts +98 -0
  172. package/src/runtime/layout/getWindowDragZones.ts +59 -0
  173. package/src/runtime/layout/index.ts +14 -5
  174. package/src/runtime/layout/isPointInRect.ts +7 -0
  175. package/src/runtime/layout/resizeFrame.ts +2 -2
  176. package/src/runtime/settings.ts +69 -49
  177. package/src/runtime/types/index.ts +143 -28
  178. package/dist/runtime/layout/closeFrame.d.ts +0 -5
  179. package/dist/runtime/layout/closeFrame.js +0 -13
  180. package/dist/runtime/layout/closeFrames.d.ts +0 -2
  181. package/dist/runtime/layout/closeFrames.js +0 -8
  182. package/dist/runtime/layout/createSplitDecoEdge.d.ts +0 -2
  183. package/dist/runtime/layout/frameSplit.d.ts +0 -16
  184. package/dist/runtime/layout/frameSplit.js +0 -9
  185. package/dist/runtime/layout/isPointInFrame.d.ts +0 -2
  186. package/src/runtime/layout/closeFrame.ts +0 -33
  187. package/src/runtime/layout/closeFrames.ts +0 -14
  188. package/src/runtime/layout/frameSplit.ts +0 -31
  189. package/src/runtime/layout/isPointInFrame.ts +0 -7
@@ -1,17 +1,26 @@
1
- export { closeFrame } from "./closeFrame.js";
2
- export { closeFrames } from "./closeFrames.js";
3
- export { createSplitDecoEdge } from "./createSplitDecoEdge.js";
1
+ export { applyFrameChanges } from "./applyFrameChanges.js";
4
2
  export { createSplitDecoFromDrag } from "./createSplitDecoFromDrag.js";
3
+ export { createSplitDecoShapes } from "./createSplitDecoShapes.js";
5
4
  export { debugFrame } from "./debugFrame.js";
6
5
  export { findFramesTouchingEdge } from "./findFramesTouchingEdge.js";
7
6
  export { findSafeSplitEdgeAndPosition } from "./findSafeSplitEdge.js";
8
7
  export { findVisualEdge } from "./findVisualEdge.js";
9
8
  export { frameCreate } from "./frameCreate.js";
10
- export { frameSplit } from "./frameSplit.js";
11
9
  export { getCloseFrameInfo } from "./getCloseFrameInfo.js";
10
+ export { getDragZones } from "./getDragZones.js";
11
+ export { getFillEmptySpaceInfo } from "./getFillEmptySpaceInfo.js";
12
+ export { getFrameCollapseInfo } from "./getFrameCollapseInfo.js";
13
+ export { getFrameDockInfo } from "./getFrameDockInfo.js";
14
+ export { getFrameDragZones } from "./getFrameDragZones.js";
15
+ export { getFrameRearrangeInfo } from "./getFrameRearrangeInfo.js";
12
16
  export { getFrameSplitInfo } from "./getFrameSplitInfo.js";
17
+ export { getFramesRedistributeInfo } from "./getFramesRedistributeInfo.js";
18
+ export { getFrameSwapInfo } from "./getFrameSwapInfo.js";
13
19
  export { getFrameTo } from "./getFrameTo.js";
14
- export { isPointInFrame } from "./isPointInFrame.js";
20
+ export { getFrameUncollapseInfo } from "./getFrameUncollapseInfo.js";
21
+ export { getFrameUndockInfo } from "./getFrameUndockInfo.js";
22
+ export { getWindowDragZones } from "./getWindowDragZones.js";
23
+ export { isPointInRect } from "./isPointInRect.js";
15
24
  export { layoutAddWindow } from "./layoutAddWindow.js";
16
25
  export { layoutCreate } from "./layoutCreate.js";
17
26
  export { layoutRemoveWindow } from "./layoutRemoveWindow.js";
@@ -0,0 +1,7 @@
1
+ import type { Point } from "../types/index.js";
2
+ export declare function isPointInRect(frame: {
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ }, point: Point): boolean;
@@ -1,4 +1,4 @@
1
1
  import { inRange } from "../helpers/inRange.js";
2
- export function isPointInFrame(frame, point) {
2
+ export function isPointInRect(frame, point) {
3
3
  return inRange(point.x, frame.x, frame.x + frame.width) && inRange(point.y, frame.y, frame.y + frame.height);
4
4
  }
@@ -6,8 +6,8 @@ import { getResizeLimit } from "../helpers/getResizeLimit.js";
6
6
  import { getVisualEdges } from "../helpers/getVisualEdges.js";
7
7
  import { isWindowEdge } from "../helpers/isWindowEdge.js";
8
8
  import { resizeByEdge } from "../helpers/resizeByEdge.js";
9
- import { getMarginSize } from "../settings.js";
10
- export function resizeFrame(win, frame, dir, distance, minSize = getMarginSize()) {
9
+ import { settings } from "../settings.js";
10
+ export function resizeFrame(win, frame, dir, distance, minSize = settings.minSizeScaled) {
11
11
  const originalDistance = distance;
12
12
  const frameEdges = frameToEdges(frame);
13
13
  const resizeEdges = dir === "up" ? [frameEdges.top] : dir === "down" ? [frameEdges.bottom] : dir === "vertical" ? [frameEdges.top, frameEdges.bottom] : dir === "left" ? [frameEdges.left] : dir === "right" ? [frameEdges.right] : [frameEdges.left, frameEdges.right];
@@ -1,23 +1,48 @@
1
1
  import type { Point, Size } from "./types/index.js";
2
- export declare const globalOptions: {
3
- SCALE: number;
4
- maxInt: number;
5
- SNAP_PERCENTAGE_X: number;
6
- SNAP_PERCENTAGE_Y: number;
7
- snapPoint: {
2
+ export declare class Settings {
3
+ private _scale;
4
+ private _maxInt;
5
+ get scale(): number;
6
+ set scale(v: number);
7
+ get maxInt(): number;
8
+ private _snapPoint;
9
+ private _snapPointScaled;
10
+ get snapPoint(): number | Point;
11
+ set snapPoint(v: number | Point);
12
+ get snapPointScaled(): {
8
13
  x: number;
9
14
  y: number;
10
15
  };
11
- MARGIN_PERCENTAGE_WIDTH: number;
12
- MARGIN_PERCENTAGE_HEIGHT: number;
13
- marginSize: {
16
+ private _minSize;
17
+ private _minSizeScaled;
18
+ get minSize(): number | Size;
19
+ set minSize(v: number | Size);
20
+ get minSizeScaled(): {
14
21
  width: number;
15
22
  height: number;
16
23
  };
17
- };
18
- export declare function setScale(scale: number): void;
19
- export declare function getMaxInt(): number;
20
- export declare function setSnapPercentage(snapPercentage: number | Point): void;
21
- export declare function getSnapPoint(): Readonly<Point>;
22
- export declare function setMarginPercentage(margin: number | Size): void;
23
- export declare function getMarginSize(): Readonly<Size>;
24
+ private _collapseSize;
25
+ private _collapseSizeScaled;
26
+ get collapseSize(): number | Size;
27
+ set collapseSize(v: number | Size);
28
+ get collapseSizeScaled(): {
29
+ width: number;
30
+ height: number;
31
+ };
32
+ private _maxPerpendicularLength;
33
+ private _maxPerpendicularLengthScaled;
34
+ get maxPerpendicularLength(): number | Size;
35
+ set maxPerpendicularLength(v: number | Size);
36
+ get maxPerpendicularLengthScaled(): {
37
+ width: number;
38
+ height: number;
39
+ };
40
+ private _scalePoint;
41
+ private _scaleSize;
42
+ private _recalcAll;
43
+ zoneSizes: {
44
+ frameEdgePx: number;
45
+ windowEdgePx: number;
46
+ };
47
+ }
48
+ export declare const settings: Settings;
@@ -1,54 +1,96 @@
1
- const g = {
2
- SCALE: 3,
3
- maxInt: 100 * 10 ** 3,
4
- SNAP_PERCENTAGE_X: 0.5,
5
- SNAP_PERCENTAGE_Y: 0.5,
6
- snapPoint: { x: Math.round(0.5 * 10 ** 3), y: Math.round(0.5 * 10 ** 3) },
7
- MARGIN_PERCENTAGE_WIDTH: 10 ** 3,
8
- MARGIN_PERCENTAGE_HEIGHT: 10 ** 3,
9
- marginSize: { width: 10 ** 3, height: 10 ** 3 }
10
- };
11
- export const globalOptions = g;
12
- export function setScale(scale) {
13
- const max = 100 * 10 ** scale;
14
- if (!Number.isSafeInteger(max)) {
15
- throw new TypeError("Scale too high. Precision will be lost!");
16
- }
17
- g.SCALE = scale;
18
- g.maxInt = max;
19
- }
20
- export function getMaxInt() {
21
- return g.maxInt;
22
- }
23
- export function setSnapPercentage(snapPercentage) {
24
- if (typeof snapPercentage === "number") {
25
- g.SNAP_PERCENTAGE_X = snapPercentage;
26
- g.SNAP_PERCENTAGE_Y = snapPercentage;
27
- } else {
28
- g.SNAP_PERCENTAGE_X = snapPercentage.x;
29
- g.SNAP_PERCENTAGE_Y = snapPercentage.y;
30
- }
31
- g.snapPoint = {
32
- x: Math.round(g.SNAP_PERCENTAGE_X * 10 ** g.SCALE),
33
- y: Math.round(g.SNAP_PERCENTAGE_Y * 10 ** g.SCALE)
34
- };
35
- }
36
- export function getSnapPoint() {
37
- return g.snapPoint;
38
- }
39
- export function setMarginPercentage(margin) {
40
- if (typeof margin === "number") {
41
- g.MARGIN_PERCENTAGE_WIDTH = margin;
42
- g.MARGIN_PERCENTAGE_HEIGHT = margin;
43
- } else {
44
- g.MARGIN_PERCENTAGE_WIDTH = margin.width;
45
- g.MARGIN_PERCENTAGE_HEIGHT = margin.height;
46
- }
47
- g.marginSize = {
48
- width: Math.round(g.MARGIN_PERCENTAGE_WIDTH * 10 ** g.SCALE),
49
- height: Math.round(g.MARGIN_PERCENTAGE_HEIGHT * 10 ** g.SCALE)
50
- };
51
- }
52
- export function getMarginSize() {
53
- return g.marginSize;
1
+ export class Settings {
2
+ _scale = 3;
3
+ _maxInt = 100 * 10 ** 3;
4
+ get scale() {
5
+ return this._scale;
6
+ }
7
+ set scale(v) {
8
+ this._scale = v;
9
+ this._maxInt = 100 * 10 ** v;
10
+ this._recalcAll();
11
+ }
12
+ get maxInt() {
13
+ return this._maxInt;
14
+ }
15
+ _snapPoint = { x: 0.5, y: 0.5 };
16
+ _snapPointScaled = { x: Math.round(0.5 * 10 ** 3), y: Math.round(0.5 * 10 ** 3) };
17
+ get snapPoint() {
18
+ return this._snapPoint;
19
+ }
20
+ set snapPoint(v) {
21
+ if (typeof v === "number") {
22
+ this._snapPoint = { x: v, y: v };
23
+ } else {
24
+ this._snapPoint = { x: v.x, y: v.y };
25
+ }
26
+ this._snapPointScaled = this._scalePoint(this._snapPoint);
27
+ }
28
+ get snapPointScaled() {
29
+ return this._snapPointScaled;
30
+ }
31
+ _minSize = { width: 10 ** 3, height: 10 ** 3 };
32
+ _minSizeScaled = { width: 10 ** 3, height: 10 ** 3 };
33
+ get minSize() {
34
+ return this._minSize;
35
+ }
36
+ set minSize(v) {
37
+ if (typeof v === "number") {
38
+ this._minSize = { width: v, height: v };
39
+ } else {
40
+ this._minSize = { width: v.width, height: v.height };
41
+ }
42
+ this._minSizeScaled = this._scaleSize(this._minSize);
43
+ }
44
+ get minSizeScaled() {
45
+ return this._minSizeScaled;
46
+ }
47
+ _collapseSize = { width: 0, height: 0 };
48
+ _collapseSizeScaled = { width: 0, height: 0 };
49
+ get collapseSize() {
50
+ return this._collapseSize;
51
+ }
52
+ set collapseSize(v) {
53
+ if (typeof v === "number") {
54
+ this._collapseSize = { width: v, height: v };
55
+ } else {
56
+ this._collapseSize = { width: v.width, height: v.height };
57
+ }
58
+ this._collapseSizeScaled = this._scaleSize(this._collapseSize);
59
+ }
60
+ get collapseSizeScaled() {
61
+ return this._collapseSizeScaled;
62
+ }
63
+ _maxPerpendicularLength = { width: 20, height: 20 };
64
+ _maxPerpendicularLengthScaled = { width: Math.round(20 * 10 ** 3), height: Math.round(20 * 10 ** 3) };
65
+ get maxPerpendicularLength() {
66
+ return this._maxPerpendicularLength;
67
+ }
68
+ set maxPerpendicularLength(v) {
69
+ if (typeof v === "number") {
70
+ this._maxPerpendicularLength = { width: v, height: v };
71
+ } else {
72
+ this._maxPerpendicularLength = { ...v };
73
+ }
74
+ this._maxPerpendicularLengthScaled = this._scaleSize(this._maxPerpendicularLength);
75
+ }
76
+ get maxPerpendicularLengthScaled() {
77
+ return this._maxPerpendicularLengthScaled;
78
+ }
79
+ _scalePoint(p) {
80
+ const m = 10 ** this._scale;
81
+ return { x: Math.round(p.x * m), y: Math.round(p.y * m) };
82
+ }
83
+ _scaleSize(s) {
84
+ const m = 10 ** this._scale;
85
+ return { width: Math.round(s.width * m), height: Math.round(s.height * m) };
86
+ }
87
+ _recalcAll() {
88
+ this.snapPoint = this._snapPoint;
89
+ this.minSize = this._minSize;
90
+ this.collapseSize = this._collapseSize;
91
+ this.maxPerpendicularLength = this._maxPerpendicularLength;
92
+ }
93
+ // ==== px sized, don't require recalc
94
+ zoneSizes = { frameEdgePx: 40, windowEdgePx: 20 };
54
95
  }
96
+ export const settings = new Settings();