@idraw/renderer 0.3.0 → 0.4.0-alpha.2

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 (73) hide show
  1. package/README.md +1 -1
  2. package/dist/esm/draw/base.d.ts +14 -0
  3. package/dist/esm/draw/base.js +245 -0
  4. package/dist/esm/draw/circle.d.ts +2 -0
  5. package/dist/esm/draw/circle.js +28 -0
  6. package/dist/esm/draw/elements.d.ts +2 -0
  7. package/dist/esm/draw/elements.js +16 -0
  8. package/dist/esm/draw/group.d.ts +3 -0
  9. package/dist/esm/draw/group.js +110 -0
  10. package/dist/esm/draw/html.d.ts +2 -0
  11. package/dist/esm/draw/html.js +14 -0
  12. package/dist/esm/draw/image.d.ts +2 -0
  13. package/dist/esm/draw/image.js +14 -0
  14. package/dist/esm/draw/index.d.ts +7 -0
  15. package/dist/esm/draw/index.js +7 -0
  16. package/dist/esm/draw/path.d.ts +2 -0
  17. package/dist/esm/draw/path.js +49 -0
  18. package/dist/esm/draw/rect.d.ts +2 -0
  19. package/dist/esm/draw/rect.js +23 -0
  20. package/dist/esm/draw/svg.d.ts +2 -0
  21. package/dist/esm/draw/svg.js +14 -0
  22. package/dist/esm/draw/text.d.ts +2 -0
  23. package/dist/esm/draw/text.js +113 -0
  24. package/dist/esm/index.d.ts +9 -24
  25. package/dist/esm/index.js +46 -124
  26. package/dist/esm/loader.d.ts +17 -0
  27. package/dist/esm/loader.js +151 -0
  28. package/dist/index.global.js +767 -856
  29. package/dist/index.global.min.js +1 -1
  30. package/package.json +5 -5
  31. package/LICENSE +0 -21
  32. package/dist/esm/constant/element.d.ts +0 -2
  33. package/dist/esm/constant/element.js +0 -10
  34. package/dist/esm/constant/static.d.ts +0 -11
  35. package/dist/esm/constant/static.js +0 -13
  36. package/dist/esm/lib/calculate.d.ts +0 -5
  37. package/dist/esm/lib/calculate.js +0 -64
  38. package/dist/esm/lib/diff.d.ts +0 -6
  39. package/dist/esm/lib/diff.js +0 -82
  40. package/dist/esm/lib/draw/base.d.ts +0 -5
  41. package/dist/esm/lib/draw/base.js +0 -89
  42. package/dist/esm/lib/draw/circle.d.ts +0 -2
  43. package/dist/esm/lib/draw/circle.js +0 -28
  44. package/dist/esm/lib/draw/html.d.ts +0 -3
  45. package/dist/esm/lib/draw/html.js +0 -9
  46. package/dist/esm/lib/draw/image.d.ts +0 -3
  47. package/dist/esm/lib/draw/image.js +0 -9
  48. package/dist/esm/lib/draw/index.d.ts +0 -3
  49. package/dist/esm/lib/draw/index.js +0 -55
  50. package/dist/esm/lib/draw/rect.d.ts +0 -2
  51. package/dist/esm/lib/draw/rect.js +0 -4
  52. package/dist/esm/lib/draw/svg.d.ts +0 -3
  53. package/dist/esm/lib/draw/svg.js +0 -9
  54. package/dist/esm/lib/draw/text.d.ts +0 -3
  55. package/dist/esm/lib/draw/text.js +0 -128
  56. package/dist/esm/lib/index.d.ts +0 -6
  57. package/dist/esm/lib/index.js +0 -6
  58. package/dist/esm/lib/loader-event.d.ts +0 -33
  59. package/dist/esm/lib/loader-event.js +0 -50
  60. package/dist/esm/lib/loader.d.ts +0 -25
  61. package/dist/esm/lib/loader.js +0 -246
  62. package/dist/esm/lib/parse.d.ts +0 -2
  63. package/dist/esm/lib/parse.js +0 -32
  64. package/dist/esm/lib/renderer-event.d.ts +0 -32
  65. package/dist/esm/lib/renderer-event.js +0 -50
  66. package/dist/esm/lib/temp.d.ts +0 -22
  67. package/dist/esm/lib/temp.js +0 -29
  68. package/dist/esm/lib/transform.d.ts +0 -4
  69. package/dist/esm/lib/transform.js +0 -20
  70. package/dist/esm/lib/value.d.ts +0 -2
  71. package/dist/esm/lib/value.js +0 -7
  72. package/dist/esm/util/filter.d.ts +0 -1
  73. package/dist/esm/util/filter.js +0 -3
