@idraw/util 0.4.0-beta.40 → 0.4.0-beta.42
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/index.d.ts +46 -40
- package/dist/esm/index.js +46 -40
- package/dist/esm/tool/flat-object.d.ts +6 -0
- package/dist/esm/tool/flat-object.js +28 -0
- package/dist/esm/tool/get-set-del.d.ts +4 -0
- package/dist/esm/tool/get-set-del.js +65 -0
- package/dist/esm/{lib → tool}/html.js +6 -2
- package/dist/esm/{lib → tool}/store.js +1 -1
- package/dist/esm/tool/unflat-object.d.ts +3 -0
- package/dist/esm/tool/unflat-object.js +91 -0
- package/dist/esm/{lib → tool}/uuid.d.ts +1 -1
- package/dist/esm/tool/uuid.js +39 -0
- package/dist/esm/{lib → view}/check.js +14 -14
- package/dist/esm/{lib → view}/controller.js +53 -10
- package/dist/esm/{lib → view}/data.js +7 -7
- package/dist/esm/{lib → view}/element.js +13 -5
- package/dist/esm/{lib → view}/flat.js +2 -1
- package/dist/esm/{lib → view}/group.js +1 -1
- package/dist/esm/{lib → view}/handle-element.d.ts +6 -1
- package/dist/esm/{lib → view}/handle-element.js +26 -31
- package/dist/esm/view/handle-global.d.ts +4 -0
- package/dist/esm/view/handle-global.js +28 -0
- package/dist/esm/view/handle-layout.d.ts +4 -0
- package/dist/esm/view/handle-layout.js +28 -0
- package/dist/esm/{lib → view}/is.js +1 -1
- package/dist/esm/view/modify-record.d.ts +4 -0
- package/dist/esm/view/modify-record.js +10 -0
- package/dist/esm/view/position.d.ts +15 -0
- package/dist/esm/view/position.js +79 -0
- package/dist/esm/{lib → view}/resize-element.js +1 -1
- package/dist/esm/{lib → view}/view-content.js +1 -1
- package/dist/index.global.js +455 -166
- package/dist/index.global.min.js +1 -1
- package/package.json +1 -1
- package/dist/esm/lib/modify-recorder.d.ts +0 -15
- package/dist/esm/lib/modify-recorder.js +0 -177
- package/dist/esm/lib/modify.d.ts +0 -6
- package/dist/esm/lib/modify.js +0 -99
- package/dist/esm/lib/uuid.js +0 -31
- /package/dist/esm/{lib → tool}/color.d.ts +0 -0
- /package/dist/esm/{lib → tool}/color.js +0 -0
- /package/dist/esm/{lib → tool}/event.d.ts +0 -0
- /package/dist/esm/{lib → tool}/event.js +0 -0
- /package/dist/esm/{lib → tool}/file.d.ts +0 -0
- /package/dist/esm/{lib → tool}/file.js +0 -0
- /package/dist/esm/{lib → tool}/html.d.ts +0 -0
- /package/dist/esm/{lib → tool}/image.d.ts +0 -0
- /package/dist/esm/{lib → tool}/image.js +0 -0
- /package/dist/esm/{lib → tool}/istype.d.ts +0 -0
- /package/dist/esm/{lib → tool}/istype.js +0 -0
- /package/dist/esm/{lib → tool}/merge.d.ts +0 -0
- /package/dist/esm/{lib → tool}/merge.js +0 -0
- /package/dist/esm/{lib → tool}/number.d.ts +0 -0
- /package/dist/esm/{lib → tool}/number.js +0 -0
- /package/dist/esm/{lib → tool}/omit.d.ts +0 -0
- /package/dist/esm/{lib → tool}/omit.js +0 -0
- /package/dist/esm/{lib → tool}/store.d.ts +0 -0
- /package/dist/esm/{lib → tool}/time.d.ts +0 -0
- /package/dist/esm/{lib → tool}/time.js +0 -0
- /package/dist/esm/{lib → view}/box.d.ts +0 -0
- /package/dist/esm/{lib → view}/box.js +0 -0
- /package/dist/esm/{lib → view}/canvas.d.ts +0 -0
- /package/dist/esm/{lib → view}/canvas.js +0 -0
- /package/dist/esm/{lib → view}/check.d.ts +0 -0
- /package/dist/esm/{lib → view}/config.d.ts +0 -0
- /package/dist/esm/{lib → view}/config.js +0 -0
- /package/dist/esm/{lib → view}/context2d.d.ts +0 -0
- /package/dist/esm/{lib → view}/context2d.js +0 -0
- /package/dist/esm/{lib → view}/controller.d.ts +0 -0
- /package/dist/esm/{lib → view}/data.d.ts +0 -0
- /package/dist/esm/{lib → view}/element.d.ts +0 -0
- /package/dist/esm/{lib → view}/flat.d.ts +0 -0
- /package/dist/esm/{lib → view}/group.d.ts +0 -0
- /package/dist/esm/{lib → view}/is.d.ts +0 -0
- /package/dist/esm/{lib → view}/load.d.ts +0 -0
- /package/dist/esm/{lib → view}/load.js +0 -0
- /package/dist/esm/{lib → view}/matrix.d.ts +0 -0
- /package/dist/esm/{lib → view}/matrix.js +0 -0
- /package/dist/esm/{lib → view}/middleware.d.ts +0 -0
- /package/dist/esm/{lib → view}/middleware.js +0 -0
- /package/dist/esm/{lib → view}/parser.d.ts +0 -0
- /package/dist/esm/{lib → view}/parser.js +0 -0
- /package/dist/esm/{lib → view}/point-move-element.d.ts +0 -0
- /package/dist/esm/{lib → view}/point-move-element.js +0 -0
- /package/dist/esm/{lib → view}/point.d.ts +0 -0
- /package/dist/esm/{lib → view}/point.js +0 -0
- /package/dist/esm/{lib → view}/rect.d.ts +0 -0
- /package/dist/esm/{lib → view}/rect.js +0 -0
- /package/dist/esm/{lib → view}/resize-element.d.ts +0 -0
- /package/dist/esm/{lib → view}/rotate.d.ts +0 -0
- /package/dist/esm/{lib → view}/rotate.js +0 -0
- /package/dist/esm/{lib → view}/svg-path.d.ts +0 -0
- /package/dist/esm/{lib → view}/svg-path.js +0 -0
- /package/dist/esm/{lib → view}/text.d.ts +0 -0
- /package/dist/esm/{lib → view}/text.js +0 -0
- /package/dist/esm/{lib → view}/vertex.d.ts +0 -0
- /package/dist/esm/{lib → view}/vertex.js +0 -0
- /package/dist/esm/{lib → view}/view-box.d.ts +0 -0
- /package/dist/esm/{lib → view}/view-box.js +0 -0
- /package/dist/esm/{lib → view}/view-calc.d.ts +0 -0
- /package/dist/esm/{lib → view}/view-calc.js +0 -0
- /package/dist/esm/{lib → view}/view-content.d.ts +0 -0
|
@@ -9,7 +9,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
9
9
|
}
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
|
-
import { createAssetId, createUUID, isAssetId } from '
|
|
12
|
+
import { createAssetId, createUUID, isAssetId } from '../tool/uuid';
|
|
13
13
|
export function deepClone(target) {
|
|
14
14
|
function _clone(t) {
|
|
15
15
|
const type = is(t);
|
|
@@ -73,7 +73,7 @@ export function sortDataAsserts(data, opts) {
|
|
|
73
73
|
elems.forEach((elem) => {
|
|
74
74
|
if (elem.type === 'image' && elem.detail.src) {
|
|
75
75
|
const src = elem.detail.src;
|
|
76
|
-
const assetUUID = createAssetId(src);
|
|
76
|
+
const assetUUID = createAssetId(src, elem.uuid);
|
|
77
77
|
if (!assets[assetUUID]) {
|
|
78
78
|
assets[assetUUID] = {
|
|
79
79
|
type: 'image',
|
|
@@ -84,7 +84,7 @@ export function sortDataAsserts(data, opts) {
|
|
|
84
84
|
}
|
|
85
85
|
else if (elem.type === 'svg') {
|
|
86
86
|
const svg = elem.detail.svg;
|
|
87
|
-
const assetUUID = createAssetId(svg);
|
|
87
|
+
const assetUUID = createAssetId(svg, elem.uuid);
|
|
88
88
|
if (!assets[assetUUID]) {
|
|
89
89
|
assets[assetUUID] = {
|
|
90
90
|
type: 'svg',
|
|
@@ -95,7 +95,7 @@ export function sortDataAsserts(data, opts) {
|
|
|
95
95
|
}
|
|
96
96
|
else if (elem.type === 'html') {
|
|
97
97
|
const html = elem.detail.html;
|
|
98
|
-
const assetUUID = createAssetId(html);
|
|
98
|
+
const assetUUID = createAssetId(html, elem.uuid);
|
|
99
99
|
if (!assets[assetUUID]) {
|
|
100
100
|
assets[assetUUID] = {
|
|
101
101
|
type: 'html',
|
|
@@ -136,7 +136,7 @@ export function filterCompactData(data, opts) {
|
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
138
|
else if (!assets[src]) {
|
|
139
|
-
const assetUUID = createAssetId(src);
|
|
139
|
+
const assetUUID = createAssetId(src, elem.uuid);
|
|
140
140
|
if (!assets[assetUUID]) {
|
|
141
141
|
assets[assetUUID] = {
|
|
142
142
|
type: 'image',
|
|
@@ -155,7 +155,7 @@ export function filterCompactData(data, opts) {
|
|
|
155
155
|
};
|
|
156
156
|
}
|
|
157
157
|
else if (!assets[svg]) {
|
|
158
|
-
const assetUUID = createAssetId(svg);
|
|
158
|
+
const assetUUID = createAssetId(svg, elem.uuid);
|
|
159
159
|
if (!assets[assetUUID]) {
|
|
160
160
|
assets[assetUUID] = {
|
|
161
161
|
type: 'svg',
|
|
@@ -174,7 +174,7 @@ export function filterCompactData(data, opts) {
|
|
|
174
174
|
};
|
|
175
175
|
}
|
|
176
176
|
else if (!assets[html]) {
|
|
177
|
-
const assetUUID = createAssetId(html);
|
|
177
|
+
const assetUUID = createAssetId(html, elem.uuid);
|
|
178
178
|
if (!assets[assetUUID]) {
|
|
179
179
|
assets[assetUUID] = {
|
|
180
180
|
type: 'html',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { limitAngle, rotateElementVertexes } from './rotate';
|
|
2
|
-
import { isAssetId, createAssetId } from '
|
|
2
|
+
import { isAssetId, createAssetId } from '../tool/uuid';
|
|
3
3
|
function getGroupUUIDs(elements, index) {
|
|
4
4
|
var _a;
|
|
5
5
|
const uuids = [];
|
|
@@ -168,7 +168,11 @@ export function calcElementsContextSize(elements, opts) {
|
|
|
168
168
|
return ctxSize;
|
|
169
169
|
}
|
|
170
170
|
export function calcElementsViewInfo(elements, prevViewSize, options) {
|
|
171
|
-
const contextSize = calcElementsContextSize(elements, {
|
|
171
|
+
const contextSize = calcElementsContextSize(elements, {
|
|
172
|
+
viewWidth: prevViewSize.width,
|
|
173
|
+
viewHeight: prevViewSize.height,
|
|
174
|
+
extend: options === null || options === void 0 ? void 0 : options.extend
|
|
175
|
+
});
|
|
172
176
|
if ((options === null || options === void 0 ? void 0 : options.extend) === true) {
|
|
173
177
|
contextSize.contextWidth = Math.max(contextSize.contextWidth, prevViewSize.contextWidth);
|
|
174
178
|
contextSize.contextHeight = Math.max(contextSize.contextHeight, prevViewSize.contextHeight);
|
|
@@ -327,7 +331,7 @@ export function filterElementAsset(element) {
|
|
|
327
331
|
resource = element.detail.html;
|
|
328
332
|
}
|
|
329
333
|
if (typeof resource === 'string' && !isAssetId(resource)) {
|
|
330
|
-
assetId = createAssetId(resource);
|
|
334
|
+
assetId = createAssetId(resource, element.uuid);
|
|
331
335
|
assetItem = {
|
|
332
336
|
type: element.type,
|
|
333
337
|
value: resource
|
|
@@ -367,7 +371,7 @@ export function findElementFromListByPosition(position, list) {
|
|
|
367
371
|
for (let i = 0; i < position.length; i++) {
|
|
368
372
|
const pos = position[i];
|
|
369
373
|
const item = tempList[pos];
|
|
370
|
-
if (i < position.length - 1 && item.type === 'group') {
|
|
374
|
+
if (i < position.length - 1 && (item === null || item === void 0 ? void 0 : item.type) === 'group') {
|
|
371
375
|
tempList = item.detail.children;
|
|
372
376
|
}
|
|
373
377
|
else if (i === position.length - 1) {
|
|
@@ -459,5 +463,9 @@ export function getElementPositionMapFromList(uuids, elements) {
|
|
|
459
463
|
return positionMap;
|
|
460
464
|
}
|
|
461
465
|
export function isSameElementSize(elem1, elem2) {
|
|
462
|
-
return (elem1.x === elem2.x &&
|
|
466
|
+
return (elem1.x === elem2.x &&
|
|
467
|
+
elem1.y === elem2.y &&
|
|
468
|
+
elem1.h === elem2.h &&
|
|
469
|
+
elem1.w === elem2.w &&
|
|
470
|
+
limitAngle(elem1.angle || 0) === limitAngle(elem2.angle || 0));
|
|
463
471
|
}
|
|
@@ -13,7 +13,8 @@ import { calcElementVertexesInGroup } from './vertex';
|
|
|
13
13
|
import { limitAngle, parseAngleToRadian, calcElementCenterFromVertexes, rotatePoint } from './rotate';
|
|
14
14
|
function flatElementSize(elemSize, opts) {
|
|
15
15
|
const { groupQueue } = opts;
|
|
16
|
-
let { x, y
|
|
16
|
+
let { x, y } = elemSize;
|
|
17
|
+
const { w, h, angle = 0 } = elemSize;
|
|
17
18
|
let totalAngle = 0;
|
|
18
19
|
groupQueue.forEach((group) => {
|
|
19
20
|
x += group.x;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { findElementFromListByPosition, calcElementListSize } from './element';
|
|
2
2
|
import { deleteElementInListByPosition, insertElementToListByPosition } from './handle-element';
|
|
3
|
-
import { createUUID } from '
|
|
3
|
+
import { createUUID } from '../tool/uuid';
|
|
4
4
|
export function groupElementsByPosition(list, positions) {
|
|
5
5
|
if (positions.length > 1) {
|
|
6
6
|
let isValidPositions = true;
|
|
@@ -15,5 +15,10 @@ export declare function moveElementPosition(elements: Elements, opts: {
|
|
|
15
15
|
from: ElementPosition;
|
|
16
16
|
to: ElementPosition;
|
|
17
17
|
};
|
|
18
|
+
export declare function mergeElement<T extends Element<ElementType> = Element<ElementType>>(originElem: T, updateContent: RecursivePartial<T>, opts?: {
|
|
19
|
+
strict?: boolean;
|
|
20
|
+
}): T;
|
|
18
21
|
export declare function updateElementInList(uuid: string, updateContent: RecursivePartial<Element<ElementType>>, elements: Element[]): Element | null;
|
|
19
|
-
export declare function updateElementInListByPosition(position: ElementPosition, updateContent: RecursivePartial<Element<ElementType>>, elements: Element[]
|
|
22
|
+
export declare function updateElementInListByPosition(position: ElementPosition, updateContent: RecursivePartial<Element<ElementType>>, elements: Element[], opts?: {
|
|
23
|
+
strict?: boolean;
|
|
24
|
+
}): Element | null;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { createUUID } from '
|
|
1
|
+
import { createUUID } from '../tool/uuid';
|
|
2
2
|
import { defaultText, getDefaultElementRectDetail, getDefaultElementCircleDetail, getDefaultElementTextDetail, getDefaultElementSVGDetail, getDefaultElementImageDetail, getDefaultElementGroupDetail } from './config';
|
|
3
|
-
import {
|
|
3
|
+
import { toFlattenElement } from './modify-record';
|
|
4
|
+
import { set, del } from '../tool/get-set-del';
|
|
4
5
|
import { findElementFromListByPosition, getElementPositionFromList } from './element';
|
|
5
6
|
import { deepResizeGroupElement } from './resize-element';
|
|
6
7
|
const defaultViewWidth = 200;
|
|
@@ -67,7 +68,7 @@ export function createElement(type, baseElem, opts) {
|
|
|
67
68
|
else if (type === 'group') {
|
|
68
69
|
detail = getDefaultElementGroupDetail();
|
|
69
70
|
}
|
|
70
|
-
const elem = Object.assign(Object.assign(Object.assign({}, elementSize), baseElem), {
|
|
71
|
+
const elem = Object.assign(Object.assign(Object.assign({ uuid: createUUID() }, elementSize), baseElem), { type, detail: Object.assign(Object.assign({}, detail), (baseElem.detail || {})) });
|
|
71
72
|
return elem;
|
|
72
73
|
}
|
|
73
74
|
export function insertElementToListByPosition(element, position, list) {
|
|
@@ -217,35 +218,29 @@ export function moveElementPosition(elements, opts) {
|
|
|
217
218
|
}
|
|
218
219
|
return { elements, from, to };
|
|
219
220
|
}
|
|
220
|
-
function mergeElement(originElem, updateContent) {
|
|
221
|
-
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
if (
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
if (!(originElem === null || originElem === void 0 ? void 0 : originElem.hasOwnProperty(commonKey))) {
|
|
231
|
-
originElem[commonKey] = {};
|
|
232
|
-
}
|
|
233
|
-
if (istype.json(originElem[commonKey])) {
|
|
234
|
-
originElem[commonKey] = Object.assign(Object.assign({}, originElem[commonKey]), updateContent[commonKey]);
|
|
235
|
-
}
|
|
221
|
+
export function mergeElement(originElem, updateContent, opts) {
|
|
222
|
+
const updatedFlatten = toFlattenElement(updateContent);
|
|
223
|
+
const ignoreKeys = ['uuid', 'type'];
|
|
224
|
+
const updatedKeys = Object.keys(updatedFlatten);
|
|
225
|
+
updatedKeys.forEach((key) => {
|
|
226
|
+
if (!ignoreKeys.includes(key)) {
|
|
227
|
+
const value = updatedFlatten[key];
|
|
228
|
+
del(originElem, key);
|
|
229
|
+
if (value !== undefined) {
|
|
230
|
+
set(originElem, key, value);
|
|
236
231
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
originElem
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
if ((opts === null || opts === void 0 ? void 0 : opts.strict) === true) {
|
|
235
|
+
const originFlatten = toFlattenElement(originElem);
|
|
236
|
+
const originKeys = Object.keys(originFlatten);
|
|
237
|
+
originKeys.forEach((key) => {
|
|
238
|
+
if (!ignoreKeys.includes(key)) {
|
|
239
|
+
if (!updatedKeys.includes(key)) {
|
|
240
|
+
del(originElem, key);
|
|
246
241
|
}
|
|
247
242
|
}
|
|
248
|
-
}
|
|
243
|
+
});
|
|
249
244
|
}
|
|
250
245
|
return originElem;
|
|
251
246
|
}
|
|
@@ -273,7 +268,7 @@ export function updateElementInList(uuid, updateContent, elements) {
|
|
|
273
268
|
}
|
|
274
269
|
return targetElement;
|
|
275
270
|
}
|
|
276
|
-
export function updateElementInListByPosition(position, updateContent, elements) {
|
|
271
|
+
export function updateElementInListByPosition(position, updateContent, elements, opts) {
|
|
277
272
|
var _a;
|
|
278
273
|
const elem = findElementFromListByPosition(position, elements);
|
|
279
274
|
if (elem) {
|
|
@@ -285,7 +280,7 @@ export function updateElementInListByPosition(position, updateContent, elements)
|
|
|
285
280
|
});
|
|
286
281
|
}
|
|
287
282
|
}
|
|
288
|
-
mergeElement(elem, updateContent);
|
|
283
|
+
mergeElement(elem, updateContent, opts);
|
|
289
284
|
}
|
|
290
285
|
return elem;
|
|
291
286
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { toFlattenGlobal } from './modify-record';
|
|
2
|
+
import { set, del } from '../tool/get-set-del';
|
|
3
|
+
export function mergeGlobal(originGlobal, updateContent, opts) {
|
|
4
|
+
const updatedFlatten = toFlattenGlobal(updateContent);
|
|
5
|
+
const ignoreKeys = [];
|
|
6
|
+
const updatedKeys = Object.keys(updatedFlatten);
|
|
7
|
+
updatedKeys.forEach((key) => {
|
|
8
|
+
if (!ignoreKeys.includes(key)) {
|
|
9
|
+
const value = updatedFlatten[key];
|
|
10
|
+
del(originGlobal, key);
|
|
11
|
+
if (value !== undefined) {
|
|
12
|
+
set(originGlobal, key, value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
if ((opts === null || opts === void 0 ? void 0 : opts.strict) === true) {
|
|
17
|
+
const originFlatten = toFlattenGlobal(originGlobal);
|
|
18
|
+
const originKeys = Object.keys(originFlatten);
|
|
19
|
+
originKeys.forEach((key) => {
|
|
20
|
+
if (!ignoreKeys.includes(key)) {
|
|
21
|
+
if (!updatedKeys.includes(key)) {
|
|
22
|
+
del(originGlobal, key);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return originGlobal;
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { toFlattenLayout } from './modify-record';
|
|
2
|
+
import { set, del } from '../tool/get-set-del';
|
|
3
|
+
export function mergeLayout(originLayout, updateContent, opts) {
|
|
4
|
+
const updatedFlatten = toFlattenLayout(updateContent);
|
|
5
|
+
const ignoreKeys = [];
|
|
6
|
+
const updatedKeys = Object.keys(updatedFlatten);
|
|
7
|
+
updatedKeys.forEach((key) => {
|
|
8
|
+
if (!ignoreKeys.includes(key)) {
|
|
9
|
+
const value = updatedFlatten[key];
|
|
10
|
+
del(originLayout, key);
|
|
11
|
+
if (value !== undefined) {
|
|
12
|
+
set(originLayout, key, value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
if ((opts === null || opts === void 0 ? void 0 : opts.strict) === true) {
|
|
17
|
+
const originFlatten = toFlattenLayout(originLayout);
|
|
18
|
+
const originKeys = Object.keys(originFlatten);
|
|
19
|
+
originKeys.forEach((key) => {
|
|
20
|
+
if (!ignoreKeys.includes(key)) {
|
|
21
|
+
if (!updatedKeys.includes(key)) {
|
|
22
|
+
del(originLayout, key);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return originLayout;
|
|
28
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FlattenElement, Element, RecursivePartial, DataLayout, DataGlobal } from '@idraw/types';
|
|
2
|
+
export declare function toFlattenElement(elem: Element | RecursivePartial<Element>): FlattenElement;
|
|
3
|
+
export declare function toFlattenLayout(layout: DataLayout | RecursivePartial<DataLayout>): FlattenElement;
|
|
4
|
+
export declare function toFlattenGlobal(global: DataGlobal | RecursivePartial<DataLayout>): FlattenElement;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { flatObject } from '../tool/flat-object';
|
|
2
|
+
export function toFlattenElement(elem) {
|
|
3
|
+
return flatObject(elem, { ignorePaths: ['detail.children'] });
|
|
4
|
+
}
|
|
5
|
+
export function toFlattenLayout(layout) {
|
|
6
|
+
return flatObject(layout);
|
|
7
|
+
}
|
|
8
|
+
export function toFlattenGlobal(global) {
|
|
9
|
+
return flatObject(global);
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ElementPosition } from '@idraw/types';
|
|
2
|
+
export declare function calcResultMovePosition(opts: {
|
|
3
|
+
from: ElementPosition;
|
|
4
|
+
to: ElementPosition;
|
|
5
|
+
}): {
|
|
6
|
+
from: ElementPosition;
|
|
7
|
+
to: ElementPosition;
|
|
8
|
+
} | null;
|
|
9
|
+
export declare function calcRevertMovePosition(opts: {
|
|
10
|
+
from: ElementPosition;
|
|
11
|
+
to: ElementPosition;
|
|
12
|
+
}): {
|
|
13
|
+
from: ElementPosition;
|
|
14
|
+
to: ElementPosition;
|
|
15
|
+
} | null;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export function calcResultMovePosition(opts) {
|
|
2
|
+
const from = [...opts.from];
|
|
3
|
+
const to = [...opts.to];
|
|
4
|
+
if (from.length === 0 || to.length === 0) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
if (from.length <= to.length) {
|
|
8
|
+
for (let i = 0; i < from.length; i++) {
|
|
9
|
+
if (to[i] === from[i]) {
|
|
10
|
+
if (i === from.length - 1) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
let moveDirection = null;
|
|
18
|
+
if (from.length >= 1 && to.length >= 1) {
|
|
19
|
+
if (from.length <= to.length) {
|
|
20
|
+
if (from.length === 1) {
|
|
21
|
+
if (from[0] < to[0]) {
|
|
22
|
+
moveDirection = 'up-down';
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
for (let i = 0; i < from.length; i++) {
|
|
27
|
+
if (from[i] === to[i]) {
|
|
28
|
+
if (from.length === from.length - 1) {
|
|
29
|
+
moveDirection = 'up-down';
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (from.length >= to.length) {
|
|
40
|
+
if (to.length === 1) {
|
|
41
|
+
if (to[0] < from[0]) {
|
|
42
|
+
moveDirection = 'down-up';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
for (let i = 0; i < to.length; i++) {
|
|
47
|
+
if (i === to.length - 1 && to[i] < from[i]) {
|
|
48
|
+
moveDirection = 'down-up';
|
|
49
|
+
}
|
|
50
|
+
if (from[i] === to[i]) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const startEffectIndex = from.length - 1;
|
|
61
|
+
const endEffectIndex = to.length - 1;
|
|
62
|
+
if (moveDirection === 'up-down' && startEffectIndex >= 0) {
|
|
63
|
+
to[startEffectIndex] -= 1;
|
|
64
|
+
}
|
|
65
|
+
else if (moveDirection === 'down-up' && endEffectIndex >= 0) {
|
|
66
|
+
from[endEffectIndex] += 1;
|
|
67
|
+
}
|
|
68
|
+
return { from, to };
|
|
69
|
+
}
|
|
70
|
+
export function calcRevertMovePosition(opts) {
|
|
71
|
+
const result = calcResultMovePosition(opts);
|
|
72
|
+
if (!result) {
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
from: [...result.to],
|
|
77
|
+
to: [...result.from]
|
|
78
|
+
};
|
|
79
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { rotateElementVertexes } from './rotate';
|
|
2
|
-
import { formatNumber } from '
|
|
2
|
+
import { formatNumber } from '../tool/number';
|
|
3
3
|
import { is } from './is';
|
|
4
4
|
export function calcViewCenterContent(data, opts) {
|
|
5
5
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|