@idraw/core 0.4.3 → 1.0.0-alpha.1

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 (149) hide show
  1. package/dist/esm/board/index.d.ts +2 -2
  2. package/dist/esm/board/index.js +23 -12
  3. package/dist/esm/board/sharer.d.ts +3 -3
  4. package/dist/esm/board/sharer.js +10 -10
  5. package/dist/esm/board/viewer.d.ts +3 -3
  6. package/dist/esm/board/viewer.js +14 -14
  7. package/dist/esm/board/watcher.d.ts +3 -3
  8. package/dist/esm/board/watcher.js +68 -43
  9. package/dist/esm/core.d.ts +52 -0
  10. package/dist/esm/core.js +393 -0
  11. package/dist/esm/cursor/cursor-image.d.ts +2 -0
  12. package/dist/esm/cursor/cursor-image.js +2 -0
  13. package/dist/esm/cursor/cursor.js +60 -24
  14. package/dist/esm/index.d.ts +12 -61
  15. package/dist/esm/index.js +11 -389
  16. package/dist/esm/middlewares/common.d.ts +4 -0
  17. package/dist/esm/middlewares/common.js +13 -0
  18. package/dist/esm/middlewares/creator/dom.d.ts +11 -0
  19. package/dist/esm/middlewares/creator/dom.js +52 -0
  20. package/dist/esm/middlewares/creator/index.d.ts +5 -0
  21. package/dist/esm/middlewares/creator/index.js +136 -0
  22. package/dist/esm/middlewares/creator/static.d.ts +14 -0
  23. package/dist/esm/middlewares/creator/static.js +19 -0
  24. package/dist/esm/middlewares/creator/styles.d.ts +4 -0
  25. package/dist/esm/middlewares/creator/styles.js +32 -0
  26. package/dist/esm/middlewares/creator/types.d.ts +7 -0
  27. package/dist/esm/middlewares/creator/types.js +1 -0
  28. package/dist/esm/middlewares/creator/util.d.ts +10 -0
  29. package/dist/esm/middlewares/creator/util.js +52 -0
  30. package/dist/esm/middlewares/dragger/index.js +5 -5
  31. package/dist/esm/middlewares/info/draw-info.d.ts +11 -11
  32. package/dist/esm/middlewares/info/draw-info.js +18 -18
  33. package/dist/esm/middlewares/info/index.d.ts +2 -1
  34. package/dist/esm/middlewares/info/index.js +48 -51
  35. package/dist/esm/middlewares/info/static.d.ts +6 -0
  36. package/dist/esm/middlewares/info/{config.js → static.js} +6 -1
  37. package/dist/esm/middlewares/info/types.d.ts +2 -2
  38. package/dist/esm/middlewares/layout-selector/dom.d.ts +10 -0
  39. package/dist/esm/middlewares/layout-selector/dom.js +108 -0
  40. package/dist/esm/middlewares/layout-selector/index.d.ts +1 -1
  41. package/dist/esm/middlewares/layout-selector/index.js +89 -141
  42. package/dist/esm/middlewares/layout-selector/static.d.ts +32 -0
  43. package/dist/esm/middlewares/layout-selector/static.js +39 -0
  44. package/dist/esm/middlewares/layout-selector/styles.d.ts +4 -0
  45. package/dist/esm/middlewares/layout-selector/styles.js +127 -0
  46. package/dist/esm/middlewares/layout-selector/types.d.ts +6 -6
  47. package/dist/esm/middlewares/layout-selector/types.js +2 -2
  48. package/dist/esm/middlewares/layout-selector/util.d.ts +4 -4
  49. package/dist/esm/middlewares/layout-selector/util.js +19 -19
  50. package/dist/esm/middlewares/path-creator/dom.d.ts +29 -0
  51. package/dist/esm/middlewares/path-creator/dom.js +145 -0
  52. package/dist/esm/middlewares/path-creator/index.d.ts +5 -0
  53. package/dist/esm/middlewares/path-creator/index.js +203 -0
  54. package/dist/esm/middlewares/path-creator/static.d.ts +23 -0
  55. package/dist/esm/middlewares/path-creator/static.js +49 -0
  56. package/dist/esm/middlewares/path-creator/types.d.ts +1 -0
  57. package/dist/esm/middlewares/path-editor/calc.d.ts +6 -0
  58. package/dist/esm/middlewares/path-editor/calc.js +51 -0
  59. package/dist/esm/middlewares/path-editor/dom.d.ts +32 -0
  60. package/dist/esm/middlewares/path-editor/dom.js +575 -0
  61. package/dist/esm/middlewares/path-editor/draw.d.ts +7 -0
  62. package/dist/esm/middlewares/path-editor/draw.js +113 -0
  63. package/dist/esm/middlewares/path-editor/index.d.ts +5 -0
  64. package/dist/esm/middlewares/path-editor/index.js +312 -0
  65. package/dist/esm/middlewares/path-editor/parse.d.ts +5 -0
  66. package/dist/esm/middlewares/path-editor/parse.js +37 -0
  67. package/dist/esm/middlewares/path-editor/static.d.ts +34 -0
  68. package/dist/esm/middlewares/path-editor/static.js +82 -0
  69. package/dist/esm/middlewares/path-editor/types.d.ts +26 -0
  70. package/dist/esm/middlewares/path-editor/types.js +1 -0
  71. package/dist/esm/middlewares/path-editor/util.d.ts +5 -0
  72. package/dist/esm/middlewares/path-editor/util.js +21 -0
  73. package/dist/esm/middlewares/pointer/index.js +5 -5
  74. package/dist/esm/middlewares/pointer/types.d.ts +2 -2
  75. package/dist/esm/middlewares/ruler/index.d.ts +2 -0
  76. package/dist/esm/middlewares/ruler/index.js +12 -19
  77. package/dist/esm/middlewares/ruler/static.d.ts +8 -0
  78. package/dist/esm/middlewares/ruler/{config.js → static.js} +16 -3
  79. package/dist/esm/middlewares/ruler/types.d.ts +2 -2
  80. package/dist/esm/middlewares/ruler/util.d.ts +6 -6
  81. package/dist/esm/middlewares/ruler/util.js +31 -31
  82. package/dist/esm/middlewares/scaler/index.js +2 -2
  83. package/dist/esm/middlewares/scroller/dom.d.ts +14 -0
  84. package/dist/esm/middlewares/scroller/dom.js +53 -0
  85. package/dist/esm/middlewares/scroller/index.d.ts +2 -0
  86. package/dist/esm/middlewares/scroller/index.js +111 -46
  87. package/dist/esm/middlewares/scroller/static.d.ts +21 -0
  88. package/dist/esm/middlewares/scroller/static.js +29 -0
  89. package/dist/esm/middlewares/scroller/styles.d.ts +4 -0
  90. package/dist/esm/middlewares/scroller/styles.js +73 -0
  91. package/dist/esm/middlewares/scroller/types.d.ts +8 -6
  92. package/dist/esm/middlewares/scroller/types.js +1 -1
  93. package/dist/esm/middlewares/scroller/util.d.ts +6 -13
  94. package/dist/esm/middlewares/scroller/util.js +15 -144
  95. package/dist/esm/middlewares/selector/dom.d.ts +21 -0
  96. package/dist/esm/middlewares/selector/dom.js +395 -0
  97. package/dist/esm/middlewares/selector/draw-base.d.ts +9 -21
  98. package/dist/esm/middlewares/selector/draw-base.js +19 -43
  99. package/dist/esm/middlewares/selector/draw-reference.d.ts +4 -5
  100. package/dist/esm/middlewares/selector/draw-reference.js +5 -5
  101. package/dist/esm/middlewares/selector/index.d.ts +4 -2
  102. package/dist/esm/middlewares/selector/index.js +315 -439
  103. package/dist/esm/middlewares/selector/reference.d.ts +5 -5
  104. package/dist/esm/middlewares/selector/reference.js +36 -30
  105. package/dist/esm/middlewares/selector/render-frame.d.ts +11 -0
  106. package/dist/esm/middlewares/selector/render-frame.js +107 -0
  107. package/dist/esm/middlewares/selector/resize.d.ts +7 -0
  108. package/dist/esm/middlewares/selector/resize.js +27 -0
  109. package/dist/esm/middlewares/selector/static.d.ts +67 -0
  110. package/dist/esm/middlewares/selector/static.js +92 -0
  111. package/dist/esm/middlewares/selector/styles.d.ts +4 -0
  112. package/dist/esm/middlewares/selector/styles.js +153 -0
  113. package/dist/esm/middlewares/selector/types.d.ts +27 -27
  114. package/dist/esm/middlewares/selector/types.js +1 -1
  115. package/dist/esm/middlewares/selector/util.d.ts +22 -32
  116. package/dist/esm/middlewares/selector/util.js +226 -243
  117. package/dist/esm/middlewares/text-editor/dom.d.ts +5 -0
  118. package/dist/esm/middlewares/text-editor/dom.js +135 -0
  119. package/dist/esm/middlewares/text-editor/index.d.ts +5 -20
  120. package/dist/esm/middlewares/text-editor/index.js +201 -208
  121. package/dist/esm/middlewares/text-editor/static.d.ts +10 -0
  122. package/dist/esm/middlewares/text-editor/static.js +17 -0
  123. package/dist/esm/middlewares/text-editor/types.d.ts +21 -0
  124. package/dist/esm/middlewares/text-editor/types.js +1 -0
  125. package/dist/esm/record.d.ts +5 -5
  126. package/dist/esm/record.js +14 -14
  127. package/dist/esm/{config.d.ts → static.d.ts} +16 -0
  128. package/dist/esm/{config.js → static.js} +18 -2
  129. package/dist/index.global.js +8934 -5647
  130. package/dist/index.global.min.js +1 -1
  131. package/package.json +4 -4
  132. package/dist/esm/middlewares/info/config.d.ts +0 -5
  133. package/dist/esm/middlewares/layout-selector/config.d.ts +0 -11
  134. package/dist/esm/middlewares/layout-selector/config.js +0 -12
  135. package/dist/esm/middlewares/ruler/config.d.ts +0 -7
  136. package/dist/esm/middlewares/scroller/config.d.ts +0 -10
  137. package/dist/esm/middlewares/scroller/config.js +0 -16
  138. package/dist/esm/middlewares/selector/config.d.ts +0 -30
  139. package/dist/esm/middlewares/selector/config.js +0 -38
  140. package/dist/esm/middlewares/selector/draw-auxiliary.js +0 -12
  141. package/dist/esm/middlewares/selector/draw-debug.d.ts +0 -5
  142. package/dist/esm/middlewares/selector/draw-debug.js +0 -30
  143. package/dist/esm/middlewares/selector/draw-wrapper.d.ts +0 -37
  144. package/dist/esm/middlewares/selector/draw-wrapper.js +0 -139
  145. package/dist/esm/middlewares/selector/pattern/icon-rotate.d.ts +0 -4
  146. package/dist/esm/middlewares/selector/pattern/icon-rotate.js +0 -88
  147. package/dist/esm/middlewares/selector/pattern/index.d.ts +0 -8
  148. package/dist/esm/middlewares/selector/pattern/index.js +0 -38
  149. /package/dist/esm/middlewares/{selector/draw-auxiliary.d.ts → path-creator/types.js} +0 -0
