@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.
Files changed (102) hide show
  1. package/dist/esm/index.d.ts +46 -40
  2. package/dist/esm/index.js +46 -40
  3. package/dist/esm/tool/flat-object.d.ts +6 -0
  4. package/dist/esm/tool/flat-object.js +28 -0
  5. package/dist/esm/tool/get-set-del.d.ts +4 -0
  6. package/dist/esm/tool/get-set-del.js +65 -0
  7. package/dist/esm/{lib → tool}/html.js +6 -2
  8. package/dist/esm/{lib → tool}/store.js +1 -1
  9. package/dist/esm/tool/unflat-object.d.ts +3 -0
  10. package/dist/esm/tool/unflat-object.js +91 -0
  11. package/dist/esm/{lib → tool}/uuid.d.ts +1 -1
  12. package/dist/esm/tool/uuid.js +39 -0
  13. package/dist/esm/{lib → view}/check.js +14 -14
  14. package/dist/esm/{lib → view}/controller.js +53 -10
  15. package/dist/esm/{lib → view}/data.js +7 -7
  16. package/dist/esm/{lib → view}/element.js +13 -5
  17. package/dist/esm/{lib → view}/flat.js +2 -1
  18. package/dist/esm/{lib → view}/group.js +1 -1
  19. package/dist/esm/{lib → view}/handle-element.d.ts +6 -1
  20. package/dist/esm/{lib → view}/handle-element.js +26 -31
  21. package/dist/esm/view/handle-global.d.ts +4 -0
  22. package/dist/esm/view/handle-global.js +28 -0
  23. package/dist/esm/view/handle-layout.d.ts +4 -0
  24. package/dist/esm/view/handle-layout.js +28 -0
  25. package/dist/esm/{lib → view}/is.js +1 -1
  26. package/dist/esm/view/modify-record.d.ts +4 -0
  27. package/dist/esm/view/modify-record.js +10 -0
  28. package/dist/esm/view/position.d.ts +15 -0
  29. package/dist/esm/view/position.js +79 -0
  30. package/dist/esm/{lib → view}/resize-element.js +1 -1
  31. package/dist/esm/{lib → view}/view-content.js +1 -1
  32. package/dist/index.global.js +455 -166
  33. package/dist/index.global.min.js +1 -1
  34. package/package.json +1 -1
  35. package/dist/esm/lib/modify-recorder.d.ts +0 -15
  36. package/dist/esm/lib/modify-recorder.js +0 -177
  37. package/dist/esm/lib/modify.d.ts +0 -6
  38. package/dist/esm/lib/modify.js +0 -99
  39. package/dist/esm/lib/uuid.js +0 -31
  40. /package/dist/esm/{lib → tool}/color.d.ts +0 -0
  41. /package/dist/esm/{lib → tool}/color.js +0 -0
  42. /package/dist/esm/{lib → tool}/event.d.ts +0 -0
  43. /package/dist/esm/{lib → tool}/event.js +0 -0
  44. /package/dist/esm/{lib → tool}/file.d.ts +0 -0
  45. /package/dist/esm/{lib → tool}/file.js +0 -0
  46. /package/dist/esm/{lib → tool}/html.d.ts +0 -0
  47. /package/dist/esm/{lib → tool}/image.d.ts +0 -0
  48. /package/dist/esm/{lib → tool}/image.js +0 -0
  49. /package/dist/esm/{lib → tool}/istype.d.ts +0 -0
  50. /package/dist/esm/{lib → tool}/istype.js +0 -0
  51. /package/dist/esm/{lib → tool}/merge.d.ts +0 -0
  52. /package/dist/esm/{lib → tool}/merge.js +0 -0
  53. /package/dist/esm/{lib → tool}/number.d.ts +0 -0
  54. /package/dist/esm/{lib → tool}/number.js +0 -0
  55. /package/dist/esm/{lib → tool}/omit.d.ts +0 -0
  56. /package/dist/esm/{lib → tool}/omit.js +0 -0
  57. /package/dist/esm/{lib → tool}/store.d.ts +0 -0
  58. /package/dist/esm/{lib → tool}/time.d.ts +0 -0
  59. /package/dist/esm/{lib → tool}/time.js +0 -0
  60. /package/dist/esm/{lib → view}/box.d.ts +0 -0
  61. /package/dist/esm/{lib → view}/box.js +0 -0
  62. /package/dist/esm/{lib → view}/canvas.d.ts +0 -0
  63. /package/dist/esm/{lib → view}/canvas.js +0 -0
  64. /package/dist/esm/{lib → view}/check.d.ts +0 -0
  65. /package/dist/esm/{lib → view}/config.d.ts +0 -0
  66. /package/dist/esm/{lib → view}/config.js +0 -0
  67. /package/dist/esm/{lib → view}/context2d.d.ts +0 -0
  68. /package/dist/esm/{lib → view}/context2d.js +0 -0
  69. /package/dist/esm/{lib → view}/controller.d.ts +0 -0
  70. /package/dist/esm/{lib → view}/data.d.ts +0 -0
  71. /package/dist/esm/{lib → view}/element.d.ts +0 -0
  72. /package/dist/esm/{lib → view}/flat.d.ts +0 -0
  73. /package/dist/esm/{lib → view}/group.d.ts +0 -0
  74. /package/dist/esm/{lib → view}/is.d.ts +0 -0
  75. /package/dist/esm/{lib → view}/load.d.ts +0 -0
  76. /package/dist/esm/{lib → view}/load.js +0 -0
  77. /package/dist/esm/{lib → view}/matrix.d.ts +0 -0
  78. /package/dist/esm/{lib → view}/matrix.js +0 -0
  79. /package/dist/esm/{lib → view}/middleware.d.ts +0 -0
  80. /package/dist/esm/{lib → view}/middleware.js +0 -0
  81. /package/dist/esm/{lib → view}/parser.d.ts +0 -0
  82. /package/dist/esm/{lib → view}/parser.js +0 -0
  83. /package/dist/esm/{lib → view}/point-move-element.d.ts +0 -0
  84. /package/dist/esm/{lib → view}/point-move-element.js +0 -0
  85. /package/dist/esm/{lib → view}/point.d.ts +0 -0
  86. /package/dist/esm/{lib → view}/point.js +0 -0
  87. /package/dist/esm/{lib → view}/rect.d.ts +0 -0
  88. /package/dist/esm/{lib → view}/rect.js +0 -0
  89. /package/dist/esm/{lib → view}/resize-element.d.ts +0 -0
  90. /package/dist/esm/{lib → view}/rotate.d.ts +0 -0
  91. /package/dist/esm/{lib → view}/rotate.js +0 -0
  92. /package/dist/esm/{lib → view}/svg-path.d.ts +0 -0
  93. /package/dist/esm/{lib → view}/svg-path.js +0 -0
  94. /package/dist/esm/{lib → view}/text.d.ts +0 -0
  95. /package/dist/esm/{lib → view}/text.js +0 -0
  96. /package/dist/esm/{lib → view}/vertex.d.ts +0 -0
  97. /package/dist/esm/{lib → view}/vertex.js +0 -0
  98. /package/dist/esm/{lib → view}/view-box.d.ts +0 -0
  99. /package/dist/esm/{lib → view}/view-box.js +0 -0
  100. /package/dist/esm/{lib → view}/view-calc.d.ts +0 -0
  101. /package/dist/esm/{lib → view}/view-calc.js +0 -0
  102. /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 './uuid';
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 './uuid';
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, { viewWidth: prevViewSize.width, viewHeight: prevViewSize.height, extend: options === null || options === void 0 ? void 0 : options.extend });
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 && elem1.y === elem2.y && elem1.h === elem2.h && elem1.w === elem2.w && limitAngle(elem1.angle || 0) === limitAngle(elem2.angle || 0));
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, w, h, angle = 0 } = elemSize;
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 './uuid';
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[]): Element | null;
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 './uuid';
1
+ import { createUUID } from '../tool/uuid';
2
2
  import { defaultText, getDefaultElementRectDetail, getDefaultElementCircleDetail, getDefaultElementTextDetail, getDefaultElementSVGDetail, getDefaultElementImageDetail, getDefaultElementGroupDetail } from './config';
