@idraw/core 0.4.0-beta.3 → 0.4.0-beta.30

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 (63) hide show
  1. package/dist/esm/config.d.ts +1 -0
  2. package/dist/esm/config.js +1 -0
  3. package/dist/esm/index.d.ts +15 -5
  4. package/dist/esm/index.js +29 -8
  5. package/dist/esm/lib/cursor-image.d.ts +1 -0
  6. package/dist/esm/lib/cursor-image.js +1 -0
  7. package/dist/esm/lib/cursor.d.ts +3 -12
  8. package/dist/esm/lib/cursor.js +136 -112
  9. package/dist/esm/middleware/dragger/index.d.ts +2 -2
  10. package/dist/esm/middleware/dragger/index.js +1 -0
  11. package/dist/esm/middleware/info/draw-info.d.ts +31 -0
  12. package/dist/esm/middleware/info/draw-info.js +110 -0
  13. package/dist/esm/middleware/info/index.d.ts +3 -0
  14. package/dist/esm/middleware/info/index.js +110 -0
  15. package/dist/esm/middleware/info/types.d.ts +3 -0
  16. package/dist/esm/middleware/info/types.js +1 -0
  17. package/dist/esm/middleware/layout-selector/config.d.ts +9 -0
  18. package/dist/esm/middleware/layout-selector/config.js +9 -0
  19. package/dist/esm/middleware/layout-selector/index.d.ts +5 -0
  20. package/dist/esm/middleware/layout-selector/index.js +332 -0
  21. package/dist/esm/middleware/layout-selector/types.d.ts +15 -0
  22. package/dist/esm/middleware/layout-selector/types.js +2 -0
  23. package/dist/esm/middleware/layout-selector/util.d.ts +8 -0
  24. package/dist/esm/middleware/layout-selector/util.js +108 -0
  25. package/dist/esm/middleware/ruler/index.d.ts +3 -2
  26. package/dist/esm/middleware/ruler/index.js +12 -9
  27. package/dist/esm/middleware/ruler/types.d.ts +3 -0
  28. package/dist/esm/middleware/ruler/types.js +1 -0
  29. package/dist/esm/middleware/ruler/util.d.ts +15 -4
  30. package/dist/esm/middleware/ruler/util.js +81 -4
  31. package/dist/esm/middleware/scaler/index.d.ts +2 -2
  32. package/dist/esm/middleware/scaler/index.js +1 -0
  33. package/dist/esm/middleware/scroller/config.d.ts +2 -0
  34. package/dist/esm/middleware/scroller/config.js +2 -0
  35. package/dist/esm/middleware/scroller/index.d.ts +2 -1
  36. package/dist/esm/middleware/scroller/index.js +33 -5
  37. package/dist/esm/middleware/scroller/types.d.ts +11 -0
  38. package/dist/esm/middleware/scroller/types.js +1 -0
  39. package/dist/esm/middleware/scroller/util.d.ts +1 -1
  40. package/dist/esm/middleware/scroller/util.js +22 -17
  41. package/dist/esm/middleware/selector/config.d.ts +12 -0
  42. package/dist/esm/middleware/selector/config.js +12 -0
  43. package/dist/esm/middleware/selector/draw-auxiliary.d.ts +7 -0
  44. package/dist/esm/middleware/selector/draw-auxiliary.js +46 -0
  45. package/dist/esm/middleware/selector/draw-base.d.ts +30 -0
  46. package/dist/esm/middleware/selector/draw-base.js +100 -0
  47. package/dist/esm/middleware/selector/draw-reference.d.ts +5 -0
  48. package/dist/esm/middleware/selector/draw-reference.js +31 -0
  49. package/dist/esm/middleware/selector/draw-wrapper.d.ts +9 -1
  50. package/dist/esm/middleware/selector/draw-wrapper.js +34 -26
  51. package/dist/esm/middleware/selector/index.d.ts +7 -4
  52. package/dist/esm/middleware/selector/index.js +280 -45
  53. package/dist/esm/middleware/selector/reference.d.ts +13 -0
  54. package/dist/esm/middleware/selector/reference.js +267 -0
  55. package/dist/esm/middleware/selector/types.d.ts +9 -4
  56. package/dist/esm/middleware/selector/types.js +2 -1
  57. package/dist/esm/middleware/selector/util.d.ts +11 -2
  58. package/dist/esm/middleware/selector/util.js +36 -14
  59. package/dist/esm/middleware/text-editor/index.d.ts +20 -2
  60. package/dist/esm/middleware/text-editor/index.js +92 -16
  61. package/dist/index.global.js +3685 -953
  62. package/dist/index.global.min.js +1 -1
  63. package/package.json +5 -5
