@plait/common 0.77.3 → 0.78.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 (64) hide show
  1. package/fesm2022/plait-common.mjs.map +1 -1
  2. package/package.json +1 -3
  3. package/esm2022/algorithms/a-star.mjs +0 -58
  4. package/esm2022/algorithms/data-structures/graph.mjs +0 -47
  5. package/esm2022/algorithms/data-structures/index.mjs +0 -3
  6. package/esm2022/algorithms/data-structures/priority-queue.mjs +0 -13
  7. package/esm2022/algorithms/index.mjs +0 -3
  8. package/esm2022/constants/default.mjs +0 -11
  9. package/esm2022/constants/index.mjs +0 -5
  10. package/esm2022/constants/media.mjs +0 -8
  11. package/esm2022/constants/property.mjs +0 -7
  12. package/esm2022/constants/resize.mjs +0 -12
  13. package/esm2022/core/element-flavour.mjs +0 -8
  14. package/esm2022/core/element-ref.mjs +0 -32
  15. package/esm2022/core/group.component.mjs +0 -39
  16. package/esm2022/core/index.mjs +0 -5
  17. package/esm2022/core/render-component.mjs +0 -2
  18. package/esm2022/generators/active.generator.mjs +0 -50
  19. package/esm2022/generators/generator.mjs +0 -70
  20. package/esm2022/generators/group.generator.mjs +0 -21
  21. package/esm2022/generators/index.mjs +0 -4
  22. package/esm2022/image/image-base.component.mjs +0 -9
  23. package/esm2022/image/image.generator.mjs +0 -98
  24. package/esm2022/image/index.mjs +0 -4
  25. package/esm2022/image/with-image.mjs +0 -8
  26. package/esm2022/plait-common.mjs +0 -5
  27. package/esm2022/plugins/index.mjs +0 -3
  28. package/esm2022/plugins/with-group.mjs +0 -198
  29. package/esm2022/plugins/with-resize.mjs +0 -111
  30. package/esm2022/public-api.mjs +0 -16
  31. package/esm2022/shapes/common.mjs +0 -14
  32. package/esm2022/shapes/index.mjs +0 -2
  33. package/esm2022/text/index.mjs +0 -5
  34. package/esm2022/text/text-manage.mjs +0 -147
  35. package/esm2022/text/text-measure.mjs +0 -59
  36. package/esm2022/text/types.mjs +0 -7
  37. package/esm2022/text/with-text.mjs +0 -8
  38. package/esm2022/transforms/align.mjs +0 -116
  39. package/esm2022/transforms/index.mjs +0 -3
  40. package/esm2022/transforms/property.mjs +0 -40
  41. package/esm2022/types/index.mjs +0 -3
  42. package/esm2022/types/resize.mjs +0 -2
  43. package/esm2022/types/rotate.mjs +0 -2
  44. package/esm2022/utils/animate.mjs +0 -38
  45. package/esm2022/utils/clipboard.mjs +0 -30
  46. package/esm2022/utils/creation-mode.mjs +0 -19
  47. package/esm2022/utils/default-orthogonal-routing.mjs +0 -87
  48. package/esm2022/utils/direction.mjs +0 -93
  49. package/esm2022/utils/drawing/index.mjs +0 -3
  50. package/esm2022/utils/drawing/resize-handle.mjs +0 -25
  51. package/esm2022/utils/drawing/rotate-handle.mjs +0 -22
  52. package/esm2022/utils/elbow-line-route.mjs +0 -256
  53. package/esm2022/utils/elements.mjs +0 -19
  54. package/esm2022/utils/hot-key.mjs +0 -29
  55. package/esm2022/utils/image.mjs +0 -50
  56. package/esm2022/utils/index.mjs +0 -19
  57. package/esm2022/utils/line-path.mjs +0 -80
  58. package/esm2022/utils/math.mjs +0 -24
  59. package/esm2022/utils/memorize.mjs +0 -10
  60. package/esm2022/utils/resize.mjs +0 -137
  61. package/esm2022/utils/rotate.mjs +0 -16
  62. package/esm2022/utils/stroke.mjs +0 -12
  63. package/esm2022/utils/text.mjs +0 -105
  64. package/esm2022/utils/vector.mjs +0 -43
