@idraw/core 0.4.0-alpha.6 → 0.4.0-beta.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.
@@ -4,7 +4,7 @@ export { MiddlewareScroller } from './middleware/scroller';
4
4
  export { MiddlewareScaler, middlewareEventScale } from './middleware/scaler';
5
5
  export { MiddlewareRuler, middlewareEventRuler } from './middleware/ruler';
6
6
  export { MiddlewareTextEditor, middlewareEventTextEdit } from './middleware/text-editor';
7
- export declare class Core {
7
+ export declare class Core<E extends CoreEvent = CoreEvent> {
8
8
  #private;
9
9
  constructor(container: HTMLDivElement, opts: CoreOptions);
10
10
  use(middleware: BoardMiddleware<any, any>): void;
@@ -16,15 +16,15 @@ export declare class Core {
16
16
  }): void;
17
17
  resize(newViewSize: Partial<ViewSizeInfo>): void;
18
18
  clear(): void;
19
- on<T extends keyof CoreEvent>(name: T, callback: (e: CoreEvent[T]) => void): void;
20
- off<T extends keyof CoreEvent>(name: T, callback: (e: CoreEvent[T]) => void): void;
21
- trigger<T extends keyof CoreEvent>(name: T, e: CoreEvent[T]): void;
19
+ on<T extends keyof E>(name: T, callback: (e: E[T]) => void): void;
20
+ off<T extends keyof E>(name: T, callback: (e: E[T]) => void): void;
21
+ trigger<T extends keyof E>(name: T, e: E[T]): void;
22
22
  getViewInfo(): {
23
23
  viewSizeInfo: ViewSizeInfo;
24
24
  viewScaleInfo: ViewScaleInfo;
25
25
  };
26
26
  refresh(): void;
27
- updateViewScale(opts: {
27
+ setViewScale(opts: {
28
28
  scale: number;
29
29
  offsetX: number;
30
30
  offsetY: number;
package/dist/esm/index.js CHANGED
@@ -11,7 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
11
11
  };
12
12
  var _Core_instances, _Core_board, _Core_container, _Core_initContainer;
13
13
  import { Board } from '@idraw/board';
14
- import { createBoardContexts, validateElements } from '@idraw/util';
14
+ import { createViewContent, validateElements } from '@idraw/util';
15
15
  import { Cursor } from './lib/cursor';
16
16
  export { MiddlewareSelector, middlewareEventSelect } from './middleware/selector';
17
17
  export { MiddlewareScroller } from './middleware/scroller';
@@ -28,8 +28,7 @@ export class Core {
28
28
  const canvas = document.createElement('canvas');
29
29
  __classPrivateFieldGet(this, _Core_instances, "m", _Core_initContainer).call(this);
30
30
  container.appendChild(canvas);
31
- const ctx = canvas.getContext('2d');
32
- const viewContent = createBoardContexts(ctx, { devicePixelRatio });
31
+ const viewContent = createViewContent(canvas, { width, height, devicePixelRatio, offscreen: true });
33
32
  const board = new Board({ viewContent, container });
34
33
  const sharer = board.getSharer();
35
34
  sharer.setActiveViewSizeInfo({
@@ -95,7 +94,7 @@ export class Core {
95
94
  refresh() {
96
95
  __classPrivateFieldGet(this, _Core_board, "f").getViewer().drawFrame();
97
96
  }
98
- updateViewScale(opts) {
97
+ setViewScale(opts) {
99
98
  __classPrivateFieldGet(this, _Core_board, "f").updateViewScaleInfo(opts);
100
99
  }
101
100
  }
@@ -43,17 +43,12 @@ export const MiddlewareScroller = (opts) => {
43
43
  };
44
44
  return {
45
45
  mode: key,
46
- wheelX: (e) => {
47
- if (e.deltaX >= 0 || e.deltaX < 0) {
48
- viewer.scroll({ moveX: 0 - e.deltaX });
49
- viewer.drawFrame();
50
- }
51
- },
52
- wheelY: (e) => {
53
- if (e.deltaY >= 0 || e.deltaY < 0) {
54
- viewer.scroll({ moveY: 0 - e.deltaY });
55
- viewer.drawFrame();
56
- }
46
+ wheel: (e) => {
47
+ viewer.scroll({
48
+ moveX: 0 - e.deltaX,
49
+ moveY: 0 - e.deltaY
50
+ });
51
+ viewer.drawFrame();
57
52
  },
58
53
  pointStart: (e) => {
59
54
  const { point } = e;
@@ -16,5 +16,7 @@ export declare const keyDebugEndVertical: unique symbol;
16
16
  export declare const keyDebugStartHorizontal: unique symbol;
17
17
  export declare const keyDebugEndHorizontal: unique symbol;
18
18
  export declare const keyDebugEnd0: unique symbol;
19
- export declare const resizeControllerBorderWidth = 2;
19
+ export declare const selectWrapperBorderWidth = 2;
20
+ export declare const resizeControllerBorderWidth = 4;
21
+ export declare const areaBorderWidth = 1;
20
22
  export declare const wrapperColor = "#1973ba";
@@ -16,5 +16,7 @@ export const keyDebugEndVertical = Symbol(`${key}_debug_endVertical`);
16
16
  export const keyDebugStartHorizontal = Symbol(`${key}_debug_startHorizontal`);
17
17
  export const keyDebugEndHorizontal = Symbol(`${key}_debug_endHorizontal`);
18
18
  export const keyDebugEnd0 = Symbol(`${key}_debug_end0`);
19
- export const resizeControllerBorderWidth = 2;
19
+ export const selectWrapperBorderWidth = 2;
20
+ export const resizeControllerBorderWidth = 4;
21
+ export const areaBorderWidth = 1;
20
22
  export const wrapperColor = '#1973ba';
@@ -1,5 +1,5 @@
1
1
  import { rotateElementVertexes, calcViewVertexes } from '@idraw/util';
2
- import { resizeControllerBorderWidth, wrapperColor } from './config';
2
+ import { resizeControllerBorderWidth, areaBorderWidth, wrapperColor, selectWrapperBorderWidth } from './config';
3
3
  function drawVertexes(ctx, vertexes, opts) {
4
4
  const { borderColor, borderWidth, background, lineDash } = opts;
5
5
  ctx.setLineDash([]);
@@ -28,8 +28,8 @@ export function drawSelectedElementControllersVertexes(ctx, controller, opts) {
28
28
  if (!controller) {
29
29
  return;
30
30
  }
31
- const { elementWrapper, left, right, top, bottom, topLeft, topRight, bottomLeft, bottomRight } = controller;
32
- const wrapperOpts = { borderColor: wrapperColor, borderWidth: 1, background: 'transparent', lineDash: [] };
31
+ const { elementWrapper, topLeft, topRight, bottomLeft, bottomRight } = controller;
32
+ const wrapperOpts = { borderColor: wrapperColor, borderWidth: selectWrapperBorderWidth, background: 'transparent', lineDash: [] };
33
33
  const ctrlOpts = Object.assign(Object.assign({}, wrapperOpts), { borderWidth: resizeControllerBorderWidth, background: '#FFFFFF' });
34
34
  drawVertexes(ctx, calcViewVertexes(elementWrapper, opts), wrapperOpts);
35
35
  drawVertexes(ctx, calcViewVertexes(topLeft.vertexes, opts), ctrlOpts);
@@ -70,7 +70,7 @@ export function drawElementListShadows(ctx, elements, opts) {
70
70
  export function drawArea(ctx, opts) {
71
71
  const { start, end } = opts;
72
72
  ctx.setLineDash([]);
73
- ctx.lineWidth = 1;
73
+ ctx.lineWidth = areaBorderWidth;
74
74
  ctx.strokeStyle = wrapperColor;
75
75
  ctx.fillStyle = '#1976d24f';
76
76
  ctx.beginPath();
@@ -86,7 +86,7 @@ export function drawListArea(ctx, opts) {
86
86
  const { areaSize } = opts;
87
87
  const { x, y, w, h } = areaSize;
88
88
  ctx.setLineDash([]);
89
- ctx.lineWidth = 1;
89
+ ctx.lineWidth = areaBorderWidth;
90
90
  ctx.strokeStyle = wrapperColor;
91
91
  ctx.fillStyle = '#1976d21c';
92
92
  ctx.beginPath();
@@ -101,7 +101,7 @@ export function drawListArea(ctx, opts) {
101
101
  export function drawGroupQueueVertexesWrappers(ctx, vertexesList, opts) {
102
102
  for (let i = 0; i < vertexesList.length; i++) {
103
103
  const vertexes = vertexesList[i];
104
- const wrapperOpts = { borderColor: wrapperColor, borderWidth: 2, background: 'transparent', lineDash: [4, 4] };
104
+ const wrapperOpts = { borderColor: wrapperColor, borderWidth: selectWrapperBorderWidth, background: 'transparent', lineDash: [4, 4] };
105
105
  drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
106
106
  }
107
107
  }
@@ -75,13 +75,24 @@ export const MiddlewareTextEditor = (opts) => {
75
75
  parent = createBox({ size, parent });
76
76
  }
77
77
  const detail = Object.assign(Object.assign({}, defaultElementDetail), element.detail);
78
+ let elemX = element.x * scale + offsetLeft;
79
+ let elemY = element.y * scale + offsetTop;
80
+ let elemW = element.w * scale;
81
+ let elemH = element.h * scale;
82
+ if (groupQueue.length > 0) {
83
+ elemX = element.x * scale;
84
+ elemY = element.y * scale;
85
+ elemW = element.w * scale;
86
+ elemH = element.h * scale;
87
+ }
78
88
  textarea.style.position = 'absolute';
79
- textarea.style.left = `${element.x * scale}px`;
80
- textarea.style.top = `${element.y * scale}px`;
81
- textarea.style.width = `${element.w * scale}px`;
82
- textarea.style.height = `${element.h * scale}px`;
89
+ textarea.style.left = `${elemX}px`;
90
+ textarea.style.top = `${elemY}px`;
91
+ textarea.style.width = `${elemW}px`;
92
+ textarea.style.height = `${elemH}px`;
83
93
  textarea.style.transform = `rotate(${limitAngle(element.angle || 0)}deg)`;
84
- textarea.style.border = 'none';
94
+ textarea.style.boxSizing = 'border-box';
95
+ textarea.style.border = '1px solid #1973ba';
85
96
  textarea.style.resize = 'none';
86
97
  textarea.style.overflow = 'hidden';
87
98
  textarea.style.wordBreak = 'break-all';