@plait/common 0.59.0 → 0.62.0-next.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 (51) hide show
  1. package/constants/default.d.ts +1 -0
  2. package/core/element-flavour.d.ts +1 -1
  3. package/core/index.d.ts +4 -0
  4. package/core/render-component.d.ts +4 -0
  5. package/esm2022/constants/default.mjs +2 -1
  6. package/esm2022/core/element-flavour.mjs +1 -1
  7. package/esm2022/core/group.component.mjs +3 -3
  8. package/esm2022/core/index.mjs +5 -0
  9. package/esm2022/core/render-component.mjs +2 -0
  10. package/esm2022/generators/generator.mjs +1 -1
  11. package/esm2022/generators/index.mjs +2 -2
  12. package/esm2022/image/image-base.component.mjs +26 -0
  13. package/esm2022/image/image.generator.mjs +96 -0
  14. package/esm2022/image/index.mjs +4 -0
  15. package/esm2022/image/with-image.mjs +8 -0
  16. package/esm2022/plugins/index.mjs +1 -2
  17. package/esm2022/plugins/with-resize.mjs +1 -5
  18. package/esm2022/public-api.mjs +5 -4
  19. package/esm2022/text/index.mjs +5 -0
  20. package/esm2022/text/text-manage.mjs +138 -0
  21. package/esm2022/text/text-measure.mjs +61 -0
  22. package/esm2022/text/types.mjs +7 -0
  23. package/esm2022/text/with-text.mjs +8 -0
  24. package/esm2022/transforms/index.mjs +1 -2
  25. package/esm2022/utils/image.mjs +3 -3
  26. package/esm2022/utils/text.mjs +22 -20
  27. package/fesm2022/plait-common.mjs +337 -218
  28. package/fesm2022/plait-common.mjs.map +1 -1
  29. package/generators/index.d.ts +1 -1
  30. package/image/image-base.component.d.ts +17 -0
  31. package/{generators → image}/image.generator.d.ts +11 -10
  32. package/image/index.d.ts +3 -0
  33. package/image/with-image.d.ts +15 -0
  34. package/package.json +1 -3
  35. package/plugins/index.d.ts +0 -1
  36. package/public-api.d.ts +4 -3
  37. package/text/index.d.ts +4 -0
  38. package/text/text-manage.d.ts +41 -0
  39. package/text/text-measure.d.ts +8 -0
  40. package/text/types.d.ts +24 -0
  41. package/text/with-text.d.ts +25 -0
  42. package/transforms/index.d.ts +0 -1
  43. package/utils/image.d.ts +1 -5
  44. package/utils/text.d.ts +9 -6
  45. package/core/image-base.component.d.ts +0 -29
  46. package/esm2022/core/image-base.component.mjs +0 -95
  47. package/esm2022/generators/image.generator.mjs +0 -59
  48. package/esm2022/plugins/text-options.mjs +0 -2
  49. package/esm2022/transforms/text.mjs +0 -71
  50. package/plugins/text-options.d.ts +0 -5
  51. package/transforms/text.d.ts +0 -9