@@ -0,0 +1,31 @@
1
+ import { referenceColor } from './config';
2
+ import { drawLine, drawCrossByCenter } from './draw-base';
3
+ export function drawReferenceLines(ctx, opts) {
4
+ const { xLines, yLines } = opts;
5
+ const lineOpts = {
6
+ borderColor: referenceColor,
7
+ borderWidth: 1,
8
+ lineDash: []
9
+ };
10
+ const crossOpts = Object.assign(Object.assign({}, lineOpts), { size: 6 });
11
+ if (xLines) {
12
+ xLines.forEach((line) => {
13
+ line.forEach((p, pIdx) => {
14
+ drawCrossByCenter(ctx, p, crossOpts);
15
+ if (line[pIdx + 1]) {
16
+ drawLine(ctx, line[pIdx], line[pIdx + 1], lineOpts);
17
+ }
18
+ });
19
+ });
20
+ }
21
+ if (yLines) {
22
+ yLines.forEach((line) => {
23
+ line.forEach((p, pIdx) => {
24
+ drawCrossByCenter(ctx, p, crossOpts);
25
+ if (line[pIdx + 1]) {
26
+ drawLine(ctx, line[pIdx], line[pIdx + 1], lineOpts);
27
+ }
28
+ });
29
+ });
30
+ }
31
+ }
@@ -1,12 +1,20 @@
1
- import type { Element, ElementType, PointSize, RendererDrawElementOptions, ViewContext2D, ViewRectVertexes, ViewScaleInfo, ViewSizeInfo, ElementSizeController } from '@idraw/types';
1
+ import type { Element, ElementType, PointSize, RendererDrawElementOptions, ViewContext2D, ViewRectVertexes, ViewScaleInfo, ViewSizeInfo, ElementSizeController, ViewCalculator } from '@idraw/types';
2
2
  import type { AreaSize } from './types';
3
3
  export declare function drawHoverVertexesWrapper(ctx: ViewContext2D, vertexes: ViewRectVertexes | null, opts: {
4
4
  viewScaleInfo: ViewScaleInfo;
5
5
  viewSizeInfo: ViewSizeInfo;
6
6
  }): void;
7
+ export declare function drawLockVertexesWrapper(ctx: ViewContext2D, vertexes: ViewRectVertexes | null, opts: {
8
+ viewScaleInfo: ViewScaleInfo;
9
+ viewSizeInfo: ViewSizeInfo;
10
+ controller?: ElementSizeController | null;
11
+ }): void;
7
12
  export declare function drawSelectedElementControllersVertexes(ctx: ViewContext2D, controller: ElementSizeController | null, opts: {
13
+ hideControllers: boolean;
8
14
  viewScaleInfo: ViewScaleInfo;
9
15
  viewSizeInfo: ViewSizeInfo;
16
+ element: Element | null;
17
+ calculator: ViewCalculator;
10
18
  }): void;
11
19
  export declare function drawElementListShadows(ctx: ViewContext2D, elements: Element<ElementType>[], opts?: Omit<RendererDrawElementOptions, 'loader'>): void;
