@plait/common 0.57.0 → 0.59.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.
@@ -11,13 +11,13 @@ export const getFirstTextManage = (element) => {
11
11
  }
12
12
  return textManage;
13
13
  };
14
- export const getTextEditors = (element) => {
14
+ export const getTextEditorsByElement = (element) => {
15
15
  return getTextManages(element).map(manage => {
16
16
  return manage.componentRef.instance.editor;
17
17
  });
18
18
  };
19
19
  export const getFirstTextEditor = (element) => {
20
- const textEditor = getTextEditors(element)[0];
20
+ const textEditor = getTextEditorsByElement(element)[0];
21
21
  if (!textEditor) {
22
22
  console.warn('can not find textManage');
23
23
  }
@@ -27,7 +27,7 @@ export const findFirstTextEditor = (board) => {
27
27
  const selectedElements = getSelectedElements(board);
28
28
  let firstEditor = null;
29
29
  selectedElements.forEach(element => {
30
- const editors = getTextEditors(element);
30
+ const editors = getTextEditorsByElement(element);
31
31
  if (!firstEditor && editors && editors.length > 0) {
32
32
  firstEditor = editors[0];
33
33
  }
@@ -35,7 +35,7 @@ export const findFirstTextEditor = (board) => {
35
35
  return firstEditor;
36
36
  };
37
37
  export const getTextMarksByElement = (element) => {
38
- const editors = getTextEditors(element);
38
+ const editors = getTextEditorsByElement(element);
39
39
  const editor = editors[0];
40
40
  if (!editor) {
41
41
  return {};
@@ -52,7 +52,7 @@ export const getElementsText = (elements) => {
52
52
  return elements
53
53
  .map(item => {
54
54
  try {
55
- const editors = getTextEditors(item);
55
+ const editors = getTextEditorsByElement(item);
56
56
  if (editors.length) {
57
57
  return editors
58
58
  .map(editor => {
@@ -70,5 +70,34 @@ export const getElementsText = (elements) => {
70
70
  .filter(item => item)
71
71
  .join(' ');
72
72
  };
73
+ export const getTextEditors = (board, elements) => {
74
+ const selectedElements = elements || getSelectedElements(board);
75
+ if (selectedElements.length) {
76
+ const textManages = [];
77
+ selectedElements.forEach(item => {
78
+ textManages.push(...getTextManages(item));
79
+ });
80
+ const editingTextManage = textManages.find(textManage => textManage.isEditing);
81
+ if (editingTextManage) {
82
+ return [editingTextManage.componentRef.instance.editor];
83
+ }
84
+ return textManages.map(item => {
85
+ return item.componentRef.instance.editor;
86
+ });
87
+ }
88
+ return undefined;
89
+ };
90
+ export const getEditingTextEditor = (board, elements) => {
91
+ const selectedElements = elements || getSelectedElements(board);
92
+ const textManages = [];
93
+ selectedElements.forEach(item => {
94
+ textManages.push(...getTextManages(item));
95
+ });
96
+ const editingTextManage = textManages.find(textManage => textManage.isEditing);
97
+ if (editingTextManage) {
98
+ return editingTextManage.componentRef.instance.editor;
99
+ }
100
+ return undefined;
101
+ };
73
102
  export const ELEMENT_TO_TEXT_MANAGES = new WeakMap();
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbHMvdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBYyxlQUFlLEVBQWMsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFVLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDcEQsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQ3hELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtJQUNwRCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDeEMsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsT0FB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LENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF3QyxJQUFJLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgQ3VzdG9tVGV4dCwgUGxhaXRNYXJrRWRpdG9yLCBUZXh0TWFuYWdlIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgRWRpdG9yLCBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dE1hbmFnZXMgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuIEVMRU1FTlRfVE9fVEVYVF9NQU5BR0VTLmdldChlbGVtZW50KSB8fCBbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaXJzdFRleHRNYW5hZ2UgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgdGV4dE1hbmFnZSA9IGdldFRleHRNYW5hZ2VzKGVsZW1lbnQpWzBdO1xuICAgIGlmICghdGV4dE1hbmFnZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2NhbiBub3QgZmluZCB0ZXh0TWFuYWdlJyk7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0TWFuYWdlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRleHRFZGl0b3JzID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIHJldHVybiBnZXRUZXh0TWFuYWdlcyhlbGVtZW50KS5tYXAobWFuYWdlID0+IHtcbiAgICAgICAgcmV0dXJuIG1hbmFnZS5jb21wb25lbnRSZWYuaW5zdGFuY2UuZWRpdG9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpcnN0VGV4dEVkaXRvciA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCB0ZXh0RWRpdG9yID0gZ2V0VGV4dEVkaXRvcnMoZWxlbWVudClbMF07XG4gICAgaWYgKCF0ZXh0RWRpdG9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignY2FuIG5vdCBmaW5kIHRleHRNYW5hZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHRFZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZEZpcnN0VGV4dEVkaXRvciA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICBsZXQgZmlyc3RFZGl0b3I6IEVkaXRvciB8IG51bGwgPSBudWxsO1xuICAgIHNlbGVjdGVkRWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgY29uc3QgZWRpdG9ycyA9IGdldFRleHRFZGl0b3JzKGVsZW1lbnQpO1xuICAgICAgICBpZiAoIWZpcnN0RWRpdG9yICYmIGVkaXRvcnMgJiYgZWRpdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmaXJzdEVkaXRvciA9IGVkaXRvcnNbMF07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlyc3RFZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dE1hcmtzQnlFbGVtZW50ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGVkaXRvcnMgPSBnZXRUZXh0RWRpdG9ycyhlbGVtZW50KTtcbiAgICBjb25zdCBlZGl0b3IgPSBlZGl0b3JzWzBdO1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKGVkaXRvci5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc3QgdGV4dE1hbmFnZSA9IGdldFRleHRNYW5hZ2VzKGVsZW1lbnQpWzBdO1xuICAgICAgICBjb25zdCBjdXJyZW50TWFya3M6IE9taXQ8Q3VzdG9tVGV4dCwgJ3RleHQnPiA9IFBsYWl0TWFya0VkaXRvci5nZXRNYXJrc0J5RWxlbWVudCh0ZXh0TWFuYWdlLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jaGlsZHJlblswXSk7XG4gICAgICAgIHJldHVybiBjdXJyZW50TWFya3M7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRNYXJrczogT21pdDxDdXN0b21UZXh0LCAndGV4dCc+ID0gUGxhaXRNYXJrRWRpdG9yLmdldE1hcmtzKGVkaXRvcik7XG4gICAgcmV0dXJuIGN1cnJlbnRNYXJrcztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50c1RleHQgPSAoZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRzXG4gICAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkaXRvcnMgPSBnZXRUZXh0RWRpdG9ycyhpdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAoZWRpdG9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZWRpdG9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0c0VudHJ5ID0gTm9kZS50ZXh0cyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRleHRzRW50cnkpLnJlZHVjZSgodG90YWwsIHRleHQpID0+ICh0b3RhbCArPSB0ZXh0WzBdLnRleHQpLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtKVxuICAgICAgICAuam9pbignICcpO1xufTtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVE9fVEVYVF9NQU5BR0VTOiBXZWFrTWFwPFBsYWl0RWxlbWVudCwgVGV4dE1hbmFnZVtdPiA9IG5ldyBXZWFrTWFwKCk7XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbHMvdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBYyxlQUFlLEVBQWMsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFVLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDcEQsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQ3hELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQzdELE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN4QyxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBcUIsRUFBRSxFQUFFO0lBQ3hELE1BQU0sVUFBVSxHQUFHLHVCQUF1QixDQUFD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Q0FBQyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDcEIsT0FBTyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUMxRCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXdDLElBQUksT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBDdXN0b21UZXh0LCBQbGFpdE1hcmtFZGl0b3IsIFRleHRNYW5hZ2UgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBFZGl0b3IsIE5vZGUgfSBmcm9tICdzbGF0ZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0TWFuYWdlcyA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gRUxFTUVOVF9UT19URVhUX01BTkFHRVMuZ2V0KGVsZW1lbnQpIHx8IFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpcnN0VGV4dE1hbmFnZSA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCB0ZXh0TWFuYWdlID0gZ2V0VGV4dE1hbmFnZXMoZWxlbWVudClbMF07XG4gICAgaWYgKCF0ZXh0TWFuYWdlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignY2FuIG5vdCBmaW5kIHRleHRNYW5hZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHRNYW5hZ2U7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuIGdldFRleHRNYW5hZ2VzKGVsZW1lbnQpLm1hcChtYW5hZ2UgPT4ge1xuICAgICAgICByZXR1cm4gbWFuYWdlLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lZGl0b3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmlyc3RUZXh0RWRpdG9yID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHRleHRFZGl0b3IgPSBnZXRUZXh0RWRpdG9yc0J5RWxlbWVudChlbGVtZW50KVswXTtcbiAgICBpZiAoIXRleHRFZGl0b3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdjYW4gbm90IGZpbmQgdGV4dE1hbmFnZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dEVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kRmlyc3RUZXh0RWRpdG9yID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGxldCBmaXJzdEVkaXRvcjogRWRpdG9yIHwgbnVsbCA9IG51bGw7XG4gICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBlZGl0b3JzID0gZ2V0VGV4dEVkaXRvcnNCeUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGlmICghZmlyc3RFZGl0b3IgJiYgZWRpdG9ycyAmJiBlZGl0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZpcnN0RWRpdG9yID0gZWRpdG9yc1swXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmaXJzdEVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0TWFya3NCeUVsZW1lbnQgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgZWRpdG9ycyA9IGdldFRleHRFZGl0b3JzQnlFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGVkaXRvciA9IGVkaXRvcnNbMF07XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAoZWRpdG9yLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCB0ZXh0TWFuYWdlID0gZ2V0VGV4dE1hbmFnZXMoZWxlbWVudClbMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNYXJrczogT21pdDxDdXN0b21UZXh0LCAndGV4dCc+ID0gUGxhaXRNYXJrRWRpdG9yLmdldE1hcmtzQnlFbGVtZW50KHRleHRNYW5hZ2UuY29tcG9uZW50UmVmLmluc3RhbmNlLmNoaWxkcmVuWzBdKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRNYXJrcztcbiAgICB9XG4gICAgY29uc3QgY3VycmVudE1hcmtzOiBPbWl0PEN1c3RvbVRleHQsICd0ZXh0Jz4gPSBQbGFpdE1hcmtFZGl0b3IuZ2V0TWFya3MoZWRpdG9yKTtcbiAgICByZXR1cm4gY3VycmVudE1hcmtzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRzVGV4dCA9IChlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICByZXR1cm4gZWxlbWVudHNcbiAgICAgICAgLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWRpdG9ycyA9IGdldFRleHRFZGl0b3JzQnlFbGVtZW50KGl0ZW0pO1xuICAgICAgICAgICAgICAgIGlmIChlZGl0b3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChlZGl0b3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRzRW50cnkgPSBOb2RlLnRleHRzKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGV4dHNFbnRyeSkucmVkdWNlKCh0b3RhbCwgdGV4dCkgPT4gKHRvdGFsICs9IHRleHRbMF0udGV4dCksICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0pXG4gICAgICAgIC5qb2luKCcgJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dEVkaXRvcnMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHRleHRNYW5hZ2VzOiBUZXh0TWFuYWdlW10gPSBbXTtcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgdGV4dE1hbmFnZXMucHVzaCguLi5nZXRUZXh0TWFuYWdlcyhpdGVtKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlZGl0aW5nVGV4dE1hbmFnZSA9IHRleHRNYW5hZ2VzLmZpbmQodGV4dE1hbmFnZSA9PiB0ZXh0TWFuYWdlLmlzRWRpdGluZyk7XG4gICAgICAgIGlmIChlZGl0aW5nVGV4dE1hbmFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIFtlZGl0aW5nVGV4dE1hbmFnZS5jb21wb25lbnRSZWYuaW5zdGFuY2UuZWRpdG9yXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dE1hbmFnZXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0uY29tcG9uZW50UmVmLmluc3RhbmNlLmVkaXRvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RWRpdGluZ1RleHRFZGl0b3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgdGV4dE1hbmFnZXM6IFRleHRNYW5hZ2VbXSA9IFtdO1xuICAgIHNlbGVjdGVkRWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGV4dE1hbmFnZXMucHVzaCguLi5nZXRUZXh0TWFuYWdlcyhpdGVtKSk7XG4gICAgfSk7XG4gICAgY29uc3QgZWRpdGluZ1RleHRNYW5hZ2UgPSB0ZXh0TWFuYWdlcy5maW5kKHRleHRNYW5hZ2UgPT4gdGV4dE1hbmFnZS5pc0VkaXRpbmcpO1xuICAgIGlmIChlZGl0aW5nVGV4dE1hbmFnZSkge1xuICAgICAgICByZXR1cm4gZWRpdGluZ1RleHRNYW5hZ2UuY29tcG9uZW50UmVmLmluc3RhbmNlLmVkaXRvcjtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1RPX1RFWFRfTUFOQUdFUzogV2Vha01hcDxQbGFpdEVsZW1lbnQsIFRleHRNYW5hZ2VbXT4gPSBuZXcgV2Vha01hcCgpO1xuIl19
@@ -1,10 +1,9 @@
1
- import { PlaitGroupElement, getSelectionAngle, getElementsInGroup, setAngleForG, RectangleClient, drawCircle, PlaitBoard, RESIZE_HANDLE_CLASS_NAME, createG, setStrokeLinecap, drawRectangle, SELECTION_RECTANGLE_CLASS_NAME, createForeignObject, updateForeignObject, ResizeCursorClass, RESIZE_CURSORS, setDragging, rotatePoints, isSelectionMoving, getSelectedElements, distanceBetweenPointAndPoint, Point, Direction, hotkeys, PlaitContextService, createDebugGenerator, Transforms, getHighestSelectedElements, getRectangleByElements, MERGING, PlaitPointerType, isMainPointer, toViewBoxPoint, toHostPoint, preventTouchMove, PRESS_AND_MOVE_BUFFER, isDragging, throttleRAF, handleTouchTarget, ACTIVE_STROKE_WIDTH, getRectangleByGroup, PlaitPluginElementComponent, isSelectedElementOrGroup, Selection, getHitElementsBySelection, createGroupRectangleG, getSelectedGroups, getHighestSelectedGroups, getSelectedIsolatedElements, idCreator, getSelectedIsolatedElementsCanAddToGroup, getGroupByElement } from '@plait/core';
1
+ import { PlaitGroupElement, getSelectionAngle, getElementsInGroup, setAngleForG, RectangleClient, drawCircle, PlaitBoard, RESIZE_HANDLE_CLASS_NAME, createG, setStrokeLinecap, drawRectangle, SELECTION_RECTANGLE_CLASS_NAME, createForeignObject, updateForeignObject, ResizeCursorClass, RESIZE_CURSORS, setDragging, rotatePoints, isSelectionMoving, getSelectedElements, distanceBetweenPointAndPoint, Point, Direction, hotkeys, PlaitContextService, createDebugGenerator, Transforms, getHighestSelectedElements, getRectangleByElements, MERGING, PlaitPointerType, isMainPointer, toViewBoxPoint, toHostPoint, preventTouchMove, PRESS_AND_MOVE_BUFFER, isDragging, throttleRAF, handleTouchTarget, ACTIVE_STROKE_WIDTH, getRectangleByGroup, ElementFlavour, isSelectedElementOrGroup, Selection, getHitElementsBySelection, createGroupRectangleG, getSelectedGroups, getHighestSelectedGroups, getSelectedIsolatedElements, idCreator, getSelectedIsolatedElementsCanAddToGroup, getGroupByElement } from '@plait/core';
2
2
  import { isKeyHotkey } from 'is-hotkey';
3
3
  import { PlaitMarkEditor, MarkTypes, AlignEditor } from '@plait/text';
4
4
  import { Node, Transforms as Transforms$1, Editor } from 'slate';
5
5
  import * as i0 from '@angular/core';
6
- import { Directive, inject, Component, ChangeDetectionStrategy, Input } from '@angular/core';
7
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import { Directive, Input } from '@angular/core';
8
7
 
9
8
  const BASE = 4;
10
9
  const PRIMARY_COLOR = '#6698FF';
@@ -748,13 +747,13 @@ const getFirstTextManage = (element) => {
748
747
  }
749
748
  return textManage;
750
749
  };
751
- const getTextEditors = (element) => {
750
+ const getTextEditorsByElement = (element) => {
752
751
  return getTextManages(element).map(manage => {
753
752
  return manage.componentRef.instance.editor;
754
753
  });
755
754
  };
756
755
  const getFirstTextEditor = (element) => {
757
- const textEditor = getTextEditors(element)[0];
756
+ const textEditor = getTextEditorsByElement(element)[0];
758
757
  if (!textEditor) {
759
758
  console.warn('can not find textManage');
760
759
  }
@@ -764,7 +763,7 @@ const findFirstTextEditor = (board) => {
764
763
  const selectedElements = getSelectedElements(board);
765
764
  let firstEditor = null;
766
765
  selectedElements.forEach(element => {
767
- const editors = getTextEditors(element);
766
+ const editors = getTextEditorsByElement(element);
768
767
  if (!firstEditor && editors && editors.length > 0) {
769
768
  firstEditor = editors[0];
770
769
  }
@@ -772,7 +771,7 @@ const findFirstTextEditor = (board) => {
772
771
  return firstEditor;
773
772
  };
774
773
  const getTextMarksByElement = (element) => {
775
- const editors = getTextEditors(element);
774
+ const editors = getTextEditorsByElement(element);
776
775
  const editor = editors[0];
777
776
  if (!editor) {
778
777
  return {};
@@ -789,7 +788,7 @@ const getElementsText = (elements) => {
789
788
  return elements
790
789
  .map(item => {
791
790
  try {
792
- const editors = getTextEditors(item);
791
+ const editors = getTextEditorsByElement(item);
793
792
  if (editors.length) {
794
793
  return editors
795
794
  .map(editor => {
@@ -807,6 +806,35 @@ const getElementsText = (elements) => {
807
806
  .filter(item => item)
808
807
  .join(' ');
809
808
  };
809
+ const getTextEditors = (board, elements) => {
810
+ const selectedElements = elements || getSelectedElements(board);
811
+ if (selectedElements.length) {
812
+ const textManages = [];
813
+ selectedElements.forEach(item => {
814
+ textManages.push(...getTextManages(item));
815
+ });
816
+ const editingTextManage = textManages.find(textManage => textManage.isEditing);
817
+ if (editingTextManage) {
818
+ return [editingTextManage.componentRef.instance.editor];
819
+ }
820
+ return textManages.map(item => {
821
+ return item.componentRef.instance.editor;
822
+ });
823
+ }
824
+ return undefined;
825
+ };
826
+ const getEditingTextEditor = (board, elements) => {
827
+ const selectedElements = elements || getSelectedElements(board);
828
+ const textManages = [];
829
+ selectedElements.forEach(item => {
830
+ textManages.push(...getTextManages(item));
831
+ });
832
+ const editingTextManage = textManages.find(textManage => textManage.isEditing);
833
+ if (editingTextManage) {
834
+ return editingTextManage.componentRef.instance.editor;
835
+ }
836
+ return undefined;
837
+ };
810
838
  const ELEMENT_TO_TEXT_MANAGES = new WeakMap();
811
839
 
812
840
  const selectImage = (board, defaultImageWidth, handle, acceptImageTypes = ['png', 'jpeg', 'gif', 'bmp']) => {
@@ -1414,54 +1442,60 @@ const setTextMarks = (board, mark) => {
1414
1442
  }
1415
1443
  const activeMarks = PlaitMarkEditor.getMarks(firstEditor);
1416
1444
  const elements = selectedElements.filter(element => {
1417
- const editors = getTextEditors(element);
1445
+ const editors = getTextEditorsByElement(element);
1418
1446
  return editors.some(editor => {
1419
1447
  const elementMarks = PlaitMarkEditor.getMarks(editor);
1420
1448
  return elementMarks[mark] === activeMarks[mark];
1421
1449
  });
1422
1450
  });
1423
- elements.forEach(element => {
1424
- const editors = getTextEditors(element);
1425
- editors.forEach(editor => PlaitMarkEditor.toggleMark(editor, mark));
1426
- });
1451
+ const editors = getTextEditors(board, elements);
1452
+ if (editors && editors.length) {
1453
+ editors.forEach(editor => {
1454
+ PlaitMarkEditor.toggleMark(editor, mark);
1455
+ });
1456
+ }
1427
1457
  }
1428
1458
  };
1429
1459
  const setFontSize = (board, size, defaultFontSize) => {
1430
- const selectedElements = getSelectedElements(board);
1431
- if (selectedElements.length) {
1432
- selectedElements.forEach(element => {
1433
- const editors = getTextEditors(element);
1434
- const finalDefaultFontSize = typeof defaultFontSize === 'function' ? defaultFontSize(element) : defaultFontSize;
1435
- editors.forEach(editor => PlaitMarkEditor.setFontSizeMark(editor, size, finalDefaultFontSize));
1460
+ const editors = getTextEditors(board);
1461
+ if (editors && editors.length) {
1462
+ const selectedElements = getSelectedElements(board);
1463
+ editors.forEach(editor => {
1464
+ let finalDefaultFontSize;
1465
+ if (typeof defaultFontSize === 'function') {
1466
+ const element = selectedElements.find(element => {
1467
+ const textEditors = getTextEditorsByElement(element);
1468
+ return textEditors.includes(editor);
1469
+ });
1470
+ finalDefaultFontSize = defaultFontSize(element);
1471
+ }
1472
+ else {
1473
+ finalDefaultFontSize = defaultFontSize;
1474
+ }
1475
+ PlaitMarkEditor.setFontSizeMark(editor, size, finalDefaultFontSize);
1436
1476
  });
1437
1477
  }
1438
1478
  };
1439
1479
  const setTextColor = (board, color, textSelection) => {
1440
- const selectedElements = getSelectedElements(board);
1441
- if (selectedElements?.length) {
1442
- selectedElements.forEach(element => {
1443
- const editors = getTextEditors(element);
1444
- editors.forEach(editor => {
1445
- if (textSelection) {
1446
- Transforms$1.select(editor, textSelection);
1447
- }
1448
- if (color === 'transparent') {
1449
- Editor.removeMark(editor, MarkTypes.color);
1450
- }
1451
- else {
1452
- PlaitMarkEditor.setColorMark(editor, color);
1453
- }
1454
- });
1480
+ const editors = getTextEditors(board);
1481
+ if (editors && editors.length) {
1482
+ editors.forEach(editor => {
1483
+ if (textSelection) {
1484
+ Transforms$1.select(editor, textSelection);
1485
+ }
1486
+ if (color === 'transparent') {
1487
+ Editor.removeMark(editor, MarkTypes.color);
1488
+ }
1489
+ else {
1490
+ PlaitMarkEditor.setColorMark(editor, color);
1491
+ }
1455
1492
  });
1456
1493
  }
1457
1494
  };
1458
1495
  const setTextAlign = (board, align) => {
1459
- const selectedElements = getSelectedElements(board);
1460
- if (selectedElements?.length) {
1461
- selectedElements.forEach(element => {
1462
- const editors = getTextEditors(element);
1463
- editors.forEach(editor => AlignEditor.setAlign(editor, align));
1464
- });
1496
+ const editors = getTextEditors(board);
1497
+ if (editors && editors.length) {
1498
+ editors.forEach(editor => AlignEditor.setAlign(editor, align));
1465
1499
  }
1466
1500
  };
1467
1501
  const TextTransforms = { setTextAlign, setTextColor, setFontSize, setTextMarks };
@@ -1509,7 +1543,8 @@ const withResize = (board, options) => {
1509
1543
  element: resizeHitTestRef.element,
1510
1544
  handle: resizeHitTestRef.handle,
1511
1545
  handleIndex: resizeHitTestRef.handleIndex,
1512
- rectangle: resizeHitTestRef.rectangle
1546
+ rectangle: resizeHitTestRef.rectangle,
1547
+ options: resizeHitTestRef.options
1513
1548
  };
1514
1549
  preventTouchMove(board, event, true);
1515
1550
  // prevent text from being selected when user pressed shift and pointer down
@@ -1626,7 +1661,7 @@ class PlaitCommonElementRef {
1626
1661
  }
1627
1662
  }
1628
1663
 
1629
- class CommonPluginElement extends PlaitPluginElementComponent {
1664
+ class CommonElementFlavour extends ElementFlavour {
1630
1665
  constructor(elementRef = new PlaitCommonElementRef()) {
1631
1666
  super(elementRef);
1632
1667
  this.textManages = [];
@@ -1654,18 +1689,11 @@ class CommonPluginElement extends PlaitPluginElementComponent {
1654
1689
  getTextManages() {
1655
1690
  return this.textManages;
1656
1691
  }
1657
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CommonPluginElement, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
1658
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: CommonPluginElement, usesInheritance: true, ngImport: i0 }); }
1659
1692
  }
1660
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CommonPluginElement, decorators: [{
1661
- type: Directive
1662
- }], ctorParameters: () => [{ type: undefined }] });
1663
1693
 
1664
- class GroupComponent extends CommonPluginElement {
1665
- constructor(destroyRef) {
1694
+ class GroupComponent extends CommonElementFlavour {
1695
+ constructor() {
1666
1696
  super();
1667
- this.destroyRef = destroyRef;
1668
- this.contextService = inject(PlaitContextService);
1669
1697
  }
1670
1698
  initializeGenerator() {
1671
1699
  this.activeGenerator = new ActiveGenerator(this.board, {
@@ -1680,13 +1708,11 @@ class GroupComponent extends CommonPluginElement {
1680
1708
  });
1681
1709
  this.groupGenerator = new GroupGenerator(this.board);
1682
1710
  }
1683
- ngOnInit() {
1684
- super.ngOnInit();
1711
+ initialize() {
1712
+ super.initialize();
1685
1713
  this.initializeGenerator();
1686
- this.contextService
1687
- .onStable()
1688
- .pipe(takeUntilDestroyed(this.destroyRef))
1689
- .subscribe(() => {
1714
+ const contextService = PlaitBoard.getViewContainerRef(this.board).injector.get(PlaitContextService);
1715
+ this.onStableSubscription = contextService.onStable().subscribe(() => {
1690
1716
  const elementsInGroup = getElementsInGroup(this.board, this.element, false, true);
1691
1717
  const isPartialSelectGroup = elementsInGroup.some(item => isSelectedElementOrGroup(this.board, item)) &&
1692
1718
  !elementsInGroup.every(item => isSelectedElementOrGroup(this.board, item));
@@ -1694,18 +1720,11 @@ class GroupComponent extends CommonPluginElement {
1694
1720
  });
1695
1721
  }
1696
1722
  onContextChanged(value, previous) { }
1697
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: GroupComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
1698
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: GroupComponent, isStandalone: true, selector: "plait-group", usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1723
+ destroy() {
1724
+ super.destroy();
1725
+ this.onStableSubscription?.unsubscribe();
1726
+ }
1699
1727
  }
1700
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: GroupComponent, decorators: [{
1701
- type: Component,
1702
- args: [{
1703
- selector: 'plait-group',
1704
- template: ``,
1705
- changeDetection: ChangeDetectionStrategy.OnPush,
1706
- standalone: true
1707
- }]
1708
- }], ctorParameters: () => [{ type: i0.DestroyRef }] });
1709
1728
 
1710
1729
  function withGroup(board) {
1711
1730
  let groupRectangleG;
@@ -1997,5 +2016,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
1997
2016
  * Generated bundle index. Do not edit.
1998
2017
  */
1999
2018
 
2000
- export { AStar, ActiveGenerator, AlignTransform, BASE, BoardCreationMode, CommonPluginElement, DEFAULT_ROUTE_MARGIN, ELEMENT_TO_TEXT_MANAGES, Generator, IS_RESIZING, IS_ROTATING, ImageBaseComponent, ImageGenerator, MediaKeys, PICTURE_ACCEPTED_UPLOAD_SIZE, PRIMARY_COLOR, PlaitCommonElementRef, PointGraph, PointNode, PriorityQueue, PropertyTransforms, RESIZE_HANDLE_DIAMETER, ROTATE_HANDLE_DISTANCE_TO_ELEMENT, ROTATE_HANDLE_SIZE, ResizeHandle, TRANSPARENT, TextTransforms, WithCommonPluginKey, WithTextPluginKey, acceptImageTypes, addElementOfFocusedImage, addResizing, addRotating, alignBottom, alignHorizontalCenter, alignLeft, alignRight, alignTop, alignVerticalCenter, buildImage, calculatePolylineLength, canResize, createGraph, distributeHorizontal, distributeVertical, drawFillPrimaryHandle, drawHandle, drawPrimaryHandle, drawRotateHandle, findFirstTextEditor, generateElbowLineRoute, getCreationMode, getCrossingPointsBetweenPointAndSegment, getDirectionBetweenPointAndPoint, getDirectionByPointOfRectangle, getDirectionByVector, getDirectionFactor, getDirectionFactorByDirectionComponent, getElementOfFocusedImage, getElementsText, getExtendPoint, getFirstTextEditor, getFirstTextManage, getGraphPoints, getIndexByResizeHandle, getMemorizedLatest, getNextPoint, getOppositeDirection, getPointByVectorComponent, getPointByVectorDirectionComponent, getPointOnPolyline, getPoints, getRatioByPoint, getRectangleResizeHandleRefs, getResizeHandleByIndex, getResizeHandlePointByIndex, getRotatedResizeCursorClassByAngle, getSourceAndTargetOuterRectangle, getSymmetricHandleIndex, getTextEditors, getTextManages, getTextMarksByElement, getUnitVectorByPointAndPoint, hasAfterDraw, isCornerHandle, isDelete, isDndMode, isDrawingMode, isEdgeHandle, isEnterHotkey, isExpandHotkey, isPointOnSegment, isResizing, isResizingByCondition, isRotating, isSourceAndTargetIntersect, isSpaceHotkey, isTabHotkey, isVirtualKey, memorizeLatest, normalizeShapePoints, reduceRouteMargin, removeDuplicatePoints, removeElementOfFocusedImage, removeResizing, removeRotating, resetPointsAfterResize, rotateVector, rotateVectorAnti90, routeAdjust, selectImage, setCreationMode, setProperty, simplifyOrthogonalPoints, withGroup, withResize };
2019
+ export { AStar, ActiveGenerator, AlignTransform, BASE, BoardCreationMode, CommonElementFlavour, DEFAULT_ROUTE_MARGIN, ELEMENT_TO_TEXT_MANAGES, Generator, IS_RESIZING, IS_ROTATING, ImageBaseComponent, ImageGenerator, MediaKeys, PICTURE_ACCEPTED_UPLOAD_SIZE, PRIMARY_COLOR, PlaitCommonElementRef, PointGraph, PointNode, PriorityQueue, PropertyTransforms, RESIZE_HANDLE_DIAMETER, ROTATE_HANDLE_DISTANCE_TO_ELEMENT, ROTATE_HANDLE_SIZE, ResizeHandle, TRANSPARENT, TextTransforms, WithCommonPluginKey, WithTextPluginKey, acceptImageTypes, addElementOfFocusedImage, addResizing, addRotating, alignBottom, alignHorizontalCenter, alignLeft, alignRight, alignTop, alignVerticalCenter, buildImage, calculatePolylineLength, canResize, createGraph, distributeHorizontal, distributeVertical, drawFillPrimaryHandle, drawHandle, drawPrimaryHandle, drawRotateHandle, findFirstTextEditor, generateElbowLineRoute, getCreationMode, getCrossingPointsBetweenPointAndSegment, getDirectionBetweenPointAndPoint, getDirectionByPointOfRectangle, getDirectionByVector, getDirectionFactor, getDirectionFactorByDirectionComponent, getEditingTextEditor, getElementOfFocusedImage, getElementsText, getExtendPoint, getFirstTextEditor, getFirstTextManage, getGraphPoints, getIndexByResizeHandle, getMemorizedLatest, getNextPoint, getOppositeDirection, getPointByVectorComponent, getPointByVectorDirectionComponent, getPointOnPolyline, getPoints, getRatioByPoint, getRectangleResizeHandleRefs, getResizeHandleByIndex, getResizeHandlePointByIndex, getRotatedResizeCursorClassByAngle, getSourceAndTargetOuterRectangle, getSymmetricHandleIndex, getTextEditors, getTextEditorsByElement, getTextManages, getTextMarksByElement, getUnitVectorByPointAndPoint, hasAfterDraw, isCornerHandle, isDelete, isDndMode, isDrawingMode, isEdgeHandle, isEnterHotkey, isExpandHotkey, isPointOnSegment, isResizing, isResizingByCondition, isRotating, isSourceAndTargetIntersect, isSpaceHotkey, isTabHotkey, isVirtualKey, memorizeLatest, normalizeShapePoints, reduceRouteMargin, removeDuplicatePoints, removeElementOfFocusedImage, removeResizing, removeRotating, resetPointsAfterResize, rotateVector, rotateVectorAnti90, routeAdjust, selectImage, setCreationMode, setProperty, simplifyOrthogonalPoints, withGroup, withResize };
2001
2020
  //# sourceMappingURL=plait-common.mjs.map