@@ -1,3 +1,4 @@
1
+ import { getMiddlewareValidStyles } from '@idraw/util';
1
2
  const infoBackground = '#1973bac6';
2
3
  const infoTextColor = '#ffffff';
3
4
  export const infoFontSize = 10;
@@ -5,5 +6,9 @@ export const infoLineHeight = 16;
5
6
  export const MIDDLEWARE_INTERNAL_EVENT_SHOW_INFO_ANGLE = '@middleware/internal-event/show-info-angle';
6
7
  export const defaltStyle = {
7
8
  textBackground: infoBackground,
8
- textColor: infoTextColor
9
+ textColor: infoTextColor,
9
10
  };
11
+ export function getMiddlewareInfoStyles(config) {
12
+ const styles = getMiddlewareValidStyles(config, ['textBackground', 'textColor']);
13
+ return styles;
14
+ }
@@ -1,3 +1,3 @@
1
- import { keySelectedElementList, keyHoverElement, keyActionType, keyGroupQueue } from '../selector';
1
+ import { keySelectedMaterialList, keyHoverMaterial, keyActionType, keyGroupQueue } from '../selector';
2
2
  import type { DeepSelectorSharedStorage } from '../selector';
3
- export type DeepInfoSharedStorage = Pick<DeepSelectorSharedStorage, typeof keySelectedElementList | typeof keyHoverElement | typeof keyActionType | typeof keyGroupQueue>;
3
+ export type DeepInfoSharedStorage = Pick<DeepSelectorSharedStorage, typeof keySelectedMaterialList | typeof keyHoverMaterial | typeof keyActionType | typeof keyGroupQueue>;
@@ -0,0 +1,10 @@
1
+ import type { ViewScaleInfo, DataLayout } from '@idraw/types';
2
+ type Options = {
3
+ viewScaleInfo: ViewScaleInfo;
4
+ layout?: DataLayout;
5
+ rootClassName: string;
6
+ hover: boolean;
7
+ };
8
+ export declare function clearMaterialLayoutBoxs($container: HTMLDivElement, opts: Pick<Options, 'rootClassName'>): void;
9
+ export declare function resetMaterialSelectedBox($contaier: HTMLDivElement, opts: Options): void;
10
+ export {};
@@ -0,0 +1,108 @@
1
+ import { ATTR_VALID_WATCH, createHTMLElement, assembleHTMLElement, calcViewMaterialSize, setHTMLCSSProps, addClassName, removeClassName, } from '@idraw/util';
2
+ import { classNameMap, ATTR_HANDLER_TYPE } from './static';
3
+ export function clearMaterialLayoutBoxs($container, opts) {
4
+ const { rootClassName } = opts;
5
+ const $boxs = $container.getElementsByClassName(rootClassName);
6
+ Array.from($boxs).forEach(($box) => {
7
+ $box.remove();
8
+ });
9
+ }
10
+ function renderLayoutBoxHandlers($container, opts) {
11
+ const $existHandlers = $container.querySelectorAll(`[${ATTR_HANDLER_TYPE}]`);
12
+ const { rootClassName, layout, viewScaleInfo, hover } = opts;
13
+ if (!layout) {
14
+ return;
15
+ }
16
+ const layoutSize = calcViewMaterialSize(layout, { viewScaleInfo });
17
+ const { x, y, height, width } = layoutSize;
18
+ const edgeLeftStyle = {
19
+ left: x,
20
+ top: y,
21
+ height,
22
+ };
23
+ const edgeTopStyle = {
24
+ left: x,
25
+ top: y,
26
+ width,
27
+ };
28
+ const edgeRightStyle = {
29
+ left: x + width,
30
+ top: y,
31
+ height,
32
+ };
33
+ const edgeBottomStyle = {
34
+ left: x,
35
+ top: y + height,
36
+ width,
37
+ };
38
+ const cornerTopLeftStyle = {
39
+ left: x,
40
+ top: y,
41
+ };
42
+ const cornerTopRightStyle = {
43
+ left: x + width,
44
+ top: y,
45
+ };
46
+ const cornerBottomLeftStyle = {
47
+ left: x,
48
+ top: y + height,
49
+ };
50
+ const cornerBottomRightStyle = {
51
+ left: x + width,
52
+ top: y + height,
53
+ };
54
+ if ($existHandlers.length > 0) {
55
+ const $edgeLeft = $container.getElementsByClassName(classNameMap.edgeLeftHandler)[0];
56
+ const $edgeRight = $container.getElementsByClassName(classNameMap.edgeRightHandler)[0];
57
+ const $edgeTop = $container.getElementsByClassName(classNameMap.edgeTopHandler)[0];
58
+ const $edgeBottom = $container.getElementsByClassName(classNameMap.edgeBottomHandler)[0];
59
+ const $cornerTopLeft = $container.getElementsByClassName(classNameMap.cornerTopLeftHandler)[0];
60
+ const $cornerTopRight = $container.getElementsByClassName(classNameMap.cornerTopRightHandler)[0];
61
+ const $cornerBottomLeft = $container.getElementsByClassName(classNameMap.cornerBottomLeftHandler)[0];
62
+ const $cornerBottomRight = $container.getElementsByClassName(classNameMap.cornerBottomRightHandler)[0];
63
+ setHTMLCSSProps($edgeLeft, edgeLeftStyle);
64
+ setHTMLCSSProps($edgeRight, edgeRightStyle);
65
+ setHTMLCSSProps($edgeTop, edgeTopStyle);
66
+ setHTMLCSSProps($edgeBottom, edgeBottomStyle);
67
+ setHTMLCSSProps($cornerTopLeft, cornerTopLeftStyle);
68
+ setHTMLCSSProps($cornerTopRight, cornerTopRightStyle);
69
+ setHTMLCSSProps($cornerBottomLeft, cornerBottomLeftStyle);
70
+ setHTMLCSSProps($cornerBottomRight, cornerBottomRightStyle);
71
+ }
72
+ else {
73
+ const create = createHTMLElement;
74
+ const baseAttrs = {
75
+ [ATTR_VALID_WATCH]: 'true',
76
+ };
77
+ assembleHTMLElement($container, {}, [
78
+ create('div', Object.assign(Object.assign({ [ATTR_HANDLER_TYPE]: 'left' }, baseAttrs), { className: `${rootClassName} ${classNameMap.edgeHandler} ${classNameMap.edgeLeftHandler}`, style: edgeLeftStyle })),
79
+ create('div', Object.assign(Object.assign({ [ATTR_HANDLER_TYPE]: 'top' }, baseAttrs), { className: `${rootClassName} ${classNameMap.edgeHandler} ${classNameMap.edgeTopHandler}`, style: edgeTopStyle })),
80
+ create('div', Object.assign(Object.assign({ [ATTR_HANDLER_TYPE]: 'right' }, baseAttrs), { className: `${rootClassName} ${classNameMap.edgeHandler} ${classNameMap.edgeRightHandler}`, style: edgeRightStyle })),
81
+ create('div', Object.assign(Object.assign({ [ATTR_HANDLER_TYPE]: 'bottom' }, baseAttrs), { className: `${rootClassName} ${classNameMap.edgeHandler} ${classNameMap.edgeBottomHandler}`, style: edgeBottomStyle })),
82
+ create('div', Object.assign(Object.assign({ [ATTR_HANDLER_TYPE]: 'top-left' }, baseAttrs), { className: `${rootClassName} ${classNameMap.cornerHandler} ${classNameMap.cornerTopLeftHandler}`, style: cornerTopLeftStyle })),
83
+ create('div', Object.assign(Object.assign({ [ATTR_HANDLER_TYPE]: 'top-right' }, baseAttrs), { className: `${rootClassName} ${classNameMap.cornerHandler} ${classNameMap.cornerTopRightHandler}`, style: cornerTopRightStyle })),
84
+ create('div', Object.assign(Object.assign({ [ATTR_HANDLER_TYPE]: 'bottom-left' }, baseAttrs), { className: `${rootClassName} ${classNameMap.cornerHandler} ${classNameMap.cornerBottomLeftHandler}`, style: cornerBottomLeftStyle })),
85
+ create('div', Object.assign(Object.assign({ [ATTR_HANDLER_TYPE]: 'bottom-right' }, baseAttrs), { className: `${rootClassName} ${classNameMap.cornerHandler} ${classNameMap.cornerBottomRightHandler}`, style: cornerBottomRightStyle })),
86
+ ]);
87
+ }
88
+ const $handlers = Array.from($container.querySelectorAll(`[${ATTR_HANDLER_TYPE}]`));
89
+ if (hover) {
90
+ $handlers.forEach(($item) => {
91
+ addClassName($item, [classNameMap.hover]);
92
+ });
93
+ }
94
+ else {
95
+ $handlers.forEach(($item) => {
96
+ removeClassName($item, [classNameMap.hover]);
97
+ });
98
+ }
99
+ }
100
+ export function resetMaterialSelectedBox($contaier, opts) {
101
+ const { layout } = opts;
102
+ if (layout) {
103
+ renderLayoutBoxHandlers($contaier, opts);
104
+ }
105
+ else {
106
+ clearMaterialLayoutBoxs($contaier, opts);
107
+ }
108
+ }
@@ -1,5 +1,5 @@
1
1
  import type { Middleware, MiddlewareLayoutSelectorConfig, CoreEventMap } from '@idraw/types';
