@plait/mind 0.61.2 → 0.62.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/emoji/emoji-base.component.d.ts +11 -0
  2. package/{base → emoji}/index.d.ts +1 -0
  3. package/emoji/with-emoji.d.ts +15 -0
  4. package/esm2022/constants/node-topic-style.mjs +1 -1
  5. package/esm2022/emoji/emoji-base.component.mjs +21 -0
  6. package/esm2022/emoji/index.mjs +3 -0
  7. package/esm2022/emoji/with-emoji.mjs +8 -0
  8. package/esm2022/generators/node-emojis.generator.mjs +19 -33
  9. package/esm2022/interfaces/element-data.mjs +1 -1
  10. package/esm2022/interfaces/options.mjs +1 -1
  11. package/esm2022/mind-node.component.mjs +13 -14
  12. package/esm2022/plugins/with-mind-create.mjs +4 -10
  13. package/esm2022/plugins/with-mind-fragment.mjs +2 -3
  14. package/esm2022/plugins/with-mind.mjs +3 -2
  15. package/esm2022/plugins/with-node-resize.mjs +1 -1
  16. package/esm2022/public-api.mjs +2 -2
  17. package/esm2022/transforms/node.mjs +3 -4
  18. package/esm2022/utils/clipboard.mjs +25 -11
  19. package/esm2022/utils/mind.mjs +2 -2
  20. package/esm2022/utils/node/adjust-node.mjs +1 -10
  21. package/esm2022/utils/node/common.mjs +2 -6
  22. package/esm2022/utils/node/create-node.mjs +3 -2
  23. package/esm2022/utils/node/image.mjs +3 -5
  24. package/esm2022/utils/space/node-space.mjs +3 -3
  25. package/fesm2022/plait-mind.mjs +86 -118
  26. package/fesm2022/plait-mind.mjs.map +1 -1
  27. package/generators/node-emojis.generator.d.ts +7 -9
  28. package/interfaces/element-data.d.ts +1 -2
  29. package/interfaces/options.d.ts +1 -3
  30. package/mind-node.component.d.ts +1 -2
  31. package/package.json +1 -1
  32. package/plugins/with-mind-create.d.ts +1 -1
  33. package/plugins/with-mind.d.ts +1 -1
  34. package/public-api.d.ts +1 -1
  35. package/styles/mixins.scss +4 -4
  36. package/styles/styles.scss +2 -2
  37. package/utils/clipboard.d.ts +9 -0
  38. package/utils/mind.d.ts +1 -1
  39. package/base/emoji-base.component.d.ts +0 -18
  40. package/esm2022/base/emoji-base.component.mjs +0 -46
  41. package/esm2022/base/index.mjs +0 -2
@@ -1,11 +1,11 @@
1
- import { DEFAULT_FONT_SIZE, MarkTypes, PlaitMarkEditor } from '@plait/text';
2
1
  import { BASE, WithMindPluginKey } from '../../constants/default';
3
2
  import { PlaitMind } from '../../interfaces/element';
4
3
  import { MindElement } from '../../interfaces/element';
5
4
  import { getEmojisWidthHeight } from './emoji';
6
5
  import { getStrokeWidthByElement } from '../node-style/shape';
7
- import { getFirstTextEditor } from '@plait/common';
8
6
  import { getDefaultMindElementFontSize } from '../mind';
