@idraw/util 0.4.0-beta.8 → 0.4.0-rc.0

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 (105) hide show
  1. package/dist/esm/index.d.ts +46 -31
  2. package/dist/esm/index.js +46 -31
  3. package/dist/esm/{lib → tool}/color.js +9 -6
  4. package/dist/esm/{lib → tool}/event.d.ts +1 -0
  5. package/dist/esm/{lib → tool}/event.js +3 -0
  6. package/dist/esm/tool/flat-object.d.ts +6 -0
  7. package/dist/esm/tool/flat-object.js +28 -0
  8. package/dist/esm/tool/get-set-del.d.ts +4 -0
  9. package/dist/esm/tool/get-set-del.js +65 -0
  10. package/dist/esm/{lib → tool}/html.d.ts +1 -1
  11. package/dist/esm/{lib → tool}/html.js +6 -2
  12. package/dist/esm/{lib → tool}/istype.d.ts +1 -0
  13. package/dist/esm/{lib → tool}/istype.js +3 -0
  14. package/dist/esm/tool/merge.d.ts +1 -0
  15. package/dist/esm/tool/merge.js +17 -0
  16. package/dist/esm/tool/omit.d.ts +1 -0
  17. package/dist/esm/tool/omit.js +7 -0
  18. package/dist/esm/tool/store.d.ts +16 -0
  19. package/dist/esm/{lib → tool}/store.js +17 -5
  20. package/dist/esm/{lib → tool}/time.d.ts +1 -0
  21. package/dist/esm/{lib → tool}/time.js +13 -1
  22. package/dist/esm/tool/unflat-object.d.ts +3 -0
  23. package/dist/esm/tool/unflat-object.js +91 -0
  24. package/dist/esm/{lib → tool}/uuid.d.ts +1 -1
  25. package/dist/esm/tool/uuid.js +39 -0
  26. package/dist/esm/view/box.d.ts +2 -0
  27. package/dist/esm/view/box.js +173 -0
  28. package/dist/esm/{lib → view}/canvas.d.ts +0 -1
  29. package/dist/esm/view/canvas.js +57 -0
  30. package/dist/esm/{lib → view}/check.js +14 -14
  31. package/dist/esm/{lib → view}/config.js +2 -2
  32. package/dist/esm/{lib → view}/context2d.d.ts +4 -0
  33. package/dist/esm/{lib → view}/context2d.js +20 -0
  34. package/dist/esm/view/controller.d.ts +12 -0
  35. package/dist/esm/view/controller.js +321 -0
  36. package/dist/esm/{lib → view}/data.d.ts +1 -0
  37. package/dist/esm/{lib → view}/data.js +43 -22
  38. package/dist/esm/{lib → view}/element.d.ts +5 -0
  39. package/dist/esm/{lib → view}/element.js +66 -5
  40. package/dist/esm/view/flat.d.ts +2 -0
  41. package/dist/esm/view/flat.js +133 -0
  42. package/dist/esm/view/group.d.ts +3 -0
  43. package/dist/esm/view/group.js +81 -0
  44. package/dist/esm/{lib → view}/handle-element.d.ts +11 -1
  45. package/dist/esm/{lib → view}/handle-element.js +102 -51
  46. package/dist/esm/view/handle-global.d.ts +4 -0
  47. package/dist/esm/view/handle-global.js +28 -0
  48. package/dist/esm/view/handle-layout.d.ts +4 -0
  49. package/dist/esm/view/handle-layout.js +28 -0
  50. package/dist/esm/{lib → view}/is.d.ts +3 -1
  51. package/dist/esm/{lib → view}/is.js +22 -6
  52. package/dist/esm/view/modify-record.d.ts +4 -0
  53. package/dist/esm/view/modify-record.js +10 -0
  54. package/dist/esm/view/point-move-element.d.ts +5 -0
  55. package/dist/esm/view/point-move-element.js +26 -0
  56. package/dist/esm/view/position.d.ts +15 -0
  57. package/dist/esm/view/position.js +79 -0
  58. package/dist/esm/view/rect.js +11 -0
  59. package/dist/esm/view/resize-element.d.ts +4 -0
  60. package/dist/esm/view/resize-element.js +255 -0
  61. package/dist/esm/{lib → view}/rotate.js +8 -13
  62. package/dist/esm/view/text.d.ts +1 -0
  63. package/dist/esm/view/text.js +4 -0
  64. package/dist/esm/{lib → view}/view-box.js +3 -1
  65. package/dist/esm/{lib → view}/view-calc.d.ts +16 -3
  66. package/dist/esm/{lib → view}/view-calc.js +127 -3
  67. package/dist/esm/view/view-content.d.ts +14 -0
  68. package/dist/esm/view/view-content.js +88 -0
  69. package/dist/index.global.js +1952 -347
  70. package/dist/index.global.min.js +1 -1
  71. package/package.json +2 -2
  72. package/dist/esm/lib/canvas.js +0 -81
  73. package/dist/esm/lib/controller.d.ts +0 -6
  74. package/dist/esm/lib/controller.js +0 -103
  75. package/dist/esm/lib/rect.js +0 -11
  76. package/dist/esm/lib/resize-element.d.ts +0 -2
  77. package/dist/esm/lib/resize-element.js +0 -101
  78. package/dist/esm/lib/store.d.ts +0 -11
  79. package/dist/esm/lib/uuid.js +0 -31
  80. /package/dist/esm/{lib → tool}/color.d.ts +0 -0
  81. /package/dist/esm/{lib → tool}/file.d.ts +0 -0
  82. /package/dist/esm/{lib → tool}/file.js +0 -0
  83. /package/dist/esm/{lib → tool}/image.d.ts +0 -0
  84. /package/dist/esm/{lib → tool}/image.js +0 -0
  85. /package/dist/esm/{lib → tool}/number.d.ts +0 -0
  86. /package/dist/esm/{lib → tool}/number.js +0 -0
  87. /package/dist/esm/{lib → view}/check.d.ts +0 -0
  88. /package/dist/esm/{lib → view}/config.d.ts +0 -0
  89. /package/dist/esm/{lib → view}/load.d.ts +0 -0
  90. /package/dist/esm/{lib → view}/load.js +0 -0
  91. /package/dist/esm/{lib → view}/matrix.d.ts +0 -0
  92. /package/dist/esm/{lib → view}/matrix.js +0 -0
  93. /package/dist/esm/{lib → view}/middleware.d.ts +0 -0
  94. /package/dist/esm/{lib → view}/middleware.js +0 -0
  95. /package/dist/esm/{lib → view}/parser.d.ts +0 -0
  96. /package/dist/esm/{lib → view}/parser.js +0 -0
  97. /package/dist/esm/{lib → view}/point.d.ts +0 -0
  98. /package/dist/esm/{lib → view}/point.js +0 -0
  99. /package/dist/esm/{lib → view}/rect.d.ts +0 -0
  100. /package/dist/esm/{lib → view}/rotate.d.ts +0 -0
  101. /package/dist/esm/{lib → view}/svg-path.d.ts +0 -0
  102. /package/dist/esm/{lib → view}/svg-path.js +0 -0
  103. /package/dist/esm/{lib → view}/vertex.d.ts +0 -0
  104. /package/dist/esm/{lib → view}/vertex.js +0 -0
  105. /package/dist/esm/{lib → view}/view-box.d.ts +0 -0
