@idraw/core 0.3.0-alpha.6 → 0.3.0-alpha.8

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 (66) hide show
  1. package/dist/esm/constant/element.d.ts +2 -0
  2. package/dist/esm/constant/element.js +10 -0
  3. package/dist/esm/constant/static.d.ts +11 -0
  4. package/dist/esm/constant/static.js +13 -0
  5. package/dist/esm/index.d.ts +61 -0
  6. package/{esm → dist/esm}/index.js +22 -16
  7. package/dist/esm/lib/calculate.d.ts +5 -0
  8. package/dist/esm/lib/calculate.js +64 -0
  9. package/dist/esm/lib/check.d.ts +28 -0
  10. package/dist/esm/lib/check.js +115 -0
  11. package/dist/esm/lib/config.d.ts +3 -0
  12. package/dist/esm/lib/config.js +20 -0
  13. package/dist/esm/lib/core-event.d.ts +49 -0
  14. package/dist/esm/lib/core-event.js +50 -0
  15. package/dist/esm/lib/diff.d.ts +6 -0
  16. package/dist/esm/lib/diff.js +80 -0
  17. package/dist/esm/lib/draw/base.d.ts +5 -0
  18. package/dist/esm/lib/draw/base.js +90 -0
  19. package/dist/esm/lib/draw/wrapper.d.ts +4 -0
  20. package/dist/esm/lib/draw/wrapper.js +144 -0
  21. package/dist/esm/lib/element/element-base.d.ts +3 -0
  22. package/dist/esm/lib/element/element-base.js +5 -0
  23. package/dist/esm/lib/element/element-controller.d.ts +3 -0
  24. package/dist/esm/lib/element/element-controller.js +3 -0
  25. package/dist/esm/lib/element/element-hub.d.ts +9 -0
  26. package/dist/esm/lib/element/element-hub.js +16 -0
  27. package/dist/esm/lib/element.d.ts +15 -0
  28. package/dist/esm/lib/element.js +438 -0
  29. package/dist/esm/lib/engine-temp.d.ts +22 -0
  30. package/dist/esm/lib/engine-temp.js +29 -0
  31. package/dist/esm/lib/engine.d.ts +47 -0
  32. package/dist/esm/lib/engine.js +323 -0
  33. package/dist/esm/lib/helper.d.ts +30 -0
  34. package/dist/esm/lib/helper.js +363 -0
  35. package/dist/esm/lib/index.d.ts +13 -0
  36. package/dist/esm/lib/index.js +13 -0
  37. package/dist/esm/lib/is.d.ts +26 -0
  38. package/dist/esm/lib/is.js +100 -0
  39. package/dist/esm/lib/mapper.d.ts +26 -0
  40. package/dist/esm/lib/mapper.js +89 -0
  41. package/dist/esm/lib/parse.d.ts +2 -0
  42. package/dist/esm/lib/parse.js +29 -0
  43. package/dist/esm/lib/temp.d.ts +11 -0
  44. package/dist/esm/lib/temp.js +19 -0
  45. package/dist/esm/lib/transform.d.ts +4 -0
  46. package/dist/esm/lib/transform.js +20 -0
  47. package/dist/esm/lib/value.d.ts +2 -0
  48. package/dist/esm/lib/value.js +7 -0
  49. package/dist/esm/mixins/element.d.ts +20 -0
  50. package/dist/esm/mixins/element.js +169 -0
  51. package/dist/esm/plugins/helper.d.ts +12 -0
  52. package/dist/esm/plugins/helper.js +21 -0
  53. package/dist/esm/util/filter.d.ts +1 -0
  54. package/dist/esm/util/filter.js +3 -0
  55. package/dist/index.global.js +4503 -5921
  56. package/dist/index.global.min.js +1 -1
  57. package/package.json +11 -16
  58. package/dist/index.cjs.js +0 -5995
  59. package/dist/index.d.ts +0 -163
  60. package/dist/index.esm.js +0 -5993
  61. package/esm/default.d.ts +0 -1
  62. package/esm/default.js +0 -2
  63. package/esm/esm.d.ts +0 -2
  64. package/esm/esm.js +0 -3
  65. /package/{esm → dist/esm}/names.d.ts +0 -0
  66. /package/{esm → dist/esm}/names.js +0 -0