2
2
  import type { LayoutSelectorSharedStorage } from './types';
3
- import { keyLayoutIsSelected, keyLayoutIsBusyMoving } from './config';
3
+ import { keyLayoutIsSelected, keyLayoutIsBusyMoving } from './static';
4
4
  export { keyLayoutIsSelected, keyLayoutIsBusyMoving };
5
5
  export declare const MiddlewareLayoutSelector: Middleware<LayoutSelectorSharedStorage, CoreEventMap, MiddlewareLayoutSelectorConfig>;
@@ -1,13 +1,16 @@
1
- import { calcLayoutSizeController, isViewPointInVertexes, getViewScaleInfoFromSnapshot, isViewPointInElementSize, calcViewElementSize, getElementSize, toFlattenLayout } from '@idraw/util';
2
- import { keyLayoutActionType, keyLayoutController, keyLayoutControlType, keyLayoutIsHoverContent, keyLayoutIsHoverController, keyLayoutIsSelected, keyLayoutIsBusyMoving, controllerSize, defaultStyle } from './config';
3
- import { keyActionType as keyElementActionType } from '../selector';
4
- import { drawLayoutController, drawLayoutHover } from './util';
5
- import { coreEventKeys } from '../../config';
1
+ import { isViewPointInMaterialSize, calcViewMaterialSize, getMaterialSize, toFlattenLayout, } from '@idraw/util';
2
+ import { keyLayoutActionType, keyLayoutControlType, keyLayoutIsHoverContent, keyLayoutIsHoverController, keyLayoutIsSelected, keyLayoutIsBusyMoving, controllerSize, defaultStyle, getRootClassName, ATTR_HANDLER_TYPE, } from './static';
3
+ import { getMiddlewareLayoutSelectorStyles, initStyles, destroyStyles } from './styles';
4
+ import { keyActionType as keyMaterialActionType, } from '../selector';
5
+ import { resetMaterialSelectedBox, clearMaterialLayoutBoxs } from './dom';
6
+ import { coreEventKeys } from '../../static';
7
+ import { triggerChangeEvent } from '../common';
6
8
  export { keyLayoutIsSelected, keyLayoutIsBusyMoving };