@@ -1,31 +1,46 @@
1
- export { delay, compose, throttle } from './lib/time';
2
- export { downloadImageFromCanvas, parseFileToBase64, pickFile, parseFileToText, downloadFileFromText } from './lib/file';
3
- export { toColorHexStr, toColorHexNum, isColorStr, colorNameToHex, colorToCSS, colorToLinearGradientCSS, mergeHexColorAlpha } from './lib/color';
4
- export { createUUID, isAssetId, createAssetId } from './lib/uuid';
5
- export { deepClone, sortDataAsserts, deepCloneElement, filterCompactData } from './lib/data';
6
- export { istype } from './lib/istype';
7
- export { loadImage, loadSVG, loadHTML } from './lib/load';
8
- export { is } from './lib/is';
9
- export { check } from './lib/check';
10
- export { createBoardContent, createContext2D, createOffscreenContext2D } from './lib/canvas';
11
- export { EventEmitter } from './lib/event';
12
- export { calcDistance, calcSpeed, equalPoint, equalTouchPoint, vaildPoint, vaildTouchPoint, getCenterFromTwoPoints } from './lib/point';
13
- export { Store } from './lib/store';
14
- export { getViewScaleInfoFromSnapshot, getViewSizeInfoFromSnapshot } from './lib/middleware';
15
- export { Context2D } from './lib/context2d';
16
- export { rotateElement, parseRadianToAngle, parseAngleToRadian, rotateElementVertexes, getElementRotateVertexes, calcElementCenter, calcElementCenterFromVertexes, rotatePointInGroup, limitAngle } from './lib/rotate';
17
- export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, calcElementListSize } from './lib/element';
18
- export { checkRectIntersect } from './lib/rect';
19
- export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo } from './lib/view-calc';
20
- export { rotatePoint, rotateVertexes, rotateByCenter } from './lib/rotate';
21
- export { getElementVertexes, calcElementVertexesInGroup, calcElementVertexesQueueInGroup, calcElementQueueVertexesQueueInGroup } from './lib/vertex';
22
- export { calcElementSizeController } from './lib/controller';
23
- export { generateSVGPath, parseSVGPath } from './lib/svg-path';
24
- export { generateHTML, parseHTML } from './lib/html';
25
- export { compressImage } from './lib/image';
26
- export { formatNumber } from './lib/number';
27
- export { matrixToAngle, matrixToRadian } from './lib/matrix';
28
- export { getDefaultElementDetailConfig, getDefaultElementRectDetail } from './lib/config';
29
- export { calcViewBoxSize } from './lib/view-box';
30
- export { createElement, insertElementToListByPosition, deleteElementInListByPosition, deleteElementInList, moveElementPosition, updateElementInList } from './lib/handle-element';
31
- export { deepResizeGroupElement } from './lib/resize-element';
1
+ export { delay, compose, throttle, debounce } from './tool/time';
2
+ export { downloadImageFromCanvas, parseFileToBase64, pickFile, parseFileToText, downloadFileFromText } from './tool/file';
3
+ export { toColorHexStr, toColorHexNum, isColorStr, colorNameToHex, colorToCSS, colorToLinearGradientCSS, mergeHexColorAlpha } from './tool/color';
4
+ export { createUUID, isAssetId, createAssetId } from './tool/uuid';
5
+ export { deepClone, sortDataAsserts, deepCloneElement, deepCloneData, filterCompactData } from './view/data';
6
+ export { istype } from './tool/istype';
7
+ export { loadImage, loadSVG, loadHTML } from './view/load';
8
+ export { is } from './view/is';
9
+ export { check } from './view/check';
10
+ export { createBoardContent, createContext2D, createOffscreenContext2D } from './view/canvas';
11
+ export { EventEmitter } from './tool/event';
12
+ export { calcDistance, calcSpeed, equalPoint, equalTouchPoint, vaildPoint, vaildTouchPoint, getCenterFromTwoPoints } from './view/point';
13
+ export { Store } from './tool/store';
14
+ export { getViewScaleInfoFromSnapshot, getViewSizeInfoFromSnapshot } from './view/middleware';
15
+ export { Context2D } from './view/context2d';
16
+ export { rotateElement, parseRadianToAngle, parseAngleToRadian, rotateElementVertexes, getElementRotateVertexes, calcElementCenter, calcElementCenterFromVertexes, rotatePointInGroup, limitAngle, calcRadian } from './view/rotate';
17
+ export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getGroupQueueByElementPosition, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, getElementPositionMapFromList, calcElementListSize, isSameElementSize } from './view/element';
18
+ export { checkRectIntersect } from './view/rect';
19
+ export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo, calcElementViewRectInfo, calcElementOriginRectInfo, originRectInfoToRangeRectInfo, isViewPointInElementSize, isViewPointInVertexes } from './view/view-calc';
20
+ export { rotatePoint, rotateVertexes, rotateByCenter } from './view/rotate';
21
+ export { getElementVertexes, calcElementVertexesInGroup, calcElementVertexesQueueInGroup, calcElementQueueVertexesQueueInGroup } from './view/vertex';
22
+ export { calcElementSizeController, calcLayoutSizeController } from './view/controller';
23
+ export { generateSVGPath, parseSVGPath } from './view/svg-path';
24
+ export { generateHTML, parseHTML } from './tool/html';
25
+ export { compressImage } from './tool/image';
26
+ export { formatNumber } from './tool/number';
27
+ export { matrixToAngle, matrixToRadian } from './view/matrix';
28
+ export { getDefaultElementDetailConfig, getDefaultElementRectDetail } from './view/config';
29
+ export { calcViewBoxSize } from './view/view-box';
30
+ export { mergeElement, createElement, insertElementToListByPosition, deleteElementInListByPosition, deleteElementInList, moveElementPosition, updateElementInList, updateElementInListByPosition } from './view/handle-element';
31
+ export { resizeEffectGroupElement } from './view/resize-element';
32
+ export { calcViewCenterContent, calcViewCenter } from './view/view-content';
33
+ export { toFlattenElement, toFlattenLayout, toFlattenGlobal } from './view/modify-record';
34
+ export { enhanceFontFamliy } from './view/text';
35
+ export { flatElementList } from './view/flat';
36
+ export { groupElementsByPosition, ungroupElementsByPosition } from './view/group';
37
+ export { calcPointMoveElementInGroup } from './view/point-move-element';
38
+ export { mergeLayout } from './view/handle-layout';
39
+ export { mergeGlobal } from './view/handle-global';
40
+ export { calcRevertMovePosition, calcResultMovePosition } from './view/position';
41
+ export { merge } from './tool/merge';
42
+ export { omit } from './tool/omit';
43
+ export { elementToBoxInfo } from './view/box';
44
+ export { get, set, toPath } from './tool/get-set-del';
45
+ export { flatObject } from './tool/flat-object';
46
+ export { unflatObject } from './tool/unflat-object';
package/dist/esm/index.js CHANGED
@@ -1,31 +1,46 @@
1
- export { delay, compose, throttle } from './lib/time';
2
- export { downloadImageFromCanvas, parseFileToBase64, pickFile, parseFileToText, downloadFileFromText } from './lib/file';
3
- export { toColorHexStr, toColorHexNum, isColorStr, colorNameToHex, colorToCSS, colorToLinearGradientCSS, mergeHexColorAlpha } from './lib/color';
4
- export { createUUID, isAssetId, createAssetId } from './lib/uuid';
5
- export { deepClone, sortDataAsserts, deepCloneElement, filterCompactData } from './lib/data';
6
- export { istype } from './lib/istype';
7
- export { loadImage, loadSVG, loadHTML } from './lib/load';
8
- export { is } from './lib/is';
9
- export { check } from './lib/check';
10
- export { createBoardContent, createContext2D, createOffscreenContext2D } from './lib/canvas';
11
- export { EventEmitter } from './lib/event';
12
- export { calcDistance, calcSpeed, equalPoint, equalTouchPoint, vaildPoint, vaildTouchPoint, getCenterFromTwoPoints } from './lib/point';
13
- export { Store } from './lib/store';
14
- export { getViewScaleInfoFromSnapshot, getViewSizeInfoFromSnapshot } from './lib/middleware';
15
- export { Context2D } from './lib/context2d';
16
- export { rotateElement, parseRadianToAngle, parseAngleToRadian, rotateElementVertexes, getElementRotateVertexes, calcElementCenter, calcElementCenterFromVertexes, rotatePointInGroup, limitAngle } from './lib/rotate';
17
- export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, calcElementListSize } from './lib/element';
18
- export { checkRectIntersect } from './lib/rect';
19
- export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo } from './lib/view-calc';
20
- export { rotatePoint, rotateVertexes, rotateByCenter } from './lib/rotate';
21
- export { getElementVertexes, calcElementVertexesInGroup, calcElementVertexesQueueInGroup, calcElementQueueVertexesQueueInGroup } from './lib/vertex';
22
- export { calcElementSizeController } from './lib/controller';
23
- export { generateSVGPath, parseSVGPath } from './lib/svg-path';
24
- export { generateHTML, parseHTML } from './lib/html';
25
- export { compressImage } from './lib/image';
26
- export { formatNumber } from './lib/number';
27
- export { matrixToAngle, matrixToRadian } from './lib/matrix';
28
- export { getDefaultElementDetailConfig, getDefaultElementRectDetail } from './lib/config';
29
- export { calcViewBoxSize } from './lib/view-box';
30
- export { createElement, insertElementToListByPosition, deleteElementInListByPosition, deleteElementInList, moveElementPosition, updateElementInList } from './lib/handle-element';
31
- export { deepResizeGroupElement } from './lib/resize-element';
1
+ export { delay, compose, throttle, debounce } from './tool/time';
2
+ export { downloadImageFromCanvas, parseFileToBase64, pickFile, parseFileToText, downloadFileFromText } from './tool/file';
3
+ export { toColorHexStr, toColorHexNum, isColorStr, colorNameToHex, colorToCSS, colorToLinearGradientCSS, mergeHexColorAlpha } from './tool/color';
4
+ export { createUUID, isAssetId, createAssetId } from './tool/uuid';
5
+ export { deepClone, sortDataAsserts, deepCloneElement, deepCloneData, filterCompactData } from './view/data';
6
+ export { istype } from './tool/istype';
7
+ export { loadImage, loadSVG, loadHTML } from './view/load';
8
+ export { is } from './view/is';
9
+ export { check } from './view/check';
10
+ export { createBoardContent, createContext2D, createOffscreenContext2D } from './view/canvas';
11
+ export { EventEmitter } from './tool/event';
12
+ export { calcDistance, calcSpeed, equalPoint, equalTouchPoint, vaildPoint, vaildTouchPoint, getCenterFromTwoPoints } from './view/point';
13
+ export { Store } from './tool/store';
14
+ export { getViewScaleInfoFromSnapshot, getViewSizeInfoFromSnapshot } from './view/middleware';
15
+ export { Context2D } from './view/context2d';
16
+ export { rotateElement, parseRadianToAngle, parseAngleToRadian, rotateElementVertexes, getElementRotateVertexes, calcElementCenter, calcElementCenterFromVertexes, rotatePointInGroup, limitAngle, calcRadian } from './view/rotate';
17
+ export { getSelectedElementUUIDs, validateElements, calcElementsContextSize, calcElementsViewInfo, getElemenetsAssetIds, findElementFromList, findElementsFromList, findElementFromListByPosition, findElementQueueFromListByPosition, findElementsFromListByPositions, getGroupQueueFromList, getGroupQueueByElementPosition, getElementSize, mergeElementAsset, filterElementAsset, isResourceElement, getElementPositionFromList, getElementPositionMapFromList, calcElementListSize, isSameElementSize } from './view/element';
18
+ export { checkRectIntersect } from './view/rect';
19
+ export { viewScale, viewScroll, calcViewElementSize, calcViewPointSize, calcViewVertexes, isViewPointInElement, getViewPointAtElement, isElementInView, calcViewScaleInfo, calcElementViewRectInfo, calcElementOriginRectInfo, originRectInfoToRangeRectInfo, isViewPointInElementSize, isViewPointInVertexes } from './view/view-calc';
20
+ export { rotatePoint, rotateVertexes, rotateByCenter } from './view/rotate';
21
+ export { getElementVertexes, calcElementVertexesInGroup, calcElementVertexesQueueInGroup, calcElementQueueVertexesQueueInGroup } from './view/vertex';
22
+ export { calcElementSizeController, calcLayoutSizeController } from './view/controller';
23
+ export { generateSVGPath, parseSVGPath } from './view/svg-path';
24
+ export { generateHTML, parseHTML } from './tool/html';
25
+ export { compressImage } from './tool/image';
26
+ export { formatNumber } from './tool/number';
27
+ export { matrixToAngle, matrixToRadian } from './view/matrix';
28
+ export { getDefaultElementDetailConfig, getDefaultElementRectDetail } from './view/config';
29
+ export { calcViewBoxSize } from './view/view-box';
30
+ export { mergeElement, createElement, insertElementToListByPosition, deleteElementInListByPosition, deleteElementInList, moveElementPosition, updateElementInList, updateElementInListByPosition } from './view/handle-element';
31
+ export { resizeEffectGroupElement } from './view/resize-element';
32
+ export { calcViewCenterContent, calcViewCenter } from './view/view-content';
33
+ export { toFlattenElement, toFlattenLayout, toFlattenGlobal } from './view/modify-record';
34
+ export { enhanceFontFamliy } from './view/text';
35
+ export { flatElementList } from './view/flat';
36
+ export { groupElementsByPosition, ungroupElementsByPosition } from './view/group';
37
+ export { calcPointMoveElementInGroup } from './view/point-move-element';
38
+ export { mergeLayout } from './view/handle-layout';
39
+ export { mergeGlobal } from './view/handle-global';
40
+ export { calcRevertMovePosition, calcResultMovePosition } from './view/position';
41
+ export { merge } from './tool/merge';
42
+ export { omit } from './tool/omit';
43
+ export { elementToBoxInfo } from './view/box';
44
+ export { get, set, toPath } from './tool/get-set-del';
45
+ export { flatObject } from './tool/flat-object';
46
+ export { unflatObject } from './tool/unflat-object';
@@ -1,11 +1,11 @@
1
1
  export function toColorHexNum(color) {
2
- return parseInt(color.replace(/^\#/, '0x'));
2
+ return parseInt(color.replace(/^#/, '0x'));
3
3
  }
4
4
  export function toColorHexStr(color) {
5
5
  return '#' + color.toString(16);
6
6
  }
7
7
  export function isColorStr(color) {
8
- return typeof color === 'string' && (/^\#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(color) || /^[a-z]{1,}$/i.test(color));
8
+ return (typeof color === 'string' && (/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(color) || /^[a-z]{1,}$/i.test(color)));
9
9
  }
10
10
  const colorNameMap = {
11
11
  aliceblue: '#f0f8ff',
@@ -163,6 +163,9 @@ export function colorToCSS(color) {
163
163
  if (typeof color === 'string') {
164
164
  css = color;
165
165
  }
166
+ else if ((color === null || color === void 0 ? void 0 : color.stops.length) === 1) {
167
+ css = color.stops[0].color;
168
+ }
166
169
  else if ((color === null || color === void 0 ? void 0 : color.type) === 'linear-gradient') {
167
170
  const items = [];
168
171
  if (typeof color.angle === 'number') {
@@ -213,14 +216,14 @@ export function mergeHexColorAlpha(hex, alpha) {
213
216
  return hex;
214
217
  }
215
218
  let hexAlpha = 1;
216
- const regHex1 = /^\#[0-9a-f]{6,6}$/i;
217
- const regHex2 = /^\#[0-9a-f]{8,8}$/i;
219
+ const regHex1 = /^#[0-9a-f]{6,6}$/i;
220
+ const regHex2 = /^#[0-9a-f]{8,8}$/i;
218
221
  let result = hex;
219
222
  if (regHex1.test(hex)) {
220
- hexAlpha = parseInt(hex.substring(5, 7).replace(/^\#/, '0x'));
223
+ hexAlpha = parseInt(hex.substring(5, 7).replace(/^#/, '0x'));
221
224
  }
222
225
  else if (regHex2.test(hex)) {
223
- hexAlpha = parseInt(hex.substring(7, 9).replace(/^\#/, '0x'));
226
+ hexAlpha = parseInt(hex.substring(7, 9).replace(/^#/, '0x'));
224
227
  result = hex.substring(0, 7);
225
228
  }
226
229
  hexAlpha = hexAlpha * alpha;
@@ -7,4 +7,5 @@ export declare class EventEmitter<T extends Record<string, any>> implements Util
7
7
  trigger<K extends keyof T>(eventKey: K, e?: T[K]): boolean;
8
8
  has<K extends keyof T>(name: K | string): boolean;
9
9
  destroy(): void;
10
+ clear(): void;
10
11
  }
@@ -61,6 +61,9 @@ export class EventEmitter {
61
61
  return false;
62
62
  }
63
63
  destroy() {
64
+ this.clear();
65
+ }
66
+ clear() {
64
67
  __classPrivateFieldGet(this, _EventEmitter_listeners, "f").clear();
65
68
  }
66
69
  }
@@ -0,0 +1,6 @@
1
+ type FlattenedObject = Record<string, any>;
2
+ type FlatObjectOptions = {
3
+ ignorePaths?: string[];
4
+ };
5
+ export declare function flatObject<T extends Record<string, any>>(obj: T, opts?: FlatObjectOptions): FlattenedObject;
6
+ export {};
@@ -0,0 +1,28 @@
1
+ function flattenObject(obj, parentKey = '', result = {}, opts) {
2
+ Object.keys(obj).forEach((key) => {
3
+ var _a;
4
+ const currentKey = parentKey ? `${parentKey}${isArrayIndex(key) ? `[${key}]` : `.${key}`}` : key;
5
+ if (!((_a = opts === null || opts === void 0 ? void 0 : opts.ignorePaths) === null || _a === void 0 ? void 0 : _a.includes(currentKey))) {
6
+ const value = obj[key];
7
+ if (isFlattenable(value)) {
8
+ flattenObject(value, Array.isArray(value) ? currentKey : currentKey, result, opts);
9
+ }
10
+ else {
11
+ result[currentKey] = value;
12
+ }
13
+ }
14
+ });
15
+ return result;
16
+ }
17
+ function isFlattenable(value) {
18
+ return (typeof value === 'object' && value !== null && !(value instanceof Date)) || Array.isArray(value);
19
+ }
20
+ function isArrayIndex(key) {
21
+ return /^\d+$/.test(key) && !isNaN(Number(key));
22
+ }
23
+ export function flatObject(obj, opts) {
24
+ if (typeof obj !== 'object' || obj === null) {
25
+ return { '': obj };
26
+ }
27
+ return flattenObject(obj, '', {}, opts);
28
+ }
@@ -0,0 +1,4 @@
1
+ export declare function toPath(path: string | string[]): string[];
2
+ export declare function get<T = any, D = any>(obj: T, path: string | string[], defaultValue?: D): D | undefined;
3
+ export declare function set<T = any>(obj: T, path: string | string[], value: any): T;
4
+ export declare function del<T = any>(obj: T, path: string | string[]): T;
@@ -0,0 +1,65 @@
1
+ export function toPath(path) {
2
+ if (Array.isArray(path))
3
+ return [...path];
4
+ return path.split(/\.|\[|\]/).filter((key) => key !== '');
5
+ }
6
+ export function get(obj, path, defaultValue) {
7
+ if (!path) {
8
+ return undefined;
9
+ }
10
+ const pathArray = toPath(path);
11
+ let current = obj;
12
+ for (const key of pathArray) {
13
+ if (current === null || current === undefined) {
14
+ return defaultValue;
15
+ }
16
+ current = current[key];
17
+ }
18
+ return current !== undefined ? current : defaultValue;
19
+ }
20
+ export function set(obj, path, value) {
21
+ const pathArray = toPath(path);
22
+ if (pathArray.length === 0) {
23
+ return obj;
24
+ }
25
+ let current = obj;
26
+ if (current) {
27
+ for (let i = 0; i < pathArray.length; i++) {
28
+ const key = pathArray[i];
29
+ if (i === pathArray.length - 1) {
30
+ current[key] = value;
31
+ break;
32
+ }
33
+ if (current && ((current === null || current === void 0 ? void 0 : current[key]) === undefined || typeof (current === null || current === void 0 ? void 0 : current[key]) !== 'object' || (current === null || current === void 0 ? void 0 : current[key]) === null)) {
34
+ const nextKey = pathArray[i + 1];
35
+ const isNextNumeric = /^\d+$/.test(nextKey);
36
+ current[key] = isNextNumeric ? [] : {};
37
+ }
38
+ current = current === null || current === void 0 ? void 0 : current[key];
39
+ }
40
+ }
41
+ return obj;
42
+ }
43
+ export function del(obj, path) {
44
+ const pathArray = toPath(path);
45
+ if (pathArray.length === 0) {
46
+ return obj;
47
+ }
48
+ let current = obj;
49
+ if (current) {
50
+ for (let i = 0; i < pathArray.length; i++) {
51
+ const key = pathArray[i];
52
+ if (i === pathArray.length - 1) {
53
+ delete current[key];
54
+ break;
55
+ }
56
+ if (current && ((current === null || current === void 0 ? void 0 : current[key]) === undefined || typeof (current === null || current === void 0 ? void 0 : current[key]) !== 'object' || (current === null || current === void 0 ? void 0 : current[key]) === null)) {
57
+ const nextKey = pathArray[i + 1];
58
+ const isNextNumeric = /^\d+$/.test(nextKey);
59
+ current[key] = isNextNumeric ? [] : {};
60
+ }
61
+ current = current === null || current === void 0 ? void 0 : current[key];
62
+ }
63
+ }
64
+ return obj;
65
+ }
@@ -1,3 +1,3 @@
1
1
  import { HTMLNode } from '@idraw/types';
2
2
  export declare function parseHTML(html: string): HTMLNode[];
3
- export declare function generateHTML(htmlNodes: HTMLNode[]): HTMLNode;
3
+ export declare function generateHTML(htmlNodes: HTMLNode[]): string;
@@ -140,7 +140,7 @@ export function parseHTML(html) {
140
140
  }
141
141
  function attrString(attrs) {
142
142
  const buff = [];
143
- for (let key in attrs) {
143
+ for (const key in attrs) {
144
144
  buff.push(key + '="' + attrs[key] + '"');
145
145
  }
146
146
  if (!buff.length) {
@@ -153,7 +153,11 @@ function stringify(buff, htmlNode) {
153
153
  case 'text':
154
154
  return buff + htmlNode.textContent;
155
155
  case 'element':
156
- buff += '<' + htmlNode.name + (htmlNode.attributes ? attrString(htmlNode.attributes) : '') + (htmlNode.isVoid ? '/>' : '>');
156
+ buff +=
157
+ '<' +
158
+ htmlNode.name +
159
+ (htmlNode.attributes ? attrString(htmlNode.attributes) : '') +
160
+ (htmlNode.isVoid ? '/>' : '>');
157
161
  if (htmlNode.isVoid) {
158
162
  return buff;
159
163
  }
@@ -4,6 +4,7 @@ export declare const istype: {
4
4
  json(data: any): boolean;
5
5
  function(data: any): boolean;
6
6
  asyncFunction(data: any): boolean;
7
+ boolean(data: any): boolean;
7
8
  string(data: any): boolean;
8
9
  number(data: any): boolean;
9
10
  undefined(data: any): boolean;
@@ -20,6 +20,9 @@ export const istype = {
20
20
  asyncFunction(data) {
21
21
  return parsePrototype(data) === 'AsyncFunction';
22
22
  },
23
+ boolean(data) {
24
+ return parsePrototype(data) === 'Boolean';
25
+ },
23
26
  string(data) {
24
27
  return parsePrototype(data) === 'String';
25
28
  },
@@ -0,0 +1 @@
1
+ export declare function merge<T extends Record<string, any> = any, U extends Record<string, any> = any>(target: T, source: U): T & U;
@@ -0,0 +1,17 @@
1
+ export function merge(target, source) {
2
+ const result = target;
3
+ for (const key in source) {
4
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
5
+ if (typeof source[key] === 'object' &&
6
+ source[key] !== null &&
7
+ typeof result[key] === 'object' &&
8
+ result[key] !== null) {
9
+ result[key] = merge(result[key], source[key]);
10
+ }
11
+ else {
12
+ result[key] = source[key];
13
+ }
14
+ }
15
+ }
16
+ return target;
17
+ }
@@ -0,0 +1 @@
1
+ export declare function omit<T extends Record<string, any>, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
@@ -0,0 +1,7 @@
1
+ export function omit(obj, keys) {
2
+ const result = Object.assign({}, obj);
3
+ for (const key of keys) {
4
+ delete result[key];
5
+ }
6
+ return result;
7
+ }
@@ -0,0 +1,16 @@
1
+ export declare class Store<T extends Record<string | symbol, any> = Record<string | symbol, any>, S extends Record<string | symbol, any> = Record<string | symbol, any>> {
2
+ #private;
3
+ constructor(opts: {
4
+ defaultStorage: T;
5
+ defaultStatic?: S;
6
+ });
7
+ set<K extends keyof T>(name: K, value: T[K]): void;
8
+ get<K extends keyof T>(name: K): T[K];
9
+ setStatic<K extends keyof S>(name: K, value: S[K]): void;
10
+ getStatic<K extends keyof S>(name: K): S[K] | undefined;
11
+ getSnapshot(opts?: {
12
+ deepClone?: boolean;
13
+ }): T;
14
+ clear(): void;
15
+ destroy(): void;
16
+ }
@@ -9,15 +9,17 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _Store_instances, _Store_temp, _Store_backUpDefaultStorage, _Store_createTempStorage;
13
- import { deepClone } from './data';
12
+ var _Store_instances, _Store_temp, _Store_backUpDefaultStorage, _Store_static, _Store_createTempStorage;
13
+ import { deepClone } from '../view/data';
14
14
  export class Store {
15
15
  constructor(opts) {
16
16
  _Store_instances.add(this);
17
17
  _Store_temp.set(this, void 0);
18
18
  _Store_backUpDefaultStorage.set(this, void 0);
19
+ _Store_static.set(this, void 0);
19
20
  __classPrivateFieldSet(this, _Store_backUpDefaultStorage, deepClone(opts.defaultStorage), "f");
20
21
  __classPrivateFieldSet(this, _Store_temp, __classPrivateFieldGet(this, _Store_instances, "m", _Store_createTempStorage).call(this), "f");
22
+ __classPrivateFieldSet(this, _Store_static, opts.defaultStatic || {}, "f");
21
23
  }
22
24
  set(name, value) {
23
25
  __classPrivateFieldGet(this, _Store_temp, "f")[name] = value;
@@ -25,16 +27,26 @@ export class Store {
25
27
  get(name) {
26
28
  return __classPrivateFieldGet(this, _Store_temp, "f")[name];
27
29
  }
28
- getSnapshot() {
29
- return deepClone(__classPrivateFieldGet(this, _Store_temp, "f"));
30
+ setStatic(name, value) {
31
+ __classPrivateFieldGet(this, _Store_static, "f")[name] = value;
32
+ }
33
+ getStatic(name) {
34
+ return __classPrivateFieldGet(this, _Store_static, "f")[name];
35
+ }
36
+ getSnapshot(opts) {
37
+ if ((opts === null || opts === void 0 ? void 0 : opts.deepClone) === true) {
38
+ return deepClone(__classPrivateFieldGet(this, _Store_temp, "f"));
39
+ }
40
+ return Object.assign({}, __classPrivateFieldGet(this, _Store_temp, "f"));
30
41
  }
31
42
  clear() {
32
43
  __classPrivateFieldSet(this, _Store_temp, __classPrivateFieldGet(this, _Store_instances, "m", _Store_createTempStorage).call(this), "f");
33
44
  }
34
45
  destroy() {
35
46
  __classPrivateFieldSet(this, _Store_temp, null, "f");
47
+ __classPrivateFieldSet(this, _Store_static, null, "f");
36
48
  }
37
49
  }
38
- _Store_temp = new WeakMap(), _Store_backUpDefaultStorage = new WeakMap(), _Store_instances = new WeakSet(), _Store_createTempStorage = function _Store_createTempStorage() {
50
+ _Store_temp = new WeakMap(), _Store_backUpDefaultStorage = new WeakMap(), _Store_static = new WeakMap(), _Store_instances = new WeakSet(), _Store_createTempStorage = function _Store_createTempStorage() {
39
51
  return deepClone(__classPrivateFieldGet(this, _Store_backUpDefaultStorage, "f"));
40
52
  };
@@ -2,4 +2,5 @@ type Middleware = (ctx: any, next: Middleware) => any;
2
2
  export declare function compose(middleware: Middleware[]): (context: any, next?: Middleware) => any;
3
3
  export declare function delay(time: number): Promise<void>;
4
4
  export declare function throttle(fn: (...args: any[]) => any, timeout: number): (...args: any[]) => any;
5
+ export declare function debounce(fn: (...args: any[]) => any, timeout: number): (...args: any[]) => any;
5
6
  export {};
@@ -27,7 +27,7 @@ export function delay(time) {
27
27
  export function throttle(fn, timeout) {
28
28
  let timer = -1;
29
29
  return function (...args) {
30
- if (timer > 0) {
30
+ if (timer >= 0) {
31
31
  return;
32
32
  }
33
33
  timer = setTimeout(() => {
@@ -36,3 +36,15 @@ export function throttle(fn, timeout) {
36
36
  }, timeout);
37
37
  };
38
38
  }
39
+ export function debounce(fn, timeout) {
40
+ let timer = -1;
41
+ return function (...args) {
42
+ if (timer >= 0) {
43
+ window.clearTimeout(timer);
44
+ }
45
+ timer = setTimeout(() => {
46
+ fn(...args);
47
+ timer = -1;
48
+ }, timeout);
49
+ };
50
+ }
@@ -0,0 +1,3 @@
1
+ type NestedStructure = object | unknown[];
2
+ export declare function unflatObject<T extends Record<string, unknown>>(flatObj: T): NestedStructure;
3
+ export {};
@@ -0,0 +1,91 @@
1
+ export function unflatObject(flatObj) {
2
+ const result = {};
3
+ for (const [flatKey, value] of Object.entries(flatObj)) {
4
+ const pathParts = parseKeyToPath(flatKey);
5
+ buildNestedStructure(result, pathParts, value);
6
+ }
7
+ return result;
8
+ }
9
+ function parseKeyToPath(flatKey) {
10
+ const regex = /([\w-]+)|\[(\d+)\]/g;
11
+ const pathParts = [];
12
+ let match;
13
+ while ((match = regex.exec(flatKey)) !== null) {
14
+ const prop = match[1] || match[2];
15
+ if (prop) {
16
+ pathParts.push(prop);
17
+ }
18
+ }
19
+ return pathParts;
20
+ }
21
+ function buildNestedStructure(currentObj, pathParts, value) {
22
+ let currentLevel = currentObj;
23
+ for (let i = 0; i < pathParts.length; i++) {
24
+ const part = pathParts[i];
25
+ const isArrayPart = isArrayIndex(part);
26
+ const isLast = i === pathParts.length - 1;
27
+ try {
28
+ if (isArrayPart) {
29
+ validateArrayPath(currentLevel, part);
30
+ }
31
+ else {
32
+ validateObjectPath(currentLevel, part);
33
+ }
34
+ }
35
+ catch (e) {
36
+ throw new Error(`Structure conflict at path '${pathParts.slice(0, i + 1).join('.')}': ${e.message}`);
37
+ }
38
+ if (isLast) {
39
+ assignValue(currentLevel, part, value);
40
+ }
41
+ else {
42
+ currentLevel = prepareNextLevel(currentLevel, part, pathParts[i + 1]);
43
+ }
44
+ }
45
+ }
46
+ function isArrayIndex(key) {
47
+ return /^\d+$/.test(key);
48
+ }
49
+ function validateArrayPath(obj, index) {
50
+ if (!Array.isArray(obj)) {
51
+ throw new Error(`Expected array but found ${typeof obj}`);
52
+ }
53
+ const idx = Number(index);
54
+ if (idx > obj.length) {
55
+ obj.length = idx + 1;
56
+ }
57
+ }
58
+ function validateObjectPath(obj, key) {
59
+ if (Array.isArray(obj)) {
60
+ throw new Error(`Cannot create object property '${key}' on array`);
61
+ }
62
+ if (typeof obj !== 'object' || obj === null) {
63
+ throw new Error(`Invalid structure for property '${key}'`);
64
+ }
65
+ }
66
+ function prepareNextLevel(current, part, nextPart) {
67
+ const isNextArray = nextPart ? isArrayIndex(nextPart) : false;
68
+ if (Array.isArray(current)) {
69
+ const index = Number(part);
70
+ if (!current[index]) {
71
+ current[index] = isNextArray ? [] : {};
72
+ }
73
+ return current[index];
74
+ }
75
+ if (!current[part]) {
76
+ current[part] = isNextArray ? [] : {};
77
+ }
78
+ return current[part];
79
+ }
80
+ function assignValue(target, key, value) {
81
+ if (Array.isArray(target)) {
82
+ const index = Number(key);
83
+ if (index >= target.length) {
84
+ target.length = index + 1;
85
+ }
86
+ target[index] = value;
87
+ }
88
+ else {
89
+ target[key] = value;
90
+ }
91
+ }
@@ -1,3 +1,3 @@
1
1
  export declare function createUUID(): string;
2
- export declare function createAssetId(assetStr: string): string;
2
+ export declare function createAssetId(assetStr: string, elemUUID: string): string;
3
3
  export declare function isAssetId(id: any | string): boolean;