@@ -0,0 +1,90 @@
1
+ import { istype, isColorStr } from '@idraw/util';
2
+ import { rotateElement } from './../transform';
3
+ import is from './../is';
4
+ export function clearContext(ctx) {
5
+ ctx.setFillStyle('#000000');
6
+ ctx.setStrokeStyle('#000000');
7
+ ctx.setLineDash([]);
8
+ ctx.setGlobalAlpha(1);
9
+ ctx.setShadowColor('#00000000');
10
+ ctx.setShadowOffsetX(0);
11
+ ctx.setShadowOffsetY(0);
12
+ ctx.setShadowBlur(0);
13
+ }
14
+ export function drawBgColor(ctx, color) {
15
+ const size = ctx.getSize();
16
+ ctx.setFillStyle(color);
17
+ ctx.fillRect(0, 0, size.contextWidth, size.contextHeight);
18
+ }
19
+ export function drawBox(ctx, elem, pattern) {
20
+ clearContext(ctx);
21
+ drawBoxBorder(ctx, elem);
22
+ clearContext(ctx);
23
+ rotateElement(ctx, elem, () => {
24
+ const { x, y, w, h } = elem;
25
+ let r = elem.desc.borderRadius || 0;
26
+ r = Math.min(r, w / 2, h / 2);
27
+ if (w < r * 2 || h < r * 2) {
28
+ r = 0;
29
+ }
30
+ ctx.beginPath();
31
+ ctx.moveTo(x + r, y);
32
+ ctx.arcTo(x + w, y, x + w, y + h, r);
33
+ ctx.arcTo(x + w, y + h, x, y + h, r);
34
+ ctx.arcTo(x, y + h, x, y, r);
35
+ ctx.arcTo(x, y, x + w, y, r);
36
+ ctx.closePath();
37
+ if (typeof pattern === 'string') {
38
+ ctx.setFillStyle(pattern);
39
+ }
40
+ else if (['CanvasPattern'].includes(istype.type(pattern))) {
41
+ ctx.setFillStyle(pattern);
42
+ }
43
+ ctx.fill();
44
+ });
45
+ }
46
+ export function drawBoxBorder(ctx, elem) {
47
+ clearContext(ctx);
48
+ rotateElement(ctx, elem, () => {
49
+ if (!(elem.desc.borderWidth && elem.desc.borderWidth > 0)) {
50
+ return;
51
+ }
52
+ const bw = elem.desc.borderWidth;
53
+ let borderColor = '#000000';
54
+ if (isColorStr(elem.desc.borderColor) === true) {
55
+ borderColor = elem.desc.borderColor;
56
+ }
57
+ const x = elem.x - bw / 2;
58
+ const y = elem.y - bw / 2;
59
+ const w = elem.w + bw;
60
+ const h = elem.h + bw;
61
+ let r = elem.desc.borderRadius || 0;
62
+ r = Math.min(r, w / 2, h / 2);
63
+ if (r < w / 2 && r < h / 2) {
64
+ r = r + bw / 2;
65
+ }
66
+ const { desc } = elem;
67
+ if (desc.shadowColor !== undefined && isColorStr(desc.shadowColor)) {
68
+ ctx.setShadowColor(desc.shadowColor);
69
+ }
70
+ if (desc.shadowOffsetX !== undefined && is.number(desc.shadowOffsetX)) {
71
+ ctx.setShadowOffsetX(desc.shadowOffsetX);
72
+ }
73
+ if (desc.shadowOffsetY !== undefined && is.number(desc.shadowOffsetY)) {
74
+ ctx.setShadowOffsetY(desc.shadowOffsetY);
75
+ }
76
+ if (desc.shadowBlur !== undefined && is.number(desc.shadowBlur)) {
77
+ ctx.setShadowBlur(desc.shadowBlur);
78
+ }
79
+ ctx.beginPath();
80
+ ctx.setLineWidth(bw);
81
+ ctx.setStrokeStyle(borderColor);
82
+ ctx.moveTo(x + r, y);
83
+ ctx.arcTo(x + w, y, x + w, y + h, r);
84
+ ctx.arcTo(x + w, y + h, x, y + h, r);
85
+ ctx.arcTo(x, y + h, x, y, r);
86
+ ctx.arcTo(x, y, x + w, y, r);
87
+ ctx.closePath();
88
+ ctx.stroke();
89
+ });
90
+ }
@@ -0,0 +1,4 @@
1
+ import { TypeContext, TypeHelperConfig } from '@idraw/types';
2
+ export declare function drawElementWrapper(ctx: TypeContext, config: TypeHelperConfig): void;
3
+ export declare function drawAreaWrapper(ctx: TypeContext, config: TypeHelperConfig): void;
4
+ export declare function drawElementListWrappers(ctx: TypeContext, config: TypeHelperConfig): void;
@@ -0,0 +1,144 @@
1
+ import { rotateContext } from './../transform';
2
+ import { clearContext } from './base';
3
+ export function drawElementWrapper(ctx, config) {
4
+ if (!(config === null || config === void 0 ? void 0 : config.selectedElementWrapper)) {
5
+ return;
6
+ }
7
+ const wrapper = config.selectedElementWrapper;
8
+ clearContext(ctx);
9
+ rotateContext(ctx, wrapper.translate, wrapper.radian || 0, () => {
10
+ ctx.beginPath();
11
+ ctx.setLineDash(wrapper.lineDash);
12
+ ctx.setLineWidth(wrapper.lineWidth);
13
+ ctx.setStrokeStyle(wrapper.color);
14
+ ctx.moveTo(wrapper.controllers.topLeft.x, wrapper.controllers.topLeft.y);
15
+ ctx.lineTo(wrapper.controllers.topRight.x, wrapper.controllers.topRight.y);
16
+ ctx.lineTo(wrapper.controllers.bottomRight.x, wrapper.controllers.bottomRight.y);
17
+ ctx.lineTo(wrapper.controllers.bottomLeft.x, wrapper.controllers.bottomLeft.y);
18
+ ctx.lineTo(wrapper.controllers.topLeft.x, wrapper.controllers.topLeft.y - wrapper.lineWidth / 2);
19
+ ctx.stroke();
20
+ ctx.closePath();
21
+ if (wrapper.lock !== true) {
22
+ if (wrapper.controllers.rotate.invisible !== true) {
23
+ ctx.beginPath();
24
+ ctx.moveTo(wrapper.controllers.top.x, wrapper.controllers.top.y);
25
+ ctx.lineTo(wrapper.controllers.rotate.x, wrapper.controllers.rotate.y + wrapper.controllerSize);
26
+ ctx.stroke();
27
+ ctx.closePath();
28
+ ctx.beginPath();
29
+ ctx.setLineDash([]);
30
+ ctx.setLineWidth(wrapper.controllerSize / 2);
31
+ ctx.arc(wrapper.controllers.rotate.x, wrapper.controllers.rotate.y, wrapper.controllerSize * 0.8, Math.PI / 6, Math.PI * 2);
32
+ ctx.stroke();
33
+ ctx.closePath();
34
+ }
35
+ ctx.setFillStyle(wrapper.color);
36
+ [
37
+ wrapper.controllers.topLeft,
38
+ wrapper.controllers.top,
39
+ wrapper.controllers.topRight,
40
+ wrapper.controllers.right,
41
+ wrapper.controllers.bottomRight,
42
+ wrapper.controllers.bottom,
43
+ wrapper.controllers.bottomLeft,
44
+ wrapper.controllers.left,
45
+ ].forEach((controller) => {
46
+ if (controller.invisible !== true) {
47
+ ctx.beginPath();
48
+ ctx.arc(controller.x, controller.y, wrapper.controllerSize, 0, Math.PI * 2);
49
+ ctx.fill();
50
+ ctx.closePath();
51
+ }
52
+ });
53
+ }
54
+ else {
55
+ clearContext(ctx);
56
+ ctx.setStrokeStyle(wrapper.color);
57
+ [
58
+ wrapper.controllers.topLeft, wrapper.controllers.top, wrapper.controllers.topRight, wrapper.controllers.right,
59
+ wrapper.controllers.bottomRight, wrapper.controllers.bottom, wrapper.controllers.bottomLeft, wrapper.controllers.left,
60
+ ].forEach((controller) => {
61
+ ctx.beginPath();
62
+ ctx.moveTo(controller.x - wrapper.controllerSize / 2, controller.y - wrapper.controllerSize / 2);
63
+ ctx.lineTo(controller.x + wrapper.controllerSize / 2, controller.y + wrapper.controllerSize / 2);
64
+ ctx.stroke();
65
+ ctx.closePath();
66
+ ctx.beginPath();
67
+ ctx.moveTo(controller.x + wrapper.controllerSize / 2, controller.y - wrapper.controllerSize / 2);
68
+ ctx.lineTo(controller.x - wrapper.controllerSize / 2, controller.y + wrapper.controllerSize / 2);
69
+ ctx.stroke();
70
+ ctx.closePath();
71
+ });
72
+ }
73
+ });
74
+ }
75
+ export function drawAreaWrapper(ctx, config) {
76
+ if (!(config === null || config === void 0 ? void 0 : config.selectedAreaWrapper)) {
77
+ return;
78
+ }
79
+ const wrapper = config.selectedAreaWrapper;
80
+ if (wrapper && wrapper.w > 0 && wrapper.h > 0) {
81
+ clearContext(ctx);
82
+ ctx.setGlobalAlpha(0.3);
83
+ ctx.setFillStyle(wrapper.color);
84
+ ctx.fillRect(wrapper.x, wrapper.y, wrapper.w, wrapper.h);
85
+ clearContext(ctx);
86
+ ctx.beginPath();
87
+ ctx.setLineDash(wrapper.lineDash);
88
+ ctx.setLineWidth(wrapper.lineWidth);
89
+ ctx.setStrokeStyle(wrapper.color);
90
+ ctx.moveTo(wrapper.x, wrapper.y);
91
+ ctx.lineTo(wrapper.x + wrapper.w, wrapper.y);
92
+ ctx.lineTo(wrapper.x + wrapper.w, wrapper.y + wrapper.h);
93
+ ctx.lineTo(wrapper.x, wrapper.y + wrapper.h);
94
+ ctx.lineTo(wrapper.x, wrapper.y);
95
+ ctx.stroke();
96
+ ctx.closePath();
97
+ }
98
+ }
99
+ export function drawElementListWrappers(ctx, config) {
100
+ if (!Array.isArray(config === null || config === void 0 ? void 0 : config.selectedElementListWrappers)) {
101
+ return;
102
+ }
103
+ const wrapperList = config.selectedElementListWrappers;
104
+ wrapperList === null || wrapperList === void 0 ? void 0 : wrapperList.forEach((wrapper) => {
105
+ clearContext(ctx);
106
+ rotateContext(ctx, wrapper.translate, wrapper.radian || 0, () => {
107
+ clearContext(ctx);
108
+ ctx.setGlobalAlpha(0.05);
109
+ ctx.setFillStyle(wrapper.color);
110
+ ctx.fillRect(wrapper.controllers.topLeft.x, wrapper.controllers.topLeft.y, wrapper.controllers.bottomRight.x - wrapper.controllers.topLeft.x, wrapper.controllers.bottomRight.y - wrapper.controllers.topLeft.y);
111
+ clearContext(ctx);
112
+ ctx.beginPath();
113
+ ctx.setLineDash(wrapper.lineDash);
114
+ ctx.setLineWidth(wrapper.lineWidth);
115
+ ctx.setStrokeStyle(wrapper.color);
116
+ ctx.moveTo(wrapper.controllers.topLeft.x, wrapper.controllers.topLeft.y);
117
+ ctx.lineTo(wrapper.controllers.topRight.x, wrapper.controllers.topRight.y);
118
+ ctx.lineTo(wrapper.controllers.bottomRight.x, wrapper.controllers.bottomRight.y);
119
+ ctx.lineTo(wrapper.controllers.bottomLeft.x, wrapper.controllers.bottomLeft.y);
120
+ ctx.lineTo(wrapper.controllers.topLeft.x, wrapper.controllers.topLeft.y - wrapper.lineWidth / 2);
121
+ ctx.stroke();
122
+ ctx.closePath();
123
+ if (wrapper.lock === true) {
124
+ clearContext(ctx);
125
+ ctx.setStrokeStyle(wrapper.color);
126
+ [
127
+ wrapper.controllers.topLeft, wrapper.controllers.top, wrapper.controllers.topRight, wrapper.controllers.right,
128
+ wrapper.controllers.bottomRight, wrapper.controllers.bottom, wrapper.controllers.bottomLeft, wrapper.controllers.left,
129
+ ].forEach((controller) => {
130
+ ctx.beginPath();
131
+ ctx.moveTo(controller.x - wrapper.controllerSize / 2, controller.y - wrapper.controllerSize / 2);
132
+ ctx.lineTo(controller.x + wrapper.controllerSize / 2, controller.y + wrapper.controllerSize / 2);
133
+ ctx.stroke();
134
+ ctx.closePath();
135
+ ctx.beginPath();
136
+ ctx.moveTo(controller.x + wrapper.controllerSize / 2, controller.y - wrapper.controllerSize / 2);
137
+ ctx.lineTo(controller.x - wrapper.controllerSize / 2, controller.y + wrapper.controllerSize / 2);
138
+ ctx.stroke();
139
+ ctx.closePath();
140
+ });
141
+ }
142
+ });
143
+ });
144
+ }
@@ -0,0 +1,3 @@
1
+ declare class ElementBase {
2
+ constructor();
3
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ class ElementBase {
3
+ constructor() {
4
+ }
5
+ }
@@ -0,0 +1,3 @@
1
+ declare class ElementController {
2
+ }
3
+ export default ElementController;
@@ -0,0 +1,3 @@
1
+ class ElementController {
2
+ }
3
+ export default ElementController;
@@ -0,0 +1,9 @@
1
+ import ElementController from './element-controller';
2
+ declare class ElementHub {
3
+ private _controllerMap;
4
+ constructor();
5
+ register(type: string, controller: ElementController): void;
6
+ clear(): void;
7
+ getDrawActions(): void;
8
+ }
9
+ export default ElementHub;
@@ -0,0 +1,16 @@
1
+ class ElementHub {
2
+ constructor() {
3
+ this._controllerMap = new Map();
4
+ }
5
+ register(type, controller) {
6
+ if (this._controllerMap.has(type) !== true) {
7
+ this._controllerMap.set(type, controller);
8
+ }
9
+ }
10
+ clear() {
11
+ this._controllerMap.clear();
12
+ }
13
+ getDrawActions() {
14
+ }
15
+ }
16
+ export default ElementHub;
@@ -0,0 +1,15 @@
1
+ import { TypeContext, TypePoint, TypeData, TypeHelperWrapperControllerDirection, TypeElement, TypeElemDesc } from '@idraw/types';
2
+ export declare class Element {
3
+ private _ctx;
4
+ constructor(ctx: TypeContext);
5
+ initData(data: TypeData): TypeData;
6
+ isPointInElement(p: TypePoint, data: TypeData): [number, string | null];
7
+ dragElement(data: TypeData, uuid: string, point: TypePoint, prevPoint: TypePoint, scale: number): void;
8
+ transformElement(data: TypeData, uuid: string, point: TypePoint, prevPoint: TypePoint, scale: number, direction: TypeHelperWrapperControllerDirection): null | {
9
+ width: number;
10
+ height: number;
11
+ angle: number;
12
+ };
13
+ getElementIndex(data: TypeData, uuid: string): number;
14
+ limitElementAttrs(elem: TypeElement<keyof TypeElemDesc>): void;
15
+ }