7
9
  export const MiddlewareLayoutSelector = (opts, config) => {
8
- const { sharer, boardContent, calculator, viewer, eventHub } = opts;
9
- const { overlayContext } = boardContent;
10
+ const { sharer, calculator, viewer, eventHub } = opts;
10
11
  let innerConfig = Object.assign(Object.assign({}, defaultStyle), config);
12
+ const styles = getMiddlewareLayoutSelectorStyles(innerConfig);
13
+ const rootClassName = getRootClassName();
11
14
  let prevPoint = null;
12
15
  let prevIsHoverContent = null;
13
16
  let prevIsSelected = null;
@@ -16,7 +19,6 @@ export const MiddlewareLayoutSelector = (opts, config) => {
16
19
  prevPoint = null;
17
20
  sharer.setSharedStorage(keyLayoutActionType, null);
18
21
  sharer.setSharedStorage(keyLayoutControlType, null);
19
- sharer.setSharedStorage(keyLayoutController, null);
20
22
  sharer.setSharedStorage(keyLayoutIsHoverContent, null);
21
23
  sharer.setSharedStorage(keyLayoutIsHoverController, null);
22
24
  sharer.setSharedStorage(keyLayoutIsSelected, null);
@@ -24,9 +26,9 @@ export const MiddlewareLayoutSelector = (opts, config) => {
24
26
  prevIsHoverContent = null;
25
27
  prevIsSelected = null;
26
28
  };
27
- const isInElementAction = () => {
28
- const elementActionType = sharer.getSharedStorage(keyElementActionType);
29
- if (elementActionType && elementActionType !== 'area') {
29
+ const isInMaterialAction = () => {
30
+ const materialActionType = sharer.getSharedStorage(keyMaterialActionType);
31
+ if (materialActionType && materialActionType !== 'area') {
30
32
  clear();
31
33
  return true;
32
34
  }
@@ -35,58 +37,37 @@ export const MiddlewareLayoutSelector = (opts, config) => {
35
37
  const getLayoutSize = () => {
36
38
  const data = sharer.getActiveStorage('data');
37
39
  if (data === null || data === void 0 ? void 0 : data.layout) {
38
- const { x, y, w, h } = data.layout;
39
- return { x, y, w, h };
40
+ const { x, y, width, height } = data.layout;
41
+ return { x, y, width, height };
40
42
  }
41
43
  return null;
42
44
  };
43
45
  const isInLayout = (p) => {
44
46
  const size = getLayoutSize();
45
47
  if (size) {
46
- const { x, y, w, h } = size;
48
+ const { x, y, width, height } = size;
47
49
  const viewScaleInfo = sharer.getActiveViewScaleInfo();
48
- const viewSize = calcViewElementSize({
50
+ const viewSize = calcViewMaterialSize({
49
51
  x: x - controllerSize / 2,
50
52
  y: y - controllerSize / 2,
51
- w: w + controllerSize,
52
- h: h + controllerSize
53
+ width: width + controllerSize,
54
+ height: height + controllerSize,
53
55
  }, { viewScaleInfo });
54
- return isViewPointInElementSize(p, viewSize);
56
+ return isViewPointInMaterialSize(p, viewSize);
55
57
  }
56
58
  return false;
57
59
  };
58
- const resetController = () => {
59
- const viewScaleInfo = sharer.getActiveViewScaleInfo();
60
- const size = getLayoutSize();
61
- if (size) {
62
- const controller = calcLayoutSizeController(size, { viewScaleInfo, controllerSize: 10 });
63
- sharer.setSharedStorage(keyLayoutController, controller);
64
- }
65
- else {
66
- sharer.setSharedStorage(keyLayoutController, null);
67
- }
68
- };
69
60
  const resetControlType = (e) => {
70
61
  const data = sharer.getActiveStorage('data');
71
- const controller = sharer.getSharedStorage(keyLayoutController);
62
+ const $target = e.nativeEvent.target;
72
63
  let controllerType = null;
73
- if (controller && (data === null || data === void 0 ? void 0 : data.layout) && (e === null || e === void 0 ? void 0 : e.point)) {
74
- let layoutControlType = null;
75
- if (controller) {
76
- const { topLeft, top, topRight, right, bottomRight, bottom, bottomLeft, left } = controller;
77
- const list = [topLeft, top, topRight, right, bottomRight, bottom, bottomLeft, left];
78
- for (let i = 0; i < list.length; i++) {
79
- const item = list[i];
80
- if (isViewPointInVertexes(e.point, item.vertexes)) {
81
- layoutControlType = `${item.type}`;
82
- break;
83
- }
84
- }
85
- if (layoutControlType) {
86
- sharer.setSharedStorage(keyLayoutControlType, layoutControlType);
87
- eventHub.trigger(coreEventKeys.CLEAR_SELECT);
88
- controllerType = layoutControlType;
89
- }
64
+ if (($target === null || $target === void 0 ? void 0 : $target.hasAttribute(ATTR_HANDLER_TYPE)) && (data === null || data === void 0 ? void 0 : data.layout) && (e === null || e === void 0 ? void 0 : e.point)) {
65
+ sharer.setSharedStorage(keyLayoutControlType, null);
66
+ const layoutControlType = $target.getAttribute(ATTR_HANDLER_TYPE);
67
+ if (layoutControlType) {
68
+ sharer.setSharedStorage(keyLayoutControlType, layoutControlType);
69
+ eventHub.trigger(coreEventKeys.CLEAR_SELECT);
70
+ controllerType = layoutControlType;
90
71
  }
91
72
  }
92
73
  if (controllerType) {
@@ -104,14 +85,18 @@ export const MiddlewareLayoutSelector = (opts, config) => {
104
85
  eventHub.trigger(coreEventKeys.CURSOR, {
105
86
  type: controlType ? `resize-${controlType}` : controlType,
106
87
  groupQueue: [],
107
- element: getLayoutSize()
88
+ material: getLayoutSize(),
108
89
  });
109
90
  };
110
91
  return {
111
92
  name: '@middleware/layout-selector',
112
93
  use: () => {
113
94
  clear();
114
- resetController();
95
+ initStyles(rootClassName, styles);
96
+ },
97
+ disuse: () => {
98
+ clear();
99
+ destroyStyles(rootClassName);
115
100
  },
116
101
  resetConfig(config) {
117
102
  innerConfig = Object.assign(Object.assign({}, innerConfig), config);
@@ -120,9 +105,6 @@ export const MiddlewareLayoutSelector = (opts, config) => {
120
105
  if (sharer.getSharedStorage(keyLayoutIsBusyMoving) === true) {
121
106
  return;
122
107
  }
123
- if (isInElementAction()) {
124
- return;
125
- }
126
108
  if (isInLayout(e.point)) {
127
109
  sharer.setSharedStorage(keyLayoutIsHoverContent, true);
128
110
  }
@@ -133,48 +115,34 @@ export const MiddlewareLayoutSelector = (opts, config) => {
133
115
  prevIsHoverContent = false;
134
116
  }
135
117
  }
136
- if (sharer.getSharedStorage(keyLayoutIsSelected) === true) {
137
- const prevLayoutActionType = sharer.getSharedStorage(keyLayoutActionType);
138
- const data = sharer.getActiveStorage('data');
139
- if (data === null || data === void 0 ? void 0 : data.layout) {
140
- if (prevLayoutActionType !== 'resize') {
141
- resetController();
142
- const layoutControlType = resetControlType(e);
143
- if (layoutControlType) {
144
- updateCursor(layoutControlType);
145
- }
146
- else {
147
- updateCursor();
148
- sharer.setSharedStorage(keyLayoutActionType, null);
149
- }
118
+ const prevLayoutActionType = sharer.getSharedStorage(keyLayoutActionType);
119
+ const data = sharer.getActiveStorage('data');
120
+ if (data === null || data === void 0 ? void 0 : data.layout) {
121
+ if (prevLayoutActionType !== 'resize') {
122
+ const layoutControlType = resetControlType(e);
123
+ if (layoutControlType) {
124
+ updateCursor(layoutControlType);
150
125
  }
151
126
  else {
152
- const layoutControlType = resetControlType(e);
153
- updateCursor(layoutControlType);
127
+ updateCursor();
128
+ sharer.setSharedStorage(keyLayoutActionType, null);
154
129
  }
155
130
  }
156
- if (sharer.getSharedStorage(keyLayoutIsHoverController) === true) {
157
- return false;
131
+ else {
132
+ const layoutControlType = resetControlType(e);
133
+ updateCursor(layoutControlType);
158
134
  }
159
- return;
160
- }
161
- if (sharer.getSharedStorage(keyLayoutIsHoverContent) && !prevIsHoverContent) {
162
- viewer.drawFrame();
163
- }
164
- prevIsHoverContent = sharer.getSharedStorage(keyLayoutIsHoverContent);
165
- if (sharer.getSharedStorage(keyLayoutIsHoverController) === true) {
166
- return false;
167
135
  }
168
136
  },
169
137
  pointStart: (e) => {
170
- if (isInElementAction()) {
171
- return;
172
- }
173
138
  if (isInLayout(e.point)) {
174
139
  sharer.setSharedStorage(keyLayoutIsSelected, true);
175
140
  }
176
141
  else {
177
142
  if (prevIsSelected === true) {
143
+ if (opts.container) {
144
+ clearMaterialLayoutBoxs(opts.container, { rootClassName });
145
+ }
178
146
  clear();
179
147
  viewer.drawFrame();
180
148
  }
@@ -182,12 +150,11 @@ export const MiddlewareLayoutSelector = (opts, config) => {
182
150
  }
183
151
  const data = sharer.getActiveStorage('data');
184
152
  if (data === null || data === void 0 ? void 0 : data.layout) {
185
- pointStartLayoutSize = getElementSize(data.layout);
153
+ pointStartLayoutSize = getMaterialSize(data.layout);
186
154
  }
187
155
  else {
188
156
  pointStartLayoutSize = null;
189
157
  }
190
- resetController();
191
158
  const layoutControlType = resetControlType(e);
192
159
  prevPoint = e.point;
193
160
  if (layoutControlType) {
@@ -204,7 +171,7 @@ export const MiddlewareLayoutSelector = (opts, config) => {
204
171
  },
205
172
  pointMove: (e) => {
206
173
  if (!sharer.getSharedStorage(keyLayoutIsSelected)) {
207
- if (isInElementAction()) {
174
+ if (isInMaterialAction()) {
208
175
  return;
209
176
  }
210
177
  }
@@ -219,82 +186,81 @@ export const MiddlewareLayoutSelector = (opts, config) => {
219
186
  const viewMoveY = e.point.y - prevPoint.y;
220
187
  const moveX = viewMoveX / scale;
221
188
  const moveY = viewMoveY / scale;
222
- const { x, y, w, h, operations = {} } = data.layout;
189
+ const { x, y, width, height, operations = {} } = data.layout;
223
190
  const { position = 'absolute' } = operations;
224
191
  if (layoutControlType === 'top') {
225
192
  if (position === 'relative') {
226
- data.layout.h = calculator.toGridNum(h - moveY);
193
+ data.layout.height = calculator.toGridNum(height - moveY);
227
194
  viewer.scroll({ moveY: viewMoveY });
228
195
  }
229
196
  else {
230
197
  data.layout.y = calculator.toGridNum(y + moveY);
231
- data.layout.h = calculator.toGridNum(h - moveY);
198
+ data.layout.height = calculator.toGridNum(height - moveY);
232
199
  }
233
200
  }
234
201
  else if (layoutControlType === 'right') {
235
- data.layout.w = calculator.toGridNum(w + moveX);
202
+ data.layout.width = calculator.toGridNum(width + moveX);
236
203
  }
237
204
  else if (layoutControlType === 'bottom') {
238
- data.layout.h = calculator.toGridNum(h + moveY);
205
+ data.layout.height = calculator.toGridNum(height + moveY);
239
206
  }
240
207
  else if (layoutControlType === 'left') {
241
208
  if (position === 'relative') {
242
- data.layout.w = calculator.toGridNum(w - moveX);
209
+ data.layout.width = calculator.toGridNum(width - moveX);
243
210
  viewer.scroll({ moveX: viewMoveX });
244
211
  }
245
212
  else {
246
213
  data.layout.x = calculator.toGridNum(x + moveX);
247
- data.layout.w = calculator.toGridNum(w - moveX);
214
+ data.layout.width = calculator.toGridNum(width - moveX);
248
215
  }
249
216
  }
250
217
  else if (layoutControlType === 'top-left') {
251
218
  if (position === 'relative') {
252
- data.layout.w = calculator.toGridNum(w - moveX);
253
- data.layout.h = calculator.toGridNum(h - moveY);
219
+ data.layout.width = calculator.toGridNum(width - moveX);
220
+ data.layout.height = calculator.toGridNum(height - moveY);
254
221
  viewer.scroll({ moveX: viewMoveX, moveY: viewMoveY });
255
222
  }
256
223
  else {
257
224
  data.layout.x = calculator.toGridNum(x + moveX);
258
225
  data.layout.y = calculator.toGridNum(y + moveY);
259
- data.layout.w = calculator.toGridNum(w - moveX);
260
- data.layout.h = calculator.toGridNum(h - moveY);
226
+ data.layout.width = calculator.toGridNum(width - moveX);
227
+ data.layout.height = calculator.toGridNum(height - moveY);
261
228
  }
262
229
  }
263
230
  else if (layoutControlType === 'top-right') {
264
231
  if (position === 'relative') {
265
232
  viewer.scroll({
266
- moveY: viewMoveY
233
+ moveY: viewMoveY,
267
234
  });
268
- data.layout.w = calculator.toGridNum(w + moveX);
269
- data.layout.h = calculator.toGridNum(h - moveY);
235
+ data.layout.width = calculator.toGridNum(width + moveX);
236
+ data.layout.height = calculator.toGridNum(height - moveY);
270
237
  }
271
238
  else {
272
239
  data.layout.y = calculator.toGridNum(y + moveY);
273
- data.layout.w = calculator.toGridNum(w + moveX);
274
- data.layout.h = calculator.toGridNum(h - moveY);
240
+ data.layout.width = calculator.toGridNum(width + moveX);
241
+ data.layout.height = calculator.toGridNum(height - moveY);
275
242
  }
276
243
  }
277
244
  else if (layoutControlType === 'bottom-right') {
278
- data.layout.w = calculator.toGridNum(w + moveX);
279
- data.layout.h = calculator.toGridNum(h + moveY);
245
+ data.layout.width = calculator.toGridNum(width + moveX);
246
+ data.layout.height = calculator.toGridNum(height + moveY);
280
247
  }
281
248
  else if (layoutControlType === 'bottom-left') {
282
249
  if (position === 'relative') {
283
250
  viewer.scroll({
284
- moveX: viewMoveX
251
+ moveX: viewMoveX,
285
252
  });
286
- data.layout.w = calculator.toGridNum(w - moveX);
287
- data.layout.h = calculator.toGridNum(h + moveY);
253
+ data.layout.width = calculator.toGridNum(width - moveX);
254
+ data.layout.height = calculator.toGridNum(height + moveY);
288
255
  }
289
256
  else {
290
257
  data.layout.x = calculator.toGridNum(x + moveX);
291
- data.layout.w = calculator.toGridNum(w - moveX);
292
- data.layout.h = calculator.toGridNum(h + moveY);
258
+ data.layout.width = calculator.toGridNum(width - moveX);
259
+ data.layout.height = calculator.toGridNum(height + moveY);
293
260
  }
294
261
  }
295
262
  }
296
263
  prevPoint = e.point;
297
- resetController();
298
264
  viewer.drawFrame();
299
265
  return false;
300
266
  }
@@ -316,14 +282,14 @@ export const MiddlewareLayoutSelector = (opts, config) => {
316
282
  content: {
317
283
  method: 'modifyLayout',
318
284
  before: toFlattenLayout(pointStartLayoutSize),
319
- after: toFlattenLayout(getElementSize(data.layout))
320
- }
285
+ after: toFlattenLayout(getMaterialSize(data.layout)),
286
+ },
321
287
  };
322
288
  }
323
- eventHub.trigger(coreEventKeys.CHANGE, {
289
+ triggerChangeEvent(eventHub, {
324
290
  type: 'resizeLayout',
325
291
  data,
326
- modifyRecord
292
+ modifyRecord,
327
293
  });
328
294
  }
329
295
  pointStartLayoutSize = null;
@@ -334,38 +300,20 @@ export const MiddlewareLayoutSelector = (opts, config) => {
334
300
  }
335
301
  },
336
302
  beforeDrawFrame: ({ snapshot }) => {
337
- var _a;
338
- if (isInElementAction()) {
303
+ var _a, _b;
304
+ if (isInMaterialAction()) {
339
305
  return;
340
306
  }
341
- const { activeColor } = innerConfig;
342
- const style = { activeColor };
343
- const { sharedStore, activeStore } = snapshot;
344
- const layoutActionType = sharedStore[keyLayoutActionType];
345
- const layoutIsHover = sharedStore[keyLayoutIsHoverContent];
346
- const layoutIsSelected = sharedStore[keyLayoutIsSelected];
347
- if ((_a = activeStore.data) === null || _a === void 0 ? void 0 : _a.layout) {
348
- const { x, y, w, h } = activeStore.data.layout;
349
- const viewScaleInfo = getViewScaleInfoFromSnapshot(snapshot);
350
- const size = { x, y, w, h };
351
- const controller = calcLayoutSizeController(size, { viewScaleInfo, controllerSize });
352
- if (layoutIsHover === true) {
353
- const viewSize = calcViewElementSize(size, { viewScaleInfo });
354
- drawLayoutHover(overlayContext, { layoutSize: viewSize, style });
355
- }
356
- if ((layoutActionType && ['resize'].includes(layoutActionType)) || layoutIsSelected === true) {
357
- drawLayoutController(overlayContext, { controller, style });
358
- }
307
+ const { activeStore, } = snapshot;
308
+ const viewScaleInfo = sharer.getActiveViewScaleInfo();
309
+ if (opts.container && ((_a = activeStore.data) === null || _a === void 0 ? void 0 : _a.layout)) {
310
+ resetMaterialSelectedBox(opts.container, {
311
+ rootClassName,
312
+ viewScaleInfo,
313
+ layout: (_b = activeStore.data) === null || _b === void 0 ? void 0 : _b.layout,
314
+ hover: false,
315
+ });
359
316
  }
360
317
  },
361
- scrollX: () => {
362
- clear();
363
- },
364
- scrollY: () => {
365
- clear();
366
- },
367
- wheelScale: () => {
368
- clear();
369
- }
370
318
  };
371
319
  };
@@ -0,0 +1,32 @@
1
+ import type { MiddlewareLayoutSelectorStyles } from '@idraw/types';
2
+ export declare const key = "LAYOUT_SELECTOR";
3
+ export declare const keyLayoutActionType: unique symbol;
4
+ export declare const keyLayoutControlType: unique symbol;
5
+ export declare const keyLayoutController: unique symbol;
6
+ export declare const keyLayoutIsHoverContent: unique symbol;
7
+ export declare const keyLayoutIsHoverController: unique symbol;
8
+ export declare const keyLayoutIsSelected: unique symbol;
9
+ export declare const keyLayoutIsBusyMoving: unique symbol;
10
+ export declare const prefix = "idraw-middleware-layout-selector";
11
+ export declare const getRootClassName: () => string;
12
+ export declare const ATTR_HANDLER_TYPE = "data-idraw-handler-type";
13
+ export declare const selectedBoxBorderWidth = 1.5;
14
+ export declare const hoverBoxBorderWidth = 1;
15
+ export declare const cornerHandlerSize = 10;
16
+ export declare const cornerHandlerBorderWidth = 1.5;
17
+ export declare const edgeHandlerSize = 10;
18
+ export declare const controllerSize = 10;
19
+ export declare const defaultStyle: MiddlewareLayoutSelectorStyles;
20
+ export declare const classNameMap: {
21
+ hover: string;
22
+ edgeHandler: string;
23
+ edgeTopHandler: string;
24
+ edgeRightHandler: string;
25
+ edgeBottomHandler: string;
26
+ edgeLeftHandler: string;
27
+ cornerHandler: string;
28
+ cornerTopLeftHandler: string;
29
+ cornerTopRightHandler: string;
30
+ cornerBottomLeftHandler: string;
31
+ cornerBottomRightHandler: string;
32
+ };
@@ -0,0 +1,39 @@
1
+ import { createId } from '@idraw/util';
2
+ export const key = 'LAYOUT_SELECTOR';
3
+ export const keyLayoutActionType = Symbol(`${key}_layoutActionType`);
4
+ export const keyLayoutControlType = Symbol(`${key}_layoutControlType`);
5
+ export const keyLayoutController = Symbol(`${key}_layoutController`);
6
+ export const keyLayoutIsHoverContent = Symbol(`${key}_layoutIsHoverContent`);
7
+ export const keyLayoutIsHoverController = Symbol(`${key}_layoutIsHoverController`);
8
+ export const keyLayoutIsSelected = Symbol(`${key}_layoutIsSelected`);
9
+ export const keyLayoutIsBusyMoving = Symbol(`${key}_layoutIsSelected`);
10
+ export const prefix = `idraw-middleware-layout-selector`;
11
+ export const getRootClassName = () => `${prefix}-${createId()}`;
12
+ export const ATTR_HANDLER_TYPE = 'data-idraw-handler-type';
13
+ export const selectedBoxBorderWidth = 1.5;
14
+ export const hoverBoxBorderWidth = 1;
15
+ export const cornerHandlerSize = 10;
16
+ export const cornerHandlerBorderWidth = 1.5;
17
+ export const edgeHandlerSize = 10;
18
+ export const controllerSize = 10;
19
+ export const defaultStyle = {
20
+ zIndex: 2,
21
+ activeColor: '#b331c9',
22
+ handlerBorderColor: '#b331c9',
23
+ handlerBackground: '#ffffff',
24
+ handlerHoverBackground: '#bb8fc3',
25
+ handlerActiveBackground: '#b467c2',
26
+ };
27
+ export const classNameMap = {
28
+ hover: `${prefix}-hover`,
29
+ edgeHandler: `${prefix}-edgeHandler`,
30
+ edgeTopHandler: `${prefix}-edgeTopHandler`,
31
+ edgeRightHandler: `${prefix}-edgeRightandler`,
32
+ edgeBottomHandler: `${prefix}-edgeBottomHandler`,
33
+ edgeLeftHandler: `${prefix}-edgeLeftHandler`,
34
+ cornerHandler: `${prefix}-cornerHandler`,
35
+ cornerTopLeftHandler: `${prefix}-cornerTopLeftHandler`,
36
+ cornerTopRightHandler: `${prefix}-cornerTopRightHandler`,
37
+ cornerBottomLeftHandler: `${prefix}-cornerBottomLeftHandler`,
38
+ cornerBottomRightHandler: `${prefix}-cornerBottomRightHandler`,
39
+ };
@@ -0,0 +1,4 @@
1
+ import type { MiddlewareLayoutSelectorStyles, MiddlewareLayoutSelectorConfig } from '@idraw/types';
2
+ export declare function initStyles(rootClassName: string, styles: MiddlewareLayoutSelectorStyles): void;
3
+ export declare function destroyStyles(rootClassName: string): void;
4
+ export declare function getMiddlewareLayoutSelectorStyles<C = MiddlewareLayoutSelectorConfig, S = MiddlewareLayoutSelectorStyles>(config: C): S;