7
+ import { DEFAULT_FONT_SIZE, MarkTypes, PlaitMarkEditor } from '@plait/text-plugins';
8
+ import { getFirstTextEditor } from '@plait/common';
9
9
  const NodeDefaultSpace = {
10
10
  horizontal: {
11
11
  nodeAndText: BASE * 2.5,
@@ -131,4 +131,4 @@ export const getFontSizeBySlateElement = (text) => {
131
131
  const fontSize = marks[MarkTypes.fontSize] || defaultFontSize;
132
132
  return fontSize;
133
133
  };
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zcGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL3NwYWNlL25vZGUtc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRS9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFeEQsTUFBTSxnQkFBZ0IsR0FBRztJQUNyQixVQUFVLEVBQUU7UUFDUixXQUFXLEVBQUUsSUFBSSxHQUFHLEdBQUc7UUFDdkIsWUFBWSxFQUFFLElBQUksR0FBRyxHQUFHO0tBQzNCO0lBQ0QsUUFBUSxFQUFFO1FBQ04sV0FBVyxFQUFFLElBQUk7UUFDakIsWUFBWSxFQUFFLElBQUk7UUFDbEIsWUFBWSxFQUFFLElBQUksR0FBRyxHQUFHO0tBQzNCO0NBQ0osQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7SUFDckIsVUFBVSxFQUFFO1FBQ1IsV0FBVyxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ3JCLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQztLQUN6QjtJQUNELFFBQVEsRUFBRTtRQUNOLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBQztLQUN4QjtDQUNKLENBQUM7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aUJBQWlCLENBQUMsS0FBcUIsRUFBRSxPQUErQjtRQUNwRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQWtCLGlCQUFpQixDQUFDLENBQUM7UUFDM0UsTUFBTSxXQUFXLEdBQUcsb0NBQW9DLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sV0FBVyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDOUMsQ0FBQztJQUNELGdCQUFnQixDQUFDLEtBQXFCLEVBQUUsT0FBb0I7UUFDeEQsTUFBTSxXQUFXLEdBQUcsa0NBQWtDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxJQUFzQixFQUFFLEVBQUU7SUFDaEUsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUM7SUFDMUMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzQixPQUFPLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxHQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFZLElBQUksZUFBZSxDQUFDO0lBQzFFLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFRkFVTFRfRk9OVF9TSVpFLCBNYXJrVHlwZXMsIFBsYWl0TWFya0VkaXRvciB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IEJBU0UsIFdpdGhNaW5kUGx1Z2luS2V5IH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2RlZmF1bHQnO1xuaW1wb3J0IHsgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IEVtb2ppRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcbmltcG9ydCB7IFdpdGhNaW5kT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvb3B0aW9ucyc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uLy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcbmltcG9ydCB7IGdldEVtb2ppc1dpZHRoSGVpZ2h0IH0gZnJvbSAnLi9lbW9qaSc7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQgfSBmcm9tICcuLi9ub2RlLXN0eWxlL3NoYXBlJztcbmltcG9ydCB7IGdldEZpcnN0VGV4dEVkaXRvciB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE1pbmRFbGVtZW50Rm9udFNpemUgfSBmcm9tICcuLi9taW5kJztcblxuY29uc3QgTm9kZURlZmF1bHRTcGFjZSA9IHtcbiAgICBob3Jpem9udGFsOiB7XG4gICAgICAgIG5vZGVBbmRUZXh0OiBCQVNFICogMi41LFxuICAgICAgICBlbW9qaUFuZFRleHQ6IEJBU0UgKiAxLjVcbiAgICB9LFxuICAgIHZlcnRpY2FsOiB7XG4gICAgICAgIG5vZGVBbmRUZXh0OiBCQVNFLFxuICAgICAgICBub2RlQW5kSW1hZ2U6IEJBU0UsXG4gICAgICAgIGltYWdlQW5kVGV4dDogQkFTRSAqIDEuNVxuICAgIH1cbn07XG5cbmNvbnN0IFJvb3REZWZhdWx0U3BhY2UgPSB7XG4gICAgaG9yaXpvbnRhbDoge1xuICAgICAgICBub2RlQW5kVGV4dDogQkFTRSAqIDQsXG4gICAgICAgIGVtb2ppQW5kVGV4dDogQkFTRSAqIDJcbiAgICB9LFxuICAgIHZlcnRpY2FsOiB7XG4gICAgICAgIG5vZGVBbmRUZXh0OiBCQVNFICogMlxuICAgIH1cbn07XG5cbmNvbnN0IGdldEhvcml6b250YWxTcGFjZUJldHdlZW5Ob2RlQW5kVGV4dCA9IChib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgaXNNaW5kID0gUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KTtcbiAgICBjb25zdCBub2RlQW5kVGV4dCA9IGlzTWluZCA/IFJvb3REZWZhdWx0U3BhY2UuaG9yaXpvbnRhbC5ub2RlQW5kVGV4dCA6IE5vZGVEZWZhdWx0U3BhY2UuaG9yaXpvbnRhbC5ub2RlQW5kVGV4dDtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IGdldFN0cm9rZVdpZHRoQnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICByZXR1cm4gbm9kZUFuZFRleHQgKyBzdHJva2VXaWR0aDtcbn07XG5cbmNvbnN0IGdldFZlcnRpY2FsU3BhY2VCZXR3ZWVuTm9kZUFuZFRleHQgPSAoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGlzTWluZCA9IFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCk7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChib2FyZCwgZWxlbWVudCk7XG4gICAgY29uc3Qgbm9kZUFuZFRleHQgPSBpc01pbmQgPyBSb290RGVmYXVsdFNwYWNlLnZlcnRpY2FsLm5vZGVBbmRUZXh0IDogTm9kZURlZmF1bHRTcGFjZS52ZXJ0aWNhbC5ub2RlQW5kVGV4dDtcbiAgICByZXR1cm4gbm9kZUFuZFRleHQgKyBzdHJva2VXaWR0aDtcbn07XG5cbmNvbnN0IGdldFNwYWNlRW1vamlBbmRUZXh0ID0gKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgaXNNaW5kID0gUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KTtcbiAgICBjb25zdCBlbW9qaUFuZFRleHQgPSBpc01pbmQgPyBSb290RGVmYXVsdFNwYWNlLmhvcml6b250YWwuZW1vamlBbmRUZXh0IDogTm9kZURlZmF1bHRTcGFjZS5ob3Jpem9udGFsLmVtb2ppQW5kVGV4dDtcbiAgICByZXR1cm4gZW1vamlBbmRUZXh0O1xufTtcblxuZXhwb3J0IGNvbnN0IE5vZGVTcGFjZSA9IHtcbiAgICBnZXROb2RlV2lkdGgoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBub2RlQW5kVGV4dCA9IGdldEhvcml6b250YWxTcGFjZUJldHdlZW5Ob2RlQW5kVGV4dChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5oYXNFbW9qaXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgTm9kZVNwYWNlLmdldEVtb2ppTGVmdFNwYWNlKGJvYXJkLCBlbGVtZW50KSArXG4gICAgICAgICAgICAgICAgZ2V0RW1vamlzV2lkdGhIZWlnaHQoYm9hcmQsIGVsZW1lbnQpLndpZHRoICtcbiAgICAgICAgICAgICAgICBnZXRTcGFjZUVtb2ppQW5kVGV4dChlbGVtZW50KSArXG4gICAgICAgICAgICAgICAgTm9kZVNwYWNlLmdldE5vZGVEeW5hbWljV2lkdGgoYm9hcmQsIGVsZW1lbnQpICtcbiAgICAgICAgICAgICAgICBub2RlQW5kVGV4dFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZUFuZFRleHQgKyBOb2RlU3BhY2UuZ2V0Tm9kZUR5bmFtaWNXaWR0aChib2FyZCwgZWxlbWVudCkgKyBub2RlQW5kVGV4dDtcbiAgICB9LFxuICAgIGdldE5vZGVIZWlnaHQoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBub2RlQW5kVGV4dCA9IGdldFZlcnRpY2FsU3BhY2VCZXR3ZWVuTm9kZUFuZFRleHQoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaGFzSW1hZ2UoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOb2RlU3BhY2UuZ2V0VGV4dFRvcFNwYWNlKGJvYXJkLCBlbGVtZW50KSArIGVsZW1lbnQuaGVpZ2h0ICsgbm9kZUFuZFRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vZGVBbmRUZXh0ICsgZWxlbWVudC5oZWlnaHQgKyBub2RlQW5kVGV4dDtcbiAgICB9LFxuICAgIGdldE5vZGVEeW5hbWljV2lkdGgoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCB3aWR0aCA9IGVsZW1lbnQubWFudWFsV2lkdGggfHwgZWxlbWVudC53aWR0aDtcbiAgICAgICAgY29uc3QgaW1hZ2VXaWR0aCA9IE1pbmRFbGVtZW50Lmhhc0ltYWdlKGVsZW1lbnQpID8gZWxlbWVudC5kYXRhLmltYWdlPy53aWR0aCA6IDA7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCh3aWR0aCwgaW1hZ2VXaWR0aCk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiB1c2UgaXQgd2hlbiB1cGxvYWQgaW1hZ2UgZmlyc3Qgb3IgcmVzaXplIGltYWdlXG4gICAgICovXG4gICAgZ2V0Tm9kZU5ld0R5bmFtaWNXaWR0aChib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50LCBpbWFnZVdpZHRoOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50Lm1hbnVhbFdpZHRoIHx8IGVsZW1lbnQud2lkdGg7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCh3aWR0aCwgaW1hZ2VXaWR0aCk7XG4gICAgfSxcbiAgICBnZXROb2RlUmVzaXphYmxlTWluV2lkdGgoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBtaW5Ub3BpY1dpZHRoID0gTm9kZVNwYWNlLmdldE5vZGVUb3BpY01pbldpZHRoKGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0ltYWdlKGVsZW1lbnQpICYmIGVsZW1lbnQuZGF0YS5pbWFnZS53aWR0aCA+IG1pblRvcGljV2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmRhdGEuaW1hZ2Uud2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbWluVG9waWNXaWR0aDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0Tm9kZVRvcGljTWluV2lkdGgoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBkZWZhdWx0Rm9udFNpemUgPSBnZXREZWZhdWx0TWluZEVsZW1lbnRGb250U2l6ZShib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGdldEZpcnN0VGV4dEVkaXRvcihlbGVtZW50KTtcbiAgICAgICAgY29uc3QgbWFya3MgPSBQbGFpdE1hcmtFZGl0b3IuZ2V0TWFya3MoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgZm9udFNpemUgPSAobWFya3NbTWFya1R5cGVzLmZvbnRTaXplXSBhcyBudW1iZXIpIHx8IGRlZmF1bHRGb250U2l6ZTtcbiAgICAgICAgcmV0dXJuIGZvbnRTaXplO1xuICAgIH0sXG4gICAgZ2V0VGV4dExlZnRTcGFjZShib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGVBbmRUZXh0ID0gZ2V0SG9yaXpvbnRhbFNwYWNlQmV0d2Vlbk5vZGVBbmRUZXh0KGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIE5vZGVTcGFjZS5nZXRFbW9qaUxlZnRTcGFjZShib2FyZCwgZWxlbWVudCkgKyBnZXRFbW9qaXNXaWR0aEhlaWdodChib2FyZCwgZWxlbWVudCkud2lkdGggKyBnZXRTcGFjZUVtb2ppQW5kVGV4dChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlQW5kVGV4dDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0VGV4dFRvcFNwYWNlKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9kZUFuZFRleHQgPSBnZXRWZXJ0aWNhbFNwYWNlQmV0d2Vlbk5vZGVBbmRUZXh0KGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gTm9kZVNwYWNlLmdldEltYWdlVG9wU3BhY2UoYm9hcmQsIGVsZW1lbnQpICsgZWxlbWVudC5kYXRhLmltYWdlLmhlaWdodCArIE5vZGVEZWZhdWx0U3BhY2UudmVydGljYWwuaW1hZ2VBbmRUZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVBbmRUZXh0O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBnZXRJbWFnZVRvcFNwYWNlKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBzdHJva2VXaWR0aCArIE5vZGVEZWZhdWx0U3BhY2UudmVydGljYWwubm9kZUFuZEltYWdlO1xuICAgIH0sXG4gICAgZ2V0RW1vamlMZWZ0U3BhY2UoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudDxFbW9qaURhdGE+KSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBib2FyZC5nZXRQbHVnaW5PcHRpb25zPFdpdGhNaW5kT3B0aW9ucz4oV2l0aE1pbmRQbHVnaW5LZXkpO1xuICAgICAgICBjb25zdCBub2RlQW5kVGV4dCA9IGdldEhvcml6b250YWxTcGFjZUJldHdlZW5Ob2RlQW5kVGV4dChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBub2RlQW5kVGV4dCAtIG9wdGlvbnMuZW1vamlQYWRkaW5nO1xuICAgIH0sXG4gICAgZ2V0RW1vamlUb3BTcGFjZShib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGVBbmRUZXh0ID0gZ2V0VmVydGljYWxTcGFjZUJldHdlZW5Ob2RlQW5kVGV4dChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBub2RlQW5kVGV4dDtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9udFNpemVCeVNsYXRlRWxlbWVudCA9ICh0ZXh0OiBzdHJpbmcgfCBFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEZvbnRTaXplID0gREVGQVVMVF9GT05UX1NJWkU7XG4gICAgaWYgKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEZvbnRTaXplO1xuICAgIH1cbiAgICBjb25zdCBtYXJrcyA9IFBsYWl0TWFya0VkaXRvci5nZXRNYXJrc0J5RWxlbWVudCh0ZXh0KTtcbiAgICBjb25zdCBmb250U2l6ZSA9IChtYXJrc1tNYXJrVHlwZXMuZm9udFNpemVdIGFzIG51bWJlcikgfHwgZGVmYXVsdEZvbnRTaXplO1xuICAgIHJldHVybiBmb250U2l6ZTtcbn07XG4iXX0=
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zcGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL3NwYWNlL25vZGUtc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRS9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxNQUFNLGdCQUFnQixHQUFHO0lBQ3JCLFVBQVUsRUFBRTtRQUNSLFdBQVcsRUFBRSxJQUFJLEdBQUcsR0FBRztRQUN2QixZQUFZLEVBQUUsSUFBSSxHQUFHLEdBQUc7S0FDM0I7SUFDRCxRQUFRLEVBQUU7UUFDTixXQUFXLEVBQUUsSUFBSTtRQUNqQixZQUFZLEVBQUUsSUFBSTtRQUNsQixZQUFZLEVBQUUsSUFBSSxHQUFHLEdBQUc7S0FDM0I7Q0FDSixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRztJQUNyQixVQUFVLEVBQUU7UUFDUixXQUFXLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDckIsWUFBWSxFQUFFLElBQUksR0FBRyxDQUFDO0tBQ3pCO0lBQ0QsUUFBUSxFQUFFO1FBQ04sV0FBVyxFQUFFLElBQUksR0FBRyxDQUFDO0tBQ3hCO0NBQ0osQ0FB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RCxpQkFBaUIsQ0FBQyxLQUFxQixFQUFFLE9BQStCO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBa0IsaUJBQWlCLENBQUMsQ0FBQztRQUMzRSxNQUFNLFdBQVcsR0FBRyxvQ0FBb0MsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekUsT0FBTyxXQUFXLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUM5QyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsS0FBcUIsRUFBRSxPQUFvQjtRQUN4RCxNQUFNLFdBQVcsR0FBRyxrQ0FBa0MsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLElBQXNCLEVBQUUsRUFBRTtJQUNoRSxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztJQUMxQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsTUFBTSxRQUFRLEdBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQVksSUFBSSxlQUFlLENBQUM7SUFDMUUsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkFTRSwgV2l0aE1pbmRQbHVnaW5LZXkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZGVmYXVsdCc7XG5pbXBvcnQgeyBQbGFpdE1pbmQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgRW1vamlEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50LWRhdGEnO1xuaW1wb3J0IHsgV2l0aE1pbmRPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9vcHRpb25zJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vLi4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgZ2V0RW1vamlzV2lkdGhIZWlnaHQgfSBmcm9tICcuL2Vtb2ppJztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudCB9IGZyb20gJy4uL25vZGUtc3R5bGUvc2hhcGUnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE1pbmRFbGVtZW50Rm9udFNpemUgfSBmcm9tICcuLi9taW5kJztcbmltcG9ydCB7IERFRkFVTFRfRk9OVF9TSVpFLCBNYXJrVHlwZXMsIFBsYWl0TWFya0VkaXRvciB9IGZyb20gJ0BwbGFpdC90ZXh0LXBsdWdpbnMnO1xuaW1wb3J0IHsgZ2V0Rmlyc3RUZXh0RWRpdG9yIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmNvbnN0IE5vZGVEZWZhdWx0U3BhY2UgPSB7XG4gICAgaG9yaXpvbnRhbDoge1xuICAgICAgICBub2RlQW5kVGV4dDogQkFTRSAqIDIuNSxcbiAgICAgICAgZW1vamlBbmRUZXh0OiBCQVNFICogMS41XG4gICAgfSxcbiAgICB2ZXJ0aWNhbDoge1xuICAgICAgICBub2RlQW5kVGV4dDogQkFTRSxcbiAgICAgICAgbm9kZUFuZEltYWdlOiBCQVNFLFxuICAgICAgICBpbWFnZUFuZFRleHQ6IEJBU0UgKiAxLjVcbiAgICB9XG59O1xuXG5jb25zdCBSb290RGVmYXVsdFNwYWNlID0ge1xuICAgIGhvcml6b250YWw6IHtcbiAgICAgICAgbm9kZUFuZFRleHQ6IEJBU0UgKiA0LFxuICAgICAgICBlbW9qaUFuZFRleHQ6IEJBU0UgKiAyXG4gICAgfSxcbiAgICB2ZXJ0aWNhbDoge1xuICAgICAgICBub2RlQW5kVGV4dDogQkFTRSAqIDJcbiAgICB9XG59O1xuXG5jb25zdCBnZXRIb3Jpem9udGFsU3BhY2VCZXR3ZWVuTm9kZUFuZFRleHQgPSAoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGlzTWluZCA9IFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCk7XG4gICAgY29uc3Qgbm9kZUFuZFRleHQgPSBpc01pbmQgPyBSb290RGVmYXVsdFNwYWNlLmhvcml6b250YWwubm9kZUFuZFRleHQgOiBOb2RlRGVmYXVsdFNwYWNlLmhvcml6b250YWwubm9kZUFuZFRleHQ7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSBnZXRTdHJva2VXaWR0aEJ5RWxlbWVudChib2FyZCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIG5vZGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGg7XG59O1xuXG5jb25zdCBnZXRWZXJ0aWNhbFNwYWNlQmV0d2Vlbk5vZGVBbmRUZXh0ID0gKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBpc01pbmQgPSBQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpO1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IG5vZGVBbmRUZXh0ID0gaXNNaW5kID8gUm9vdERlZmF1bHRTcGFjZS52ZXJ0aWNhbC5ub2RlQW5kVGV4dCA6IE5vZGVEZWZhdWx0U3BhY2UudmVydGljYWwubm9kZUFuZFRleHQ7XG4gICAgcmV0dXJuIG5vZGVBbmRUZXh0ICsgc3Ryb2tlV2lkdGg7XG59O1xuXG5jb25zdCBnZXRTcGFjZUVtb2ppQW5kVGV4dCA9IChlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGlzTWluZCA9IFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCk7XG4gICAgY29uc3QgZW1vamlBbmRUZXh0ID0gaXNNaW5kID8gUm9vdERlZmF1bHRTcGFjZS5ob3Jpem9udGFsLmVtb2ppQW5kVGV4dCA6IE5vZGVEZWZhdWx0U3BhY2UuaG9yaXpvbnRhbC5lbW9qaUFuZFRleHQ7XG4gICAgcmV0dXJuIGVtb2ppQW5kVGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBOb2RlU3BhY2UgPSB7XG4gICAgZ2V0Tm9kZVdpZHRoKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9kZUFuZFRleHQgPSBnZXRIb3Jpem9udGFsU3BhY2VCZXR3ZWVuTm9kZUFuZFRleHQoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaGFzRW1vamlzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIE5vZGVTcGFjZS5nZXRFbW9qaUxlZnRTcGFjZShib2FyZCwgZWxlbWVudCkgK1xuICAgICAgICAgICAgICAgIGdldEVtb2ppc1dpZHRoSGVpZ2h0KGJvYXJkLCBlbGVtZW50KS53aWR0aCArXG4gICAgICAgICAgICAgICAgZ2V0U3BhY2VFbW9qaUFuZFRleHQoZWxlbWVudCkgK1xuICAgICAgICAgICAgICAgIE5vZGVTcGFjZS5nZXROb2RlRHluYW1pY1dpZHRoKGJvYXJkLCBlbGVtZW50KSArXG4gICAgICAgICAgICAgICAgbm9kZUFuZFRleHRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vZGVBbmRUZXh0ICsgTm9kZVNwYWNlLmdldE5vZGVEeW5hbWljV2lkdGgoYm9hcmQsIGVsZW1lbnQpICsgbm9kZUFuZFRleHQ7XG4gICAgfSxcbiAgICBnZXROb2RlSGVpZ2h0KGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9kZUFuZFRleHQgPSBnZXRWZXJ0aWNhbFNwYWNlQmV0d2Vlbk5vZGVBbmRUZXh0KGJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gTm9kZVNwYWNlLmdldFRleHRUb3BTcGFjZShib2FyZCwgZWxlbWVudCkgKyBlbGVtZW50LmhlaWdodCArIG5vZGVBbmRUZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlQW5kVGV4dCArIGVsZW1lbnQuaGVpZ2h0ICsgbm9kZUFuZFRleHQ7XG4gICAgfSxcbiAgICBnZXROb2RlRHluYW1pY1dpZHRoKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBlbGVtZW50Lm1hbnVhbFdpZHRoIHx8IGVsZW1lbnQud2lkdGg7XG4gICAgICAgIGNvbnN0IGltYWdlV2lkdGggPSBNaW5kRWxlbWVudC5oYXNJbWFnZShlbGVtZW50KSA/IGVsZW1lbnQuZGF0YS5pbWFnZT8ud2lkdGggOiAwO1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgod2lkdGgsIGltYWdlV2lkdGgpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogdXNlIGl0IHdoZW4gdXBsb2FkIGltYWdlIGZpcnN0IG9yIHJlc2l6ZSBpbWFnZVxuICAgICAqL1xuICAgIGdldE5vZGVOZXdEeW5hbWljV2lkdGgoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCwgaW1hZ2VXaWR0aDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gZWxlbWVudC5tYW51YWxXaWR0aCB8fCBlbGVtZW50LndpZHRoO1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgod2lkdGgsIGltYWdlV2lkdGgpO1xuICAgIH0sXG4gICAgZ2V0Tm9kZVJlc2l6YWJsZU1pbldpZHRoKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbWluVG9waWNXaWR0aCA9IE5vZGVTcGFjZS5nZXROb2RlVG9waWNNaW5XaWR0aChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5oYXNJbWFnZShlbGVtZW50KSAmJiBlbGVtZW50LmRhdGEuaW1hZ2Uud2lkdGggPiBtaW5Ub3BpY1dpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5kYXRhLmltYWdlLndpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG1pblRvcGljV2lkdGg7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGdldE5vZGVUb3BpY01pbldpZHRoKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdEZvbnRTaXplID0gZ2V0RGVmYXVsdE1pbmRFbGVtZW50Rm9udFNpemUoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBnZXRGaXJzdFRleHRFZGl0b3IoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG1hcmtzID0gUGxhaXRNYXJrRWRpdG9yLmdldE1hcmtzKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGZvbnRTaXplID0gKG1hcmtzW01hcmtUeXBlcy5mb250U2l6ZV0gYXMgbnVtYmVyKSB8fCBkZWZhdWx0Rm9udFNpemU7XG4gICAgICAgIHJldHVybiBmb250U2l6ZTtcbiAgICB9LFxuICAgIGdldFRleHRMZWZ0U3BhY2UoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBub2RlQW5kVGV4dCA9IGdldEhvcml6b250YWxTcGFjZUJldHdlZW5Ob2RlQW5kVGV4dChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5oYXNFbW9qaXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOb2RlU3BhY2UuZ2V0RW1vamlMZWZ0U3BhY2UoYm9hcmQsIGVsZW1lbnQpICsgZ2V0RW1vamlzV2lkdGhIZWlnaHQoYm9hcmQsIGVsZW1lbnQpLndpZHRoICsgZ2V0U3BhY2VFbW9qaUFuZFRleHQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZUFuZFRleHQ7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGdldFRleHRUb3BTcGFjZShib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGVBbmRUZXh0ID0gZ2V0VmVydGljYWxTcGFjZUJldHdlZW5Ob2RlQW5kVGV4dChib2FyZCwgZWxlbWVudCk7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5oYXNJbWFnZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIE5vZGVTcGFjZS5nZXRJbWFnZVRvcFNwYWNlKGJvYXJkLCBlbGVtZW50KSArIGVsZW1lbnQuZGF0YS5pbWFnZS5oZWlnaHQgKyBOb2RlRGVmYXVsdFNwYWNlLnZlcnRpY2FsLmltYWdlQW5kVGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlQW5kVGV4dDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0SW1hZ2VUb3BTcGFjZShib2FyZDogUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gZ2V0U3Ryb2tlV2lkdGhCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gc3Ryb2tlV2lkdGggKyBOb2RlRGVmYXVsdFNwYWNlLnZlcnRpY2FsLm5vZGVBbmRJbWFnZTtcbiAgICB9LFxuICAgIGdldEVtb2ppTGVmdFNwYWNlKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPikge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gYm9hcmQuZ2V0UGx1Z2luT3B0aW9uczxXaXRoTWluZE9wdGlvbnM+KFdpdGhNaW5kUGx1Z2luS2V5KTtcbiAgICAgICAgY29uc3Qgbm9kZUFuZFRleHQgPSBnZXRIb3Jpem9udGFsU3BhY2VCZXR3ZWVuTm9kZUFuZFRleHQoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gbm9kZUFuZFRleHQgLSBvcHRpb25zLmVtb2ppUGFkZGluZztcbiAgICB9LFxuICAgIGdldEVtb2ppVG9wU3BhY2UoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICBjb25zdCBub2RlQW5kVGV4dCA9IGdldFZlcnRpY2FsU3BhY2VCZXR3ZWVuTm9kZUFuZFRleHQoYm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gbm9kZUFuZFRleHQ7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvbnRTaXplQnlTbGF0ZUVsZW1lbnQgPSAodGV4dDogc3RyaW5nIHwgRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRGb250U2l6ZSA9IERFRkFVTFRfRk9OVF9TSVpFO1xuICAgIGlmICh0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRGb250U2l6ZTtcbiAgICB9XG4gICAgY29uc3QgbWFya3MgPSBQbGFpdE1hcmtFZGl0b3IuZ2V0TWFya3NCeUVsZW1lbnQodGV4dCk7XG4gICAgY29uc3QgZm9udFNpemUgPSAobWFya3NbTWFya1R5cGVzLmZvbnRTaXplXSBhcyBudW1iZXIpIHx8IGRlZmF1bHRGb250U2l6ZTtcbiAgICByZXR1cm4gZm9udFNpemU7XG59O1xuIl19
@@ -1,13 +1,11 @@
1
- import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, PlaitElement, PlaitNode, Path, isNullOrUndefined, PlaitBoard, getSelectedElements, idCreator, Transforms, clearSelectedElement, addSelectedElement, distanceBetweenPointAndRectangle, RectangleClient, depthFirstRecursion, getIsRecursionFunc, drawRoundRectangle, drawLinearPath, drawBezierPath, createG, createForeignObject, updateForeignObject, getRectangleByElements, setStrokeLinecap, ACTIVE_STROKE_WIDTH, NODE_TO_PARENT, removeSelectedElement, PlaitHistoryBoard, createText, PlaitPointerType, NODE_TO_INDEX, isMainPointer, toViewBoxPoint, toHostPoint, getHitElementByPoint, distanceBetweenPointAndPoint, CoreTransforms, BOARD_TO_HOST, BoardTransforms, throttleRAF, isContextmenu, temporaryDisableSelection, hotkeys, createClipboardContext, WritableClipboardType, ResizeCursorClass, Point, WritableClipboardOperationType, addClipboardContext, PlaitPluginKey } from '@plait/core';
1
+ import { DefaultThemeColor, ColorfulThemeColor, SoftThemeColor, RetroThemeColor, DarkThemeColor, StarryThemeColor, PlaitElement, PlaitNode, Path, isNullOrUndefined, PlaitBoard, getSelectedElements, idCreator, Transforms, clearSelectedElement, addSelectedElement, distanceBetweenPointAndRectangle, RectangleClient, depthFirstRecursion, getIsRecursionFunc, drawRoundRectangle, drawLinearPath, drawBezierPath, createG, createForeignObject, updateForeignObject, getRectangleByElements, setStrokeLinecap, ACTIVE_STROKE_WIDTH, NODE_TO_PARENT, removeSelectedElement, PlaitHistoryBoard, createText, PlaitPointerType, NODE_TO_INDEX, isMainPointer, toViewBoxPoint, toHostPoint, getHitElementByPoint, distanceBetweenPointAndPoint, CoreTransforms, BOARD_TO_HOST, BoardTransforms, throttleRAF, isContextmenu, temporaryDisableSelection, hotkeys, createClipboardContext, WritableClipboardType, ResizeCursorClass, Point, WritableClipboardOperationType, addClipboardContext } from '@plait/core';
2
2
  import { MindLayoutType, AbstractNode, isIndentedLayout, isHorizontalLayout, isHorizontalLogicLayout, ConnectingPosition, getNonAbstractChildren, isStandardLayout, isLeftLayout, isRightLayout, isVerticalLogicLayout, isTopLayout, isBottomLayout, getCorrectStartEnd, getAbstractLayout, GlobalLayout } from '@plait/layouts';
3
- import { ExitOrigin, TEXT_DEFAULT_HEIGHT, buildText, PlaitMarkEditor, MarkTypes, DEFAULT_FONT_SIZE, getTextSize, TextManage } from '@plait/text';
4
- import { getFirstTextManage, getFirstTextEditor, RESIZE_HANDLE_DIAMETER, getRectangleResizeHandleRefs, addElementOfFocusedImage, ImageGenerator, removeElementOfFocusedImage, Generator, PropertyTransforms, CommonElementFlavour, WithTextPluginKey, isDrawingMode, isDndMode, setCreationMode, BoardCreationMode, isExpandHotkey, isTabHotkey, isEnterHotkey, isVirtualKey, isDelete, isSpaceHotkey, getElementOfFocusedImage, acceptImageTypes, buildImage, withResize, getElementsText } from '@plait/common';
3
+ import { getFirstTextManage, buildText, getFirstTextEditor, RESIZE_HANDLE_DIAMETER, getRectangleResizeHandleRefs, addElementOfFocusedImage, ImageGenerator, removeElementOfFocusedImage, Generator, PropertyTransforms, CommonElementFlavour, WithTextPluginKey, TextManage, isDrawingMode, isDndMode, setCreationMode, BoardCreationMode, isExpandHotkey, isTabHotkey, isEnterHotkey, isVirtualKey, isDelete, isSpaceHotkey, getElementOfFocusedImage, acceptImageTypes, buildImage, withResize, measureElement, getElementsText } from '@plait/common';
4
+ import { TEXT_DEFAULT_HEIGHT, PlaitMarkEditor, MarkTypes, DEFAULT_FONT_SIZE } from '@plait/text-plugins';
5
5
  import { Node as Node$1, Path as Path$1 } from 'slate';
6
6
  import { pointsOnBezierCurves } from 'points-on-curve';
7
7
  import { fromEvent } from 'rxjs';
8
8
  import { take, filter } from 'rxjs/operators';
9
- import * as i0 from '@angular/core';
10
- import { NgZone, Directive, Input, HostListener } from '@angular/core';
11
9
 
12
10
  const ELEMENT_TO_NODE = new WeakMap();
13
11
 
@@ -480,10 +478,7 @@ const getShapeByElement = (board, element) => {
480
478
 
481
479
  function editTopic(element) {
482
480
  const textManage = getFirstTextManage(element);
483
- textManage?.edit((origin) => {
484
- if (origin === ExitOrigin.default) {
485
- }
486
- });
481
+ textManage?.edit(() => { });
487
482
  }
488
483
  const getSelectedMindElements = (board, elements) => {
489
484
  const selectedElements = elements?.length ? elements : getSelectedElements(board);
@@ -1067,13 +1062,6 @@ const adjustNodeToRoot = (board, node) => {
1067
1062
  delete newElement?.shape;
1068
1063
  delete newElement?.strokeWidth;
1069
1064
  delete newElement?.isCollapsed;
1070
- const { width, height } = getTextSize(board, newElement.data.topic, TOPIC_DEFAULT_MAX_WORD_COUNT, {
1071
- fontSize: ROOT_TOPIC_FONT_SIZE,
1072
- fontFamily: BRANCH_FONT_FAMILY,
1073
- width: node.manualWidth ? node.manualWidth : undefined
1074
- });
1075
- newElement.width = Math.max(width, ROOT_TOPIC_FONT_SIZE);
1076
- newElement.height = height;
1077
1065
  return {
1078
1066
  ...newElement,
1079
1067
  layout: newElement.layout ?? MindLayoutType.right,
@@ -1086,15 +1074,13 @@ const addImageFocus = (board, element) => {
1086
1074
  addElementOfFocusedImage(board, element);
1087
1075
  const commonElementRef = PlaitElement.getElementRef(element);
1088
1076
  const imageGenerator = commonElementRef.getGenerator(ImageGenerator.key);
1089
- imageGenerator.componentRef.instance.isFocus = true;
1090
- imageGenerator.componentRef.instance.cdr.markForCheck();
1077
+ imageGenerator.setFocus(element, true);
1091
1078
  };
1092
1079
  const removeImageFocus = (board, element) => {
1093
1080
  removeElementOfFocusedImage(board);
1094
1081
  const commonElementRef = PlaitElement.getElementRef(element);
1095
1082
  const imageGenerator = commonElementRef.getGenerator(ImageGenerator.key);
1096
- imageGenerator.componentRef.instance.isFocus = false;
1097
- imageGenerator.componentRef.instance.cdr.markForCheck();
1083
+ imageGenerator.setFocus(element, false);
1098
1084
  };
1099
1085
 
1100
1086
  /**
@@ -1598,44 +1584,33 @@ function drawLink(board, parentNode, node, isHorizontal, needDrawUnderline, defa
1598
1584
  : drawLogicLink(board, parentNode, node, isHorizontal, defaultStroke, defaultStrokeWidth);
1599
1585
  }
1600
1586
 
1587
+ const FOREIGN_OBJECT_EMOJI_CLASS_NAME = 'foreign-object-emoji';
1601
1588
  class EmojiGenerator {
1602
- constructor(board, viewContainerRef) {
1589
+ constructor(board) {
1603
1590
  this.board = board;
1604
- this.viewContainerRef = viewContainerRef;
1605
- this.componentRef = null;
1591
+ this.emojiComponentRef = null;
1606
1592
  }
1607
- draw(emoji, element) {
1593
+ draw(container, emoji, element) {
1608
1594
  this.destroy();
1609
- const componentType = this.board.getPluginOptions(WithMindPluginKey).emojiComponentType;
1610
- if (!componentType) {
1611
- throw new Error('can not find emoji component');
1612
- }
1613
- this.componentRef = this.viewContainerRef.createComponent(componentType);
1614
- this.componentRef.instance.emojiItem = emoji;
1615
- this.componentRef.instance.board = this.board;
1616
- this.componentRef.instance.element = element;
1617
- this.componentRef.instance.fontSize = getEmojiFontSize(element);
1618
- }
1619
- get nativeElement() {
1620
- if (this.componentRef) {
1621
- return this.componentRef.instance.nativeElement;
1622
- }
1623
- else {
1624
- return null;
1625
- }
1595
+ const props = {
1596
+ board: this.board,
1597
+ emojiItem: emoji,
1598
+ element,
1599
+ fontSize: getEmojiFontSize(element)
1600
+ };
1601
+ this.emojiComponentRef = this.board.renderEmoji(container, props);
1626
1602
  }
1627
1603
  destroy() {
1628
- if (this.componentRef) {
1629
- this.componentRef.destroy();
1630
- this.componentRef = null;
1604
+ if (this.emojiComponentRef) {
1605
+ this.emojiComponentRef.destroy();
1606
+ this.emojiComponentRef = null;
1631
1607
  }
1632
1608
  }
1633
1609
  }
1634
1610
  class NodeEmojisGenerator {
1635
1611
  static { this.key = 'node-emojis-generator'; }
1636
- constructor(board, viewContainerRef) {
1612
+ constructor(board) {
1637
1613
  this.board = board;
1638
- this.viewContainerRef = viewContainerRef;
1639
1614
  this.emojiGenerators = [];
1640
1615
  }
1641
1616
  drawEmojis(element) {
@@ -1645,18 +1620,16 @@ class NodeEmojisGenerator {
1645
1620
  this.g.classList.add('emojis');
1646
1621
  const foreignRectangle = getEmojiForeignRectangle(this.board, element);
1647
1622
  const foreignObject = createForeignObject(foreignRectangle.x, foreignRectangle.y, foreignRectangle.width, foreignRectangle.height);
1623
+ foreignObject.classList.add(FOREIGN_OBJECT_EMOJI_CLASS_NAME);
1648
1624
  this.g.append(foreignObject);
1649
1625
  const container = document.createElement('div');
1650
1626
  container.classList.add('node-emojis-container');
1651
1627
  foreignObject.append(container);
1652
1628
  this.emojiGenerators = element.data.emojis.map(emojiItem => {
1653
- const drawer = new EmojiGenerator(this.board, this.viewContainerRef);
1654
- drawer.draw(emojiItem, element);
1629
+ const drawer = new EmojiGenerator(this.board);
1630
+ drawer.draw(container, emojiItem, element);
1655
1631
  return drawer;
1656
1632
  });
1657
- this.emojiGenerators.forEach(drawer => {
1658
- container.append(drawer.nativeElement);
1659
- });
1660
1633
  return this.g;
1661
1634
  }
1662
1635
  return undefined;
@@ -2519,9 +2492,8 @@ const insertAbstractNode = (board, path, start, end) => {
2519
2492
 
2520
2493
  const normalizeWidthAndHeight = (board, element, width, height) => {
2521
2494
  const minWidth = NodeSpace.getNodeTopicMinWidth(board, element);
2522
- const newWidth = width < minWidth * board.viewport.zoom ? minWidth : width / board.viewport.zoom;
2523
- const newHeight = height / board.viewport.zoom;
2524
- return { width: Math.ceil(newWidth), height: newHeight };
2495
+ const newWidth = width < minWidth ? minWidth : width;
2496
+ return { width: Math.ceil(newWidth), height };
2525
2497
  };
2526
2498
  const setTopic = (board, element, topic, width, height) => {
2527
2499
  const newElement = {
@@ -2950,7 +2922,7 @@ class MindNodeComponent extends CommonElementFlavour {
2950
2922
  }
2951
2923
  initializeGenerator() {
2952
2924
  this.nodeShapeGenerator = new NodeShapeGenerator(this.board);
2953
- this.nodeEmojisGenerator = new NodeEmojisGenerator(this.board, PlaitBoard.getViewContainerRef(this.board));
2925
+ this.nodeEmojisGenerator = new NodeEmojisGenerator(this.board);
2954
2926
  this.activeGenerator = new NodeActiveGenerator(this.board);
2955
2927
  this.nodePlusGenerator = new NodePlusGenerator(this.board);
2956
2928
  this.collapseGenerator = new CollapseGenerator(this.board);
@@ -2963,22 +2935,21 @@ class MindNodeComponent extends CommonElementFlavour {
2963
2935
  }
2964
2936
  });
2965
2937
  const plugins = (this.board.getPluginOptions(WithTextPluginKey) || {}).textPlugins;
2966
- const textManage = new TextManage(this.board, PlaitBoard.getViewContainerRef(this.board), {
2938
+ const textManage = new TextManage(this.board, {
2967
2939
  getRectangle: () => {
2968
2940
  const rect = getTopicRectangleByNode(this.board, this.node);
2969
2941
  return rect;
2970
2942
  },
2971
- onValueChangeHandle: (textManageRef) => {
2972
- const width = textManageRef.width;
2973
- const height = textManageRef.height;
2974
- if (textManageRef.newValue) {
2975
- MindTransforms.setTopic(this.board, this.element, textManageRef.newValue, width, height);
2943
+ onChange: (data) => {
2944
+ const width = data.width;
2945
+ const height = data.height;
2946
+ if (data.newText) {
2947
+ MindTransforms.setTopic(this.board, this.element, data.newText, width, height);
2976
2948
  }
2977
2949
  else {
2978
2950
  MindTransforms.setTopicSize(this.board, this.element, width, height);
2979
2951
  }
2980
2952
  },
2981
- textPlugins: plugins,
2982
2953
  getMaxWidth: () => {
2983
2954
  if (this.element.manualWidth) {
2984
2955
  return NodeSpace.getNodeDynamicWidth(this.board, this.element);
@@ -2986,7 +2957,8 @@ class MindNodeComponent extends CommonElementFlavour {
2986
2957
  else {
2987
2958
  return Math.max(NodeSpace.getNodeDynamicWidth(this.board, this.element), NodeTopicThreshold.defaultTextMaxWidth);
2988
2959
  }
2989
- }
2960
+ },
2961
+ textPlugins: plugins || []
2990
2962
  });
2991
2963
  this.initializeTextManages([textManage]);
2992
2964
  this.getRef().addGenerator(NodeActiveGenerator.key, this.activeGenerator);
@@ -3007,7 +2979,7 @@ class MindNodeComponent extends CommonElementFlavour {
3007
2979
  });
3008
2980
  this.drawEmojis();
3009
2981
  this.drawExtend();
3010
- this.imageGenerator.processDrawing(this.element, this.getElementG(), PlaitBoard.getViewContainerRef(this.board));
2982
+ this.imageGenerator.processDrawing(this.element, this.getElementG());
3011
2983
  if (PlaitMind.isMind(this.context.parent)) {
3012
2984
  this.getElementG().classList.add('branch');
3013
2985
  }
@@ -3027,7 +2999,7 @@ class MindNodeComponent extends CommonElementFlavour {
3027
2999
  this.drawEmojis();
3028
3000
  this.drawExtend();
3029
3001
  if (!MindElement.hasImage(previous.element) && MindElement.hasImage(this.element)) {
3030
- this.imageGenerator.processDrawing(this.element, this.getElementG(), PlaitBoard.getViewContainerRef(this.board));
3002
+ this.imageGenerator.processDrawing(this.element, this.getElementG());
3031
3003
  }
3032
3004
  if (MindElement.hasImage(previous.element) && MindElement.hasImage(this.element)) {
3033
3005
  this.imageGenerator.updateImage(this.getElementG(), previous.element, value.element);
@@ -3446,16 +3418,12 @@ const withCreateMind = (board) => {
3446
3418
  const nodeG = drawRoundRectangleByElement(board, nodeRectangle, emptyMind);
3447
3419
  const topicRectangle = getTopicRectangleByElement(newBoard, nodeRectangle, emptyMind);
3448
3420
  if (!fakeCreateNodeRef) {
3449
- const textManage = new TextManage(board, PlaitBoard.getComponent(board).viewContainerRef, {
3421
+ const textManage = new TextManage(board, {
3450
3422
  getRectangle: () => {
3451
3423
  return topicRectangle;
3452
3424
  }
3453
3425
  });
3454
- PlaitBoard.getComponent(board)
3455
- .viewContainerRef.injector.get(NgZone)
3456
- .run(() => {
3457
- textManage.draw(emptyMind.data.topic);
3458
- });
3426
+ textManage.draw(emptyMind.data.topic);
3459
3427
  fakeCreateNodeRef = {
3460
3428
  g: createG(),
3461
3429
  nodeG,
@@ -3876,12 +3844,8 @@ const insertClipboardData = (board, elements, targetPoint, operationType) => {
3876
3844
  if (hasTargetParent && operationType !== WritableClipboardOperationType.duplicate) {
3877
3845
  if (item.isRoot) {
3878
3846
  newElement = adjustRootToNode(board, newElement);
3879
- const styles = PlaitMind.isMind(targetParent) ? { fontFamily: BRANCH_FONT_FAMILY } : { fontFamily: DEFAULT_FONT_FAMILY };
3880
- const { width, height } = getTextSize(board, newElement.data.topic, TOPIC_DEFAULT_MAX_WORD_COUNT, {
3881
- ...styles,
3882
- width: newElement.manualWidth ? newElement.manualWidth : undefined
3883
- });
3884
- newElement.width = Math.max(width, ROOT_TOPIC_FONT_SIZE);
3847
+ const { width, height } = getTopicSizeByElement(newElement, targetParent);
3848
+ newElement.width = width;
3885
3849
  newElement.height = height;
3886
3850
  }
3887
3851
  // handle abstract start and end
@@ -3899,6 +3863,9 @@ const insertClipboardData = (board, elements, targetPoint, operationType) => {
3899
3863
  }
3900
3864
  if (!item.isRoot) {
3901
3865
  newElement = adjustNodeToRoot(board, newElement);
3866
+ const { width, height } = getTopicSizeByElement(newElement);
3867
+ newElement.width = width;
3868
+ newElement.height = height;
3902
3869
  }
3903
3870
  path = [board.children.length];
3904
3871
  }
@@ -3909,12 +3876,27 @@ const insertClipboardData = (board, elements, targetPoint, operationType) => {
3909
3876
  Transforms.addSelectionWithTemporaryElements(board, newELements);
3910
3877
  };
3911
3878
  const insertClipboardText = (board, targetParent, text) => {
3912
- const styles = PlaitMind.isMind(targetParent) ? { fontFamily: BRANCH_FONT_FAMILY } : { fontFamily: DEFAULT_FONT_FAMILY };
3913
- const { width, height } = getTextSize(board, text, TOPIC_DEFAULT_MAX_WORD_COUNT, styles);
3879
+ const { width, height } = getTopicSize(false, PlaitMind.isMind(targetParent), buildText(text));
3914
3880
  const newElement = createMindElement(text, Math.max(width, getFontSizeBySlateElement(text)), height, {});
3915
3881
  Transforms.insertNode(board, newElement, findNewChildNodePath(board, targetParent));
3916
3882
  Transforms.addSelectionWithTemporaryElements(board, [newElement]);
3917
3883
  };
3884
+ const getTopicSizeByElement = (element, parentElement) => {
3885
+ return getTopicSize(PlaitMind.isMind(element), (parentElement && PlaitMind.isMind(parentElement)) || false, element.data.topic, element.manualWidth);
3886
+ };
3887
+ const getTopicSize = (isRoot, isBranch, topic, manualWidth) => {
3888
+ let fontFamily = DEFAULT_FONT_FAMILY;
3889
+ let fontSize = TOPIC_FONT_SIZE;
3890
+ if (isRoot) {
3891
+ fontFamily = BRANCH_FONT_FAMILY;
3892
+ fontSize = ROOT_TOPIC_FONT_SIZE;
3893
+ }
3894
+ else if (isBranch) {
3895
+ fontFamily = BRANCH_FONT_FAMILY;
3896
+ }
3897
+ const maxWidth = fontSize * TOPIC_DEFAULT_MAX_WORD_COUNT;
3898
+ return measureElement(topic, { fontSize, fontFamily }, manualWidth ? manualWidth : maxWidth);
3899
+ };
3918
3900
 
3919
3901
  const withMindFragment = (baseBoard) => {
3920
3902
  const board = baseBoard;
@@ -4011,6 +3993,14 @@ const getNextSelectedElement = (board, firstLevelElements) => {
4011
3993
  return activeElement;
4012
3994
  };
4013
3995
 
3996
+ const withEmoji = (board) => {
3997
+ const newBoard = board;
3998
+ newBoard.renderEmoji = (container, props) => {
3999
+ throw new Error('No implementation for renderEmoji method.');
4000
+ };
4001
+ return newBoard;
4002
+ };
4003
+
4014
4004
  const withMind = (baseBoard) => {
4015
4005
  const board = baseBoard;
4016
4006
  const { drawElement, dblClick, isRectangleHit, isHit, getRectangle, isMovable, isRecursion, isAlign, isImageBindingAllowed, canAddToGroup, canSetZIndex, isExpanded } = board;
@@ -4118,51 +4108,29 @@ const withMind = (baseBoard) => {
4118
4108
  }
4119
4109
  dblClick(event);
4120
4110
  };
4121
- return withNodeResize(withNodeImageResize(withNodeImage(withNodeHoverHitTest(withMindFragment(withMindHotkey(withMindExtend(withCreateMind(withAbstract(withNodeDnd(board))))))))));
4111
+ return withEmoji(withNodeResize(withNodeImageResize(withNodeImage(withNodeHoverHitTest(withMindFragment(withMindHotkey(withMindExtend(withCreateMind(withAbstract(withNodeDnd(board)))))))))));
4122
4112
  };
4123
4113
 
4124
4114
  class MindEmojiBaseComponent {
4125
- get nativeElement() {
4126
- return this.elementRef.nativeElement;
4127
- }
4128
- handlePointerDown() {
4129
- const currentOptions = this.board.getPluginOptions(PlaitPluginKey.withSelection);
4130
- this.board.setPluginOptions(PlaitPluginKey.withSelection, {
4131
- isDisabledSelect: true
4132
- });
4133
- setTimeout(() => {
4134
- this.board.setPluginOptions(PlaitPluginKey.withSelection, { ...currentOptions });
4135
- }, 0);
4136
- }
4137
- constructor(elementRef) {
4138
- this.elementRef = elementRef;
4115
+ constructor() {
4139
4116
  this.fontSize = 14;
4140
4117
  }
4141
- ngOnInit() {
4142
- this.elementRef.nativeElement.style.fontSize = `${this.fontSize}px`;
4118
+ // TODO
4119
+ // @HostListener('pointerdown')
4120
+ // handlePointerDown() {
4121
+ // const currentOptions = (this.board as PlaitOptionsBoard).getPluginOptions(PlaitPluginKey.withSelection);
4122
+ // (this.board as PlaitOptionsBoard).setPluginOptions<WithPluginOptions>(PlaitPluginKey.withSelection, {
4123
+ // isDisabledSelect: true
4124
+ // });
4125
+ // setTimeout(() => {
4126
+ // (this.board as PlaitOptionsBoard).setPluginOptions<WithPluginOptions>(PlaitPluginKey.withSelection, { ...currentOptions });
4127
+ // }, 0);
4128
+ // }
4129
+ initialize() {
4130
+ this.nativeElement().style.fontSize = `${this.fontSize}px`;
4131
+ this.nativeElement().classList.add('mind-node-emoji');
4143
4132
  }
4144
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MindEmojiBaseComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
4145
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: MindEmojiBaseComponent, inputs: { fontSize: "fontSize", emojiItem: "emojiItem", board: "board", element: "element" }, host: { listeners: { "pointerdown": "handlePointerDown()" }, classAttribute: "mind-node-emoji" }, ngImport: i0 }); }
4146
4133
  }
4147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MindEmojiBaseComponent, decorators: [{
4148
- type: Directive,
4149
- args: [{
4150
- host: {
4151
- class: 'mind-node-emoji'
4152
- }
4153
- }]
4154
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { fontSize: [{
4155
- type: Input
4156
- }], emojiItem: [{
4157
- type: Input
4158
- }], board: [{
4159
- type: Input
4160
- }], element: [{
4161
- type: Input
4162
- }], handlePointerDown: [{
4163
- type: HostListener,
4164
- args: ['pointerdown']
4165
- }] } });
4166
4134
 
4167
4135
  /*
4168
4136
  * Public API Surface of mind
@@ -4172,5 +4140,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
4172
4140
  * Generated bundle index. Do not edit.
4173
4141
  */
4174
4142
 
4175
- export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BRANCH_WIDTH, BranchShape, DEFAULT_FONT_FAMILY, DEFAULT_MIND_IMAGE_WIDTH, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, IS_DRAGGING, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, NodeSpace, NodeTopicThreshold, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, ROOT_TOPIC_WIDTH, STROKE_WIDTH, TOPIC_COLOR, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, WithMindPluginKey, addActiveOnDragOrigin, addImageFocus, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, findLastChild, findLocationLeftIndex, findNewChildNodePath, findNewSiblingNodePath, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getDefaultMindElementFontSize, getEmojiFontSize, getEmojiForeignRectangle, getEmojiRectangle, getEmojisWidthHeight, getFillByElement, getFirstLevelElement, getFontSizeBySlateElement, getHitAbstractHandle, getHitImageResizeHandleDirection, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutOptions, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNewNodeHeight, getNextBranchColor, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getSelectedMindElements, getShapeByElement, getStrokeByMindElement, getStrokeWidthByElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDragging, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, removeActiveOnDragOrigin, removeImageFocus, separateChildren, setIsDragging, withMind, withMindExtend };
4143
+ export { ABSTRACT_HANDLE_COLOR, ABSTRACT_HANDLE_LENGTH, ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET, AbstractHandlePosition, AbstractResizeState, BASE, BRANCH_FONT_FAMILY, BRANCH_WIDTH, BranchShape, DEFAULT_FONT_FAMILY, DEFAULT_MIND_IMAGE_WIDTH, DefaultAbstractNodeStyle, DefaultNodeStyle, ELEMENT_TO_NODE, EXTEND_DIAMETER, EXTEND_OFFSET, GRAY_COLOR, INHERIT_ATTRIBUTE_KEYS, IS_DRAGGING, LayoutDirection, LayoutDirectionsMap, MindColorfulThemeColor, MindDarkThemeColor, MindDefaultThemeColor, MindElement, MindElementShape, MindEmojiBaseComponent, MindNode, MindNodeComponent, MindPointerType, MindQueries, MindRetroThemeColor, MindSoftThemeColor, MindStarryThemeColor, MindThemeColor, MindThemeColors, MindTransforms, NodeSpace, NodeTopicThreshold, PRIMARY_COLOR, PlaitMind, PlaitMindComponent, QUICK_INSERT_CIRCLE_COLOR, QUICK_INSERT_CIRCLE_OFFSET, QUICK_INSERT_INNER_CROSS_COLOR, ROOT_TOPIC_FONT_SIZE, ROOT_TOPIC_HEIGHT, ROOT_TOPIC_WIDTH, STROKE_WIDTH, TOPIC_COLOR, TOPIC_DEFAULT_MAX_WORD_COUNT, TOPIC_FONT_SIZE, WithMindPluginKey, addActiveOnDragOrigin, addImageFocus, adjustAbstractToNode, adjustNodeToRoot, adjustRootToNode, canSetAbstract, copyNewNode, correctLayoutByDirection, createDefaultMind, createEmptyMind, createMindElement, deleteElementHandleAbstract, deleteElementsHandleRightNodeCount, detectDropTarget, directionCorrector, directionDetector, divideElementByParent, drawFakeDragNode, drawFakeDropNode, editTopic, findLastChild, findLocationLeftIndex, findNewChildNodePath, findNewSiblingNodePath, getAbstractBranchColor, getAbstractBranchWidth, getAbstractHandleRectangle, getAllowedDirection, getAvailableSubLayoutsByLayoutDirections, getBehindAbstracts, getBranchColorByMindElement, getBranchDirectionsByLayouts, getBranchShapeByMindElement, getBranchWidthByMindElement, getChildrenCount, getCorrespondingAbstract, getDefaultBranchColor, getDefaultBranchColorByIndex, getDefaultLayout, getDefaultMindElementFontSize, getEmojiFontSize, getEmojiForeignRectangle, getEmojiRectangle, getEmojisWidthHeight, getFillByElement, getFirstLevelElement, getFontSizeBySlateElement, getHitAbstractHandle, getHitImageResizeHandleDirection, getImageForeignRectangle, getInCorrectLayoutDirection, getLayoutDirection$1 as getLayoutDirection, getLayoutOptions, getLayoutReverseDirection, getLocationScope, getMindThemeColor, getNewNodeHeight, getNextBranchColor, getOverallAbstracts, getPathByDropTarget, getRectangleByElement, getRectangleByNode, getRectangleByResizingLocation, getRelativeStartEndByAbstractRef, getRootLayout, getSelectedMindElements, getShapeByElement, getStrokeByMindElement, getStrokeWidthByElement, getTopicRectangleByElement, getTopicRectangleByNode, getValidAbstractRefs, handleTouchedAbstract, hasPreviousOrNextOfDropPath, insertElementHandleAbstract, insertElementHandleRightNodeCount, insertMindElement, isChildElement, isChildOfAbstract, isChildRight, isChildUp, isCorrectLayout, isDragging, isDropStandardRight, isHitEmojis, isHitImage, isHitMindElement, isInRightBranchOfStandardLayout, isMixedLayout, isSetAbstract, isValidTarget, removeActiveOnDragOrigin, removeImageFocus, separateChildren, setIsDragging, withEmoji, withMind, withMindExtend };
4176
4144
  //# sourceMappingURL=plait-mind.mjs.map