Skip to content

Commit 5094ed2

Browse files
authored
Merge pull request #370 from idrawjs/dev-v1.x
Dev v1.x
2 parents 2ca8a90 + 49ed490 commit 5094ed2

255 files changed

Lines changed: 17749 additions & 12262 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ jobs:
2121
- run: npm run test
2222
- run: npm run build
2323
- run: npm run version:reset-for-release
24-
# - run: npm publish --provenance --access public -w ./packages/types --tag next
25-
- run: npm publish --provenance --access public -w ./packages/types
24+
- run: npm publish --provenance --access public -w ./packages/types --tag next
25+
# - run: npm publish --provenance --access public -w ./packages/types
2626
env:
2727
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
2828
- run: npm publish --provenance --access public -w ./packages/util

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"private": false,
3-
"version": "0.4.3",
3+
"version": "1.0.0-alpha.0",
44
"workspaces": [
55
"packages/*"
66
],

packages/core/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@idraw/core",
3-
"version": "0.4.0",
3+
"version": "1.0.0",
44
"description": "",
55
"main": "dist/esm/index.js",
66
"module": "dist/esm/index.js",
@@ -21,12 +21,12 @@
2121
"author": "idrawjs",
2222
"license": "MIT",
2323
"devDependencies": {
24-
"@idraw/types": "workspace:^0.4"
24+
"@idraw/types": "workspace:*"
2525
},
2626
"dependencies": {},
2727
"peerDependencies": {
28-
"@idraw/renderer": "workspace:^0.4",
29-
"@idraw/util": "workspace:^0.4"
28+
"@idraw/renderer": "workspace:*",
29+
"@idraw/util": "workspace:*"
3030
},
3131
"publishConfig": {
3232
"access": "public",

packages/core/src/board/index.ts

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Renderer, Calculator } from '@idraw/renderer';
22
import {
33
// throttle,
4-
calcElementsContextSize,
5-
EventEmitter
4+
calcMaterialsContextSize,
5+
EventEmitter,
66
} from '@idraw/util';
77
import type {
88
Data,
@@ -11,9 +11,9 @@ import type {
1111
BoardMiddlewareObject,
1212
BoardWatcherEventMap,
1313
ViewSizeInfo,
14-
PointSize,
14+
Point,
1515
BoardExtendEventMap,
16-
UtilEventEmitter
16+
UtilEventEmitter,
1717
} from '@idraw/types';
1818
import { BoardWatcher } from './watcher';
1919
import { Sharer } from './sharer';
@@ -40,18 +40,19 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
4040
#eventHub: EventEmitter<T> = new EventEmitter<T>();
4141
#hasDestroyed: boolean = false;
4242
constructor(opts: BoardOptions) {
43-
const { boardContent } = opts;
43+
const { boardContent, container } = opts;
4444
const sharer = new Sharer();
4545

4646
const watcher = new BoardWatcher({
4747
boardContent,
4848
sharer,
49-
disabled: opts?.disableWatcher
49+
disabled: opts?.disableWatcher,
50+
container,
5051
});
5152
const renderer = new Renderer({
5253
viewContext: boardContent.viewContext,
5354
tempContext: boardContent.tempContext,
54-
sharer
55+
sharer,
5556
});
5657
const calculator = renderer.getCalculator();
5758

@@ -70,7 +71,7 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
7071
},
7172
afterDrawFrame: (e) => {
7273
this.#handleAfterDrawFrame(e);
73-
}
74+
},
7475
});
7576
this.#init();
7677
this.#resetActiveMiddlewareObjs();
@@ -131,6 +132,7 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
131132
this.#watcher.on('scrollX', this.#handleScrollX.bind(this));
132133
this.#watcher.on('scrollY', this.#handleScrollY.bind(this));
133134
this.#watcher.on('resize', this.#handleResize.bind(this));
135+
this.#watcher.on('click', this.#handleClick.bind(this));
134136
this.#watcher.on('doubleClick', this.#handleDoubleClick.bind(this));
135137
this.#watcher.on('contextMenu', this.#handleContextMenu.bind(this));
136138
}
@@ -190,6 +192,16 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
190192
}
191193
}
192194