12
20
  export declare function drawArea(ctx: ViewContext2D, opts: {
@@ -1,22 +1,6 @@
1
- import { rotateElementVertexes, calcViewVertexes } from '@idraw/util';
2
- import { resizeControllerBorderWidth, areaBorderWidth, wrapperColor, selectWrapperBorderWidth } from './config';
3
- function drawVertexes(ctx, vertexes, opts) {
4
- const { borderColor, borderWidth, background, lineDash } = opts;
5
- ctx.setLineDash([]);
6
- ctx.lineWidth = borderWidth;
7
- ctx.strokeStyle = borderColor;
8
- ctx.fillStyle = background;
9
- ctx.setLineDash(lineDash);
10
- ctx.beginPath();
11
- ctx.moveTo(vertexes[0].x, vertexes[0].y);
12
- ctx.lineTo(vertexes[1].x, vertexes[1].y);
13
- ctx.lineTo(vertexes[2].x, vertexes[2].y);
14
- ctx.lineTo(vertexes[3].x, vertexes[3].y);
15
- ctx.lineTo(vertexes[0].x, vertexes[0].y);
16
- ctx.closePath();
17
- ctx.stroke();
18
- ctx.fill();
19
- }
1
+ import { rotateElementVertexes, calcViewPointSize, calcViewVertexes, calcViewElementSize } from '@idraw/util';
2
+ import { resizeControllerBorderWidth, areaBorderWidth, wrapperColor, selectWrapperBorderWidth, lockColor, controllerSize } from './config';
3
+ import { drawVertexes, drawLine, drawCircleController, drawCrossVertexes } from './draw-base';
20
4
  export function drawHoverVertexesWrapper(ctx, vertexes, opts) {
21
5
  if (!vertexes) {
22
6
  return;
@@ -24,26 +8,50 @@ export function drawHoverVertexesWrapper(ctx, vertexes, opts) {
24
8
  const wrapperOpts = { borderColor: wrapperColor, borderWidth: 1, background: 'transparent', lineDash: [] };
25
9
  drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
26
10
  }
11
+ export function drawLockVertexesWrapper(ctx, vertexes, opts) {
12
+ if (!vertexes) {
13
+ return;
14
+ }
15
+ const wrapperOpts = { borderColor: lockColor, borderWidth: 1, background: 'transparent', lineDash: [] };
16
+ drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
17
+ const { controller } = opts;
18
+ if (controller) {
19
+ const { topLeft, topRight, bottomLeft, bottomRight, topMiddle, bottomMiddle, leftMiddle, rightMiddle } = controller;
20
+ const ctrlOpts = Object.assign(Object.assign({}, wrapperOpts), { borderWidth: 1, background: lockColor });
21
+ drawCrossVertexes(ctx, calcViewVertexes(topMiddle.vertexes, opts), ctrlOpts);
22
+ drawCrossVertexes(ctx, calcViewVertexes(bottomMiddle.vertexes, opts), ctrlOpts);
23
+ drawCrossVertexes(ctx, calcViewVertexes(leftMiddle.vertexes, opts), ctrlOpts);
24
+ drawCrossVertexes(ctx, calcViewVertexes(rightMiddle.vertexes, opts), ctrlOpts);
25
+ drawCrossVertexes(ctx, calcViewVertexes(topLeft.vertexes, opts), ctrlOpts);
26
+ drawCrossVertexes(ctx, calcViewVertexes(topRight.vertexes, opts), ctrlOpts);
27
+ drawCrossVertexes(ctx, calcViewVertexes(bottomLeft.vertexes, opts), ctrlOpts);
28
+ drawCrossVertexes(ctx, calcViewVertexes(bottomRight.vertexes, opts), ctrlOpts);
29
+ }
30
+ }
27
31
  export function drawSelectedElementControllersVertexes(ctx, controller, opts) {
28
32
  if (!controller) {
29
33
  return;
30
34
  }
31
- const { elementWrapper, topLeft, topRight, bottomLeft, bottomRight } = controller;
35
+ const { hideControllers } = opts;
36
+ const { elementWrapper, topLeft, topRight, bottomLeft, bottomRight, top, rotate } = controller;
32
37
  const wrapperOpts = { borderColor: wrapperColor, borderWidth: selectWrapperBorderWidth, background: 'transparent', lineDash: [] };
33
38
  const ctrlOpts = Object.assign(Object.assign({}, wrapperOpts), { borderWidth: resizeControllerBorderWidth, background: '#FFFFFF' });
34
39
  drawVertexes(ctx, calcViewVertexes(elementWrapper, opts), wrapperOpts);
35
- drawVertexes(ctx, calcViewVertexes(topLeft.vertexes, opts), ctrlOpts);
36
- drawVertexes(ctx, calcViewVertexes(topRight.vertexes, opts), ctrlOpts);
37
- drawVertexes(ctx, calcViewVertexes(bottomLeft.vertexes, opts), ctrlOpts);
38
- drawVertexes(ctx, calcViewVertexes(bottomRight.vertexes, opts), ctrlOpts);
40
+ if (!hideControllers) {
41
+ drawLine(ctx, calcViewPointSize(top.center, opts), calcViewPointSize(rotate.center, opts), Object.assign(Object.assign({}, ctrlOpts), { borderWidth: 2 }));
42
+ drawVertexes(ctx, calcViewVertexes(topLeft.vertexes, opts), ctrlOpts);
43
+ drawVertexes(ctx, calcViewVertexes(topRight.vertexes, opts), ctrlOpts);
44
+ drawVertexes(ctx, calcViewVertexes(bottomLeft.vertexes, opts), ctrlOpts);
45
+ drawVertexes(ctx, calcViewVertexes(bottomRight.vertexes, opts), ctrlOpts);
46
+ drawCircleController(ctx, calcViewPointSize(rotate.center, opts), Object.assign(Object.assign({}, ctrlOpts), { size: controllerSize, borderWidth: 2 }));
47
+ }
39
48
  }
40
49
  export function drawElementListShadows(ctx, elements, opts) {
41
50
  elements.forEach((elem) => {
42
51
  let { x, y, w, h } = elem;
43
52
  const { angle = 0 } = elem;
44
53
  if (opts === null || opts === void 0 ? void 0 : opts.calculator) {
45
- const { calculator } = opts;
46
- const size = calculator.elementSize({ x, y, w, h }, opts.viewScaleInfo, opts.viewSizeInfo);
54
+ const size = calcViewElementSize({ x, y, w, h }, opts);
47
55
  x = size.x;
48
56
  y = size.y;
49
57
  w = size.w;
@@ -1,4 +1,7 @@
1
- import type { CoreEvent } from '@idraw/types';
2
- import type { BoardMiddleware, DeepSelectorSharedStorage } from './types';
3
- export declare const middlewareEventSelect: string;
4
- export declare const MiddlewareSelector: BoardMiddleware<DeepSelectorSharedStorage, CoreEvent>;
1
+ import type { CoreEventMap } from '@idraw/types';
2
+ import type { BoardMiddleware, ActionType, DeepSelectorSharedStorage } from './types';
3
+ import { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid, keyActionType, keyResizeType, keyGroupQueue, keyHoverElement, keySelectedElementList } from './config';
4
+ export { keySelectedElementList, keyHoverElement, keyActionType, keyResizeType, keyGroupQueue };
5
+ export type { DeepSelectorSharedStorage, ActionType };
6
+ export { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid };
7
+ export declare const MiddlewareSelector: BoardMiddleware<DeepSelectorSharedStorage, CoreEventMap>;