@@ -1,147 +0,0 @@
1
- import { IS_TEXT_EDITABLE, MERGING, RectangleClient, createForeignObject, createG, setAngleForG, toHostPoint, toViewBoxPoint, updateForeignObject, updateForeignObjectWidth } from '@plait/core';
2
- import { fromEvent, timer } from 'rxjs';
3
- import { Editor, Range, Node, Transforms, Operation } from 'slate';
4
- import { measureElement } from './text-measure';
5
- export class TextManage {
6
- constructor(board, options) {
7
- this.board = board;
8
- this.options = options;
9
- this.isEditing = false;
10
- this.getSize = (element, maxWidth) => {
11
- const computedStyle = window.getComputedStyle(this.foreignObject.children[0]);
12
- const fontFamily = computedStyle.fontFamily;
13
- const fontSize = parseFloat(computedStyle.fontSize);
14
- const target = element || this.editor.children[0];
15
- return measureElement(target, {
16
- fontSize: fontSize,
17
- fontFamily
18
- }, maxWidth || this.options.getMaxWidth());
19
- };
20
- this.getText = () => {
21
- return this.editor.children[0];
22
- };
23
- if (!this.options.getMaxWidth) {
24
- this.options.getMaxWidth = () => 999;
25
- }
26
- }
27
- draw(text) {
28
- const _rectangle = this.options.getRectangle();
29
- this.g = createG();
30
- this.foreignObject = createForeignObject(_rectangle.x, _rectangle.y, _rectangle.width, _rectangle.height);
31
- this.g.append(this.foreignObject);
32
- this.g.classList.add('text');
33
- const props = {
34
- board: this.board,
35
- text,
36
- textPlugins: this.options.textPlugins,
37
- onChange: (data) => {
38
- if (data.operations.some(op => !Operation.isSelectionOperation(op))) {
39
- const { width: newWidth, height: newHeight } = this.getSize();
40
- this.options.onChange && this.options.onChange({ ...data, width: newWidth, height: newHeight });
41
- MERGING.set(this.board, true);
42
- }
43
- },
44
- afterInit: (editor) => {
45
- this.editor = editor;
46
- },
47
- onComposition: (event) => {
48
- if (event.type === 'compositionend') {
49
- return;
50
- }
51
- const fakeRoot = buildCompositionData(this.editor, event.data);
52
- if (fakeRoot) {
53
- const sizeData = this.getSize(fakeRoot.children[0]);
54
- // invoking onChange asap to avoid blinking on typing chinese
55
- this.options.onChange && this.options.onChange({ ...sizeData });
56
- MERGING.set(this.board, true);
57
- }
58
- }
59
- };
60
- this.textComponentRef = this.board.renderText(this.foreignObject, props);
61
- }
62
- updateRectangleWidth(width) {
63
- updateForeignObjectWidth(this.g, width);
64
- }
65
- updateAngle(centerPoint, angle = 0) {
66
- setAngleForG(this.g, centerPoint, angle);
67
- }
68
- updateRectangle(rectangle) {
69
- const { x, y, width, height } = rectangle || this.options.getRectangle();
70
- updateForeignObject(this.g, width, height, x, y);
71
- }
72
- updateText(newText) {
73
- const props = {
74
- text: newText
75
- };
76
- this.textComponentRef.update(props);
77
- }
78
- edit(callback, exitEdit) {
79
- this.isEditing = true;
80
- IS_TEXT_EDITABLE.set(this.board, true);
81
- const props = {
82
- readonly: false
83
- };
84
- this.textComponentRef.update(props);
85
- Transforms.select(this.editor, [0]);
86
- const mousedown$ = fromEvent(document, 'mousedown').subscribe((event) => {
87
- const point = toViewBoxPoint(this.board, toHostPoint(this.board, event.x, event.y));
88
- const textRec = this.options.getRenderRectangle ? this.options.getRenderRectangle() : this.options.getRectangle();
89
- const clickInText = RectangleClient.isHit(RectangleClient.getRectangleByPoints([point, point]), textRec);
90
- const isAttached = event.target.closest('.plait-board-attached');
91
- if (!clickInText && !isAttached) {
92
- // handle composition input state, like: Chinese IME Composition Input
93
- timer(0).subscribe(() => {
94
- exitCallback();
95
- });
96
- }
97
- });
98
- const keydown$ = fromEvent(document, 'keydown').subscribe((event) => {
99
- if (event.isComposing) {
100
- return;
101
- }
102
- if (event.key === 'Escape' || event.key === 'Tab' || (exitEdit ? exitEdit(event) : false)) {
103
- event.preventDefault();
104
- event.stopPropagation();
105
- exitCallback();
106
- return;
107
- }
108
- });
109
- const exitCallback = () => {
110
- if (this.isEditing) {
111
- this.updateRectangle();
112
- mousedown$.unsubscribe();
113
- keydown$.unsubscribe();
114
- IS_TEXT_EDITABLE.set(this.board, false);
115
- MERGING.set(this.board, false);
116
- callback && callback();
117
- const props = {
118
- readonly: true
119
- };
120
- this.textComponentRef.update(props);
121
- this.isEditing = false;
122
- this.exitCallback = undefined;
123
- }
124
- };
125
- this.exitCallback = exitCallback;
126
- return exitCallback;
127
- }
128
- destroy() {
129
- this.g?.remove();
130
- this.textComponentRef?.destroy();
131
- this.exitCallback && this.exitCallback();
132
- }
133
- }
134
- export const buildCompositionData = (editor, data) => {
135
- if (editor.selection && Range.isCollapsed(editor.selection)) {
136
- const [textNode, textPath] = Editor.node(editor, editor.selection);
137
- const offset = editor.selection.anchor.offset;
138
- const clonedElement = JSON.parse(JSON.stringify(editor.children[0]));
139
- const root = { children: [clonedElement] };
140
- const newTextString = textNode.text.slice(0, offset + 1) + data + textNode.text.slice(offset + 1);
141
- const clonedTextNode = Node.get(root, textPath);
142
- clonedTextNode.text = newTextString;
143
- return root;
144
- }
145
- return null;
146
- };
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1tYW5hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RleHQvdGV4dC1tYW5hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUNoQixPQUFPLEVBR1AsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUMzQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFzQixLQUFLLEVBQVEsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVWhELE1BQU0sT0FBTyxVQUFVO0lBYW5CLFlBQ1ksS0FBaUIsRUFDakIsT0FNUDtRQVBPLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FNZDtRQXBCTCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBc0lsQixZQUFPLEdBQUcsQ0FBQyxPQUFpQixFQUFFLFFBQWlCLEVBQUUsRUFBRTtZQUMvQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RSxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQzVDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBYSxDQUFD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QUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBUyxDQUFDO1FBQ3hELGNBQWMsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIElTX1RFWFRfRURJVEFCTEUsXG4gICAgTUVSR0lORyxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBvaW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBjcmVhdGVGb3JlaWduT2JqZWN0LFxuICAgIGNyZWF0ZUcsXG4gICAgc2V0QW5nbGVGb3JHLFxuICAgIHRvSG9zdFBvaW50LFxuICAgIHRvVmlld0JveFBvaW50LFxuICAgIHVwZGF0ZUZvcmVpZ25PYmplY3QsXG4gICAgdXBkYXRlRm9yZWlnbk9iamVjdFdpZHRoXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVkaXRvciwgRWxlbWVudCwgTm9kZUVudHJ5LCBSYW5nZSwgVGV4dCwgTm9kZSwgVHJhbnNmb3JtcywgT3BlcmF0aW9uIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgUGxhaXRUZXh0Qm9hcmQsIFRleHRQbHVnaW4gfSBmcm9tICcuL3dpdGgtdGV4dCc7XG5pbXBvcnQgeyBtZWFzdXJlRWxlbWVudCB9IGZyb20gJy4vdGV4dC1tZWFzdXJlJztcbmltcG9ydCB7IFRleHRDaGFuZ2VEYXRhLCBUZXh0Q29tcG9uZW50UmVmLCBUZXh0UHJvcHMgfSBmcm9tICcuL3dpdGgtdGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dE1hbmFnZUNoYW5nZURhdGEge1xuICAgIG5ld1RleHQ/OiBFbGVtZW50O1xuICAgIG9wZXJhdGlvbnM/OiBPcGVyYXRpb25bXTtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgVGV4dE1hbmFnZSB7XG4gICAgaXNFZGl0aW5nID0gZmFsc2U7XG5cbiAgICBlZGl0b3IhOiBFZGl0b3I7XG5cbiAgICBnITogU1ZHR0VsZW1lbnQ7XG5cbiAgICBmb3JlaWduT2JqZWN0ITogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ7XG5cbiAgICB0ZXh0Q29tcG9uZW50UmVmITogVGV4dENvbXBvbmVudFJlZjtcblxuICAgIGV4aXRDYWxsYmFjaz86ICgpID0+IHZvaWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBib2FyZDogUGxhaXRCb2FyZCxcbiAgICAgICAgcHJpdmF0ZSBvcHRpb25zOiB7XG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICgpID0+IFJlY3RhbmdsZUNsaWVudDtcbiAgICAgICAgICAgIG9uQ2hhbmdlPzogKGRhdGE6IFRleHRNYW5hZ2VDaGFuZ2VEYXRhKSA9PiB2b2lkO1xuICAgICAgICAgICAgZ2V0UmVuZGVyUmVjdGFuZ2xlPzogKCkgPT4gUmVjdGFuZ2xlQ2xpZW50O1xuICAgICAgICAgICAgZ2V0TWF4V2lkdGg/OiAoKSA9PiBudW1iZXI7XG4gICAgICAgICAgICB0ZXh0UGx1Z2lucz86IFRleHRQbHVnaW5bXTtcbiAgICAgICAgfVxuICAgICkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5nZXRNYXhXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmdldE1heFdpZHRoID0gKCkgPT4gOTk5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhdyh0ZXh0OiBFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IF9yZWN0YW5nbGUgPSB0aGlzLm9wdGlvbnMuZ2V0UmVjdGFuZ2xlKCk7XG4gICAgICAgIHRoaXMuZyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgdGhpcy5mb3JlaWduT2JqZWN0ID0gY3JlYXRlRm9yZWlnbk9iamVjdChfcmVjdGFuZ2xlLngsIF9yZWN0YW5nbGUueSwgX3JlY3RhbmdsZS53aWR0aCwgX3JlY3RhbmdsZS5oZWlnaHQpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMuZm9yZWlnbk9iamVjdCk7XG4gICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCd0ZXh0Jyk7XG4gICAgICAgIGNvbnN0IHByb3BzOiBUZXh0UHJvcHMgPSB7XG4gICAgICAgICAgICBib2FyZDogdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICB0ZXh0UGx1Z2luczogdGhpcy5vcHRpb25zLnRleHRQbHVnaW5zLFxuICAgICAgICAgICAgb25DaGFuZ2U6IChkYXRhOiBUZXh0Q2hhbmdlRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLm9wZXJhdGlvbnMuc29tZShvcCA9PiAhT3BlcmF0aW9uLmlzU2VsZWN0aW9uT3BlcmF0aW9uKG9wKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aDogbmV3V2lkdGgsIGhlaWdodDogbmV3SGVpZ2h0IH0gPSB0aGlzLmdldFNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uQ2hhbmdlICYmIHRoaXMub3B0aW9ucy5vbkNoYW5nZSh7IC4uLmRhdGEsIHdpZHRoOiBuZXdXaWR0aCwgaGVpZ2h0OiBuZXdIZWlnaHQgfSk7XG4gICAgICAgICAgICAgICAgICAgIE1FUkdJTkcuc2V0KHRoaXMuYm9hcmQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlckluaXQ6IChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ29tcG9zaXRpb246IChldmVudDogQ29tcG9zaXRpb25FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAnY29tcG9zaXRpb25lbmQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZmFrZVJvb3QgPSBidWlsZENvbXBvc2l0aW9uRGF0YSh0aGlzLmVkaXRvciwgZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKGZha2VSb290KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVEYXRhID0gdGhpcy5nZXRTaXplKGZha2VSb290LmNoaWxkcmVuWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW52b2tpbmcgb25DaGFuZ2UgYXNhcCB0byBhdm9pZCBibGlua2luZyBvbiB0eXBpbmcgY2hpbmVzZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMub25DaGFuZ2UgJiYgdGhpcy5vcHRpb25zLm9uQ2hhbmdlKHsgLi4uc2l6ZURhdGEgfSk7XG4gICAgICAgICAgICAgICAgICAgIE1FUkdJTkcuc2V0KHRoaXMuYm9hcmQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50ZXh0Q29tcG9uZW50UmVmID0gKCh0aGlzLmJvYXJkIGFzIHVua25vd24pIGFzIFBsYWl0VGV4dEJvYXJkKS5yZW5kZXJUZXh0KHRoaXMuZm9yZWlnbk9iamVjdCwgcHJvcHMpO1xuICAgIH1cblxuICAgIHVwZGF0ZVJlY3RhbmdsZVdpZHRoKHdpZHRoOiBudW1iZXIpIHtcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdFdpZHRoKHRoaXMuZywgd2lkdGgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUFuZ2xlKGNlbnRlclBvaW50OiBQb2ludCwgYW5nbGU6IG51bWJlciA9IDApIHtcbiAgICAgICAgc2V0QW5nbGVGb3JHKHRoaXMuZywgY2VudGVyUG9pbnQsIGFuZ2xlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVSZWN0YW5nbGUocmVjdGFuZ2xlPzogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gcmVjdGFuZ2xlIHx8IHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoKTtcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdCh0aGlzLmcsIHdpZHRoLCBoZWlnaHQsIHgsIHkpO1xuICAgIH1cblxuICAgIHVwZGF0ZVRleHQobmV3VGV4dDogRWxlbWVudCkge1xuICAgICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgICAgIHRleHQ6IG5ld1RleHRcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50ZXh0Q29tcG9uZW50UmVmLnVwZGF0ZShwcm9wcyk7XG4gICAgfVxuXG4gICAgZWRpdChjYWxsYmFjaz86ICgpID0+IHZvaWQsIGV4aXRFZGl0PzogKGV2ZW50OiBFdmVudCkgPT4gYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzRWRpdGluZyA9IHRydWU7XG4gICAgICAgIElTX1RFWFRfRURJVEFCTEUuc2V0KHRoaXMuYm9hcmQsIHRydWUpO1xuICAgICAgICBjb25zdCBwcm9wczogUGFydGlhbDxUZXh0UHJvcHM+ID0ge1xuICAgICAgICAgICAgcmVhZG9ubHk6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudGV4dENvbXBvbmVudFJlZi51cGRhdGUocHJvcHMpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgWzBdKTtcbiAgICAgICAgY29uc3QgbW91c2Vkb3duJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQodGhpcy5ib2FyZCwgdG9Ib3N0UG9pbnQodGhpcy5ib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgdGV4dFJlYyA9IHRoaXMub3B0aW9ucy5nZXRSZW5kZXJSZWN0YW5nbGUgPyB0aGlzLm9wdGlvbnMuZ2V0UmVuZGVyUmVjdGFuZ2xlKCkgOiB0aGlzLm9wdGlvbnMuZ2V0UmVjdGFuZ2xlKCk7XG4gICAgICAgICAgICBjb25zdCBjbGlja0luVGV4dCA9IFJlY3RhbmdsZUNsaWVudC5pc0hpdChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pLCB0ZXh0UmVjKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQXR0YWNoZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcucGxhaXQtYm9hcmQtYXR0YWNoZWQnKTtcbiAgICAgICAgICAgIGlmICghY2xpY2tJblRleHQgJiYgIWlzQXR0YWNoZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgY29tcG9zaXRpb24gaW5wdXQgc3RhdGUsIGxpa2U6IENoaW5lc2UgSU1FIENvbXBvc2l0aW9uIElucHV0XG4gICAgICAgICAgICAgICAgdGltZXIoMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXhpdENhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBrZXlkb3duJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuaXNDb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyB8fCBldmVudC5rZXkgPT09ICdUYWInIHx8IChleGl0RWRpdCA/IGV4aXRFZGl0KGV2ZW50KSA6IGZhbHNlKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZXhpdENhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZXhpdENhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgICAgICBtb3VzZWRvd24kLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAga2V5ZG93biQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICBJU19URVhUX0VESVRBQkxFLnNldCh0aGlzLmJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgTUVSR0lORy5zZXQodGhpcy5ib2FyZCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5OiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRDb21wb25lbnRSZWYudXBkYXRlKHByb3BzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhpdENhbGxiYWNrID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmV4aXRDYWxsYmFjayA9IGV4aXRDYWxsYmFjaztcbiAgICAgICAgcmV0dXJuIGV4aXRDYWxsYmFjaztcbiAgICB9XG5cbiAgICBnZXRTaXplID0gKGVsZW1lbnQ/OiBFbGVtZW50LCBtYXhXaWR0aD86IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5mb3JlaWduT2JqZWN0LmNoaWxkcmVuWzBdKTtcbiAgICAgICAgY29uc3QgZm9udEZhbWlseSA9IGNvbXB1dGVkU3R5bGUuZm9udEZhbWlseTtcbiAgICAgICAgY29uc3QgZm9udFNpemUgPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUuZm9udFNpemUpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50IHx8ICh0aGlzLmVkaXRvci5jaGlsZHJlblswXSBhcyBFbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVFbGVtZW50KFxuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiBmb250U2l6ZSxcbiAgICAgICAgICAgICAgICBmb250RmFtaWx5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWF4V2lkdGggfHwgdGhpcy5vcHRpb25zLmdldE1heFdpZHRoISgpXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIGdldFRleHQgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvci5jaGlsZHJlblswXTtcbiAgICB9O1xuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5nPy5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy50ZXh0Q29tcG9uZW50UmVmPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZXhpdENhbGxiYWNrICYmIHRoaXMuZXhpdENhbGxiYWNrKCk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRDb21wb3NpdGlvbkRhdGEgPSAoZWRpdG9yOiBFZGl0b3IsIGRhdGE6IHN0cmluZykgPT4ge1xuICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uICYmIFJhbmdlLmlzQ29sbGFwc2VkKGVkaXRvci5zZWxlY3Rpb24pKSB7XG4gICAgICAgIGNvbnN0IFt0ZXh0Tm9kZSwgdGV4dFBhdGhdID0gRWRpdG9yLm5vZGUoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uKSBhcyBOb2RlRW50cnk8VGV4dD47XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLm9mZnNldDtcbiAgICAgICAgY29uc3QgY2xvbmVkRWxlbWVudCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWRpdG9yLmNoaWxkcmVuWzBdKSk7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB7IGNoaWxkcmVuOiBbY2xvbmVkRWxlbWVudF0gfTtcbiAgICAgICAgY29uc3QgbmV3VGV4dFN0cmluZyA9IHRleHROb2RlLnRleHQuc2xpY2UoMCwgb2Zmc2V0ICsgMSkgKyBkYXRhICsgdGV4dE5vZGUudGV4dC5zbGljZShvZmZzZXQgKyAxKTtcbiAgICAgICAgY29uc3QgY2xvbmVkVGV4dE5vZGUgPSBOb2RlLmdldChyb290LCB0ZXh0UGF0aCkgYXMgVGV4dDtcbiAgICAgICAgY2xvbmVkVGV4dE5vZGUudGV4dCA9IG5ld1RleHRTdHJpbmc7XG4gICAgICAgIHJldHVybiByb290O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG4iXX0=
@@ -1,59 +0,0 @@
1
- import { Node } from 'slate';
2
- import { getLineHeightByFontSize } from '../utils/text';
3
- export function measureElement(element, options, containerMaxWidth = 10000) {
4
- const canvas = document.createElement('canvas');
5
- const ctx = canvas.getContext('2d');
6
- const textEntries = Node.texts(element);
7
- const lines = [[]];
8
- for (const textEntry of textEntries) {
9
- const [text] = textEntry;
10
- const textString = Node.string(text);
11
- const textArray = textString.split('\n');
12
- textArray.forEach((segmentTextString, index) => {
13
- const segmentText = { ...text, text: segmentTextString };
14
- if (index === 0) {
15
- const currentLine = lines[lines.length - 1];
16
- currentLine.push(segmentText);
17
- }
18
- else {
19
- const newLine = [];
20
- newLine.push(segmentText);
21
- lines.push(newLine);
22
- }
23
- });
24
- }
25
- let width = 0;
26
- let height = 0;
27
- lines.forEach((lineTexts, index) => {
28
- let lineWidth = 0;
29
- let maxLineHeight = getLineHeightByFontSize(options.fontSize);
30
- lineTexts.forEach((text, index) => {
31
- const font = getFont(text, { fontFamily: options.fontFamily, fontSize: options.fontSize });
32
- ctx.font = font;
33
- lineWidth += ctx.measureText(text.text).width;
34
- const isLast = index === lineTexts.length - 1;
35
- if (text['font-size'] && (isLast || text.text !== '')) {
36
- const lineHeight = getLineHeightByFontSize(parseFloat(text['font-size']));
37
- if (lineHeight > maxLineHeight) {
38
- maxLineHeight = lineHeight;
39
- }
40
- }
41
- });
42
- if (lineWidth <= containerMaxWidth) {
43
- if (lineWidth > width) {
44
- width = lineWidth;
45
- }
46
- height += maxLineHeight;
47
- }
48
- else {
49
- width = containerMaxWidth;
50
- const lineWrapNumber = Math.ceil(lineWidth / containerMaxWidth);
51
- height += maxLineHeight * lineWrapNumber;
52
- }
53
- });
54
- return { width, height };
55
- }
56
- const getFont = (text, options) => {
57
- return `${text.italic ? 'italic ' : ''} ${text.bold ? 'bold ' : ''} ${text['font-size'] || options.fontSize}px ${options.fontFamily} `;
58
- };
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1tZWFzdXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy90ZXh0L3RleHQtbWVhc3VyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RCxNQUFNLFVBQVUsY0FBYyxDQUMxQixPQUF5QixFQUN6QixPQUdDLEVBQ0Qsb0JBQTRCLEtBQUs7SUFFakMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBNkIsQ0FBQztJQUNoRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sS0FBSyxHQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLEtBQUssTUFBTSxTQUFTLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUF5QixFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzNELE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUM7WUFDekQsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sT0FBTyxHQUFpQixFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzFCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUF1QixFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQ3JELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQWdCLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDbEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMzRixHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNoQixTQUFTLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzlDLE1BQU0sTUFBTSxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELE1BQU0sVUFBVSxHQUFHLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLFVBQVUsR0FBRyxhQUFhLEVBQUUsQ0FBQztvQkFDN0IsYUFBYSxHQUFHLFVBQVUsQ0FBQztnQkFDL0IsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksU0FBUyxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDakMsSUFBSSxTQUFTLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdEIsQ0FBQztZQUNELE1BQU0sSUFBSSxhQUFhLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLEdBQUcsaUJBQWlCLENBQUM7WUFDMUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztZQUNoRSxNQUFNLElBQUksYUFBYSxHQUFHLGNBQWMsQ0FBQztRQUM3QyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLE9BQU8sR0FBRyxDQUNaLElBQWdCLEVBQ2hCLE9BR0MsRUFDSCxFQUFFO0lBQ0EsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxNQUFNLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQztBQUMzSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQ3VzdG9tVGV4dCwgUGFyYWdyYXBoRWxlbWVudCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0TGluZUhlaWdodEJ5Rm9udFNpemUgfSBmcm9tICcuLi91dGlscy90ZXh0JztcblxuZXhwb3J0IGZ1bmN0aW9uIG1lYXN1cmVFbGVtZW50KFxuICAgIGVsZW1lbnQ6IFBhcmFncmFwaEVsZW1lbnQsXG4gICAgb3B0aW9uczoge1xuICAgICAgICBmb250U2l6ZTogbnVtYmVyO1xuICAgICAgICBmb250RmFtaWx5OiBzdHJpbmc7XG4gICAgfSxcbiAgICBjb250YWluZXJNYXhXaWR0aDogbnVtYmVyID0gMTAwMDBcbikge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgICBjb25zdCB0ZXh0RW50cmllcyA9IE5vZGUudGV4dHMoZWxlbWVudCk7XG4gICAgY29uc3QgbGluZXM6IEN1c3RvbVRleHRbXVtdID0gW1tdXTtcbiAgICBmb3IgKGNvbnN0IHRleHRFbnRyeSBvZiB0ZXh0RW50cmllcykge1xuICAgICAgICBjb25zdCBbdGV4dF0gPSB0ZXh0RW50cnk7XG4gICAgICAgIGNvbnN0IHRleHRTdHJpbmcgPSBOb2RlLnN0cmluZyh0ZXh0KTtcbiAgICAgICAgY29uc3QgdGV4dEFycmF5ID0gdGV4dFN0cmluZy5zcGxpdCgnXFxuJyk7XG4gICAgICAgIHRleHRBcnJheS5mb3JFYWNoKChzZWdtZW50VGV4dFN0cmluZzogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWdtZW50VGV4dCA9IHsgLi4udGV4dCwgdGV4dDogc2VnbWVudFRleHRTdHJpbmcgfTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRMaW5lID0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgY3VycmVudExpbmUucHVzaChzZWdtZW50VGV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xpbmU6IEN1c3RvbVRleHRbXSA9IFtdO1xuICAgICAgICAgICAgICAgIG5ld0xpbmUucHVzaChzZWdtZW50VGV4dCk7XG4gICAgICAgICAgICAgICAgbGluZXMucHVzaChuZXdMaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGxldCB3aWR0aCA9IDA7XG4gICAgbGV0IGhlaWdodCA9IDA7XG4gICAgbGluZXMuZm9yRWFjaCgobGluZVRleHRzOiBDdXN0b21UZXh0W10sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgbGV0IGxpbmVXaWR0aCA9IDA7XG4gICAgICAgIGxldCBtYXhMaW5lSGVpZ2h0ID0gZ2V0TGluZUhlaWdodEJ5Rm9udFNpemUob3B0aW9ucy5mb250U2l6ZSk7XG4gICAgICAgIGxpbmVUZXh0cy5mb3JFYWNoKCh0ZXh0OiBDdXN0b21UZXh0LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb250ID0gZ2V0Rm9udCh0ZXh0LCB7IGZvbnRGYW1pbHk6IG9wdGlvbnMuZm9udEZhbWlseSwgZm9udFNpemU6IG9wdGlvbnMuZm9udFNpemUgfSk7XG4gICAgICAgICAgICBjdHguZm9udCA9IGZvbnQ7XG4gICAgICAgICAgICBsaW5lV2lkdGggKz0gY3R4Lm1lYXN1cmVUZXh0KHRleHQudGV4dCkud2lkdGg7XG4gICAgICAgICAgICBjb25zdCBpc0xhc3QgPSBpbmRleCA9PT0gbGluZVRleHRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBpZiAodGV4dFsnZm9udC1zaXplJ10gJiYgKGlzTGFzdCB8fCB0ZXh0LnRleHQgIT09ICcnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBnZXRMaW5lSGVpZ2h0QnlGb250U2l6ZShwYXJzZUZsb2F0KHRleHRbJ2ZvbnQtc2l6ZSddKSk7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmVIZWlnaHQgPiBtYXhMaW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIG1heExpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChsaW5lV2lkdGggPD0gY29udGFpbmVyTWF4V2lkdGgpIHtcbiAgICAgICAgICAgIGlmIChsaW5lV2lkdGggPiB3aWR0aCkge1xuICAgICAgICAgICAgICAgIHdpZHRoID0gbGluZVdpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGVpZ2h0ICs9IG1heExpbmVIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aWR0aCA9IGNvbnRhaW5lck1heFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgbGluZVdyYXBOdW1iZXIgPSBNYXRoLmNlaWwobGluZVdpZHRoIC8gY29udGFpbmVyTWF4V2lkdGgpO1xuICAgICAgICAgICAgaGVpZ2h0ICs9IG1heExpbmVIZWlnaHQgKiBsaW5lV3JhcE51bWJlcjtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTtcbn1cblxuY29uc3QgZ2V0Rm9udCA9IChcbiAgICB0ZXh0OiBDdXN0b21UZXh0LFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZm9udFNpemU6IG51bWJlcjtcbiAgICAgICAgZm9udEZhbWlseTogc3RyaW5nO1xuICAgIH1cbikgPT4ge1xuICAgIHJldHVybiBgJHt0ZXh0Lml0YWxpYyA/ICdpdGFsaWMgJyA6ICcnfSAke3RleHQuYm9sZCA/ICdib2xkICcgOiAnJ30gJHt0ZXh0Wydmb250LXNpemUnXSB8fCBvcHRpb25zLmZvbnRTaXplfXB4ICR7b3B0aW9ucy5mb250RmFtaWx5fSBgO1xufTtcbiJdfQ==
@@ -1,7 +0,0 @@
1
- export var Alignment;
2
- (function (Alignment) {
3
- Alignment["left"] = "left";
4
- Alignment["center"] = "center";
5
- Alignment["right"] = "right";
6
- })(Alignment || (Alignment = {}));
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RleHQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNqQiwwQkFBYSxDQUFBO0lBQ2IsOEJBQWlCLENBQUE7SUFDakIsNEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsUUFJcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRWxlbWVudCwgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuXG5leHBvcnQgZW51bSBBbGlnbm1lbnQge1xuICAgIGxlZnQgPSAnbGVmdCcsXG4gICAgY2VudGVyID0gJ2NlbnRlcicsXG4gICAgcmlnaHQgPSAncmlnaHQnXG59XG5cbmV4cG9ydCB0eXBlIEN1c3RvbVRleHQgPSB7XG4gICAgYm9sZD86IGJvb2xlYW47XG4gICAgaXRhbGljPzogYm9vbGVhbjtcbiAgICBzdHJpa2U/OiBib29sZWFuO1xuICAgIGNvZGU/OiBib29sZWFuO1xuICAgIHRleHQ6IHN0cmluZztcbiAgICB1bmRlcmxpbmVkPzogYm9vbGVhbjtcbiAgICBjb2xvcj86IHN0cmluZztcbiAgICBbYGZvbnQtc2l6ZWBdPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBMaW5rRWxlbWVudCBleHRlbmRzIEJhc2VFbGVtZW50IHtcbiAgICB0eXBlOiAnbGluayc7XG4gICAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYWdyYXBoRWxlbWVudCBleHRlbmRzIEJhc2VFbGVtZW50IHtcbiAgICBhbGlnbj86IEFsaWdubWVudDtcbn1cblxuZXhwb3J0IHR5cGUgQ3VzdG9tRWxlbWVudCA9IFBhcmFncmFwaEVsZW1lbnQgfCBMaW5rRWxlbWVudDtcbiJdfQ==
@@ -1,8 +0,0 @@
1
- export const withText = (board) => {
2
- const newBoard = board;
3
- newBoard.renderText = (container, props) => {
4
- throw new Error('No implementation for renderText method.');
5
- };
6
- return newBoard;
7
- };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy90ZXh0L3dpdGgtdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBb0MsS0FBUSxFQUFFLEVBQUU7SUFDcEUsTUFBTSxRQUFRLEdBQUcsS0FBMkIsQ0FBQztJQUU3QyxRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsU0FBcUMsRUFBRSxLQUFnQixFQUFFLEVBQUU7UUFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFdpdGhQbHVnaW5PcHRpb25zIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgRWRpdG9yLCBPcGVyYXRpb24sIEVsZW1lbnQgYXMgU2xhdGVFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgUmVuZGVyQ29tcG9uZW50UmVmIH0gZnJvbSAnLi4vY29yZS9yZW5kZXItY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdFRleHRCb2FyZCB7XG4gICAgcmVuZGVyVGV4dDogKGNvbnRhaW5lcjogRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQsIHByb3BzOiBUZXh0UHJvcHMpID0+IFRleHRDb21wb25lbnRSZWY7XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoVGV4dCA9IDxUIGV4dGVuZHMgUGxhaXRCb2FyZCA9IFBsYWl0Qm9hcmQ+KGJvYXJkOiBUKSA9PiB7XG4gICAgY29uc3QgbmV3Qm9hcmQgPSBib2FyZCBhcyBUICYgUGxhaXRUZXh0Qm9hcmQ7XG5cbiAgICBuZXdCb2FyZC5yZW5kZXJUZXh0ID0gKGNvbnRhaW5lcjogRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQsIHByb3BzOiBUZXh0UHJvcHMpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBpbXBsZW1lbnRhdGlvbiBmb3IgcmVuZGVyVGV4dCBtZXRob2QuJyk7XG4gICAgfTtcbiAgICByZXR1cm4gbmV3Qm9hcmQ7XG59O1xuXG5leHBvcnQgdHlwZSBUZXh0Q29tcG9uZW50UmVmID0gUmVuZGVyQ29tcG9uZW50UmVmPFRleHRQcm9wcz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dFByb3BzIHtcbiAgICBib2FyZDogUGxhaXRCb2FyZDtcbiAgICB0ZXh0OiBTbGF0ZUVsZW1lbnQ7XG4gICAgdGV4dFBsdWdpbnM/OiBUZXh0UGx1Z2luW107XG4gICAgcmVhZG9ubHk/OiBib29sZWFuO1xuICAgIG9uQ2hhbmdlPzogKGRhdGE6IFRleHRDaGFuZ2VEYXRhKSA9PiB2b2lkO1xuICAgIGFmdGVySW5pdD86IChkYXRhOiBFZGl0b3IpID0+IHZvaWQ7XG4gICAgb25Db21wb3NpdGlvbj86IChkYXRhOiBDb21wb3NpdGlvbkV2ZW50KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBUZXh0Q2hhbmdlRGF0YSA9IHsgbmV3VGV4dDogU2xhdGVFbGVtZW50OyBvcGVyYXRpb25zOiBPcGVyYXRpb25bXSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhUZXh0UGx1Z2luT3B0aW9ucyBleHRlbmRzIFdpdGhQbHVnaW5PcHRpb25zIHtcbiAgICB0ZXh0UGx1Z2lucz86IFRleHRQbHVnaW5bXTtcbn1cblxuZXhwb3J0IHR5cGUgVGV4dFBsdWdpbiA9IChlZGl0b3I6IEVkaXRvcikgPT4gRWRpdG9yO1xuIl19
@@ -1,116 +0,0 @@
1
- import { MERGING, PlaitBoard, PlaitGroupElement, Transforms, getElementsInGroup, getHighestSelectedElements, getRectangleByElements } from '@plait/core';
2
- export const alignTop = (board) => {
3
- function getOffset(outerRectangle, rectangle) {
4
- return [0, outerRectangle.y - rectangle.y];
5
- }
6
- setOffset(board, getOffset);
7
- };
8
- export const alignBottom = (board) => {
9
- function getOffset(outerRectangle, rectangle) {
10
- return [0, outerRectangle.y + outerRectangle.height - (rectangle.y + rectangle.height)];
11
- }
12
- setOffset(board, getOffset);
13
- };
14
- export const alignLeft = (board) => {
15
- function getOffset(outerRectangle, rectangle) {
16
- return [outerRectangle.x - rectangle.x, 0];
17
- }
18
- setOffset(board, getOffset);
19
- };
20
- export const alignHorizontalCenter = (board) => {
21
- function getOffset(outerRectangle, rectangle) {
22
- const outerCenter = outerRectangle.x + outerRectangle.width / 2;
23
- const elementCenter = rectangle.x + rectangle.width / 2;
24
- return [outerCenter - elementCenter, 0];
25
- }
26
- setOffset(board, getOffset);
27
- };
28
- export const alignVerticalCenter = (board) => {
29
- function getOffset(outerRectangle, rectangle) {
30
- const outerCenter = outerRectangle.y + outerRectangle.height / 2;
31
- const elementCenter = rectangle.y + rectangle.height / 2;
32
- return [0, outerCenter - elementCenter];
33
- }
34
- setOffset(board, getOffset);
35
- };
36
- export const alignRight = (board) => {
37
- function getOffset(outerRectangle, rectangle) {
38
- return [outerRectangle.x + outerRectangle.width - (rectangle.x + rectangle.width), 0];
39
- }
40
- setOffset(board, getOffset);
41
- };
42
- function setOffset(board, getOffset) {
43
- const elements = getHighestSelectedElements(board);
44
- const outerRectangle = getRectangleByElements(board, elements, false);
45
- elements.forEach(element => {
46
- if (!element.points && !PlaitGroupElement.isGroup(element))
47
- return;
48
- const rectangle = board.getRectangle(element);
49
- const offset = getOffset(outerRectangle, rectangle);
50
- let updateElements = [];
51
- if (PlaitGroupElement.isGroup(element)) {
52
- updateElements = getElementsInGroup(board, element, true, false);
53
- }
54
- else if (element.points) {
55
- updateElements = [element];
56
- }
57
- updateElements.forEach(item => {
58
- const newPoints = item.points.map(p => [p[0] + offset[0], p[1] + offset[1]]);
59
- const path = PlaitBoard.findPath(board, item);
60
- Transforms.setNode(board, {
61
- points: newPoints
62
- }, path);
63
- });
64
- MERGING.set(board, true);
65
- });
66
- MERGING.set(board, false);
67
- }
68
- export const distributeHorizontal = (board) => {
69
- distribute(board, true);
70
- };
71
- export const distributeVertical = (board) => {
72
- distribute(board, false);
73
- };
74
- const distribute = (board, isHorizontal) => {
75
- const axis = isHorizontal ? 'x' : 'y';
76
- const side = isHorizontal ? 'width' : 'height';
77
- const highestSelectedElements = getHighestSelectedElements(board);
78
- const refs = highestSelectedElements.map(element => {
79
- return { element, rectangle: board.getRectangle(element) };
80
- });
81
- const outerRectangle = getRectangleByElements(board, highestSelectedElements, false);
82
- const minRectangleRef = refs.sort((a, b) => a.rectangle[axis] - b.rectangle[axis])[0];
83
- const maxRectangleRef = refs.sort((a, b) => b.rectangle[axis] + b.rectangle[side] - (a.rectangle[axis] + a.rectangle[side]))[0];
84
- const minIndex = refs.findIndex(ref => ref === minRectangleRef);
85
- const maxIndex = refs.findIndex(ref => ref === maxRectangleRef);
86
- let distributeRefs = refs.filter((element, index) => index !== minIndex && index !== maxIndex);
87
- const sum = distributeRefs.reduce((accumulator, current) => current.rectangle[side] + accumulator, 0);
88
- const offset = (outerRectangle[side] - minRectangleRef.rectangle[side] - maxRectangleRef.rectangle[side] - sum) / (distributeRefs.length + 1);
89
- distributeRefs = distributeRefs.sort((a, b) => a.rectangle[axis] - b.rectangle[axis]);
90
- let position = minRectangleRef.rectangle[axis] + minRectangleRef.rectangle[side] + offset;
91
- for (let i = 0; i < distributeRefs.length; i++) {
92
- const rectangle = distributeRefs[i].rectangle;
93
- const moveOffset = [0, 0];
94
- const moveAxis = isHorizontal ? 0 : 1;
95
- moveOffset[moveAxis] = position - rectangle[axis];
96
- const path = PlaitBoard.findPath(board, distributeRefs[i].element);
97
- const newPoints = distributeRefs[i].element.points.map(p => [p[0] + moveOffset[0], p[1] + moveOffset[1]]);
98
- Transforms.setNode(board, {
99
- points: newPoints
100
- }, path);
101
- MERGING.set(board, true);
102
- position = position + rectangle[side] + offset;
103
- }
104
- MERGING.set(board, false);
105
- };
106
- export const AlignTransform = {
107
- alignTop,
108
- alignHorizontalCenter,
109
- alignBottom,
110
- alignLeft,
111
- alignVerticalCenter,
112
- alignRight,
113
- distributeHorizontal,
114
- distributeVertical
115
- };
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RyYW5zZm9ybXMvYWxpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBRVYsaUJBQWlCLEVBR2pCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsMEJBQTBCLEVBQzFCLHNCQUFzQixFQUN6QixNQUFNLGFBQWEsQ0FBQztBQUVyQixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDMUMsU0FBUyxTQUFTLENBQUMsY0FBK0IsRUFBRSxTQUEwQjtRQUMxRSxPQUFPLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBVSxDQUFDO0lBQ3hELENBQUM7SUFDRCxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUM3QyxTQUFTLFNBQVMsQ0FBQyxjQUErQixFQUFFLFNBQTBCO1FBQzFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQVUsQ0FBQztJQUNyRyxDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0MsU0FBUyxTQUFTLENBQUMsY0FBK0IsRUFBRSxTQUEwQjtRQUMxRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENB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QUMsQ0FBQztRQUNsRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBWSxDQUFDO1FBQ3RILFVBQVUsQ0FBQyxPQUFPLENBQ2QsS0FBSyxFQUNMO1lBQ0ksTUFBTSxFQUFFLFNBQVM7U0FDcEIsRUFDRCxJQUFJLENBQ1AsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pCLFFBQVEsR0FBRyxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUNuRCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBYUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFtQjtJQUMxQyxRQUFRO0lBQ1IscUJBQXFCO0lBQ3JCLFdBQVc7SUFDWCxTQUFTO0lBQ1QsbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixvQkFBb0I7SUFDcEIsa0JBQWtCO0NBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIE1FUkdJTkcsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRHcm91cEVsZW1lbnQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZ2V0RWxlbWVudHNJbkdyb3VwLFxuICAgIGdldEhpZ2hlc3RTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGdldFJlY3RhbmdsZUJ5RWxlbWVudHNcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5leHBvcnQgY29uc3QgYWxpZ25Ub3AgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQob3V0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFswLCBvdXRlclJlY3RhbmdsZS55IC0gcmVjdGFuZ2xlLnldIGFzIFBvaW50O1xuICAgIH1cbiAgICBzZXRPZmZzZXQoYm9hcmQsIGdldE9mZnNldCk7XG59O1xuXG5leHBvcnQgY29uc3QgYWxpZ25Cb3R0b20gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQob3V0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFswLCBvdXRlclJlY3RhbmdsZS55ICsgb3V0ZXJSZWN0YW5nbGUuaGVpZ2h0IC0gKHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCldIGFzIFBvaW50O1xuICAgIH1cbiAgICBzZXRPZmZzZXQoYm9hcmQsIGdldE9mZnNldCk7XG59O1xuXG5leHBvcnQgY29uc3QgYWxpZ25MZWZ0ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgZnVuY3Rpb24gZ2V0T2Zmc2V0KG91dGVyUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBbb3V0ZXJSZWN0YW5nbGUueCAtIHJlY3RhbmdsZS54LCAwXSBhcyBQb2ludDtcbiAgICB9XG4gICAgc2V0T2Zmc2V0KGJvYXJkLCBnZXRPZmZzZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFsaWduSG9yaXpvbnRhbENlbnRlciA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGZ1bmN0aW9uIGdldE9mZnNldChvdXRlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICBjb25zdCBvdXRlckNlbnRlciA9IG91dGVyUmVjdGFuZ2xlLnggKyBvdXRlclJlY3RhbmdsZS53aWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRDZW50ZXIgPSByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCAvIDI7XG4gICAgICAgIHJldHVybiBbb3V0ZXJDZW50ZXIgLSBlbGVtZW50Q2VudGVyLCAwXSBhcyBQb2ludDtcbiAgICB9XG4gICAgc2V0T2Zmc2V0KGJvYXJkLCBnZXRPZmZzZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFsaWduVmVydGljYWxDZW50ZXIgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQob3V0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgY29uc3Qgb3V0ZXJDZW50ZXIgPSBvdXRlclJlY3RhbmdsZS55ICsgb3V0ZXJSZWN0YW5nbGUuaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3QgZWxlbWVudENlbnRlciA9IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDI7XG4gICAgICAgIHJldHVybiBbMCwgb3V0ZXJDZW50ZXIgLSBlbGVtZW50Q2VudGVyXSBhcyBQb2ludDtcbiAgICB9XG4gICAgc2V0T2Zmc2V0KGJvYXJkLCBnZXRPZmZzZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFsaWduUmlnaHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQob3V0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICAgICAgcmV0dXJuIFtvdXRlclJlY3RhbmdsZS54ICsgb3V0ZXJSZWN0YW5nbGUud2lkdGggLSAocmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgpLCAwXSBhcyBQb2ludDtcbiAgICB9XG4gICAgc2V0T2Zmc2V0KGJvYXJkLCBnZXRPZmZzZXQpO1xufTtcblxuZnVuY3Rpb24gc2V0T2Zmc2V0KGJvYXJkOiBQbGFpdEJvYXJkLCBnZXRPZmZzZXQ6IChvdXRlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4gUG9pbnQpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IGdldEhpZ2hlc3RTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBjb25zdCBvdXRlclJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzLCBmYWxzZSk7XG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKCFlbGVtZW50LnBvaW50cyAmJiAhUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChlbGVtZW50KSkgcmV0dXJuO1xuICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBib2FyZC5nZXRSZWN0YW5nbGUoZWxlbWVudCkhO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBnZXRPZmZzZXQob3V0ZXJSZWN0YW5nbGUsIHJlY3RhbmdsZSk7XG4gICAgICAgIGxldCB1cGRhdGVFbGVtZW50czogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICAgICAgaWYgKFBsYWl0R3JvdXBFbGVtZW50LmlzR3JvdXAoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRzID0gZ2V0RWxlbWVudHNJbkdyb3VwKGJvYXJkLCBlbGVtZW50LCB0cnVlLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5wb2ludHMpIHtcbiAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRzID0gW2VsZW1lbnRdO1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZUVsZW1lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdQb2ludHMgPSBpdGVtLnBvaW50cyEubWFwKHAgPT4gW3BbMF0gKyBvZmZzZXRbMF0sIHBbMV0gKyBvZmZzZXRbMV1dKSBhcyBQb2ludFtdO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGl0ZW0pO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKFxuICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzOiBuZXdQb2ludHNcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhdGhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICBNRVJHSU5HLnNldChib2FyZCwgdHJ1ZSk7XG4gICAgfSk7XG4gICAgTUVSR0lORy5zZXQoYm9hcmQsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGNvbnN0IGRpc3RyaWJ1dGVIb3Jpem9udGFsID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgZGlzdHJpYnV0ZShib2FyZCwgdHJ1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGlzdHJpYnV0ZVZlcnRpY2FsID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgZGlzdHJpYnV0ZShib2FyZCwgZmFsc2UpO1xufTtcblxuY29uc3QgZGlzdHJpYnV0ZSA9IChib2FyZDogUGxhaXRCb2FyZCwgaXNIb3Jpem9udGFsOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgYXhpcyA9IGlzSG9yaXpvbnRhbCA/ICd4JyA6ICd5JztcbiAgICBjb25zdCBzaWRlID0gaXNIb3Jpem9udGFsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIGNvbnN0IGhpZ2hlc3RTZWxlY3RlZEVsZW1lbnRzID0gZ2V0SGlnaGVzdFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNvbnN0IHJlZnMgPSBoaWdoZXN0U2VsZWN0ZWRFbGVtZW50cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgIHJldHVybiB7IGVsZW1lbnQsIHJlY3RhbmdsZTogYm9hcmQuZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpISB9O1xuICAgIH0pO1xuICAgIGNvbnN0IG91dGVyUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgaGlnaGVzdFNlbGVjdGVkRWxlbWVudHMsIGZhbHNlKTtcbiAgICBjb25zdCBtaW5SZWN0YW5nbGVSZWYgPSByZWZzLnNvcnQoKGEsIGIpID0+IGEucmVjdGFuZ2xlW2F4aXNdIC0gYi5yZWN0YW5nbGVbYXhpc10pWzBdO1xuICAgIGNvbnN0IG1heFJlY3RhbmdsZVJlZiA9IHJlZnMuc29ydCgoYSwgYikgPT4gYi5yZWN0YW5nbGVbYXhpc10gKyBiLnJlY3RhbmdsZVtzaWRlXSAtIChhLnJlY3RhbmdsZVtheGlzXSArIGEucmVjdGFuZ2xlW3NpZGVdKSlbMF07XG4gICAgY29uc3QgbWluSW5kZXggPSByZWZzLmZpbmRJbmRleChyZWYgPT4gcmVmID09PSBtaW5SZWN0YW5nbGVSZWYpO1xuICAgIGNvbnN0IG1heEluZGV4ID0gcmVmcy5maW5kSW5kZXgocmVmID0+IHJlZiA9PT0gbWF4UmVjdGFuZ2xlUmVmKTtcbiAgICBsZXQgZGlzdHJpYnV0ZVJlZnMgPSByZWZzLmZpbHRlcigoZWxlbWVudCwgaW5kZXgpID0+IGluZGV4ICE9PSBtaW5JbmRleCAmJiBpbmRleCAhPT0gbWF4SW5kZXgpO1xuICAgIGNvbnN0IHN1bSA9IGRpc3RyaWJ1dGVSZWZzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGN1cnJlbnQucmVjdGFuZ2xlW3NpZGVdICsgYWNjdW11bGF0b3IsIDApO1xuICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICAgIChvdXRlclJlY3RhbmdsZVtzaWRlXSAtIG1pblJlY3RhbmdsZVJlZi5yZWN0YW5nbGVbc2lkZV0gLSBtYXhSZWN0YW5nbGVSZWYucmVjdGFuZ2xlW3NpZGVdIC0gc3VtKSAvIChkaXN0cmlidXRlUmVmcy5sZW5ndGggKyAxKTtcbiAgICBkaXN0cmlidXRlUmVmcyA9IGRpc3RyaWJ1dGVSZWZzLnNvcnQoKGEsIGIpID0+IGEucmVjdGFuZ2xlW2F4aXNdIC0gYi5yZWN0YW5nbGVbYXhpc10pO1xuICAgIGxldCBwb3NpdGlvbiA9IG1pblJlY3RhbmdsZVJlZi5yZWN0YW5nbGVbYXhpc10gKyBtaW5SZWN0YW5nbGVSZWYucmVjdGFuZ2xlW3NpZGVdICsgb2Zmc2V0O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzdHJpYnV0ZVJlZnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZGlzdHJpYnV0ZVJlZnNbaV0ucmVjdGFuZ2xlO1xuICAgICAgICBjb25zdCBtb3ZlT2Zmc2V0ID0gWzAsIDBdO1xuICAgICAgICBjb25zdCBtb3ZlQXhpcyA9IGlzSG9yaXpvbnRhbCA/IDAgOiAxO1xuICAgICAgICBtb3ZlT2Zmc2V0W21vdmVBeGlzXSA9IHBvc2l0aW9uIC0gcmVjdGFuZ2xlW2F4aXNdO1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZGlzdHJpYnV0ZVJlZnNbaV0uZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IGRpc3RyaWJ1dGVSZWZzW2ldLmVsZW1lbnQucG9pbnRzIS5tYXAocCA9PiBbcFswXSArIG1vdmVPZmZzZXRbMF0sIHBbMV0gKyBtb3ZlT2Zmc2V0WzFdXSkgYXMgUG9pbnRbXTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKFxuICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9pbnRzOiBuZXdQb2ludHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXRoXG4gICAgICAgICk7XG4gICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCB0cnVlKTtcbiAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiArIHJlY3RhbmdsZVtzaWRlXSArIG9mZnNldDtcbiAgICB9XG4gICAgTUVSR0lORy5zZXQoYm9hcmQsIGZhbHNlKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxpZ25UcmFuc2Zvcm0ge1xuICAgIGFsaWduVG9wOiAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHZvaWQ7XG4gICAgYWxpZ25Ib3Jpem9udGFsQ2VudGVyOiAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHZvaWQ7XG4gICAgYWxpZ25Cb3R0b206IChib2FyZDogUGxhaXRCb2FyZCkgPT4gdm9pZDtcbiAgICBhbGlnbkxlZnQ6IChib2FyZDogUGxhaXRCb2FyZCkgPT4gdm9pZDtcbiAgICBhbGlnblZlcnRpY2FsQ2VudGVyOiAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHZvaWQ7XG4gICAgYWxpZ25SaWdodDogKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB2b2lkO1xuICAgIGRpc3RyaWJ1dGVIb3Jpem9udGFsOiAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHZvaWQ7XG4gICAgZGlzdHJpYnV0ZVZlcnRpY2FsOiAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBBbGlnblRyYW5zZm9ybTogQWxpZ25UcmFuc2Zvcm0gPSB7XG4gICAgYWxpZ25Ub3AsXG4gICAgYWxpZ25Ib3Jpem9udGFsQ2VudGVyLFxuICAgIGFsaWduQm90dG9tLFxuICAgIGFsaWduTGVmdCxcbiAgICBhbGlnblZlcnRpY2FsQ2VudGVyLFxuICAgIGFsaWduUmlnaHQsXG4gICAgZGlzdHJpYnV0ZUhvcml6b250YWwsXG4gICAgZGlzdHJpYnV0ZVZlcnRpY2FsXG59O1xuIl19
@@ -1,3 +0,0 @@
1
- export * from './property';
2
- export * from './align';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RyYW5zZm9ybXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb3BlcnR5JztcbmV4cG9ydCAqIGZyb20gJy4vYWxpZ24nO1xuIl19
@@ -1,40 +0,0 @@
1
- import { PlaitBoard, Transforms, getSelectedElements } from '@plait/core';
2
- import { memorizeLatest } from '../utils';
3
- export const setProperty = (board, properties, options) => {
4
- const selectedElements = getSelectedElements(board);
5
- selectedElements.forEach(element => {
6
- if (options?.match && !options?.match(element))
7
- return;
8
- const path = PlaitBoard.findPath(board, element);
9
- const memorizeKey = options?.getMemorizeKey ? options?.getMemorizeKey(element) : '';
10
- for (let key in properties) {
11
- memorizeKey && memorizeLatest(memorizeKey, key, properties[key]);
12
- }
13
- if (options?.callback) {
14
- options.callback(element, path);
15
- }
16
- else {
17
- Transforms.setNode(board, properties, path);
18
- }
19
- });
20
- };
21
- const setStrokeStyle = (board, strokeStyle, options) => {
22
- setProperty(board, { strokeStyle }, options);
23
- };
24
- const setFillColor = (board, fill, options) => {
25
- setProperty(board, { fill }, options);
26
- };
27
- const setStrokeColor = (board, strokeColor, options) => {
28
- setProperty(board, { strokeColor }, options);
29
- };
30
- const setStrokeWidth = (board, strokeWidth, options) => {
31
- setProperty(board, { strokeWidth }, options);
32
- };
33
- export const PropertyTransforms = {
34
- setFillColor,
35
- setStrokeStyle,
36
- setProperty,
37
- setStrokeWidth,
38
- setStrokeColor
39
- };
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RyYW5zZm9ybXMvcHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFRLFVBQVUsRUFBZ0IsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFRMUMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQXdDLEtBQWlCLEVBQUUsVUFBc0IsRUFBRSxPQUF1QixFQUFFLEVBQUU7SUFDckksTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQVEsQ0FBQztJQUMzRCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDL0IsSUFBSSxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sV0FBVyxHQUFHLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRixLQUFLLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLFdBQVcsSUFBSSxjQUFjLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDSixVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFdBQW1CLEVBQUUsT0FBbUIsRUFBRSxFQUFFO0lBQ25GLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWlCLEVBQUUsSUFBbUIsRUFBRSxPQUFtQixFQUFFLEVBQUU7SUFDakYsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxXQUEwQixFQUFFLE9BQW1CLEVBQUUsRUFBRTtJQUMxRixXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFdBQW1CLEVBQUUsT0FBbUIsRUFBRSxFQUFFO0lBQ25GLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUM5QixZQUFZO0lBQ1osY0FBYztJQUNkLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBUcmFuc2Zvcm1zLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgbWVtb3JpemVMYXRlc3QgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0T3B0aW9uczxUIGV4dGVuZHMgUGxhaXRFbGVtZW50ID0gUGxhaXRFbGVtZW50PiB7XG4gICAgY2FsbGJhY2s/OiAoZWxlbWVudDogVCwgcGF0aDogUGF0aCkgPT4gdm9pZDtcbiAgICBnZXRNZW1vcml6ZUtleT86IChlbGVtZW50OiBUKSA9PiBzdHJpbmc7XG4gICAgbWF0Y2g/OiAoZWxlbWVudDogVCkgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHNldFByb3BlcnR5ID0gPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEVsZW1lbnQ+KGJvYXJkOiBQbGFpdEJvYXJkLCBwcm9wZXJ0aWVzOiBQYXJ0aWFsPFQ+LCBvcHRpb25zPzogU2V0T3B0aW9uczxUPikgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBUW107XG4gICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucz8ubWF0Y2ggJiYgIW9wdGlvbnM/Lm1hdGNoKGVsZW1lbnQpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgY29uc3QgbWVtb3JpemVLZXkgPSBvcHRpb25zPy5nZXRNZW1vcml6ZUtleSA/IG9wdGlvbnM/LmdldE1lbW9yaXplS2V5KGVsZW1lbnQpIDogJyc7XG4gICAgICAgIGZvciAobGV0IGtleSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBtZW1vcml6ZUtleSAmJiBtZW1vcml6ZUxhdGVzdChtZW1vcml6ZUtleSwga2V5LCBwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zPy5jYWxsYmFjaykge1xuICAgICAgICAgICAgb3B0aW9ucy5jYWxsYmFjayhlbGVtZW50LCBwYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgcHJvcGVydGllcywgcGF0aCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IHNldFN0cm9rZVN0eWxlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzdHJva2VTdHlsZTogc3RyaW5nLCBvcHRpb25zOiBTZXRPcHRpb25zKSA9PiB7XG4gICAgc2V0UHJvcGVydHkoYm9hcmQsIHsgc3Ryb2tlU3R5bGUgfSwgb3B0aW9ucyk7XG59O1xuXG5jb25zdCBzZXRGaWxsQ29sb3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGZpbGw6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IFNldE9wdGlvbnMpID0+IHtcbiAgICBzZXRQcm9wZXJ0eShib2FyZCwgeyBmaWxsIH0sIG9wdGlvbnMpO1xufTtcblxuY29uc3Qgc2V0U3Ryb2tlQ29sb3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHN0cm9rZUNvbG9yOiBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBTZXRPcHRpb25zKSA9PiB7XG4gICAgc2V0UHJvcGVydHkoYm9hcmQsIHsgc3Ryb2tlQ29sb3IgfSwgb3B0aW9ucyk7XG59O1xuXG5jb25zdCBzZXRTdHJva2VXaWR0aCA9IChib2FyZDogUGxhaXRCb2FyZCwgc3Ryb2tlV2lkdGg6IG51bWJlciwgb3B0aW9uczogU2V0T3B0aW9ucykgPT4ge1xuICAgIHNldFByb3BlcnR5KGJvYXJkLCB7IHN0cm9rZVdpZHRoIH0sIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IFByb3BlcnR5VHJhbnNmb3JtcyA9IHtcbiAgICBzZXRGaWxsQ29sb3IsXG4gICAgc2V0U3Ryb2tlU3R5bGUsXG4gICAgc2V0UHJvcGVydHksXG4gICAgc2V0U3Ryb2tlV2lkdGgsXG4gICAgc2V0U3Ryb2tlQ29sb3Jcbn07XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './resize';
2
- export * from './rotate';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXNpemUnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3RhdGUnO1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy90eXBlcy9yZXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGgsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgUmVzaXplQ3Vyc29yQ2xhc3MgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBSZXNpemVIYW5kbGUgfSBmcm9tICcuLi9jb25zdGFudHMvcmVzaXplJztcblxuZXhwb3J0IHR5cGUgUGxhaXRFbGVtZW50T3JBcnJheSA9IFBsYWl0RWxlbWVudCB8IFBsYWl0RWxlbWVudFtdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2l6ZU9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUmVzaXplT3B0aW9uczxUIGV4dGVuZHMgUGxhaXRFbGVtZW50T3JBcnJheSA9IFBsYWl0RWxlbWVudE9yQXJyYXksIEsgPSBSZXNpemVIYW5kbGUsIFAgPSBSZXNpemVPcHRpb25zPiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgY2FuUmVzaXplOiAoKSA9PiBib29sZWFuO1xuICAgIGhpdFRlc3Q6IChwb2ludDogUG9pbnQpID0+IFJlc2l6ZUhpdFRlc3RSZWY8VCwgSywgUD4gfCBudWxsO1xuICAgIG9uUmVzaXplOiAocmVzaXplUmVmOiBSZXNpemVSZWY8VCwgSywgUD4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4gdm9pZDtcbiAgICBhZnRlclJlc2l6ZT86IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxULCBLLCBQPikgPT4gdm9pZDtcbiAgICBiZWZvcmVSZXNpemU/OiAocmVzaXplUmVmOiBSZXNpemVSZWY8VCwgSywgUD4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzaXplSGl0VGVzdFJlZjxUIGV4dGVuZHMgUGxhaXRFbGVtZW50T3JBcnJheSA9IFBsYWl0RWxlbWVudE9yQXJyYXksIEsgPSBSZXNpemVIYW5kbGUsIFAgPSBSZXNpemVPcHRpb25zPiB7XG4gICAgZWxlbWVudDogVDtcbiAgICByZWN0YW5nbGU/OiBSZWN0YW5nbGVDbGllbnQ7XG4gICAgaGFuZGxlOiBLO1xuICAgIGhhbmRsZUluZGV4PzogbnVtYmVyO1xuICAgIGN1cnNvckNsYXNzPzogUmVzaXplQ3Vyc29yQ2xhc3M7XG4gICAgb3B0aW9ucz86IFA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzaXplU3RhdGUge1xuICAgIHN0YXJ0UG9pbnQ6IFBvaW50O1xuICAgIGVuZFBvaW50OiBQb2ludDtcbiAgICBpc1NoaWZ0OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2l6ZVJlZjxUIGV4dGVuZHMgUGxhaXRFbGVtZW50T3JBcnJheSA9IFBsYWl0RWxlbWVudE9yQXJyYXksIEsgPSBSZXNpemVIYW5kbGUsIFAgPSBSZXNpemVPcHRpb25zPiB7XG4gICAgZWxlbWVudDogVDtcbiAgICByZWN0YW5nbGU/OiBSZWN0YW5nbGVDbGllbnQ7XG4gICAgcGF0aDogUGF0aCB8IFBhdGhbXTtcbiAgICBoYW5kbGU6IEs7XG4gICAgaGFuZGxlSW5kZXg/OiBudW1iZXI7XG4gICAgb3B0aW9ucz86IFA7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy90eXBlcy9yb3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0RWxlbWVudCwgUG9pbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm90YXRlUmVmPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEVsZW1lbnQ+IHtcbiAgICBlbGVtZW50czogVFtdO1xuICAgIHN0YXJ0UG9pbnQ6IFBvaW50O1xuICAgIGFuZ2xlPzogbnVtYmVyO1xufVxuIl19
@@ -1,38 +0,0 @@
1
- export function animate(tween, duration, ease, callback) {
2
- const start = getTimestamp();
3
- let stopAnimation = false;
4
- function tick(now) {
5
- if (stopAnimation) {
6
- return;
7
- }
8
- const elapsed = now - start;
9
- const t = Math.min(elapsed / duration, 1);
10
- tween(ease(t));
11
- if (t < 1) {
12
- requestAnimationFrame(tick);
13
- }
14
- else if (callback) {
15
- callback();
16
- }
17
- }
18
- requestAnimationFrame(tick);
19
- return {
20
- stop: () => (stopAnimation = true),
21
- start: () => {
22
- stopAnimation = false;
23
- requestAnimationFrame(tick);
24
- }
25
- };
26
- }
27
- export function getTimestamp() {
28
- if (window.performance && window.performance.now) {
29
- return window.performance.now();
30
- }
31
- else {
32
- return Date.now();
33
- }
34
- }
35
- export function linear(t) {
36
- return t;
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbHMvYW5pbWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsT0FBTyxDQUFDLEtBQTBCLEVBQUUsUUFBZ0IsRUFBRSxJQUFjLEVBQUUsUUFBa0I7SUFDcEcsTUFBTSxLQUFLLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDN0IsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRTFCLFNBQVMsSUFBSSxDQUFDLEdBQVc7UUFDckIsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQixPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDNUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1IscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQzthQUFNLElBQUksUUFBUSxFQUFFLENBQUM7WUFDbEIsUUFBUSxFQUFFLENBQUM7UUFDZixDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLE9BQU87UUFDSCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDUixhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7S0FDSixDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZO0lBQ3hCLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9DLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwQyxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxDQUFTO0lBQzVCLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFuaW1hdGVPcHRpb24gPSB7IHN0b3A6ICgpID0+IHZvaWQ7IHN0YXJ0OiAoKSA9PiB2b2lkIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBhbmltYXRlKHR3ZWVuOiAodDogbnVtYmVyKSA9PiB2b2lkLCBkdXJhdGlvbjogbnVtYmVyLCBlYXNlOiBGdW5jdGlvbiwgY2FsbGJhY2s6IEZ1bmN0aW9uKTogQW5pbWF0ZU9wdGlvbiB7XG4gICAgY29uc3Qgc3RhcnQgPSBnZXRUaW1lc3RhbXAoKTtcbiAgICBsZXQgc3RvcEFuaW1hdGlvbiA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gdGljayhub3c6IG51bWJlcikge1xuICAgICAgICBpZiAoc3RvcEFuaW1hdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsYXBzZWQgPSBub3cgLSBzdGFydDtcbiAgICAgICAgY29uc3QgdCA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgICAgIHR3ZWVuKGVhc2UodCkpO1xuICAgICAgICBpZiAodCA8IDEpIHtcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKTtcbiAgICAgICAgfSBlbHNlIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdG9wOiAoKSA9PiAoc3RvcEFuaW1hdGlvbiA9IHRydWUpLFxuICAgICAgICBzdGFydDogKCkgPT4ge1xuICAgICAgICAgICAgc3RvcEFuaW1hdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVzdGFtcCgpIHtcbiAgICBpZiAod2luZG93LnBlcmZvcm1hbmNlICYmIHdpbmRvdy5wZXJmb3JtYW5jZS5ub3cpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXIodDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHQ7XG59XG4iXX0=
@@ -1,30 +0,0 @@
1
- import { idCreator, Transforms } from '@plait/core';
2
- export const buildClipboardData = (board, elements, startPoint, elementBuilder) => {
3
- return elements.map(element => {
4
- const newElement = elementBuilder && elementBuilder(element);
5
- if (newElement) {
6
- return newElement;
7
- }
8
- if (element.points) {
9
- const points = element.points.map(point => [point[0] - startPoint[0], point[1] - startPoint[1]]);
10
- return { ...element, points };
11
- }
12
- return element;
13
- });
14
- };
15
- export const insertClipboardData = (board, elements, startPoint, elementHandler) => {
16
- const idsMap = {};
17
- elements.forEach(element => {
18
- idsMap[element.id] = idCreator();
19
- });
20
- elements.forEach(element => {
21
- element.id = idsMap[element.id];
22
- elementHandler && elementHandler(element, idsMap);
23
- if (element.points) {
24
- element.points = element.points.map(point => [startPoint[0] + point[0], startPoint[1] + point[1]]);
25
- }
26
- Transforms.insertNode(board, element, [board.children.length]);
27
- });
28
- Transforms.addSelectionWithTemporaryElements(board, elements);
29
- };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9jbGlwYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUMsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQzlCLEtBQWlCLEVBQ2pCLFFBQXdCLEVBQ3hCLFVBQWlCLEVBQ2pCLGNBQW9FLEVBQ3RFLEVBQUU7SUFDQSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDMUIsTUFBTSxVQUFVLEdBQUcsY0FBYyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsT0FBTyxVQUFVLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUMvQixLQUFpQixFQUNqQixRQUF3QixFQUN4QixVQUFpQixFQUNqQixjQUFnRixFQUNsRixFQUFFO0lBQ0EsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztJQUMxQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxjQUFjLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBbUIsQ0FBQztRQUN6SCxDQUFDO1FBQ0QsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ0gsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNsRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpZENyZWF0b3IsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBidWlsZENsaXBib2FyZERhdGEgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLFxuICAgIHN0YXJ0UG9pbnQ6IFBvaW50LFxuICAgIGVsZW1lbnRCdWlsZGVyPzogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gUGxhaXRFbGVtZW50IHwgdW5kZWZpbmVkXG4pID0+IHtcbiAgICByZXR1cm4gZWxlbWVudHMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBuZXdFbGVtZW50ID0gZWxlbWVudEJ1aWxkZXIgJiYgZWxlbWVudEJ1aWxkZXIoZWxlbWVudCk7XG4gICAgICAgIGlmIChuZXdFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC5wb2ludHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGVsZW1lbnQucG9pbnRzLm1hcChwb2ludCA9PiBbcG9pbnRbMF0gLSBzdGFydFBvaW50WzBdLCBwb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV1dKTtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmVsZW1lbnQsIHBvaW50cyB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydENsaXBib2FyZERhdGEgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLFxuICAgIHN0YXJ0UG9pbnQ6IFBvaW50LFxuICAgIGVsZW1lbnRIYW5kbGVyPzogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgaWRzTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiB2b2lkXG4pID0+IHtcbiAgICBjb25zdCBpZHNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBpZHNNYXBbZWxlbWVudC5pZF0gPSBpZENyZWF0b3IoKTtcbiAgICB9KTtcbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBlbGVtZW50LmlkID0gaWRzTWFwW2VsZW1lbnQuaWRdO1xuICAgICAgICBlbGVtZW50SGFuZGxlciAmJiBlbGVtZW50SGFuZGxlcihlbGVtZW50LCBpZHNNYXApO1xuICAgICAgICBpZiAoZWxlbWVudC5wb2ludHMpIHtcbiAgICAgICAgICAgIGVsZW1lbnQucG9pbnRzID0gZWxlbWVudC5wb2ludHMubWFwKHBvaW50ID0+IFtzdGFydFBvaW50WzBdICsgcG9pbnRbMF0sIHN0YXJ0UG9pbnRbMV0gKyBwb2ludFsxXV0pIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICB9XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgZWxlbWVudCwgW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF0pO1xuICAgIH0pO1xuICAgIFRyYW5zZm9ybXMuYWRkU2VsZWN0aW9uV2l0aFRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cyk7XG59O1xuIl19
@@ -1,19 +0,0 @@
1
- export var BoardCreationMode;
2
- (function (BoardCreationMode) {
3
- BoardCreationMode["dnd"] = "dnd";
4
- BoardCreationMode["drawing"] = "drawing";
5
- })(BoardCreationMode || (BoardCreationMode = {}));
6
- const BOARD_TO_CREATION_MODE = new WeakMap();
7
- export const getCreationMode = (board) => {
8
- return BOARD_TO_CREATION_MODE.get(board);
9
- };
10
- export const setCreationMode = (board, mode) => {
11
- BOARD_TO_CREATION_MODE.set(board, mode);
12
- };
13
- export const isDndMode = (board) => {
14
- return getCreationMode(board) === BoardCreationMode.dnd;
15
- };
16
- export const isDrawingMode = (board) => {
17
- return getCreationMode(board) === BoardCreationMode.drawing;
18
- };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRpb24tbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbHMvY3JlYXRpb24tbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQ3pCLGdDQUFhLENBQUE7SUFDYix3Q0FBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QjtBQUVELE1BQU0sc0JBQXNCLEdBQTJDLElBQUksT0FBTyxFQUFFLENBQUM7QUFFckYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2pELE9BQU8sc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWlCLEVBQUUsSUFBdUIsRUFBRSxFQUFFO0lBQzFFLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzNDLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztBQUM1RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDL0MsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssaUJBQWlCLENBQUMsT0FBTyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5cbmV4cG9ydCBlbnVtIEJvYXJkQ3JlYXRpb25Nb2RlIHtcbiAgICAnZG5kJyA9ICdkbmQnLFxuICAgICdkcmF3aW5nJyA9ICdkcmF3aW5nJ1xufVxuXG5jb25zdCBCT0FSRF9UT19DUkVBVElPTl9NT0RFOiBXZWFrTWFwPFBsYWl0Qm9hcmQsIEJvYXJkQ3JlYXRpb25Nb2RlPiA9IG5ldyBXZWFrTWFwKCk7XG5cbmV4cG9ydCBjb25zdCBnZXRDcmVhdGlvbk1vZGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gQk9BUkRfVE9fQ1JFQVRJT05fTU9ERS5nZXQoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldENyZWF0aW9uTW9kZSA9IChib2FyZDogUGxhaXRCb2FyZCwgbW9kZTogQm9hcmRDcmVhdGlvbk1vZGUpID0+IHtcbiAgICBCT0FSRF9UT19DUkVBVElPTl9NT0RFLnNldChib2FyZCwgbW9kZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEbmRNb2RlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIGdldENyZWF0aW9uTW9kZShib2FyZCkgPT09IEJvYXJkQ3JlYXRpb25Nb2RlLmRuZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RyYXdpbmdNb2RlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIGdldENyZWF0aW9uTW9kZShib2FyZCkgPT09IEJvYXJkQ3JlYXRpb25Nb2RlLmRyYXdpbmc7XG59O1xuIl19