195+
#handleClick(e: BoardWatcherEventMap['click']) {
196+
for (let i = 0; i < this.#activeMiddlewareObjs.length; i++) {
197+
const obj = this.#activeMiddlewareObjs[i];
198+
const result = obj?.click?.(e);
199+
if (result === false) {
200+
return;
201+
}
202+
}
203+
}
204+
193205
#handleDoubleClick(e: BoardWatcherEventMap['doubleClick']) {
194206
for (let i = 0; i < this.#activeMiddlewareObjs.length; i++) {
195207
const obj = this.#activeMiddlewareObjs[i];
@@ -320,21 +332,21 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
320332
const viewSizeInfo = sharer.getActiveViewSizeInfo();
321333
const viewScaleInfo = sharer.getActiveViewScaleInfo();
322334
// const currentScaleInfo = sharer.getActiveViewScaleInfo();
323-
const newViewContextSize = calcElementsContextSize(data.elements, {
335+
const newViewContextSize = calcMaterialsContextSize(data.materials, {
324336
viewWidth: viewSizeInfo.width,
325337
viewHeight: viewSizeInfo.height,
326-
extend: true
338+
extend: true,
327339
});
328340

329-
this.#viewer.resetVirtualFlatItemMap(data, {
341+
this.#viewer.resetVirtualItemMap(data, {
330342
viewSizeInfo,
331-
viewScaleInfo
343+
viewScaleInfo,
332344
});
333345

334346
this.#viewer.drawFrame();
335347
const newViewSizeInfo = {
336348
...viewSizeInfo,
337-
...newViewContextSize
349+
...newViewContextSize,
338350
};
339351

340352
this.#sharer.setActiveViewSizeInfo(newViewSizeInfo);
@@ -372,7 +384,7 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
372384
this.#middlewareMap.set(middleware, {
373385
status: 'enable',
374386
middlewareObject: obj,
375-
config
387+
config,
376388
});
377389
this.#resetActiveMiddlewareObjs();
378390
}
@@ -398,14 +410,14 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
398410
}
399411
}
400412

401-
scale(opts: { scale: number; point: PointSize; ignoreUpdateVisibleStatus?: boolean }) {
413+
scale(opts: { scale: number; point: Point; ignoreUpdateVisibleStatus?: boolean }) {
402414
const viewer = this.#viewer;
403415
const { ignoreUpdateVisibleStatus } = opts;
404416
const { moveX, moveY } = viewer.scale({
405417
...opts,
406418
...{
407-
ignoreUpdateVisibleStatus: true
408-
}
419+
ignoreUpdateVisibleStatus: true,
420+
},
409421
});
410422
viewer.scroll({ moveX, moveY, ignoreUpdateVisibleStatus });
411423
}

packages/core/src/board/sharer.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ActiveStore, Element, ElementDetailMap, RecursivePartial, StoreSharer, ViewScaleInfo, ViewSizeInfo } from '@idraw/types';
1+
import type { ActiveStore, Material, RecursivePartial, StoreSharer, ViewScaleInfo, ViewSizeInfo } from '@idraw/types';
22
import { Store } from '@idraw/util';
33