3
- import { istype } from './istype';
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), { uuid: createUUID(), type, detail: Object.assign(Object.assign({}, detail), (baseElem.detail || {})) });
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
- var _a;
222
- const commonKeys = Object.keys(updateContent);
223
- for (let i = 0; i < commonKeys.length; i++) {
224
- const commonKey = commonKeys[i];
225
- if (['x', 'y', 'w', 'h', 'angle', 'name'].includes(commonKey)) {
226
- originElem[commonKey] = updateContent[commonKey];
227
- }
228
- else if (['detail', 'operations'].includes(commonKey)) {
229
- if (istype.json(updateContent[commonKey])) {
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
- else if (istype.array(updateContent[commonKey])) {
238
- if (!(originElem === null || originElem === void 0 ? void 0 : originElem.hasOwnProperty(commonKey))) {
239
- originElem[commonKey] = [];
240
- }
241
- if (istype.array(originElem[commonKey])) {
242
- (_a = updateContent === null || updateContent === void 0 ? void 0 : updateContent[commonKey]) === null || _a === void 0 ? void 0 : _a.forEach((item, i) => {
243
- originElem[commonKey][i] = item;
244
- });
245
- originElem[commonKey] = [...originElem[commonKey], ...updateContent[commonKey]];
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,4 @@
1
+ import type { RecursivePartial, DataGlobal } from '@idraw/types';
2
+ export declare function mergeGlobal(originGlobal: DataGlobal, updateContent: RecursivePartial<DataGlobal>, opts?: {
3
+ strict?: boolean;
4
+ }): DataGlobal;
@@ -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,4 @@
1
+ import type { RecursivePartial, DataLayout } from '@idraw/types';
2
+ export declare function mergeLayout(originLayout: DataLayout, updateContent: RecursivePartial<DataLayout>, opts?: {
3
+ strict?: boolean;
4
+ }): DataLayout;
@@ -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
+ }
@@ -1,4 +1,4 @@
1
- import { isColorStr } from './color';
1
+ import { isColorStr } from '../tool/color';
2
2
  function positiveNum(value) {
3
3
  return typeof value === 'number' && value >= 0;
4
4
  }
@@ -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,4 +1,4 @@
1
- import { formatNumber } from './number';
1
+ import { formatNumber } from '../tool/number';
2
2
  const doNum = (n) => {
3
3
  return formatNumber(n, { decimalPlaces: 4 });
4
4
  };
@@ -1,5 +1,5 @@
1
1
  import { rotateElementVertexes } from './rotate';
2
- import { formatNumber } from './number';
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;