@idraw/core 0.4.0-beta.33 → 0.4.0-beta.34
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.
- package/dist/esm/config.d.ts +26 -1
- package/dist/esm/config.js +32 -1
- package/dist/esm/index.d.ts +7 -5
- package/dist/esm/index.js +6 -5
- package/dist/esm/lib/cursor.js +2 -1
- package/dist/esm/middleware/dragger/index.js +4 -3
- package/dist/esm/middleware/info/index.d.ts +2 -2
- package/dist/esm/middleware/info/index.js +2 -4
- package/dist/esm/middleware/layout-selector/index.d.ts +2 -2
- package/dist/esm/middleware/layout-selector/index.js +5 -5
- package/dist/esm/middleware/pointer/index.d.ts +3 -0
- package/dist/esm/middleware/pointer/index.js +43 -0
- package/dist/esm/middleware/pointer/types.d.ts +3 -0
- package/dist/esm/middleware/pointer/types.js +1 -0
- package/dist/esm/middleware/ruler/index.d.ts +0 -1
- package/dist/esm/middleware/ruler/index.js +3 -3
- package/dist/esm/middleware/scaler/index.d.ts +0 -1
- package/dist/esm/middleware/scaler/index.js +2 -2
- package/dist/esm/middleware/scroller/index.js +2 -1
- package/dist/esm/middleware/selector/config.d.ts +0 -4
- package/dist/esm/middleware/selector/config.js +0 -4
- package/dist/esm/middleware/selector/index.d.ts +1 -2
- package/dist/esm/middleware/selector/index.js +81 -50
- package/dist/esm/middleware/text-editor/index.d.ts +2 -3
- package/dist/esm/middleware/text-editor/index.js +7 -6
- package/dist/index.global.js +416 -309
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -5
|
@@ -2,13 +2,11 @@ import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueV
|
|
|
2
2
|
import { drawHoverVertexesWrapper, drawLockedVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
|
|
3
3
|
import { drawReferenceLines } from './draw-reference';
|
|
4
4
|
import { getPointTarget, resizeElement, rotateElement, getSelectedListArea, calcSelectedElementsArea, isElementInGroup, isPointInViewActiveGroup, calcMoveInGroup } from './util';
|
|
5
|
-
import {
|
|
5
|
+
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keyIsMoving, keyEnableSelectInGroup, keyEnableSnapToGrid, controllerSize, defaultStyle } from './config';
|
|
6
6
|
import { calcReferenceInfo } from './reference';
|
|
7
|
-
import {
|
|
8
|
-
import { eventChange } from '../../config';
|
|
7
|
+
import { coreEventKeys } from '../../config';
|
|
9
8
|
import { keyLayoutIsSelected } from '../layout-selector';
|
|
10
9
|
export { keySelectedElementList, keyHoverElement, keyActionType, keyResizeType, keyGroupQueue };
|
|
11
|
-
export { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid };
|
|
12
10
|
export const MiddlewareSelector = (opts, config) => {
|
|
13
11
|
const innerConfig = Object.assign(Object.assign({}, defaultStyle), config);
|
|
14
12
|
const { activeColor, activeAreaColor, lockedColor, referenceColor } = innerConfig;
|
|
@@ -72,7 +70,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
72
70
|
sharer.setSharedStorage(keySelectedElementPosition, []);
|
|
73
71
|
}
|
|
74
72
|
if ((opts === null || opts === void 0 ? void 0 : opts.triggerEvent) === true) {
|
|
75
|
-
eventHub.trigger(
|
|
73
|
+
eventHub.trigger(coreEventKeys.SELECT, { uuids: list.map((elem) => elem.uuid), positions: [] });
|
|
76
74
|
}
|
|
77
75
|
};
|
|
78
76
|
const pointTargetBaseOptions = () => {
|
|
@@ -105,7 +103,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
105
103
|
sharer.setSharedStorage(keyIsMoving, null);
|
|
106
104
|
};
|
|
107
105
|
clear();
|
|
108
|
-
const selectCallback = ({ uuids, positions }) => {
|
|
106
|
+
const selectCallback = ({ uuids = [], positions }) => {
|
|
109
107
|
let elements = [];
|
|
110
108
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
111
109
|
const data = sharer.getActiveStorage('data');
|
|
@@ -144,16 +142,16 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
144
142
|
return {
|
|
145
143
|
name: '@middleware/selector',
|
|
146
144
|
use() {
|
|
147
|
-
eventHub.on(
|
|
148
|
-
eventHub.on(
|
|
149
|
-
eventHub.on(
|
|
150
|
-
eventHub.on(
|
|
145
|
+
eventHub.on(coreEventKeys.SELECT, selectCallback);
|
|
146
|
+
eventHub.on(coreEventKeys.CLEAR_SELECT, selectClearCallback);
|
|
147
|
+
eventHub.on(coreEventKeys.SELECT_IN_GROUP, selectInGroupCallback);
|
|
148
|
+
eventHub.on(coreEventKeys.SNAP_TO_GRID, setSnapToSnapCallback);
|
|
151
149
|
},
|
|
152
150
|
disuse() {
|
|
153
|
-
eventHub.off(
|
|
154
|
-
eventHub.off(
|
|
155
|
-
eventHub.off(
|
|
156
|
-
eventHub.off(
|
|
151
|
+
eventHub.off(coreEventKeys.SELECT, selectCallback);
|
|
152
|
+
eventHub.off(coreEventKeys.CLEAR_SELECT, selectClearCallback);
|
|
153
|
+
eventHub.off(coreEventKeys.SELECT_IN_GROUP, selectInGroupCallback);
|
|
154
|
+
eventHub.off(coreEventKeys.SNAP_TO_GRID, setSnapToSnapCallback);
|
|
157
155
|
},
|
|
158
156
|
hover: (e) => {
|
|
159
157
|
var _a, _b, _c, _d, _e;
|
|
@@ -167,7 +165,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
167
165
|
}
|
|
168
166
|
const cursor = target.type;
|
|
169
167
|
if (inBusyMode === null) {
|
|
170
|
-
eventHub.trigger(
|
|
168
|
+
eventHub.trigger(coreEventKeys.CURSOR, {
|
|
171
169
|
type: cursor,
|
|
172
170
|
groupQueue: target.groupQueue,
|
|
173
171
|
element: target.elements[0]
|
|
@@ -263,16 +261,15 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
263
261
|
groupQueue
|
|
264
262
|
})) {
|
|
265
263
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
updateHoverElement(null);
|
|
271
|
-
}
|
|
264
|
+
const isLockedElement = ((_a = target === null || target === void 0 ? void 0 : target.elements) === null || _a === void 0 ? void 0 : _a.length) === 1 && ((_c = (_b = target.elements[0]) === null || _b === void 0 ? void 0 : _b.operations) === null || _c === void 0 ? void 0 : _c.locked) === true;
|
|
265
|
+
updateHoverElement(null);
|
|
272
266
|
if (((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length) === 1) {
|
|
273
267
|
moveOriginalStartElementSize = getElementSize(target === null || target === void 0 ? void 0 : target.elements[0]);
|
|
274
268
|
}
|
|
275
|
-
if (
|
|
269
|
+
if (isLockedElement === true) {
|
|
270
|
+
clear();
|
|
271
|
+
}
|
|
272
|
+
else if (target.type === 'over-element' && ((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1) {
|
|
276
273
|
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
277
274
|
sharer.setSharedStorage(keyActionType, 'drag');
|
|
278
275
|
}
|
|
@@ -297,30 +294,26 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
297
294
|
});
|
|
298
295
|
const target = getPointTarget(e.point, Object.assign(Object.assign({}, pointTargetBaseOptions()), { areaSize: listAreaSize, groupQueue: [] }));
|
|
299
296
|
const isLockedElement = ((_g = target === null || target === void 0 ? void 0 : target.elements) === null || _g === void 0 ? void 0 : _g.length) === 1 && ((_j = (_h = target.elements[0]) === null || _h === void 0 ? void 0 : _h.operations) === null || _j === void 0 ? void 0 : _j.locked) === true;
|
|
300
|
-
|
|
301
|
-
updateHoverElement(null);
|
|
302
|
-
}
|
|
297
|
+
updateHoverElement(null);
|
|
303
298
|
if (((_k = target === null || target === void 0 ? void 0 : target.elements) === null || _k === void 0 ? void 0 : _k.length) === 1) {
|
|
304
299
|
moveOriginalStartElementSize = getElementSize(target === null || target === void 0 ? void 0 : target.elements[0]);
|
|
305
300
|
}
|
|
306
|
-
if (
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
updateSelectedElementList([], { triggerEvent: true });
|
|
323
|
-
}
|
|
301
|
+
if (isLockedElement === true) {
|
|
302
|
+
clear();
|
|
303
|
+
sharer.setSharedStorage(keyActionType, 'area');
|
|
304
|
+
sharer.setSharedStorage(keyAreaStart, e.point);
|
|
305
|
+
updateSelectedElementList([], { triggerEvent: true });
|
|
306
|
+
}
|
|
307
|
+
else if (target.type === 'list-area') {
|
|
308
|
+
sharer.setSharedStorage(keyActionType, 'drag-list');
|
|
309
|
+
}
|
|
310
|
+
else if (target.type === 'over-element' && ((_l = target === null || target === void 0 ? void 0 : target.elements) === null || _l === void 0 ? void 0 : _l.length) === 1) {
|
|
311
|
+
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
312
|
+
sharer.setSharedStorage(keyActionType, 'drag');
|
|
313
|
+
}
|
|
314
|
+
else if ((_m = target.type) === null || _m === void 0 ? void 0 : _m.startsWith('resize-')) {
|
|
315
|
+
sharer.setSharedStorage(keyResizeType, target.type);
|
|
316
|
+
sharer.setSharedStorage(keyActionType, 'resize');
|
|
324
317
|
}
|
|
325
318
|
else {
|
|
326
319
|
clear();
|
|
@@ -569,7 +562,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
569
562
|
if (type === 'resize') {
|
|
570
563
|
type = 'resizeElement';
|
|
571
564
|
}
|
|
572
|
-
eventHub.trigger(
|
|
565
|
+
eventHub.trigger(coreEventKeys.CHANGE, { data, type, selectedElements, hoverElement });
|
|
573
566
|
}
|
|
574
567
|
viewer.drawFrame();
|
|
575
568
|
};
|
|
@@ -602,7 +595,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
602
595
|
}
|
|
603
596
|
}
|
|
604
597
|
else if (target.elements.length === 1 && ((_d = target.elements[0]) === null || _d === void 0 ? void 0 : _d.type) === 'text' && !((_f = (_e = target.elements[0]) === null || _e === void 0 ? void 0 : _e.operations) === null || _f === void 0 ? void 0 : _f.invisible)) {
|
|
605
|
-
eventHub.trigger(
|
|
598
|
+
eventHub.trigger(coreEventKeys.TEXT_EDIT, {
|
|
606
599
|
element: target.elements[0],
|
|
607
600
|
groupQueue: sharer.getSharedStorage(keyGroupQueue) || [],
|
|
608
601
|
position: getElementPositionFromList((_g = target.elements[0]) === null || _g === void 0 ? void 0 : _g.uuid, ((_h = sharer.getActiveStorage('data')) === null || _h === void 0 ? void 0 : _h.elements) || []),
|
|
@@ -611,6 +604,44 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
611
604
|
}
|
|
612
605
|
sharer.setSharedStorage(keyActionType, null);
|
|
613
606
|
},
|
|
607
|
+
contextMenu: (e) => {
|
|
608
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
609
|
+
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
610
|
+
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
611
|
+
if (isPointInViewActiveGroup(e.point, {
|
|
612
|
+
ctx: overlayContext,
|
|
613
|
+
viewScaleInfo: sharer.getActiveViewScaleInfo(),
|
|
614
|
+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
615
|
+
groupQueue
|
|
616
|
+
})) {
|
|
617
|
+
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
618
|
+
if (((_a = target === null || target === void 0 ? void 0 : target.elements) === null || _a === void 0 ? void 0 : _a.length) === 1 && ((_c = (_b = target.elements[0]) === null || _b === void 0 ? void 0 : _b.operations) === null || _c === void 0 ? void 0 : _c.locked) !== true) {
|
|
619
|
+
clear();
|
|
620
|
+
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
621
|
+
viewer.drawFrame();
|
|
622
|
+
}
|
|
623
|
+
else if (!((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length)) {
|
|
624
|
+
clear();
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
const listAreaSize = calcSelectedElementsArea(getActiveElements(), {
|
|
630
|
+
viewScaleInfo: sharer.getActiveViewScaleInfo(),
|
|
631
|
+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
632
|
+
calculator
|
|
633
|
+
});
|
|
634
|
+
const target = getPointTarget(e.point, Object.assign(Object.assign({}, pointTargetBaseOptions()), { areaSize: listAreaSize, groupQueue: [] }));
|
|
635
|
+
if (((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1 && ((_g = (_f = target.elements[0]) === null || _f === void 0 ? void 0 : _f.operations) === null || _g === void 0 ? void 0 : _g.locked) !== true) {
|
|
636
|
+
clear();
|
|
637
|
+
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
638
|
+
viewer.drawFrame();
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
else if (!((_h = target === null || target === void 0 ? void 0 : target.elements) === null || _h === void 0 ? void 0 : _h.length)) {
|
|
642
|
+
clear();
|
|
643
|
+
}
|
|
644
|
+
},
|
|
614
645
|
beforeDrawFrame({ snapshot }) {
|
|
615
646
|
var _a;
|
|
616
647
|
const { activeStore, sharedStore } = snapshot;
|
|
@@ -637,11 +668,11 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
637
668
|
viewScaleInfo
|
|
638
669
|
})
|
|
639
670
|
: null;
|
|
640
|
-
const
|
|
671
|
+
const isHoverLocked = !!((_a = hoverElement === null || hoverElement === void 0 ? void 0 : hoverElement.operations) === null || _a === void 0 ? void 0 : _a.locked);
|
|
641
672
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
642
673
|
drawGroupQueueVertexesWrappers(overlayContext, groupQueueVertexesList, drawBaseOpts);
|
|
643
674
|
if (hoverElement && actionType !== 'drag') {
|
|
644
|
-
if (
|
|
675
|
+
if (isHoverLocked) {
|
|
645
676
|
drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
|
|
646
677
|
groupQueue,
|
|
647
678
|
controllerSize: 10,
|
|
@@ -652,7 +683,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
652
683
|
drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
|
|
653
684
|
}
|
|
654
685
|
}
|
|
655
|
-
if (
|
|
686
|
+
if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
656
687
|
drawSelectedElementControllersVertexes(overlayContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag', style }));
|
|
657
688
|
if (actionType === 'drag') {
|
|
658
689
|
if (enableSnapToGrid === true) {
|
|
@@ -679,7 +710,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
679
710
|
}
|
|
680
711
|
else {
|
|
681
712
|
if (hoverElement && actionType !== 'drag') {
|
|
682
|
-
if (
|
|
713
|
+
if (isHoverLocked) {
|
|
683
714
|
drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
|
|
684
715
|
groupQueue,
|
|
685
716
|
controllerSize: 10,
|
|
@@ -690,7 +721,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
690
721
|
drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
|
|
691
722
|
}
|
|
692
723
|
}
|
|
693
|
-
if (
|
|
724
|
+
if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
694
725
|
drawSelectedElementControllersVertexes(overlayContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag', style }));
|
|
695
726
|
if (actionType === 'drag') {
|
|
696
727
|
if (enableSnapToGrid === true) {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { BoardMiddleware, CoreEventMap, Element, ViewScaleInfo, ElementPosition } from '@idraw/types';
|
|
2
|
-
|
|
3
|
-
export declare const middlewareEventTextChange = "@middleware/text-change";
|
|
2
|
+
import { coreEventKeys } from '../../config';
|
|
4
3
|
type TextEditEvent = {
|
|
5
4
|
element: Element<'text'>;
|
|
6
5
|
position: ElementPosition;
|
|
@@ -16,6 +15,6 @@ type TextChangeEvent = {
|
|
|
16
15
|
};
|
|
17
16
|
position: ElementPosition;
|
|
18
17
|
};
|
|
19
|
-
type ExtendEventMap = Record<typeof
|
|
18
|
+
type ExtendEventMap = Record<typeof coreEventKeys.TEXT_EDIT, TextEditEvent> & Record<typeof coreEventKeys.TEXT_CHANGE, TextChangeEvent>;
|
|
20
19
|
export declare const MiddlewareTextEditor: BoardMiddleware<ExtendEventMap, CoreEventMap & ExtendEventMap>;
|
|
21
20
|
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { limitAngle, getDefaultElementDetailConfig, enhanceFontFamliy } from '@idraw/util';
|
|
2
|
-
|
|
3
|
-
export const middlewareEventTextChange = '@middleware/text-change';
|
|
2
|
+
import { coreEventKeys } from '../../config';
|
|
4
3
|
const defaultElementDetail = getDefaultElementDetailConfig();
|
|
5
4
|
export const MiddlewareTextEditor = (opts) => {
|
|
6
5
|
const { eventHub, boardContent, viewer, sharer } = opts;
|
|
@@ -12,6 +11,8 @@ export const MiddlewareTextEditor = (opts) => {
|
|
|
12
11
|
const mask = document.createElement('div');
|
|
13
12
|
let activeElem = null;
|
|
14
13
|
let activePosition = [];
|
|
14
|
+
const id = `idraw-middleware-text-editor-${Math.random().toString(26).substring(2)}`;
|
|
15
|
+
mask.setAttribute('id', id);
|
|
15
16
|
canvasWrapper.appendChild(textarea);
|
|
16
17
|
canvasWrapper.style.position = 'absolute';
|
|
17
18
|
mask.appendChild(canvasWrapper);
|
|
@@ -163,7 +164,7 @@ export const MiddlewareTextEditor = (opts) => {
|
|
|
163
164
|
textarea.addEventListener('input', () => {
|
|
164
165
|
if (activeElem && activePosition) {
|
|
165
166
|
activeElem.detail.text = textarea.innerText || '';
|
|
166
|
-
eventHub.trigger(
|
|
167
|
+
eventHub.trigger(coreEventKeys.TEXT_CHANGE, {
|
|
167
168
|
element: {
|
|
168
169
|
uuid: activeElem.uuid,
|
|
169
170
|
detail: {
|
|
@@ -177,7 +178,7 @@ export const MiddlewareTextEditor = (opts) => {
|
|
|
177
178
|
});
|
|
178
179
|
textarea.addEventListener('blur', () => {
|
|
179
180
|
if (activeElem && activePosition) {
|
|
180
|
-
eventHub.trigger(
|
|
181
|
+
eventHub.trigger(coreEventKeys.TEXT_CHANGE, {
|
|
181
182
|
element: {
|
|
182
183
|
uuid: activeElem.uuid,
|
|
183
184
|
detail: {
|
|
@@ -213,10 +214,10 @@ export const MiddlewareTextEditor = (opts) => {
|
|
|
213
214
|
return {
|
|
214
215
|
name: '@middleware/text-editor',
|
|
215
216
|
use() {
|
|
216
|
-
eventHub.on(
|
|
217
|
+
eventHub.on(coreEventKeys.TEXT_EDIT, textEditCallback);
|
|
217
218
|
},
|
|
218
219
|
disuse() {
|
|
219
|
-
eventHub.off(
|
|
220
|
+
eventHub.off(coreEventKeys.TEXT_EDIT, textEditCallback);
|
|
220
221
|
}
|
|
221
222
|
};
|
|
222
223
|
};
|