44
const defaultActiveStorage: ActiveStore = {
@@ -7,13 +7,13 @@ const defaultActiveStorage: ActiveStore = {
77
devicePixelRatio: 1,
88
contextWidth: 0,
99
contextHeight: 0,
10-
data: null,
10+
data: { materials: [] },
1111
scale: 1,
1212
offsetLeft: 0,
1313
offsetRight: 0,
1414
offsetTop: 0,
1515
offsetBottom: 0,
16-
overrideElementMap: null
16+
overrideMaterialMap: null,
1717
};
1818

1919
export class Sharer implements StoreSharer<Record<string | number | symbol | any, any>> {
@@ -24,10 +24,10 @@ export class Sharer implements StoreSharer<Record<string | number | symbol | any
2424

2525
constructor() {
2626
const activeStore = new Store<ActiveStore>({
27-
defaultStorage: defaultActiveStorage
27+
defaultStorage: defaultActiveStorage,
2828
});
2929
const sharedStore = new Store({
30-
defaultStorage: {}
30+
defaultStorage: {},
3131
});
3232
this.#activeStore = activeStore;
3333
this.#sharedStore = sharedStore;
@@ -65,7 +65,7 @@ export class Sharer implements StoreSharer<Record<string | number | symbol | any
6565
offsetTop: this.#activeStore.get('offsetTop'),
6666
offsetBottom: this.#activeStore.get('offsetBottom'),
6767
offsetLeft: this.#activeStore.get('offsetLeft'),
68-
offsetRight: this.#activeStore.get('offsetRight')
68+
offsetRight: this.#activeStore.get('offsetRight'),
6969
};
7070
return viewScaleInfo;
7171
}
@@ -93,16 +93,16 @@ export class Sharer implements StoreSharer<Record<string | number | symbol | any
9393
height: this.#activeStore.get('height'),
9494
devicePixelRatio: this.#activeStore.get('devicePixelRatio'),
9595
contextWidth: this.#activeStore.get('contextWidth'),
96-
contextHeight: this.#activeStore.get('contextHeight')
96+
contextHeight: this.#activeStore.get('contextHeight'),
9797
};
9898
return sizeInfo;
9999
}
100100

101-
getActiveOverrideElemenentMap(): Record<string, RecursivePartial<Element<keyof ElementDetailMap, Record<string, any>>>> | null {
102-
return this.#activeStore.get('overrideElementMap');
101+
getActiveOverrideMaterialMap(): Record<string, RecursivePartial<Material>> | null {
102+
return this.#activeStore.get('overrideMaterialMap');
103103
}
104104

105-
setActiveOverrideElemenentMap(map: Record<string, RecursivePartial<Element<keyof ElementDetailMap, Record<string, any>>>> | null): void {
106-
this.#activeStore.set('overrideElementMap', map);
105+
setActiveOverrideMaterialMap(map: Record<string, RecursivePartial<Material>> | null): void {
106+
this.#activeStore.set('overrideMaterialMap', map);
107107
}
108108
}

packages/core/src/board/viewer.ts

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { EventEmitter, viewScale, viewScroll, calcViewScaleInfo } from '@idraw/util';
22
import type {
3-
PointSize,
3+
Point,
44
BoardViewer,
55
BoardViewerEventMap,
66
BoardViewerOptions,
@@ -9,7 +9,7 @@ import type {
99
BoardViewerFrameSnapshot,
1010
ViewScaleInfo,
1111
ViewSizeInfo,
12-
Data
12+
Data,
1313
} from '@idraw/types';
1414

1515
const { requestAnimationFrame } = window;
@@ -55,27 +55,27 @@ export class Viewer extends EventEmitter<BoardViewerEventMap> implements BoardVi
5555
height,
5656
contextHeight,
5757
contextWidth,
58-
devicePixelRatio
58+
devicePixelRatio,
5959
} = snapshot.activeStore;
6060

6161
const viewScaleInfo: ViewScaleInfo = {
6262
scale,
6363
offsetTop,
6464
offsetBottom,
6565
offsetLeft,
66-
offsetRight
66+
offsetRight,
6767
};
6868
const viewSizeInfo: ViewSizeInfo = {
6969
width,
7070
height,
7171
contextHeight,
7272
contextWidth,
73-
devicePixelRatio
73+
devicePixelRatio,
7474
};
7575
if (snapshot?.activeStore.data) {
7676
renderer.drawData(snapshot.activeStore.data, {
7777
viewScaleInfo,
78-
viewSizeInfo
78+
viewSizeInfo,
7979
});
8080
}
8181

@@ -98,15 +98,15 @@ export class Viewer extends EventEmitter<BoardViewerEventMap> implements BoardVi
9898
}
9999
}
100100

