@idraw/core 0.4.2 → 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 -207
  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 -5646
  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
@@ -0,0 +1,49 @@
1
+ import { createId, getMiddlewareValidStyles } from '@idraw/util';
2
+ export const key = 'PATH-CREATOR';
3
+ const prefix = `idraw-middleware-path-creator`;
4
+ export const getRootClassName = () => `${prefix}-${createId()}`;
5
+ export const classNameMap = {
6
+ hide: `${prefix}-hide`,
7
+ anchor: `${prefix}-anchor`,
8
+ director: `${prefix}-director`,
9
+ directorLines: `${prefix}-director-lines`,
10
+ pathLine: `${prefix}-path-line`,
11
+ selected: `${prefix}-selected`,
12
+ };
13
+ export const ATTR_X = `data-x`;
14
+ export const ATTR_Y = `data-y`;
15
+ export const ATTR_ANGLE = `data-angle`;
16
+ export const ATTR_TYPE = `data-type`;
17
+ export const ATTR_HELPER_TYPE = `data-helper-type`;
18
+ export const ATTR_AHCHOR_CMD_TYPE = `data-anchor-cmd-type`;
19
+ export const ATTR_AHCHOR_INDEX = `data-anchor-index`;
20
+ export const ATTR_AHCHOR_ID = `data-anchor-id`;
21
+ export const HELPER_ROOT = 'root';
22
+ export const HELPER_ANCHOR = 'anchor';
23
+ export const defaultConfig = {
24
+ anchorSize: 8,
25
+ anchorBorderWidth: 2,
26
+ anchorBorderColor: '#157ed1',
27
+ anchorBackground: '#ffffff',
28
+ anchorHoverBorderColor: '#1671b8',
29
+ anchorHoverBackground: '#cfe4f4',
30
+ anchorActiveBorderColor: '#0d548c',
31
+ anchorActiveBackground: '#88c0ec',
32
+ defaultStroke: '#a0a0a0',
33
+ defaultStrokeWidth: 2,
34
+ };
35
+ export function getMiddlewarePathCreatorStyles(config) {
36
+ const styles = getMiddlewareValidStyles(config, [
37
+ 'anchorSize',
38
+ 'anchorBorderWidth',
39
+ 'anchorBorderColor',
40
+ 'anchorBackground',
41
+ 'anchorHoverBorderColor',
42
+ 'anchorHoverBackground',
43
+ 'anchorActiveBorderColor',
44
+ 'anchorActiveBackground',
45
+ 'defaultStroke',
46
+ 'defaultStrokeWidth',
47
+ ]);
48
+ return styles;
49
+ }
@@ -0,0 +1 @@
1
+ export type PathSharedStorage = {};
@@ -0,0 +1,6 @@
1
+ export declare function calcVisibleBBoxOfPath(path: SVGPathElement): {
2
+ x: number;
3
+ y: number;
4
+ width: number;
5
+ height: number;
6
+ };
@@ -0,0 +1,51 @@
1
+ export function calcVisibleBBoxOfPath(path) {
2
+ const svg = path.ownerSVGElement;
3
+ if (!svg) {
4
+ throw new Error('The path is not inside an <svg> element.');
5
+ }
6
+ try {
7
+ const fancyBBox = path.getBBox({ stroke: true, fill: false, markers: true, clipped: true });
8
+ if (fancyBBox && Number.isFinite(fancyBBox.width) && Number.isFinite(fancyBBox.height)) {
9
+ return {
10
+ x: fancyBBox.x,
11
+ y: fancyBBox.y,
12
+ width: fancyBBox.width,
13
+ height: fancyBBox.height,
14
+ };
15
+ }
16
+ }
17
+ catch (_a) {
18
+ }
19
+ const ctm = svg.getScreenCTM();
20
+ if (!ctm)
21
+ throw new Error('Failed to get screen CTM from the <svg>.');
22
+ const inv = ctm.inverse();
23
+ const rect = path.getBoundingClientRect();
24
+ const corners = [
25
+ { x: rect.left, y: rect.top },
26
+ { x: rect.right, y: rect.top },
27
+ { x: rect.right, y: rect.bottom },
28
+ { x: rect.left, y: rect.bottom },
29
+ ];
30
+ const svgPoint = svg.createSVGPoint();
31
+ let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
32
+ for (const c of corners) {
33
+ svgPoint.x = c.x;
34
+ svgPoint.y = c.y;
35
+ const p = svgPoint.matrixTransform(inv);
36
+ if (p.x < minX)
37
+ minX = p.x;
38
+ if (p.y < minY)
39
+ minY = p.y;
40
+ if (p.x > maxX)
41
+ maxX = p.x;
42
+ if (p.y > maxY)
43
+ maxY = p.y;
44
+ }
45
+ return {
46
+ x: minX,
47
+ y: minY,
48
+ width: maxX - minX,
49
+ height: maxY - minY,
50
+ };
51
+ }
@@ -0,0 +1,32 @@
1
+ import type { StrictMaterial, ViewScaleInfo, ViewCalculator, MiddlewarePathEditorStyles } from '@idraw/types';
2
+ import type { Directioner, AnchorInfo, DirectorInfo } from './types';
3
+ export declare function initStyles(rootClassName: string, styles: MiddlewarePathEditorStyles): void;
4
+ export declare function destroyStyles(rootClassName: string): void;
5
+ export declare function initRoot(container: HTMLElement, opts: {
6
+ id: string;
7
+ rootClassName: string;
8
+ }): HTMLDivElement | undefined;
9
+ export declare const getAnchorHandlerInfo: (handler: HTMLElement) => AnchorInfo;
10
+ export declare const getDirectorHandlerInfo: (handler: HTMLElement) => DirectorInfo;
11
+ export declare const resetRoot: (root: HTMLElement | null, opts: {
12
+ material: StrictMaterial<"path"> | null;
13
+ calculator: ViewCalculator;
14
+ viewScaleInfo: ViewScaleInfo;
15
+ groupQueue: StrictMaterial<"group">[];
16
+ styles: MiddlewarePathEditorStyles;
17
+ }) => void;
18
+ export declare const resetAnchorStyle: (root: HTMLElement | null, opts: {
19
+ selectedAnchorId?: string;
20
+ material: StrictMaterial<"path"> | null;
21
+ viewScaleInfo: ViewScaleInfo;
22
+ calculator: ViewCalculator;
23
+ styles: MiddlewarePathEditorStyles;
24
+ }) => void;
25
+ export declare const clearDirectioner: (root: HTMLElement | null) => void;
26
+ export declare const resetDirectionerStyle: (root: HTMLElement, opts: {
27
+ selectedAnchorId: string;
28
+ currentDirector: Directioner | null;
29
+ prevDirector: Directioner | null;
30
+ styles: MiddlewarePathEditorStyles;
31
+ }) => void;
32
+ export declare function calcPathSize(root: HTMLElement | null): null | undefined;