@@ -1,128 +0,0 @@
1
- import { is, isColorStr } from '@idraw/util';
2
- import { clearContext, drawBox } from './base';
3
- import { rotateElement } from './../transform';
4
- export function drawText(ctx, elem, loader) {
5
- clearContext(ctx);
6
- drawBox(ctx, elem, elem.desc.bgColor || 'transparent');
7
- rotateElement(ctx, elem, () => {
8
- const desc = Object.assign({
9
- fontSize: 12,
10
- fontFamily: 'sans-serif',
11
- textAlign: 'center'
12
- }, elem.desc);
13
- ctx.setFillStyle(elem.desc.color);
14
- ctx.setTextBaseline('top');
15
- ctx.setFont({
16
- fontWeight: desc.fontWeight,
17
- fontSize: desc.fontSize,
18
- fontFamily: desc.fontFamily
19
- });
20
- const descText = desc.text.replace(/\r\n/gi, '\n');
21
- const fontHeight = desc.lineHeight || desc.fontSize;
22
- const descTextList = descText.split('\n');
23
- const lines = [];
24
- let lineNum = 0;
25
- descTextList.forEach((tempText, idx) => {
26
- let lineText = '';
27
- if (tempText.length > 0) {
28
- for (let i = 0; i < tempText.length; i++) {
29
- if (ctx.measureText(lineText + (tempText[i] || '')).width <
30
- ctx.calcDeviceNum(elem.w)) {
31
- lineText += tempText[i] || '';
32
- }
33
- else {
34
- lines.push({
35
- text: lineText,
36
- width: ctx.calcScreenNum(ctx.measureText(lineText).width)
37
- });
38
- lineText = tempText[i] || '';
39
- lineNum++;
40
- }
41
- if ((lineNum + 1) * fontHeight > elem.h) {
42
- break;
43
- }
44
- if (tempText.length - 1 === i) {
45
- if ((lineNum + 1) * fontHeight < elem.h) {
46
- lines.push({
47
- text: lineText,
48
- width: ctx.calcScreenNum(ctx.measureText(lineText).width)
49
- });
50
- if (idx < descTextList.length - 1) {
51
- lineNum++;
52
- }
53
- break;
54
- }
55
- }
56
- }
57
- }
58
- else {
59
- lines.push({
60
- text: '',
61
- width: 0
62
- });
63
- }
64
- });
65
- let startY = 0;
66
- if (lines.length * fontHeight < elem.h) {
67
- if (elem.desc.verticalAlign === 'top') {
68
- startY = 0;
69
- }
70
- else if (elem.desc.verticalAlign === 'bottom') {
71
- startY += elem.h - lines.length * fontHeight;
72
- }
73
- else {
74
- startY += (elem.h - lines.length * fontHeight) / 2;
75
- }
76
- }
77
- {
78
- const _y = elem.y + startY;
79
- if (desc.textShadowColor !== undefined &&
80
- isColorStr(desc.textShadowColor)) {
81
- ctx.setShadowColor(desc.textShadowColor);
82
- }
83
- if (desc.textShadowOffsetX !== undefined &&
84
- is.number(desc.textShadowOffsetX)) {
85
- ctx.setShadowOffsetX(desc.textShadowOffsetX);
86
- }
87
- if (desc.textShadowOffsetY !== undefined &&
88
- is.number(desc.textShadowOffsetY)) {
89
- ctx.setShadowOffsetY(desc.textShadowOffsetY);
90
- }
91
- if (desc.textShadowBlur !== undefined && is.number(desc.textShadowBlur)) {
92
- ctx.setShadowBlur(desc.textShadowBlur);
93
- }
94
- lines.forEach((line, i) => {
95
- let _x = elem.x;
96
- if (desc.textAlign === 'center') {
97
- _x = elem.x + (elem.w - line.width) / 2;
98
- }
99
- else if (desc.textAlign === 'right') {
100
- _x = elem.x + (elem.w - line.width);
101
- }
102
- ctx.fillText(line.text, _x, _y + fontHeight * i);
103
- });
104
- clearContext(ctx);
105
- }
106
- if (isColorStr(desc.strokeColor) &&
107
- desc.strokeWidth !== undefined &&
108
- desc.strokeWidth > 0) {
109
- const _y = elem.y + startY;
110
- lines.forEach((line, i) => {
111
- let _x = elem.x;
112
- if (desc.textAlign === 'center') {
113
- _x = elem.x + (elem.w - line.width) / 2;
114
- }
115
- else if (desc.textAlign === 'right') {
116
- _x = elem.x + (elem.w - line.width);
117
- }
118
- if (desc.strokeColor !== undefined) {
119
- ctx.setStrokeStyle(desc.strokeColor);
120
- }
121
- if (desc.strokeWidth !== undefined && desc.strokeWidth > 0) {
122
- ctx.setLineWidth(desc.strokeWidth);
123
- }
124
- ctx.strokeText(line.text, _x, _y + fontHeight * i);
125
- });
126
- }
127
- });
128
- }
@@ -1,6 +0,0 @@
1
- export * from './diff';
2
- export * from './loader-event';
3
- export * from './loader';
4
- export * from './parse';
5
- export * from './temp';
6
- export * from './value';
@@ -1,6 +0,0 @@
1
- export * from './diff';
2
- export * from './loader-event';
3
- export * from './loader';
4
- export * from './parse';
5
- export * from './temp';
6
- export * from './value';
@@ -1,33 +0,0 @@
1
- import { DataElement, DataElemDesc } from '@idraw/types';
2
- export type TypeLoadDataItem = {
3
- uuid: string;
4
- type: 'image' | 'svg' | 'html';
5
- status: 'null' | 'loaded' | 'fail';
6
- content: null | HTMLImageElement | HTMLCanvasElement;
7
- elemW: number;
8
- elemH: number;
9
- source: string;
10
- element: DataElement<keyof DataElemDesc>;
11
- error?: any;
12
- };
13
- export type TypeLoadData = {
14
- [uuid: string]: TypeLoadDataItem;
15
- };
16
- export type TypeLoaderEventArgMap = {
17
- complete: void;
18
- load: TypeLoadData[string];
19
- error: TypeLoadData[string];
20
- };
21
- export interface TypeLoaderEvent {
22
- on<T extends keyof TypeLoaderEventArgMap>(key: T, callback: (p: TypeLoaderEventArgMap[T]) => void): void;
23
- off<T extends keyof TypeLoaderEventArgMap>(key: T, callback: (p: TypeLoaderEventArgMap[T]) => void): void;
24
- trigger<T extends keyof TypeLoaderEventArgMap>(key: T, p: TypeLoaderEventArgMap[T]): void;
25
- }
26
- export declare class LoaderEvent implements TypeLoaderEvent {
27
- private _listeners;
28
- constructor();
29
- on<T extends keyof TypeLoaderEventArgMap>(eventKey: T, callback: (p: TypeLoaderEventArgMap[T]) => void): void;
30
- off<T extends keyof TypeLoaderEventArgMap>(eventKey: T, callback: (p: TypeLoaderEventArgMap[T]) => void): void;
31
- trigger<T extends keyof TypeLoaderEventArgMap>(eventKey: T, arg: TypeLoaderEventArgMap[T]): boolean;
32
- has<T extends keyof TypeLoaderEventArgMap>(name: string): boolean;
33
- }
@@ -1,50 +0,0 @@
1
- export class LoaderEvent {
2
- constructor() {
3
- this._listeners = new Map();
4
- }
5
- on(eventKey, callback) {
6
- if (this._listeners.has(eventKey)) {
7
- const callbacks = this._listeners.get(eventKey);
8
- callbacks === null || callbacks === void 0 ? void 0 : callbacks.push(callback);
9
- this._listeners.set(eventKey, callbacks || []);
10
- }
11
- else {
12
- this._listeners.set(eventKey, [callback]);
13
- }
14
- }
15
- off(eventKey, callback) {
16
- if (this._listeners.has(eventKey)) {
17
- const callbacks = this._listeners.get(eventKey);
18
- if (Array.isArray(callbacks)) {
19
- for (let i = 0; i < (callbacks === null || callbacks === void 0 ? void 0 : callbacks.length); i++) {
20
- if (callbacks[i] === callback) {
21
- callbacks.splice(i, 1);
22
- break;
23
- }
24
- }
25
- }
26
- this._listeners.set(eventKey, callbacks || []);
27
- }
28
- }
29
- trigger(eventKey, arg) {
30
- const callbacks = this._listeners.get(eventKey);
31
- if (Array.isArray(callbacks)) {
32
- callbacks.forEach((cb) => {
33
- cb(arg);
34
- });
35
- return true;
36
- }
37
- else {
38
- return false;
39
- }
40
- }
41
- has(name) {
42
- if (this._listeners.has(name)) {
43
- const list = this._listeners.get(name);
44
- if (Array.isArray(list) && list.length > 0) {
45
- return true;
46
- }
47
- }
48
- return false;
49
- }
50
- }
@@ -1,25 +0,0 @@
1
- import { IDrawData } from '@idraw/types';
2
- import { TypeLoaderEventArgMap } from './loader-event';
3
- type Options = {
4
- maxParallelNum: number;
5
- };
6
- export default class Loader {
7
- private _opts;
8
- private _event;
9
- private _currentLoadData;
10
- private _currentUUIDQueue;
11
- private _storageLoadData;
12
- private _status;
13
- private _waitingLoadQueue;
14
- constructor(opts: Options);
15
- load(data: IDrawData, changeResourceUUIDs: string[]): void;
16
- on<T extends keyof TypeLoaderEventArgMap>(name: T, callback: (arg: TypeLoaderEventArgMap[T]) => void): void;
17
- off<T extends keyof TypeLoaderEventArgMap>(name: T, callback: (arg: TypeLoaderEventArgMap[T]) => void): void;
18
- isComplete(): boolean;
19
- getContent(uuid: string): null | HTMLImageElement | HTMLCanvasElement;
20
- private _resetLoadData;
21
- private _createEmptyLoadItem;
22
- private _loadTask;
23
- private _loadElementSource;
24
- }
25
- export {};
@@ -1,246 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { loadImage, loadSVG, loadHTML, deepClone } from '@idraw/util';
11
- import { LoaderEvent } from './loader-event';
12
- import { filterScript } from './../util/filter';
13
- var LoaderStatus;
14
- (function (LoaderStatus) {
15
- LoaderStatus["FREE"] = "free";
16
- LoaderStatus["LOADING"] = "loading";
17
- LoaderStatus["COMPLETE"] = "complete";
18
- })(LoaderStatus || (LoaderStatus = {}));
19
- export default class Loader {
20
- constructor(opts) {
21
- this._currentLoadData = {};
22
- this._currentUUIDQueue = [];
23
- this._storageLoadData = {};
24
- this._status = LoaderStatus.FREE;
25
- this._waitingLoadQueue = [];
26
- this._opts = opts;
27
- this._event = new LoaderEvent();
28
- this._waitingLoadQueue = [];
29
- }
30
- load(data, changeResourceUUIDs) {
31
- const [uuidQueue, loadData] = this._resetLoadData(data, changeResourceUUIDs);
32
- if (this._status === LoaderStatus.FREE ||
33
- this._status === LoaderStatus.COMPLETE) {
34
- this._currentUUIDQueue = uuidQueue;
35
- this._currentLoadData = loadData;
36
- this._loadTask();
37
- }
38
- else if (this._status === LoaderStatus.LOADING && uuidQueue.length > 0) {
39
- this._waitingLoadQueue.push({
40
- uuidQueue,
41
- loadData
42
- });
43
- }
44
- }
45
- on(name, callback) {
46
- this._event.on(name, callback);
47
- }
48
- off(name, callback) {
49
- this._event.off(name, callback);
50
- }
51
- isComplete() {
52
- return this._status === LoaderStatus.COMPLETE;
53
- }
54
- getContent(uuid) {
55
- var _a;
56
- if (((_a = this._storageLoadData[uuid]) === null || _a === void 0 ? void 0 : _a.status) === 'loaded') {
57
- return this._storageLoadData[uuid].content;
58
- }
59
- return null;
60
- }
61
- _resetLoadData(data, changeResourceUUIDs) {
62
- const loadData = {};
63
- const uuidQueue = [];
64
- const storageLoadData = this._storageLoadData;
65
- for (let i = data.elements.length - 1; i >= 0; i--) {
66
- const elem = data.elements[i];
67
- if (['image', 'svg', 'html'].includes(elem.type)) {
68
- if (!storageLoadData[elem.uuid]) {
69
- loadData[elem.uuid] = this._createEmptyLoadItem(elem);
70
- uuidQueue.push(elem.uuid);
71
- }
72
- else {
73
- if (changeResourceUUIDs.includes(elem.uuid)) {
74
- loadData[elem.uuid] = this._createEmptyLoadItem(elem);
75
- uuidQueue.push(elem.uuid);
76
- }
77
- }
78
- }
79
- }
80
- return [uuidQueue, loadData];
81
- }
82
- _createEmptyLoadItem(elem) {
83
- let source = '';
84
- const type = elem.type;
85
- let elemW = elem.w;
86
- let elemH = elem.h;
87
- if (elem.type === 'image') {
88
- const _elem = elem;
89
- source = _elem.desc.src || '';
90
- }
91
- else if (elem.type === 'svg') {
92
- const _elem = elem;
93
- source = _elem.desc.svg || '';
94
- }
95
- else if (elem.type === 'html') {
96
- const _elem = elem;
97
- source = filterScript(_elem.desc.html || '');
98
- elemW = _elem.desc.width || elem.w;
99
- elemH = _elem.desc.height || elem.h;
100
- }
101
- return {
102
- uuid: elem.uuid,
103
- type: type,
104
- status: 'null',
105
- content: null,
106
- source,
107
- elemW,
108
- elemH,
109
- element: deepClone(elem)
110
- };
111
- }
112
- _loadTask() {
113
- if (this._status === LoaderStatus.LOADING) {
114
- return;
115
- }
116
- this._status = LoaderStatus.LOADING;
117
- if (this._currentUUIDQueue.length === 0) {
118
- if (this._waitingLoadQueue.length === 0) {
119
- this._status = LoaderStatus.COMPLETE;
120
- this._event.trigger('complete', undefined);
121
- return;
122
- }
123
- else {
124
- const waitingItem = this._waitingLoadQueue.shift();
125
- if (waitingItem) {
126
- const { uuidQueue, loadData } = waitingItem;
127
- this._currentLoadData = loadData;
128
- this._currentUUIDQueue = uuidQueue;
129
- }
130
- }
131
- }
132
- const { maxParallelNum } = this._opts;
133
- const uuids = this._currentUUIDQueue.splice(0, maxParallelNum);
134
- const uuidMap = {};
135
- uuids.forEach((url, i) => {
136
- uuidMap[url] = i;
137
- });
138
- const loadUUIDList = [];
139
- const _loadAction = () => {
140
- if (loadUUIDList.length >= maxParallelNum) {
141
- return false;
142
- }
143
- if (uuids.length === 0) {
144
- return true;
145
- }
146
- for (let i = loadUUIDList.length; i < maxParallelNum; i++) {
147
- const uuid = uuids.shift();
148
- if (uuid === undefined) {
149
- break;
150
- }
151
- loadUUIDList.push(uuid);
152
- this._loadElementSource(this._currentLoadData[uuid])
153
- .then((image) => {
154
- var _a, _b;
155
- loadUUIDList.splice(loadUUIDList.indexOf(uuid), 1);
156
- const status = _loadAction();
157
- this._storageLoadData[uuid] = {
158
- uuid,
159
- type: this._currentLoadData[uuid].type,
160
- status: 'loaded',
161
- content: image,
162
- source: this._currentLoadData[uuid].source,
163
- elemW: this._currentLoadData[uuid].elemW,
164
- elemH: this._currentLoadData[uuid].elemH,
165
- element: this._currentLoadData[uuid].element
166
- };
167
- if (loadUUIDList.length === 0 &&
168
- uuids.length === 0 &&
169
- status === true) {
170
- this._status = LoaderStatus.FREE;
171
- this._loadTask();
172
- }
173
- this._event.trigger('load', {
174
- uuid: (_a = this._storageLoadData[uuid]) === null || _a === void 0 ? void 0 : _a.uuid,
175
- type: this._storageLoadData[uuid].type,
176
- status: this._storageLoadData[uuid].status,
177
- content: this._storageLoadData[uuid].content,
178
- source: this._storageLoadData[uuid].source,
179
- elemW: this._storageLoadData[uuid].elemW,
180
- elemH: this._storageLoadData[uuid].elemH,
181
- element: (_b = this._storageLoadData[uuid]) === null || _b === void 0 ? void 0 : _b.element
182
- });
183
- })
184
- .catch((err) => {
185
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
186
- console.warn(err);
187
- loadUUIDList.splice(loadUUIDList.indexOf(uuid), 1);
188
- const status = _loadAction();
189
- if (this._currentLoadData[uuid]) {
190
- this._storageLoadData[uuid] = {
191
- uuid,
192
- type: (_a = this._currentLoadData[uuid]) === null || _a === void 0 ? void 0 : _a.type,
193
- status: 'fail',
194
- content: null,
195
- error: err,
196
- source: (_b = this._currentLoadData[uuid]) === null || _b === void 0 ? void 0 : _b.source,
197
- elemW: (_c = this._currentLoadData[uuid]) === null || _c === void 0 ? void 0 : _c.elemW,
198
- elemH: (_d = this._currentLoadData[uuid]) === null || _d === void 0 ? void 0 : _d.elemH,
199
- element: (_e = this._currentLoadData[uuid]) === null || _e === void 0 ? void 0 : _e.element
200
- };
201
- }
202
- if (loadUUIDList.length === 0 &&
203
- uuids.length === 0 &&
204
- status === true) {
205
- this._status = LoaderStatus.FREE;
206
- this._loadTask();
207
- }
208
- if (this._currentLoadData[uuid]) {
209
- this._event.trigger('error', {
210
- uuid: uuid,
211
- type: (_f = this._storageLoadData[uuid]) === null || _f === void 0 ? void 0 : _f.type,
212
- status: (_g = this._storageLoadData[uuid]) === null || _g === void 0 ? void 0 : _g.status,
213
- content: (_h = this._storageLoadData[uuid]) === null || _h === void 0 ? void 0 : _h.content,
214
- source: (_j = this._storageLoadData[uuid]) === null || _j === void 0 ? void 0 : _j.source,
215
- elemW: (_k = this._storageLoadData[uuid]) === null || _k === void 0 ? void 0 : _k.elemW,
216
- elemH: (_l = this._storageLoadData[uuid]) === null || _l === void 0 ? void 0 : _l.elemH,
217
- element: (_m = this._storageLoadData[uuid]) === null || _m === void 0 ? void 0 : _m.element
218
- });
219
- }
220
- });
221
- }
222
- return false;
223
- };
224
- _loadAction();
225
- }
226
- _loadElementSource(params) {
227
- return __awaiter(this, void 0, void 0, function* () {
228
- if (params && params.type === 'image') {
229
- const image = yield loadImage(params.source);
230
- return image;
231
- }
232
- else if (params && params.type === 'svg') {
233
- const image = yield loadSVG(params.source);
234
- return image;
235
- }
236
- else if (params && params.type === 'html') {
237
- const image = yield loadHTML(params.source, {
238
- width: params.elemW,
239
- height: params.elemH
240
- });
241
- return image;
242
- }
243
- throw Error("Element's source is not support!");
244
- });
245
- }
246
- }
@@ -1,2 +0,0 @@
1
- import { IDrawData } from '@idraw/types';
2
- export declare function parseData(data: any): IDrawData;
@@ -1,32 +0,0 @@
1
- import { elementNames } from './../constant/element';
2
- export function parseData(data) {
3
- const result = {
4
- elements: []
5
- };
6
- if (Array.isArray(data === null || data === void 0 ? void 0 : data.elements)) {
7
- data === null || data === void 0 ? void 0 : data.elements.forEach((elem = {}) => {
8
- if (isElement(elem)) {
9
- result.elements.push(elem);
10
- }
11
- });
12
- }
13
- if (typeof data.bgColor === 'string') {
14
- result.bgColor = data.bgColor;
15
- }
16
- return result;
17
- }
18
- function isElement(elem) {
19
- if (!(isNumber(elem.x) &&
20
- isNumber(elem.y) &&
21
- isNumber(elem.w) &&
22
- isNumber(elem.h))) {
23
- return false;
24
- }
25
- if (!(typeof elem.type === 'string' && elementNames.includes(elem.type))) {
26
- return false;
27
- }
28
- return true;
29
- }
30
- function isNumber(num) {
31
- return num >= 0 || num < 0;
32
- }
@@ -1,32 +0,0 @@
1
- import { DataElement, DataElemDesc } from '@idraw/types';
2
- export type TypeRendererEventArgMap = {
3
- drawFrame: {
4
- t: number;
5
- };
6
- drawFrameComplete: {
7
- t: number;
8
- };
9
- load: {
10
- element: DataElement<keyof DataElemDesc>;
11
- };
12
- loadComplete: {
13
- t: number;
14
- };
15
- error: {
16
- element: DataElement<keyof DataElemDesc>;
17
- error: any;
18
- };
19
- };
20
- export interface TypeRendererEvent {
21
- on<T extends keyof TypeRendererEventArgMap>(key: T, callback: (p: TypeRendererEventArgMap[T]) => void): void;
22
- off<T extends keyof TypeRendererEventArgMap>(key: T, callback: (p: TypeRendererEventArgMap[T]) => void): void;
23
- trigger<T extends keyof TypeRendererEventArgMap>(key: T, p: TypeRendererEventArgMap[T]): void;
24
- }
25
- export declare class RendererEvent implements TypeRendererEvent {
26
- private _listeners;
27
- constructor();
28
- on<T extends keyof TypeRendererEventArgMap>(eventKey: T, callback: (p: TypeRendererEventArgMap[T]) => void): void;
29
- off<T extends keyof TypeRendererEventArgMap>(eventKey: T, callback: (p: TypeRendererEventArgMap[T]) => void): void;
30
- trigger<T extends keyof TypeRendererEventArgMap>(eventKey: T, arg: TypeRendererEventArgMap[T]): boolean;
31
- has<T extends keyof TypeRendererEventArgMap>(name: string): boolean;
32
- }
@@ -1,50 +0,0 @@
1
- export class RendererEvent {
2
- constructor() {
3
- this._listeners = new Map();
4
- }
5
- on(eventKey, callback) {
6
- if (this._listeners.has(eventKey)) {
7
- const callbacks = this._listeners.get(eventKey);
8
- callbacks === null || callbacks === void 0 ? void 0 : callbacks.push(callback);
9
- this._listeners.set(eventKey, callbacks || []);
10
- }
11
- else {
12
- this._listeners.set(eventKey, [callback]);
13
- }
14
- }
15
- off(eventKey, callback) {
16
- if (this._listeners.has(eventKey)) {
17
- const callbacks = this._listeners.get(eventKey);
18
- if (Array.isArray(callbacks)) {
19
- for (let i = 0; i < (callbacks === null || callbacks === void 0 ? void 0 : callbacks.length); i++) {
20
- if (callbacks[i] === callback) {
21
- callbacks.splice(i, 1);
22
- break;
23
- }
24
- }
25
- }
26
- this._listeners.set(eventKey, callbacks || []);
27
- }
28
- }
29
- trigger(eventKey, arg) {
30
- const callbacks = this._listeners.get(eventKey);
31
- if (Array.isArray(callbacks)) {
32
- callbacks.forEach((cb) => {
33
- cb(arg);
34
- });
35
- return true;
36
- }
37
- else {
38
- return false;
39
- }
40
- }
41
- has(name) {
42
- if (this._listeners.has(name)) {
43
- const list = this._listeners.get(name);
44
- if (Array.isArray(list) && list.length > 0) {
45
- return true;
46
- }
47
- }
48
- return false;
49
- }
50
- }
@@ -1,22 +0,0 @@
1
- import { HelperWrapperControllerDirection, Point } from '@idraw/types';
2
- import { Mode, CursorStatus } from './../constant/static';
3
- type TempDataDesc = {
4
- hasInited: boolean;
5
- onlyRender: boolean;
6
- mode: Mode;
7
- cursorStatus: CursorStatus;
8
- selectedUUID: string | null;
9
- selectedUUIDList: string[];
10
- hoverUUID: string | null;
11
- selectedControllerDirection: HelperWrapperControllerDirection | null;
12
- hoverControllerDirection: HelperWrapperControllerDirection | null;
13
- prevPoint: Point | null;
14
- };
15
- export declare class TempData {
16
- private _temp;
17
- constructor();
18
- set<T extends keyof TempDataDesc>(name: T, value: TempDataDesc[T]): void;
19
- get<T extends keyof TempDataDesc>(name: T): TempDataDesc[T];
20
- clear(): void;
21
- }
22
- export {};
@@ -1,29 +0,0 @@
1
- import { Mode, CursorStatus } from './../constant/static';
2
- function createData() {
3
- return {
4
- onlyRender: false,
5
- hasInited: false,
6
- mode: Mode.NULL,
7
- cursorStatus: CursorStatus.NULL,
8
- selectedUUID: null,
9
- selectedUUIDList: [],
10
- hoverUUID: null,
11
- selectedControllerDirection: null,
12
- hoverControllerDirection: null,
13
- prevPoint: null
14
- };
15
- }
16
- export class TempData {
17
- constructor() {
18
- this._temp = createData();
19
- }
20
- set(name, value) {
21
- this._temp[name] = value;
22
- }
23
- get(name) {
24
- return this._temp[name];
25
- }
26
- clear() {
27
- this._temp = createData();
28
- }
29
- }
@@ -1,4 +0,0 @@
1
- import { IDrawContext, Point, DataElement, DataElemDesc } from '@idraw/types';
2
- declare function rotateElement(ctx: IDrawContext, elem: DataElement<keyof DataElemDesc>, callback: (ctx: IDrawContext) => void): void;
3
- declare function rotateContext(ctx: IDrawContext, center: Point | undefined, radian: number, callback: (ctx: IDrawContext) => void): void;
4
- export { rotateContext, rotateElement };