101-
resetVirtualFlatItemMap(
101+
resetVirtualItemMap(
102102
data: Data,
103103
opts: {
104104
viewScaleInfo: ViewScaleInfo;
105105
viewSizeInfo: ViewSizeInfo;
106106
}
107107
): void {
108108
if (data) {
109-
this.#opts.calculator.resetVirtualFlatItemMap(data, opts);
109+
this.#opts.calculator.resetVirtualItemMap(data, opts);
110110
}
111111
}
112112

@@ -116,14 +116,15 @@ export class Viewer extends EventEmitter<BoardViewerEventMap> implements BoardVi
116116
const sharedStore: Record<string, any> = sharer.getSharedStoreSnapshot();
117117
// const activeStore: ActiveStore = sharer.getActiveStoreSnapshot({ deepClone: true });
118118
// const sharedStore: Record<string, any> = sharer.getSharedStoreSnapshot({ deepClone: true });
119+
119120
this.#drawFrameSnapshotQueue.push({
120121
activeStore,
121-
sharedStore
122+
sharedStore,
122123
});
123124
this.#drawAnimationFrame();
124125
}
125126

126-
scale(opts: { scale: number; point: PointSize; ignoreUpdateVisibleStatus?: boolean }): {
127+
scale(opts: { scale: number; point: Point; ignoreUpdateVisibleStatus?: boolean }): {
127128
moveX: number;
128129
moveY: number;
129130
} {
@@ -133,13 +134,13 @@ export class Viewer extends EventEmitter<BoardViewerEventMap> implements BoardVi
133134
scale,
134135
point,
135136
viewScaleInfo: sharer.getActiveViewScaleInfo(),
136-
viewSizeInfo: sharer.getActiveViewSizeInfo()
137+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
137138
});
138139
sharer.setActiveStorage('scale', scale);
139140
if (!ignoreUpdateVisibleStatus) {
140141
this.#opts.calculator.updateVisiableStatus({
141142
viewScaleInfo: sharer.getActiveViewScaleInfo(),
142-
viewSizeInfo: sharer.getActiveViewSizeInfo()
143+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
143144
});
144145
}
145146
return { moveX, moveY };
@@ -154,13 +155,13 @@ export class Viewer extends EventEmitter<BoardViewerEventMap> implements BoardVi
154155
moveX,
155156
moveY,
156157
viewScaleInfo: prevViewScaleInfo,
157-
viewSizeInfo
158+
viewSizeInfo,
158159
});
159160
sharer.setActiveViewScaleInfo(viewScaleInfo);
160161
if (!ignoreUpdateVisibleStatus) {
161162
this.#opts.calculator.updateVisiableStatus({
162163
viewScaleInfo: sharer.getActiveViewScaleInfo(),
163-
viewSizeInfo: sharer.getActiveViewSizeInfo()
164+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
164165
});
165166
}
166167
return viewScaleInfo;
@@ -169,14 +170,14 @@ export class Viewer extends EventEmitter<BoardViewerEventMap> implements BoardVi
169170
updateViewScaleInfo(opts: { scale: number; offsetX: number; offsetY: number }): ViewScaleInfo {
170171
const { sharer } = this.#opts;
171172
const viewScaleInfo = calcViewScaleInfo(opts, {
172-
viewSizeInfo: sharer.getActiveViewSizeInfo()
173+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
173174
});
174175

175176
sharer.setActiveViewScaleInfo(viewScaleInfo);
176177

177178
this.#opts.calculator.updateVisiableStatus({
178179
viewScaleInfo: sharer.getActiveViewScaleInfo(),
179-
viewSizeInfo: sharer.getActiveViewSizeInfo()
180+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
180181
});
181182
return viewScaleInfo;
182183
}
@@ -206,7 +207,7 @@ export class Viewer extends EventEmitter<BoardViewerEventMap> implements BoardVi
206207
if (!opts?.ignoreUpdateVisibleStatus) {
207208
this.#opts.calculator.updateVisiableStatus({
208209
viewScaleInfo: sharer.getActiveViewScaleInfo(),
209-
viewSizeInfo: sharer.getActiveViewSizeInfo()
210+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
210211
});
211212
}
212213
return newViewSize;

0 commit comments

Comments
 (0)