@@ -0,0 +1,138 @@
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) => {
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
+ }, 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, height } = this.getSize();
40
+ this.options.onChange && this.options.onChange({ ...data, width, height });
41
+ MERGING.set(this.board, true);
42
+ }
43
+ },
44
+ afterInit: (editor) => {
45
+ this.editor = editor;
46
+ },
47
+ onComposition: (event) => {
48
+ const fakeRoot = buildCompositionData(this.editor, event.data);
49
+ if (fakeRoot) {
50
+ const sizeData = this.getSize(fakeRoot.children[0]);
51
+ this.options.onChange && this.options.onChange(sizeData);
52
+ MERGING.set(this.board, true);
53
+ }
54
+ }
55
+ };
56
+ this.textComponentRef = this.board.renderText(this.foreignObject, props);
57
+ }
58
+ updateRectangleWidth(width) {
59
+ updateForeignObjectWidth(this.g, width);
60
+ }
61
+ updateAngle(centerPoint, angle = 0) {
62
+ setAngleForG(this.g, centerPoint, angle);
63
+ }
64
+ updateRectangle(rectangle) {
65
+ const { x, y, width, height } = rectangle || this.options.getRectangle();
66
+ updateForeignObject(this.g, width, height, x, y);
67
+ }
68
+ updateText(newText) {
69
+ const props = {
70
+ text: newText
71
+ };
72
+ this.textComponentRef.update(props);
73
+ }
74
+ edit(callback) {
75
+ this.isEditing = true;
76
+ IS_TEXT_EDITABLE.set(this.board, true);
77
+ const props = {
78
+ readonly: false
79
+ };
80
+ this.textComponentRef.update(props);
81
+ Transforms.select(this.editor, [0]);
82
+ const mousedown$ = fromEvent(document, 'mousedown').subscribe((event) => {
83
+ const point = toViewBoxPoint(this.board, toHostPoint(this.board, event.x, event.y));
84
+ const textRec = this.options.getRenderRectangle ? this.options.getRenderRectangle() : this.options.getRectangle();
85
+ const clickInText = RectangleClient.isHit(RectangleClient.getRectangleByPoints([point, point]), textRec);
86
+ const isAttached = event.target.closest('.plait-board-attached');
87
+ if (!clickInText && !isAttached) {
88
+ // handle composition input state, like: Chinese IME Composition Input
89
+ timer(0).subscribe(() => {
90
+ exitCallback();
91
+ });
92
+ }
93
+ });
94
+ const keydown$ = fromEvent(document, 'keydown').subscribe((event) => {
95
+ if (event.isComposing) {
96
+ return;
97
+ }
98
+ if (event.key === 'Escape' || (event.key === 'Enter' && !event.shiftKey) || event.key === 'Tab') {
99
+ event.preventDefault();
100
+ event.stopPropagation();
101
+ exitCallback();
102
+ return;
103
+ }
104
+ });
105
+ const exitCallback = () => {
106
+ this.updateRectangle();
107
+ mousedown$.unsubscribe();
108
+ keydown$.unsubscribe();
109
+ IS_TEXT_EDITABLE.set(this.board, false);
110
+ MERGING.set(this.board, false);
111
+ callback && callback();
112
+ const props = {
113
+ readonly: true
114
+ };
115
+ this.textComponentRef.update(props);
116
+ this.isEditing = false;
117
+ };
118
+ return exitCallback;
119
+ }
120
+ destroy() {
121
+ this.g?.remove();
122
+ this.textComponentRef?.destroy();
123
+ }
124
+ }
125
+ export const buildCompositionData = (editor, data) => {
126
+ if (editor.selection && Range.isCollapsed(editor.selection)) {
127
+ const [textNode, textPath] = Editor.node(editor, editor.selection);
128
+ const offset = editor.selection.anchor.offset;
129
+ const clonedElement = JSON.parse(JSON.stringify(editor.children[0]));
130
+ const root = { children: [clonedElement] };
131
+ const newTextString = textNode.text.slice(0, offset + 1) + data + textNode.text.slice(offset + 1);
132
+ const clonedTextNode = Node.get(root, textPath);
133
+ clonedTextNode.text = newTextString;
134
+ return root;
135
+ }
136
+ return null;
137
+ };
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1tYW5hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RleHQvdGV4dC1tYW5hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUNoQixPQUFPLEVBR1AsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUMzQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFzQixLQUFLLEVBQVEsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVWhELE1BQU0sT0FBTyxVQUFVO0lBV25CLFlBQ1ksS0FBaUIsRUFDakIsT0FNUDtRQVBPLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FNZDtRQWxCTCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBNEhsQixZQUFPLEdBQUcsQ0FBQyxPQUFpQixFQUFFLEVBQUU7WUFDNUIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUUsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUM1QyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQWEsQ0FBQztZQUMvRCxPQUFP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TUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDMUQsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFvQixDQUFDO1FBQ3RGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckUsTUFBTSxJQUFJLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQVMsQ0FBQztRQUN4RCxjQUFjLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBJU19URVhUX0VESVRBQkxFLFxuICAgIE1FUkdJTkcsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICBSZWN0YW5nbGVDbGllbnQsXG4gICAgY3JlYXRlRm9yZWlnbk9iamVjdCxcbiAgICBjcmVhdGVHLFxuICAgIHNldEFuZ2xlRm9yRyxcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludCxcbiAgICB1cGRhdGVGb3JlaWduT2JqZWN0LFxuICAgIHVwZGF0ZUZvcmVpZ25PYmplY3RXaWR0aFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQsIE5vZGVFbnRyeSwgUmFuZ2UsIFRleHQsIE5vZGUsIFRyYW5zZm9ybXMsIE9wZXJhdGlvbiB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFBsYWl0VGV4dEJvYXJkLCBUZXh0UGx1Z2luIH0gZnJvbSAnLi93aXRoLXRleHQnO1xuaW1wb3J0IHsgbWVhc3VyZUVsZW1lbnQgfSBmcm9tICcuL3RleHQtbWVhc3VyZSc7XG5pbXBvcnQgeyBUZXh0Q2hhbmdlRGF0YSwgVGV4dENvbXBvbmVudFJlZiwgVGV4dFByb3BzIH0gZnJvbSAnLi93aXRoLXRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRNYW5hZ2VDaGFuZ2VEYXRhIHtcbiAgICBuZXdUZXh0PzogRWxlbWVudDtcbiAgICBvcGVyYXRpb25zPzogT3BlcmF0aW9uW107XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFRleHRNYW5hZ2Uge1xuICAgIGlzRWRpdGluZyA9IGZhbHNlO1xuXG4gICAgZWRpdG9yITogRWRpdG9yO1xuXG4gICAgZyE6IFNWR0dFbGVtZW50O1xuXG4gICAgZm9yZWlnbk9iamVjdCE6IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50O1xuXG4gICAgdGV4dENvbXBvbmVudFJlZiE6IFRleHRDb21wb25lbnRSZWY7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBib2FyZDogUGxhaXRCb2FyZCxcbiAgICAgICAgcHJpdmF0ZSBvcHRpb25zOiB7XG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICgpID0+IFJlY3RhbmdsZUNsaWVudDtcbiAgICAgICAgICAgIG9uQ2hhbmdlPzogKGRhdGE6IFRleHRNYW5hZ2VDaGFuZ2VEYXRhKSA9PiB2b2lkO1xuICAgICAgICAgICAgZ2V0UmVuZGVyUmVjdGFuZ2xlPzogKCkgPT4gUmVjdGFuZ2xlQ2xpZW50O1xuICAgICAgICAgICAgZ2V0TWF4V2lkdGg/OiAoKSA9PiBudW1iZXI7XG4gICAgICAgICAgICB0ZXh0UGx1Z2lucz86IFRleHRQbHVnaW5bXTtcbiAgICAgICAgfVxuICAgICkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5nZXRNYXhXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmdldE1heFdpZHRoID0gKCkgPT4gOTk5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhdyh0ZXh0OiBFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IF9yZWN0YW5nbGUgPSB0aGlzLm9wdGlvbnMuZ2V0UmVjdGFuZ2xlKCk7XG4gICAgICAgIHRoaXMuZyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgdGhpcy5mb3JlaWduT2JqZWN0ID0gY3JlYXRlRm9yZWlnbk9iamVjdChfcmVjdGFuZ2xlLngsIF9yZWN0YW5nbGUueSwgX3JlY3RhbmdsZS53aWR0aCwgX3JlY3RhbmdsZS5oZWlnaHQpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMuZm9yZWlnbk9iamVjdCk7XG4gICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCd0ZXh0Jyk7XG4gICAgICAgIGNvbnN0IHByb3BzOiBUZXh0UHJvcHMgPSB7XG4gICAgICAgICAgICBib2FyZDogdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICB0ZXh0UGx1Z2luczogdGhpcy5vcHRpb25zLnRleHRQbHVnaW5zLFxuICAgICAgICAgICAgb25DaGFuZ2U6IChkYXRhOiBUZXh0Q2hhbmdlRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLm9wZXJhdGlvbnMuc29tZShvcCA9PiAhT3BlcmF0aW9uLmlzU2VsZWN0aW9uT3BlcmF0aW9uKG9wKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLmdldFNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uQ2hhbmdlICYmIHRoaXMub3B0aW9ucy5vbkNoYW5nZSh7IC4uLmRhdGEsIHdpZHRoLCBoZWlnaHQgfSk7XG4gICAgICAgICAgICAgICAgICAgIE1FUkdJTkcuc2V0KHRoaXMuYm9hcmQsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlckluaXQ6IChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ29tcG9zaXRpb246IChldmVudDogQ29tcG9zaXRpb25FdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZha2VSb290ID0gYnVpbGRDb21wb3NpdGlvbkRhdGEodGhpcy5lZGl0b3IsIGV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgICAgIGlmIChmYWtlUm9vdCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplRGF0YSA9IHRoaXMuZ2V0U2l6ZShmYWtlUm9vdC5jaGlsZHJlblswXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vbkNoYW5nZSAmJiB0aGlzLm9wdGlvbnMub25DaGFuZ2Uoc2l6ZURhdGEpO1xuICAgICAgICAgICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudGV4dENvbXBvbmVudFJlZiA9ICgodGhpcy5ib2FyZCBhcyB1bmtub3duKSBhcyBQbGFpdFRleHRCb2FyZCkucmVuZGVyVGV4dCh0aGlzLmZvcmVpZ25PYmplY3QsIHByb3BzKTtcbiAgICB9XG5cbiAgICB1cGRhdGVSZWN0YW5nbGVXaWR0aCh3aWR0aDogbnVtYmVyKSB7XG4gICAgICAgIHVwZGF0ZUZvcmVpZ25PYmplY3RXaWR0aCh0aGlzLmcsIHdpZHRoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVBbmdsZShjZW50ZXJQb2ludDogUG9pbnQsIGFuZ2xlOiBudW1iZXIgPSAwKSB7XG4gICAgICAgIHNldEFuZ2xlRm9yRyh0aGlzLmcsIGNlbnRlclBvaW50LCBhbmdsZSk7XG4gICAgfVxuXG4gICAgdXBkYXRlUmVjdGFuZ2xlKHJlY3RhbmdsZT86IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IHJlY3RhbmdsZSB8fCB0aGlzLm9wdGlvbnMuZ2V0UmVjdGFuZ2xlKCk7XG4gICAgICAgIHVwZGF0ZUZvcmVpZ25PYmplY3QodGhpcy5nLCB3aWR0aCwgaGVpZ2h0LCB4LCB5KTtcbiAgICB9XG5cbiAgICB1cGRhdGVUZXh0KG5ld1RleHQ6IEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgICAgICB0ZXh0OiBuZXdUZXh0XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudGV4dENvbXBvbmVudFJlZi51cGRhdGUocHJvcHMpO1xuICAgIH1cblxuICAgIGVkaXQoY2FsbGJhY2s/OiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuaXNFZGl0aW5nID0gdHJ1ZTtcbiAgICAgICAgSVNfVEVYVF9FRElUQUJMRS5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHByb3BzOiBQYXJ0aWFsPFRleHRQcm9wcz4gPSB7XG4gICAgICAgICAgICByZWFkb25seTogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50ZXh0Q29tcG9uZW50UmVmLnVwZGF0ZShwcm9wcyk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBbMF0pO1xuICAgICAgICBjb25zdCBtb3VzZWRvd24kID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vkb3duJykuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludCh0aGlzLmJvYXJkLCB0b0hvc3RQb2ludCh0aGlzLmJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgICAgICBjb25zdCB0ZXh0UmVjID0gdGhpcy5vcHRpb25zLmdldFJlbmRlclJlY3RhbmdsZSA/IHRoaXMub3B0aW9ucy5nZXRSZW5kZXJSZWN0YW5nbGUoKSA6IHRoaXMub3B0aW9ucy5nZXRSZWN0YW5nbGUoKTtcbiAgICAgICAgICAgIGNvbnN0IGNsaWNrSW5UZXh0ID0gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhbcG9pbnQsIHBvaW50XSksIHRleHRSZWMpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5wbGFpdC1ib2FyZC1hdHRhY2hlZCcpO1xuICAgICAgICAgICAgaWYgKCFjbGlja0luVGV4dCAmJiAhaXNBdHRhY2hlZCkge1xuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjb21wb3NpdGlvbiBpbnB1dCBzdGF0ZSwgbGlrZTogQ2hpbmVzZSBJTUUgQ29tcG9zaXRpb24gSW5wdXRcbiAgICAgICAgICAgICAgICB0aW1lcigwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBleGl0Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGtleWRvd24kID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5pc0NvbXBvc2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnIHx8IChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIWV2ZW50LnNoaWZ0S2V5KSB8fCBldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBleGl0Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBleGl0Q2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJlY3RhbmdsZSgpO1xuICAgICAgICAgICAgbW91c2Vkb3duJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAga2V5ZG93biQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIElTX1RFWFRfRURJVEFCTEUuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgIE1FUkdJTkcuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgICAgICAgICByZWFkb25seTogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudGV4dENvbXBvbmVudFJlZi51cGRhdGUocHJvcHMpO1xuICAgICAgICAgICAgdGhpcy5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGV4aXRDYWxsYmFjaztcbiAgICB9XG5cbiAgICBnZXRTaXplID0gKGVsZW1lbnQ/OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmZvcmVpZ25PYmplY3QuY2hpbGRyZW5bMF0pO1xuICAgICAgICBjb25zdCBmb250RmFtaWx5ID0gY29tcHV0ZWRTdHlsZS5mb250RmFtaWx5O1xuICAgICAgICBjb25zdCBmb250U2l6ZSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5mb250U2l6ZSk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnQgfHwgKHRoaXMuZWRpdG9yLmNoaWxkcmVuWzBdIGFzIEVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gbWVhc3VyZUVsZW1lbnQoXG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLFxuICAgICAgICAgICAgICAgIGZvbnRGYW1pbHlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2V0TWF4V2lkdGghKClcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgZ2V0VGV4dCA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmNoaWxkcmVuWzBdO1xuICAgIH07XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLmc/LnJlbW92ZSgpO1xuICAgICAgICB0aGlzLnRleHRDb21wb25lbnRSZWY/LmRlc3Ryb3koKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBidWlsZENvbXBvc2l0aW9uRGF0YSA9IChlZGl0b3I6IEVkaXRvciwgZGF0YTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGVkaXRvci5zZWxlY3Rpb24gJiYgUmFuZ2UuaXNDb2xsYXBzZWQoZWRpdG9yLnNlbGVjdGlvbikpIHtcbiAgICAgICAgY29uc3QgW3RleHROb2RlLCB0ZXh0UGF0aF0gPSBFZGl0b3Iubm9kZShlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pIGFzIE5vZGVFbnRyeTxUZXh0PjtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gZWRpdG9yLnNlbGVjdGlvbi5hbmNob3Iub2Zmc2V0O1xuICAgICAgICBjb25zdCBjbG9uZWRFbGVtZW50ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlZGl0b3IuY2hpbGRyZW5bMF0pKTtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHsgY2hpbGRyZW46IFtjbG9uZWRFbGVtZW50XSB9O1xuICAgICAgICBjb25zdCBuZXdUZXh0U3RyaW5nID0gdGV4dE5vZGUudGV4dC5zbGljZSgwLCBvZmZzZXQgKyAxKSArIGRhdGEgKyB0ZXh0Tm9kZS50ZXh0LnNsaWNlKG9mZnNldCArIDEpO1xuICAgICAgICBjb25zdCBjbG9uZWRUZXh0Tm9kZSA9IE5vZGUuZ2V0KHJvb3QsIHRleHRQYXRoKSBhcyBUZXh0O1xuICAgICAgICBjbG9uZWRUZXh0Tm9kZS50ZXh0ID0gbmV3VGV4dFN0cmluZztcbiAgICAgICAgcmV0dXJuIHJvb3Q7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbiJdfQ==
@@ -0,0 +1,61 @@
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
+ const textMetrics = ctx.measureText(text.text);
34
+ lineWidth += textMetrics.width;
35
+ const isLast = index === lineTexts.length - 1;
36
+ // skip when text is empty and is not last text of line
37
+ if (text['font-size'] && (isLast || text.text !== '')) {
38
+ const lineHeight = getLineHeightByFontSize(parseFloat(text['font-size']));
39
+ if (lineHeight > maxLineHeight) {
40
+ maxLineHeight = lineHeight;
41
+ }
42
+ }
43
+ });
44
+ if (lineWidth <= containerMaxWidth) {
45
+ if (lineWidth > width) {
46
+ width = lineWidth;
47
+ }
48
+ height += maxLineHeight;
49
+ }
50
+ else {
51
+ width = containerMaxWidth;
52
+ const lineWrapNumber = Math.ceil(lineWidth / containerMaxWidth);
53
+ height += maxLineHeight * lineWrapNumber;
54
+ }
55
+ });
56
+ return { width, height };
57
+ }
58
+ const getFont = (text, options) => {
59
+ return `${text.italic ? 'italic ' : ''} ${text.bold ? 'bold ' : ''} ${text['font-size'] || options.fontSize}px ${options.fontFamily} `;
60
+ };
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1tZWFzdXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy90ZXh0L3RleHQtbWVhc3VyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RCxNQUFNLFVBQVUsY0FBYyxDQUMxQixPQUF5QixFQUN6QixPQUdDLEVBQ0Qsb0JBQTRCLEtBQUs7SUFFakMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBNkIsQ0FBQztJQUNoRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sS0FBSyxHQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLEtBQUssTUFBTSxTQUFTLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUF5QixFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzNELE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUM7WUFDekQsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sT0FBTyxHQUFpQixFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzFCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUF1QixFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQ3JELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQWdCLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDbEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMzRixHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNoQixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQyxTQUFTLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLEtBQUssU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDOUMsdURBQXVEO1lBQ3ZELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFFLElBQUksVUFBVSxHQUFHLGFBQWEsRUFBRSxDQUFDO29CQUM3QixhQUFhLEdBQUcsVUFBVSxDQUFDO2dCQUMvQixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxTQUFTLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLFNBQVMsR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUN0QixDQUFDO1lBQ0QsTUFBTSxJQUFJLGFBQWEsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssR0FBRyxpQkFBaUIsQ0FBQztZQUMxQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sSUFBSSxhQUFhLEdBQUcsY0FBYyxDQUFDO1FBQzdDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sT0FBTyxHQUFHLENBQ1osSUFBZ0IsRUFDaEIsT0FHQyxFQUNILEVBQUU7SUFDQSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLE1BQU0sT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDO0FBQzNJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGUgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBDdXN0b21UZXh0LCBQYXJhZ3JhcGhFbGVtZW50IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRMaW5lSGVpZ2h0QnlGb250U2l6ZSB9IGZyb20gJy4uL3V0aWxzL3RleHQnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWVhc3VyZUVsZW1lbnQoXG4gICAgZWxlbWVudDogUGFyYWdyYXBoRWxlbWVudCxcbiAgICBvcHRpb25zOiB7XG4gICAgICAgIGZvbnRTaXplOiBudW1iZXI7XG4gICAgICAgIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgICB9LFxuICAgIGNvbnRhaW5lck1heFdpZHRoOiBudW1iZXIgPSAxMDAwMFxuKSB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykgYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICAgIGNvbnN0IHRleHRFbnRyaWVzID0gTm9kZS50ZXh0cyhlbGVtZW50KTtcbiAgICBjb25zdCBsaW5lczogQ3VzdG9tVGV4dFtdW10gPSBbW11dO1xuICAgIGZvciAoY29uc3QgdGV4dEVudHJ5IG9mIHRleHRFbnRyaWVzKSB7XG4gICAgICAgIGNvbnN0IFt0ZXh0XSA9IHRleHRFbnRyeTtcbiAgICAgICAgY29uc3QgdGV4dFN0cmluZyA9IE5vZGUuc3RyaW5nKHRleHQpO1xuICAgICAgICBjb25zdCB0ZXh0QXJyYXkgPSB0ZXh0U3RyaW5nLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgdGV4dEFycmF5LmZvckVhY2goKHNlZ21lbnRUZXh0U3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRUZXh0ID0geyAuLi50ZXh0LCB0ZXh0OiBzZWdtZW50VGV4dFN0cmluZyB9O1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudExpbmUgPSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBjdXJyZW50TGluZS5wdXNoKHNlZ21lbnRUZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3TGluZTogQ3VzdG9tVGV4dFtdID0gW107XG4gICAgICAgICAgICAgICAgbmV3TGluZS5wdXNoKHNlZ21lbnRUZXh0KTtcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKG5ld0xpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbGV0IHdpZHRoID0gMDtcbiAgICBsZXQgaGVpZ2h0ID0gMDtcbiAgICBsaW5lcy5mb3JFYWNoKChsaW5lVGV4dHM6IEN1c3RvbVRleHRbXSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBsZXQgbGluZVdpZHRoID0gMDtcbiAgICAgICAgbGV0IG1heExpbmVIZWlnaHQgPSBnZXRMaW5lSGVpZ2h0QnlGb250U2l6ZShvcHRpb25zLmZvbnRTaXplKTtcbiAgICAgICAgbGluZVRleHRzLmZvckVhY2goKHRleHQ6IEN1c3RvbVRleHQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvbnQgPSBnZXRGb250KHRleHQsIHsgZm9udEZhbWlseTogb3B0aW9ucy5mb250RmFtaWx5LCBmb250U2l6ZTogb3B0aW9ucy5mb250U2l6ZSB9KTtcbiAgICAgICAgICAgIGN0eC5mb250ID0gZm9udDtcbiAgICAgICAgICAgIGNvbnN0IHRleHRNZXRyaWNzID0gY3R4Lm1lYXN1cmVUZXh0KHRleHQudGV4dCk7XG4gICAgICAgICAgICBsaW5lV2lkdGggKz0gdGV4dE1ldHJpY3Mud2lkdGg7XG4gICAgICAgICAgICBjb25zdCBpc0xhc3QgPSBpbmRleCA9PT0gbGluZVRleHRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAvLyBza2lwIHdoZW4gdGV4dCBpcyBlbXB0eSBhbmQgaXMgbm90IGxhc3QgdGV4dCBvZiBsaW5lXG4gICAgICAgICAgICBpZiAodGV4dFsnZm9udC1zaXplJ10gJiYgKGlzTGFzdCB8fCB0ZXh0LnRleHQgIT09ICcnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBnZXRMaW5lSGVpZ2h0QnlGb250U2l6ZShwYXJzZUZsb2F0KHRleHRbJ2ZvbnQtc2l6ZSddKSk7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmVIZWlnaHQgPiBtYXhMaW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIG1heExpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChsaW5lV2lkdGggPD0gY29udGFpbmVyTWF4V2lkdGgpIHtcbiAgICAgICAgICAgIGlmIChsaW5lV2lkdGggPiB3aWR0aCkge1xuICAgICAgICAgICAgICAgIHdpZHRoID0gbGluZVdpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGVpZ2h0ICs9IG1heExpbmVIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aWR0aCA9IGNvbnRhaW5lck1heFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgbGluZVdyYXBOdW1iZXIgPSBNYXRoLmNlaWwobGluZVdpZHRoIC8gY29udGFpbmVyTWF4V2lkdGgpO1xuICAgICAgICAgICAgaGVpZ2h0ICs9IG1heExpbmVIZWlnaHQgKiBsaW5lV3JhcE51bWJlcjtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQgfTtcbn1cblxuY29uc3QgZ2V0Rm9udCA9IChcbiAgICB0ZXh0OiBDdXN0b21UZXh0LFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZm9udFNpemU6IG51bWJlcjtcbiAgICAgICAgZm9udEZhbWlseTogc3RyaW5nO1xuICAgIH1cbikgPT4ge1xuICAgIHJldHVybiBgJHt0ZXh0Lml0YWxpYyA/ICdpdGFsaWMgJyA6ICcnfSAke3RleHQuYm9sZCA/ICdib2xkICcgOiAnJ30gJHt0ZXh0Wydmb250LXNpemUnXSB8fCBvcHRpb25zLmZvbnRTaXplfXB4ICR7b3B0aW9ucy5mb250RmFtaWx5fSBgO1xufTtcbiJdfQ==
@@ -0,0 +1,7 @@
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==
@@ -0,0 +1,8 @@
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,4 +1,3 @@
1
1
  export * from './property';
2
2
  export * from './align';
3
- export * from './text';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RyYW5zZm9ybXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb3BlcnR5JztcbmV4cG9ydCAqIGZyb20gJy4vYWxpZ24nO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0JzsiXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RyYW5zZm9ybXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb3BlcnR5JztcbmV4cG9ydCAqIGZyb20gJy4vYWxpZ24nO1xuIl19
@@ -1,4 +1,4 @@
1
- import { PlaitBoard, PlaitContextService } from '@plait/core';
1
+ import { PlaitBoard } from '@plait/core';
2
2
  export const selectImage = (board, defaultImageWidth, handle, acceptImageTypes = ['png', 'jpeg', 'gif', 'bmp']) => {
3
3
  const inputFile = document.createElement('input');
4
4
  inputFile.setAttribute('type', 'file');
@@ -17,7 +17,7 @@ export const buildImage = async (board, imageFile, defaultImageWidth, handle) =>
17
17
  });
18
18
  let imageItem = null;
19
19
  const url = URL.createObjectURL(imageFile);
20
- const context = PlaitBoard.getComponent(board).viewContainerRef.injector.get(PlaitContextService);
20
+ const context = PlaitBoard.getBoardContext(board);
21
21
  context.setUploadingFile({ url, file: imageFile });
22
22
  imageItem = {
23
23
  url,
@@ -47,4 +47,4 @@ export const addElementOfFocusedImage = (board, element) => {
47
47
  export const removeElementOfFocusedImage = (board) => {
48
48
  BOARD_TO_ELEMENT_OF_FOCUSED_IMAGE.delete(board);
49
49
  };
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3V0aWxzL2ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsVUFBVSxFQUFFLG1CQUFtQixFQUFnQixNQUFNLGFBQWEsQ0FBQztBQWEzRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FDdkIsS0FBaUIsRUFDakIsaUJBQXlCLEVBQ3pCLE1BQThDLEVBQzlDLG1CQUE2QixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUM1RCxFQUFFO0lBQ0EsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN6RCxTQUFTLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7UUFDbEMsVUFBVSxDQUFDLEtBQUssRUFBRyxLQUFLLENBQUMsTUFBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7SUFDRixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFDM0IsS0FBaUIsRUFDakIsU0FBZSxFQUNmLGlCQUF5QixFQUN6QixNQUE4QyxFQUNoRCxFQUFFO0lBQ0EsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUNULE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixNQUFNLFlBQVksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUF3QyxFQUFFLEVBQUU7UUFDL0YsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDckIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNsRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFFbkQsU0FBUyxHQUFHO1FBQ1IsR0FBRztRQUNILEtBQUs7UUFDTCxNQUFNO0tBQ1QsQ0FBQztJQUNGLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRixTQUFTLFlBQVksQ0FBQyxJQUFVLEVBQUUsaUJBQXlCO0lBQ3ZELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMxQixLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsS0FBSyxDQUFDLE1BQU0sR0FBRztZQUNYLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDOUUsT0FBTyxDQUNILEtBQUssQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQzFILENBQUM7UUFDTixDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLGlDQUFpQyxHQUFHLElBQUksT0FBTyxFQUE0QixDQUFDO0FBRWxGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzFELE9BQU8saUNBQWlDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUFxQixFQUFFLEVBQUU7SUFDakYsaUNBQWlDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUM3RCxpQ0FBaUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSwgUGxhaXRCb2FyZCwgUGxhaXRDb250ZXh0U2VydmljZSwgUGxhaXRFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS9pbWFnZS1iYXNlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uSW1hZ2VJdGVtIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhDb21tb25QbHVnaW5PcHRpb25zIHtcbiAgICBpbWFnZUNvbXBvbmVudFR5cGU/OiBDb21wb25lbnRUeXBlPEltYWdlQmFzZUNvbXBvbmVudD47XG59XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RJbWFnZSA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkZWZhdWx0SW1hZ2VXaWR0aDogbnVtYmVyLFxuICAgIGhhbmRsZTogKGNvbW1vbkltYWdlOiBDb21tb25JbWFnZUl0ZW0pID0+IHZvaWQsXG4gICAgYWNjZXB0SW1hZ2VUeXBlczogc3RyaW5nW10gPSBbJ3BuZycsICdqcGVnJywgJ2dpZicsICdibXAnXVxuKSA9PiB7XG4gICAgY29uc3QgaW5wdXRGaWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICBpbnB1dEZpbGUuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZpbGUnKTtcbiAgICBjb25zdCBhY2NlcHRJbWFnZVR5cGVzU3RyaW5nID0gJy4nICsgYWNjZXB0SW1hZ2VUeXBlcy5qb2luKCcsLicpO1xuICAgIGlucHV0RmlsZS5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsIGFjY2VwdEltYWdlVHlwZXNTdHJpbmcpO1xuICAgIGlucHV0RmlsZS5vbmNoYW5nZSA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgYnVpbGRJbWFnZShib2FyZCwgKGV2ZW50LnRhcmdldCBhcyBhbnkpLmZpbGVzWzBdLCBkZWZhdWx0SW1hZ2VXaWR0aCwgaGFuZGxlKTtcbiAgICB9O1xuICAgIGlucHV0RmlsZS5jbGljaygpO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkSW1hZ2UgPSBhc3luYyAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgaW1hZ2VGaWxlOiBGaWxlLFxuICAgIGRlZmF1bHRJbWFnZVdpZHRoOiBudW1iZXIsXG4gICAgaGFuZGxlOiAoY29tbW9uSW1hZ2U6IENvbW1vbkltYWdlSXRlbSkgPT4gdm9pZFxuKSA9PiB7XG4gICAgbGV0IHdpZHRoID0gMCxcbiAgICAgICAgaGVpZ2h0ID0gMDtcbiAgICBhd2FpdCBnZXRJbWFnZVNpemUoaW1hZ2VGaWxlLCBkZWZhdWx0SW1hZ2VXaWR0aCkudGhlbigodmFsdWU6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSkgPT4ge1xuICAgICAgICB3aWR0aCA9IHZhbHVlLndpZHRoO1xuICAgICAgICBoZWlnaHQgPSB2YWx1ZS5oZWlnaHQ7XG4gICAgfSk7XG5cbiAgICBsZXQgaW1hZ2VJdGVtID0gbnVsbDtcbiAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGltYWdlRmlsZSk7XG4gICAgY29uc3QgY29udGV4dCA9IFBsYWl0Qm9hcmQuZ2V0Q29tcG9uZW50KGJvYXJkKS52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLmdldChQbGFpdENvbnRleHRTZXJ2aWNlKTtcbiAgICBjb250ZXh0LnNldFVwbG9hZGluZ0ZpbGUoeyB1cmwsIGZpbGU6IGltYWdlRmlsZSB9KTtcblxuICAgIGltYWdlSXRlbSA9IHtcbiAgICAgICAgdXJsLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgfTtcbiAgICBoYW5kbGUoaW1hZ2VJdGVtKTtcbn07XG5cbmZ1bmN0aW9uIGdldEltYWdlU2l6ZShmaWxlOiBGaWxlLCBkZWZhdWx0SW1hZ2VXaWR0aDogbnVtYmVyKTogUHJvbWlzZTx7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWFnZS5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuXG4gICAgICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBkZWZhdWx0SW1hZ2VXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IChkZWZhdWx0SW1hZ2VXaWR0aCAqIGltYWdlLm5hdHVyYWxIZWlnaHQpIC8gaW1hZ2UubmF0dXJhbFdpZHRoO1xuICAgICAgICAgICAgcmVzb2x2ZShcbiAgICAgICAgICAgICAgICBpbWFnZS5uYXR1cmFsV2lkdGggPiBkZWZhdWx0SW1hZ2VXaWR0aCA/IHsgd2lkdGgsIGhlaWdodCB9IDogeyB3aWR0aDogaW1hZ2UubmF0dXJhbFdpZHRoLCBoZWlnaHQ6IGltYWdlLm5hdHVyYWxIZWlnaHQgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cblxuY29uc3QgQk9BUkRfVE9fRUxFTUVOVF9PRl9GT0NVU0VEX0lNQUdFID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50PigpO1xuXG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudE9mRm9jdXNlZEltYWdlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgcmV0dXJuIEJPQVJEX1RPX0VMRU1FTlRfT0ZfRk9DVVNFRF9JTUFHRS5nZXQoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEVsZW1lbnRPZkZvY3VzZWRJbWFnZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgQk9BUkRfVE9fRUxFTUVOVF9PRl9GT0NVU0VEX0lNQUdFLnNldChib2FyZCwgZWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRWxlbWVudE9mRm9jdXNlZEltYWdlID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgQk9BUkRfVE9fRUxFTUVOVF9PRl9GT0NVU0VEX0lNQUdFLmRlbGV0ZShib2FyZCk7XG59O1xuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3V0aWxzL2ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsVUFBVSxFQUFnQixNQUFNLGFBQWEsQ0FBQztBQVN0RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FDdkIsS0FBaUIsRUFDakIsaUJBQXlCLEVBQ3pCLE1BQThDLEVBQzlDLG1CQUE2QixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUM1RCxFQUFFO0lBQ0EsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN6RCxTQUFTLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7UUFDbEMsVUFBVSxDQUFDLEtBQUssRUFBRyxLQUFLLENBQUMsTUFBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7SUFDRixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFDM0IsS0FBaUIsRUFDakIsU0FBZSxFQUNmLGlCQUF5QixFQUN6QixNQUE4QyxFQUNoRCxFQUFFO0lBQ0EsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUNULE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixNQUFNLFlBQVksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUF3QyxFQUFFLEVBQUU7UUFDL0YsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDckIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUVuRCxTQUFTLEdBQUc7UUFDUixHQUFHO1FBQ0gsS0FBSztRQUNMLE1BQU07S0FDVCxDQUFDO0lBQ0YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLFNBQVMsWUFBWSxDQUFDLElBQVUsRUFBRSxpQkFBeUI7SUFDdkQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxLQUFLLENBQUMsTUFBTSxHQUFHO1lBQ1gsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUM7WUFDaEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUM5RSxPQUFPLENBQ0gsS0FBSyxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FDMUgsQ0FBQztRQUNOLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0saUNBQWlDLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDMUQsT0FBTyxpQ0FBaUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQXFCLEVBQUUsRUFBRTtJQUNqRixpQ0FBaUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzdELGlDQUFpQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRUeXBlLCBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBJbWFnZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9pbWFnZS9pbWFnZS1iYXNlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uSW1hZ2VJdGVtIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0SW1hZ2UgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZGVmYXVsdEltYWdlV2lkdGg6IG51bWJlcixcbiAgICBoYW5kbGU6IChjb21tb25JbWFnZTogQ29tbW9uSW1hZ2VJdGVtKSA9PiB2b2lkLFxuICAgIGFjY2VwdEltYWdlVHlwZXM6IHN0cmluZ1tdID0gWydwbmcnLCAnanBlZycsICdnaWYnLCAnYm1wJ11cbikgPT4ge1xuICAgIGNvbnN0IGlucHV0RmlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgaW5wdXRGaWxlLnNldEF0dHJpYnV0ZSgndHlwZScsICdmaWxlJyk7XG4gICAgY29uc3QgYWNjZXB0SW1hZ2VUeXBlc1N0cmluZyA9ICcuJyArIGFjY2VwdEltYWdlVHlwZXMuam9pbignLC4nKTtcbiAgICBpbnB1dEZpbGUuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCBhY2NlcHRJbWFnZVR5cGVzU3RyaW5nKTtcbiAgICBpbnB1dEZpbGUub25jaGFuZ2UgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGJ1aWxkSW1hZ2UoYm9hcmQsIChldmVudC50YXJnZXQgYXMgYW55KS5maWxlc1swXSwgZGVmYXVsdEltYWdlV2lkdGgsIGhhbmRsZSk7XG4gICAgfTtcbiAgICBpbnB1dEZpbGUuY2xpY2soKTtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEltYWdlID0gYXN5bmMgKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGltYWdlRmlsZTogRmlsZSxcbiAgICBkZWZhdWx0SW1hZ2VXaWR0aDogbnVtYmVyLFxuICAgIGhhbmRsZTogKGNvbW1vbkltYWdlOiBDb21tb25JbWFnZUl0ZW0pID0+IHZvaWRcbikgPT4ge1xuICAgIGxldCB3aWR0aCA9IDAsXG4gICAgICAgIGhlaWdodCA9IDA7XG4gICAgYXdhaXQgZ2V0SW1hZ2VTaXplKGltYWdlRmlsZSwgZGVmYXVsdEltYWdlV2lkdGgpLnRoZW4oKHZhbHVlOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgd2lkdGggPSB2YWx1ZS53aWR0aDtcbiAgICAgICAgaGVpZ2h0ID0gdmFsdWUuaGVpZ2h0O1xuICAgIH0pO1xuXG4gICAgbGV0IGltYWdlSXRlbSA9IG51bGw7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChpbWFnZUZpbGUpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGV4dChib2FyZCk7XG4gICAgY29udGV4dC5zZXRVcGxvYWRpbmdGaWxlKHsgdXJsLCBmaWxlOiBpbWFnZUZpbGUgfSk7XG5cbiAgICBpbWFnZUl0ZW0gPSB7XG4gICAgICAgIHVybCxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgIH07XG4gICAgaGFuZGxlKGltYWdlSXRlbSk7XG59O1xuXG5mdW5jdGlvbiBnZXRJbWFnZVNpemUoZmlsZTogRmlsZSwgZGVmYXVsdEltYWdlV2lkdGg6IG51bWJlcik6IFByb21pc2U8eyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgaW1hZ2Uuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcblxuICAgICAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gZGVmYXVsdEltYWdlV2lkdGg7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSAoZGVmYXVsdEltYWdlV2lkdGggKiBpbWFnZS5uYXR1cmFsSGVpZ2h0KSAvIGltYWdlLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgICAgICAgaW1hZ2UubmF0dXJhbFdpZHRoID4gZGVmYXVsdEltYWdlV2lkdGggPyB7IHdpZHRoLCBoZWlnaHQgfSA6IHsgd2lkdGg6IGltYWdlLm5hdHVyYWxXaWR0aCwgaGVpZ2h0OiBpbWFnZS5uYXR1cmFsSGVpZ2h0IH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgfSk7XG59XG5cbmNvbnN0IEJPQVJEX1RPX0VMRU1FTlRfT0ZfRk9DVVNFRF9JTUFHRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudD4oKTtcblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRPZkZvY3VzZWRJbWFnZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiBCT0FSRF9UT19FTEVNRU5UX09GX0ZPQ1VTRURfSU1BR0UuZ2V0KGJvYXJkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRFbGVtZW50T2ZGb2N1c2VkSW1hZ2UgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIEJPQVJEX1RPX0VMRU1FTlRfT0ZfRk9DVVNFRF9JTUFHRS5zZXQoYm9hcmQsIGVsZW1lbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUVsZW1lbnRPZkZvY3VzZWRJbWFnZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIEJPQVJEX1RPX0VMRU1FTlRfT0ZfRk9DVVNFRF9JTUFHRS5kZWxldGUoYm9hcmQpO1xufTtcbiJdfQ==
@@ -1,5 +1,4 @@
1
1
  import { getSelectedElements } from '@plait/core';
2
- import { PlaitMarkEditor } from '@plait/text';
3
2
  import { Node } from 'slate';
4
3
  export const getTextManages = (element) => {
5
4
  return ELEMENT_TO_TEXT_MANAGES.get(element) || [];
@@ -13,7 +12,7 @@ export const getFirstTextManage = (element) => {
13
12
  };
14
13
  export const getTextEditorsByElement = (element) => {
15
14
  return getTextManages(element).map(manage => {
16
- return manage.componentRef.instance.editor;
15
+ return manage.editor;
17
16
  });
18
17
  };
19
18
  export const getFirstTextEditor = (element) => {
@@ -34,20 +33,6 @@ export const findFirstTextEditor = (board) => {
34
33
  });
35
34
  return firstEditor;
36
35
  };
37
- export const getTextMarksByElement = (element) => {
38
- const editors = getTextEditorsByElement(element);
39
- const editor = editors[0];
40
- if (!editor) {
41
- return {};
42
- }
43
- if (editor.children.length === 0) {
44
- const textManage = getTextManages(element)[0];
45
- const currentMarks = PlaitMarkEditor.getMarksByElement(textManage.componentRef.instance.children[0]);
46
- return currentMarks;
47
- }
48
- const currentMarks = PlaitMarkEditor.getMarks(editor);
49
- return currentMarks;
50
- };
51
36
  export const getElementsText = (elements) => {
52
37
  return elements
53
38
  .map(item => {
@@ -79,10 +64,10 @@ export const getTextEditors = (board, elements) => {
79
64
  });
80
65
  const editingTextManage = textManages.find(textManage => textManage.isEditing);
81
66
  if (editingTextManage) {
82
- return [editingTextManage.componentRef.instance.editor];
67
+ return [editingTextManage.editor];
83
68
  }
84
69
  return textManages.map(item => {
85
- return item.componentRef.instance.editor;
70
+ return item.editor;
86
71
  });
87
72
  }
88
73
  return undefined;
@@ -95,9 +80,26 @@ export const getEditingTextEditor = (board, elements) => {
95
80
  });
96
81
  const editingTextManage = textManages.find(textManage => textManage.isEditing);
97
82
  if (editingTextManage) {
98
- return editingTextManage.componentRef.instance.editor;
83
+ return editingTextManage.editor;
99
84
  }
100
85
  return undefined;
101
86
  };
87
+ export const buildText = (text, align, properties) => {
88
+ properties = properties || {};
89
+ const plaitText = typeof text === 'string' ? { children: [{ text, ...properties }] } : text;
90
+ if (align) {
91
+ plaitText.align = align;
92
+ }
93
+ return plaitText;
94
+ };
95
+ export const getLineHeightByFontSize = (fontSize) => {
96
+ if (fontSize === 14) {
97
+ return 20;
98
+ }
99
+ if (fontSize === 18) {
100
+ return 25;
101
+ }
102
+ return fontSize * 1.5;
103
+ };
102
104
  export const ELEMENT_TO_TEXT_MANAGES = new WeakMap();
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbHMvdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBYyxlQUFlLEVBQWMsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFVLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDcEQsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQ3hELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQzdELE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN4QyxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQ3hELE1BQU0sVUFBVSxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLFdBQVcsR0FBa0IsSUFBSSxDQUFDO0lBQ3RDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMvQixNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsV0FBVyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hELFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDL0IsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sWUFBWSxHQUE2QixlQUFlLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0gsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUNELE1BQU0sWUFBWSxHQUE2QixlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hGLE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQXdCLEVBQUUsRUFBRTtJQUN4RCxPQUFPLFFBQVE7U0FDVixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDUixJQUFJLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxPQUFPO3FCQUNULEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDVixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN0QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RixDQUFDLENBQUM7cUJBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0wsQ0FBQyxDQUFDO1NBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQXlCLEVBQUUsRUFBRTtJQUMzRSxNQUFNLGdCQUFnQixHQUFHLFFBQVEsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7UUFDckMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVCLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRSxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBeUIsRUFBRSxFQUFFO0lBQ2pGLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7SUFDckMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzVCLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDcEIsT0FBTyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUMxRCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXdDLElBQUksT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBDdXN0b21UZXh0LCBQbGFpdE1hcmtFZGl0b3IsIFRleHRNYW5hZ2UgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBFZGl0b3IsIE5vZGUgfSBmcm9tICdzbGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0TWFuYWdlcyA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gRUxFTUVOVF9UT19URVhUX01BTkFHRVMuZ2V0KGVsZW1lbnQpIHx8IFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpcnN0VGV4dE1hbmFnZSA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCB0ZXh0TWFuYWdlID0gZ2V0VGV4dE1hbmFnZXMoZWxlbWVudClbMF07XG4gICAgaWYgKCF0ZXh0TWFuYWdlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignY2FuIG5vdCBmaW5kIHRleHRNYW5hZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHRNYW5hZ2U7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuIGdldFRleHRNYW5hZ2VzKGVsZW1lbnQpLm1hcChtYW5hZ2UgPT4ge1xuICAgICAgICByZXR1cm4gbWFuYWdlLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lZGl0b3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmlyc3RUZXh0RWRpdG9yID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHRleHRFZGl0b3IgPSBnZXRUZXh0RWRpdG9yc0J5RWxlbWVudChlbGVtZW50KVswXTtcbiAgICBpZiAoIXRleHRFZGl0b3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdjYW4gbm90IGZpbmQgdGV4dE1hbmFnZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dEVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kRmlyc3RUZXh0RWRpdG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGxldCBmaXJzdEVkaXRvcjogRWRpdG9yIHwgbnVsbCA9IG51bGw7XG4gICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBlZGl0b3JzID0gZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGlmICghZmlyc3RFZGl0b3IgJiYgZWRpdG9ycyAmJiBlZGl0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZpcnN0RWRpdG9yID0gZWRpdG9yc1swXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaXJzdEVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0TWFya3NCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgZWRpdG9ycyA9IGdldFRleHRFZGl0b3JzQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGVkaXRvciA9IGVkaXRvcnNbMF07XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAoZWRpdG9yLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCB0ZXh0TWFuYWdlID0gZ2V0VGV4dE1hbmFnZXMoZWxlbWVudClbMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNYXJrczogT21pdDxDdXN0b21UZXh0LCAndGV4dCc+ID0gUGxhaXRNYXJrRWRpdG9yLmdldE1hcmtzQnlFbGVtZW50KHRleHRNYW5hZ2UuY29tcG9uZW50UmVmLmluc3RhbmNlLmNoaWxkcmVuWzBdKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRNYXJrcztcbiAgICB9XG4gICAgY29uc3QgY3VycmVudE1hcmtzOiBPbWl0PEN1c3RvbVRleHQsICd0ZXh0Jz4gPSBQbGFpdE1hcmtFZGl0b3IuZ2V0TWFya3MoZWRpdG9yKTtcbiAgICByZXR1cm4gY3VycmVudE1hcmtzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRzVGV4dCA9IChlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICByZXR1cm4gZWxlbWVudHNcbiAgICAgICAgLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWRpdG9ycyA9IGdldFRleHRFZGl0b3JzQnlFbGVtZW50KGl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChlZGl0b3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChlZGl0b3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRzRW50cnkgPSBOb2RlLnRleHRzKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGV4dHNFbnRyeSkucmVkdWNlKCh0b3RhbCwgdGV4dCkgPT4gKHRvdGFsICs9IHRleHRbMF0udGV4dCksICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0pXG4gICAgICAgIC5qb2luKCcgJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dEVkaXRvcnMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHRleHRNYW5hZ2VzOiBUZXh0TWFuYWdlW10gPSBbXTtcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgdGV4dE1hbmFnZXMucHVzaCguLi5nZXRUZXh0TWFuYWdlcyhpdGVtKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlZGl0aW5nVGV4dE1hbmFnZSA9IHRleHRNYW5hZ2VzLmZpbmQodGV4dE1hbmFnZSA9PiB0ZXh0TWFuYWdlLmlzRWRpdGluZyk7XG4gICAgICAgIGlmIChlZGl0aW5nVGV4dE1hbmFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIFtlZGl0aW5nVGV4dE1hbmFnZS5jb21wb25lbnRSZWYuaW5zdGFuY2UuZWRpdG9yXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dE1hbmFnZXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0uY29tcG9uZW50UmVmLmluc3RhbmNlLmVkaXRvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWRpdGluZ1RleHRFZGl0b3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgdGV4dE1hbmFnZXM6IFRleHRNYW5hZ2VbXSA9IFtdO1xuICAgIHNlbGVjdGVkRWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGV4dE1hbmFnZXMucHVzaCguLi5nZXRUZXh0TWFuYWdlcyhpdGVtKSk7XG4gICAgfSk7XG4gICAgY29uc3QgZWRpdGluZ1RleHRNYW5hZ2UgPSB0ZXh0TWFuYWdlcy5maW5kKHRleHRNYW5hZ2UgPT4gdGV4dE1hbmFnZS5pc0VkaXRpbmcpO1xuICAgIGlmIChlZGl0aW5nVGV4dE1hbmFnZSkge1xuICAgICAgICByZXR1cm4gZWRpdGluZ1RleHRNYW5hZ2UuY29tcG9uZW50UmVmLmluc3RhbmNlLmVkaXRvcjtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1RPX1RFWFRfTUFOQUdFUzogV2Vha01hcDxQbGFpdEVsZW1lbnQsIFRleHRNYW5hZ2VbXT4gPSBuZXcgV2Vha01hcCgpO1xuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbHMvdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBVSxJQUFJLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFJOUMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQ3BELE9BQU8sdUJBQXVCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtJQUM3RCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDeEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDeEQsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFD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QUcsQ0FBQyxRQUFnQixFQUFFLEVBQUU7SUFDeEQsSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbEIsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbEIsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF3QyxJQUFJLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgRWRpdG9yLCBOb2RlLCBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVGV4dE1hbmFnZSB9IGZyb20gJy4uL3RleHQvdGV4dC1tYW5hZ2UnO1xuaW1wb3J0IHsgQWxpZ25tZW50LCBDdXN0b21UZXh0LCBQYXJhZ3JhcGhFbGVtZW50IH0gZnJvbSAnLi4vdGV4dC90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0TWFuYWdlcyA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gRUxFTUVOVF9UT19URVhUX01BTkFHRVMuZ2V0KGVsZW1lbnQpIHx8IFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpcnN0VGV4dE1hbmFnZSA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCB0ZXh0TWFuYWdlID0gZ2V0VGV4dE1hbmFnZXMoZWxlbWVudClbMF07XG4gICAgaWYgKCF0ZXh0TWFuYWdlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignY2FuIG5vdCBmaW5kIHRleHRNYW5hZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHRNYW5hZ2U7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuIGdldFRleHRNYW5hZ2VzKGVsZW1lbnQpLm1hcChtYW5hZ2UgPT4ge1xuICAgICAgICByZXR1cm4gbWFuYWdlLmVkaXRvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaXJzdFRleHRFZGl0b3IgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgdGV4dEVkaXRvciA9IGdldFRleHRFZGl0b3JzQnlFbGVtZW50KGVsZW1lbnQpWzBdO1xuICAgIGlmICghdGV4dEVkaXRvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2NhbiBub3QgZmluZCB0ZXh0TWFuYWdlJyk7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0RWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRGaXJzdFRleHRFZGl0b3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgbGV0IGZpcnN0RWRpdG9yOiBFZGl0b3IgfCBudWxsID0gbnVsbDtcbiAgICBzZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGNvbnN0IGVkaXRvcnMgPSBnZXRUZXh0RWRpdG9yc0J5RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgaWYgKCFmaXJzdEVkaXRvciAmJiBlZGl0b3JzICYmIGVkaXRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZmlyc3RFZGl0b3IgPSBlZGl0b3JzWzBdO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZpcnN0RWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRzVGV4dCA9IChlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICByZXR1cm4gZWxlbWVudHNcbiAgICAgICAgLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWRpdG9ycyA9IGdldFRleHRFZGl0b3JzQnlFbGVtZW50KGl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChlZGl0b3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChlZGl0b3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRzRW50cnkgPSBOb2RlLnRleHRzKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGV4dHNFbnRyeSkucmVkdWNlKCh0b3RhbCwgdGV4dCkgPT4gKHRvdGFsICs9IHRleHRbMF0udGV4dCksICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0pXG4gICAgICAgIC5qb2luKCcgJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dEVkaXRvcnMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHRleHRNYW5hZ2VzOiBUZXh0TWFuYWdlW10gPSBbXTtcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgdGV4dE1hbmFnZXMucHVzaCguLi5nZXRUZXh0TWFuYWdlcyhpdGVtKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlZGl0aW5nVGV4dE1hbmFnZSA9IHRleHRNYW5hZ2VzLmZpbmQodGV4dE1hbmFnZSA9PiB0ZXh0TWFuYWdlLmlzRWRpdGluZyk7XG4gICAgICAgIGlmIChlZGl0aW5nVGV4dE1hbmFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIFtlZGl0aW5nVGV4dE1hbmFnZS5lZGl0b3JdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0TWFuYWdlcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5lZGl0b3I7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVkaXRpbmdUZXh0RWRpdG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50cz86IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGVsZW1lbnRzIHx8IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNvbnN0IHRleHRNYW5hZ2VzOiBUZXh0TWFuYWdlW10gPSBbXTtcbiAgICBzZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHRleHRNYW5hZ2VzLnB1c2goLi4uZ2V0VGV4dE1hbmFnZXMoaXRlbSkpO1xuICAgIH0pO1xuICAgIGNvbnN0IGVkaXRpbmdUZXh0TWFuYWdlID0gdGV4dE1hbmFnZXMuZmluZCh0ZXh0TWFuYWdlID0+IHRleHRNYW5hZ2UuaXNFZGl0aW5nKTtcbiAgICBpZiAoZWRpdGluZ1RleHRNYW5hZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkaXRpbmdUZXh0TWFuYWdlLmVkaXRvcjtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFRleHQgPSAodGV4dDogc3RyaW5nIHwgRWxlbWVudCwgYWxpZ24/OiBBbGlnbm1lbnQsIHByb3BlcnRpZXM/OiBQYXJ0aWFsPEN1c3RvbVRleHQ+KSA9PiB7XG4gICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307XG4gICAgY29uc3QgcGxhaXRUZXh0ID0gdHlwZW9mIHRleHQgPT09ICdzdHJpbmcnID8geyBjaGlsZHJlbjogW3sgdGV4dCwgLi4ucHJvcGVydGllcyB9XSB9IDogdGV4dDtcbiAgICBpZiAoYWxpZ24pIHtcbiAgICAgICAgKHBsYWl0VGV4dCBhcyBQYXJhZ3JhcGhFbGVtZW50KS5hbGlnbiA9IGFsaWduO1xuICAgIH1cbiAgICByZXR1cm4gcGxhaXRUZXh0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExpbmVIZWlnaHRCeUZvbnRTaXplID0gKGZvbnRTaXplOiBudW1iZXIpID0+IHtcbiAgICBpZiAoZm9udFNpemUgPT09IDE0KSB7XG4gICAgICAgIHJldHVybiAyMDtcbiAgICB9XG4gICAgaWYgKGZvbnRTaXplID09PSAxOCkge1xuICAgICAgICByZXR1cm4gMjU7XG4gICAgfVxuICAgIHJldHVybiBmb250U2l6ZSAqIDEuNTtcbn07XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1RPX1RFWFRfTUFOQUdFUzogV2Vha01hcDxQbGFpdEVsZW1lbnQsIFRleHRNYW5hZ2VbXT4gPSBuZXcgV2Vha01hcCgpO1xuIl19