@plait/common 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 (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 +28 -0
  13. package/esm2022/image/image.generator.mjs +99 -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/public-api.mjs +5 -4
  18. package/esm2022/text/index.mjs +5 -0
  19. package/esm2022/text/text-manage.mjs +138 -0
  20. package/esm2022/text/text-measure.mjs +61 -0
  21. package/esm2022/text/types.mjs +7 -0
  22. package/esm2022/text/with-text.mjs +8 -0
  23. package/esm2022/transforms/index.mjs +1 -2
  24. package/esm2022/utils/image.mjs +3 -3
  25. package/esm2022/utils/text.mjs +22 -20
  26. package/fesm2022/plait-common.mjs +341 -214
  27. package/fesm2022/plait-common.mjs.map +1 -1
  28. package/generators/index.d.ts +1 -1
  29. package/image/image-base.component.d.ts +17 -0
  30. package/image/image.generator.d.ts +27 -0
  31. package/image/index.d.ts +3 -0
  32. package/image/with-image.d.ts +15 -0
  33. package/package.json +1 -3
  34. package/plugins/index.d.ts +0 -1
  35. package/public-api.d.ts +4 -3
  36. package/text/index.d.ts +4 -0
  37. package/text/text-manage.d.ts +41 -0
  38. package/text/text-measure.d.ts +8 -0
  39. package/text/types.d.ts +24 -0
  40. package/text/with-text.d.ts +25 -0
  41. package/transforms/index.d.ts +0 -1
  42. package/utils/image.d.ts +1 -5
  43. package/utils/text.d.ts +9 -6
  44. package/core/image-base.component.d.ts +0 -29
  45. package/esm2022/core/image-base.component.mjs +0 -95
  46. package/esm2022/generators/image.generator.mjs +0 -59
  47. package/esm2022/plugins/text-options.mjs +0 -2
  48. package/esm2022/transforms/text.mjs +0 -71
  49. package/generators/image.generator.d.ts +0 -24
  50. package/plugins/text-options.d.ts +0 -5
  51. package/transforms/text.d.ts +0 -9
@@ -6,3 +6,4 @@ export declare const DEFAULT_ROUTE_MARGIN = 30;
6
6
  export declare const TRANSPARENT = "transparent";
7
7
  export declare const ROTATE_HANDLE_DISTANCE_TO_ELEMENT = 20;
8
8
  export declare const ROTATE_HANDLE_SIZE = 18;
9
+ export declare const DEFAULT_FONT_FAMILY = "PingFangSC-Regular, \"PingFang SC\"";
@@ -1,6 +1,6 @@
1
1
  import { ElementFlavour, PlaitBoard, PlaitElement } from '@plait/core';
2
- import { TextManage } from '@plait/text';
3
2
  import { PlaitCommonElementRef } from './element-ref';
3
+ import { TextManage } from '../text/text-manage';
4
4
  export declare class CommonElementFlavour<T extends PlaitElement = PlaitElement, K extends PlaitBoard = PlaitBoard, R extends PlaitCommonElementRef = PlaitCommonElementRef> extends ElementFlavour<T, K, R> {
5
5
  private textManages;
6
6
  constructor(elementRef?: PlaitCommonElementRef);
@@ -0,0 +1,4 @@
1
+ export * from './element-flavour';
2
+ export * from './element-ref';
3
+ export * from './group.component';
4
+ export * from './render-component';
@@ -0,0 +1,4 @@
1
+ export interface RenderComponentRef<T> {
2
+ destroy: () => void;
3
+ update: (props: Partial<T>) => void;
4
+ }
@@ -6,4 +6,5 @@ export const DEFAULT_ROUTE_MARGIN = 30;
6
6
  export const TRANSPARENT = 'transparent';
7
7
  export const ROTATE_HANDLE_DISTANCE_TO_ELEMENT = 20;
8
8
  export const ROTATE_HANDLE_SIZE = 18;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29uc3RhbnRzL2RlZmF1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUN4QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxFQUFFLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJBU0UgPSA0O1xuZXhwb3J0IGNvbnN0IFBSSU1BUllfQ09MT1IgPSAnIzY2OThGRic7XG5leHBvcnQgY29uc3QgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiA9IDk7XG5leHBvcnQgY29uc3QgV2l0aFRleHRQbHVnaW5LZXkgPSAncGxhaXQtdGV4dC1wbHVnaW4ta2V5JztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1JPVVRFX01BUkdJTiA9IDMwO1xuZXhwb3J0IGNvbnN0IFRSQU5TUEFSRU5UID0gJ3RyYW5zcGFyZW50JztcbmV4cG9ydCBjb25zdCBST1RBVEVfSEFORExFX0RJU1RBTkNFX1RPX0VMRU1FTlQgPSAyMDtcbmV4cG9ydCBjb25zdCBST1RBVEVfSEFORExFX1NJWkUgPSAxODtcbiJdfQ==
9
+ export const DEFAULT_FONT_FAMILY = 'PingFangSC-Regular, "PingFang SC"';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29uc3RhbnRzL2RlZmF1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUN4QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxFQUFFLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJBU0UgPSA0O1xuZXhwb3J0IGNvbnN0IFBSSU1BUllfQ09MT1IgPSAnIzY2OThGRic7XG5leHBvcnQgY29uc3QgUkVTSVpFX0hBTkRMRV9ESUFNRVRFUiA9IDk7XG5leHBvcnQgY29uc3QgV2l0aFRleHRQbHVnaW5LZXkgPSAncGxhaXQtdGV4dC1wbHVnaW4ta2V5JztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1JPVVRFX01BUkdJTiA9IDMwO1xuZXhwb3J0IGNvbnN0IFRSQU5TUEFSRU5UID0gJ3RyYW5zcGFyZW50JztcbmV4cG9ydCBjb25zdCBST1RBVEVfSEFORExFX0RJU1RBTkNFX1RPX0VMRU1FTlQgPSAyMDtcbmV4cG9ydCBjb25zdCBST1RBVEVfSEFORExFX1NJWkUgPSAxODtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZPTlRfRkFNSUxZID0gJ1BpbmdGYW5nU0MtUmVndWxhciwgXCJQaW5nRmFuZyBTQ1wiJztcbiJdfQ==
@@ -30,4 +30,4 @@ export class CommonElementFlavour extends ElementFlavour {
30
30
  return this.textManages;
31
31
  }
32
32
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1mbGF2b3VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb3JlL2VsZW1lbnQtZmxhdm91ci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUE0QixNQUFNLGFBQWEsQ0FBQztBQUV2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRELE1BQU0sT0FBTyxvQkFJWCxTQUFRLGNBQXVCO0lBRzdCLFlBQVksVUFBVSxHQUFHLElBQUkscUJBQXFCLEVBQUU7UUFDaEQsS0FBSyxDQUFDLFVBQWUsQ0FBQyxDQUFDO1FBSG5CLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztJQUl2QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxjQUFjO1FBQ1YsdUJBQXVCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQscUJBQXFCLENBQUMsV0FBeUI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFzQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudEZsYXZvdXIsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFRleHRNYW5hZ2UgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBFTEVNRU5UX1RPX1RFWFRfTUFOQUdFUyB9IGZyb20gJy4uL3V0aWxzL3RleHQnO1xuaW1wb3J0IHsgUGxhaXRDb21tb25FbGVtZW50UmVmIH0gZnJvbSAnLi9lbGVtZW50LXJlZic7XG5cbmV4cG9ydCBjbGFzcyBDb21tb25FbGVtZW50Rmxhdm91cjxcbiAgICBUIGV4dGVuZHMgUGxhaXRFbGVtZW50ID0gUGxhaXRFbGVtZW50LFxuICAgIEsgZXh0ZW5kcyBQbGFpdEJvYXJkID0gUGxhaXRCb2FyZCxcbiAgICBSIGV4dGVuZHMgUGxhaXRDb21tb25FbGVtZW50UmVmID0gUGxhaXRDb21tb25FbGVtZW50UmVmXG4+IGV4dGVuZHMgRWxlbWVudEZsYXZvdXI8VCwgSywgUj4ge1xuICAgIHByaXZhdGUgdGV4dE1hbmFnZXM6IFRleHRNYW5hZ2VbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoZWxlbWVudFJlZiA9IG5ldyBQbGFpdENvbW1vbkVsZW1lbnRSZWYoKSkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmIGFzIFIpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVXZWFrTWFwKCkge1xuICAgICAgICBFTEVNRU5UX1RPX1RFWFRfTUFOQUdFUy5zZXQodGhpcy5lbGVtZW50LCB0aGlzLnRleHRNYW5hZ2VzKTtcbiAgICB9XG5cbiAgICBkZXN0cm95V2Vha01hcCgpIHtcbiAgICAgICAgRUxFTUVOVF9UT19URVhUX01BTkFHRVMuZGVsZXRlKHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVRleHRNYW5hZ2VzKHRleHRNYW5hZ2VzOiBUZXh0TWFuYWdlW10pIHtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlcyA9IHRleHRNYW5hZ2VzO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVXZWFrTWFwKCk7XG4gICAgfVxuXG4gICAgYWRkVGV4dE1hbmFnZSh0ZXh0TWFuYWdlOiBUZXh0TWFuYWdlKSB7XG4gICAgICAgIHRoaXMudGV4dE1hbmFnZXMucHVzaCh0ZXh0TWFuYWdlKTtcbiAgICB9XG5cbiAgICBkZXN0cm95VGV4dE1hbmFnZXMoKSB7XG4gICAgICAgIHRoaXMuZ2V0VGV4dE1hbmFnZXMoKS5mb3JFYWNoKG1hbmFnZSA9PiB7XG4gICAgICAgICAgICBtYW5hZ2UuZGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlcyA9IFtdO1xuICAgICAgICB0aGlzLmRlc3Ryb3lXZWFrTWFwKCk7XG4gICAgfVxuXG4gICAgZ2V0VGV4dE1hbmFnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRNYW5hZ2VzO1xuICAgIH1cbn1cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1mbGF2b3VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb3JlL2VsZW1lbnQtZmxhdm91ci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUE0QixNQUFNLGFBQWEsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3RELE1BQU0sT0FBTyxvQkFJWCxTQUFRLGNBQXVCO0lBRzdCLFlBQVksVUFBVSxHQUFHLElBQUkscUJBQXFCLEVBQUU7UUFDaEQsS0FBSyxDQUFDLFVBQWUsQ0FBQyxDQUFDO1FBSG5CLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztJQUl2QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxjQUFjO1FBQ1YsdUJBQXVCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQscUJBQXFCLENBQUMsV0FBeUI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFzQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudEZsYXZvdXIsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEVMRU1FTlRfVE9fVEVYVF9NQU5BR0VTIH0gZnJvbSAnLi4vdXRpbHMvdGV4dCc7XG5pbXBvcnQgeyBQbGFpdENvbW1vbkVsZW1lbnRSZWYgfSBmcm9tICcuL2VsZW1lbnQtcmVmJztcbmltcG9ydCB7IFRleHRNYW5hZ2UgfSBmcm9tICcuLi90ZXh0L3RleHQtbWFuYWdlJztcblxuZXhwb3J0IGNsYXNzIENvbW1vbkVsZW1lbnRGbGF2b3VyPFxuICAgIFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEVsZW1lbnQsXG4gICAgSyBleHRlbmRzIFBsYWl0Qm9hcmQgPSBQbGFpdEJvYXJkLFxuICAgIFIgZXh0ZW5kcyBQbGFpdENvbW1vbkVsZW1lbnRSZWYgPSBQbGFpdENvbW1vbkVsZW1lbnRSZWZcbj4gZXh0ZW5kcyBFbGVtZW50Rmxhdm91cjxULCBLLCBSPiB7XG4gICAgcHJpdmF0ZSB0ZXh0TWFuYWdlczogVGV4dE1hbmFnZVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmID0gbmV3IFBsYWl0Q29tbW9uRWxlbWVudFJlZigpKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYgYXMgUik7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVdlYWtNYXAoKSB7XG4gICAgICAgIEVMRU1FTlRfVE9fVEVYVF9NQU5BR0VTLnNldCh0aGlzLmVsZW1lbnQsIHRoaXMudGV4dE1hbmFnZXMpO1xuICAgIH1cblxuICAgIGRlc3Ryb3lXZWFrTWFwKCkge1xuICAgICAgICBFTEVNRU5UX1RPX1RFWFRfTUFOQUdFUy5kZWxldGUodGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplVGV4dE1hbmFnZXModGV4dE1hbmFnZXM6IFRleHRNYW5hZ2VbXSkge1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2VzID0gdGV4dE1hbmFnZXM7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVdlYWtNYXAoKTtcbiAgICB9XG5cbiAgICBhZGRUZXh0TWFuYWdlKHRleHRNYW5hZ2U6IFRleHRNYW5hZ2UpIHtcbiAgICAgICAgdGhpcy50ZXh0TWFuYWdlcy5wdXNoKHRleHRNYW5hZ2UpO1xuICAgIH1cblxuICAgIGRlc3Ryb3lUZXh0TWFuYWdlcygpIHtcbiAgICAgICAgdGhpcy5nZXRUZXh0TWFuYWdlcygpLmZvckVhY2gobWFuYWdlID0+IHtcbiAgICAgICAgICAgIG1hbmFnZS5kZXN0cm95KCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRleHRNYW5hZ2VzID0gW107XG4gICAgICAgIHRoaXMuZGVzdHJveVdlYWtNYXAoKTtcbiAgICB9XG5cbiAgICBnZXRUZXh0TWFuYWdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dE1hbmFnZXM7XG4gICAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { PlaitBoard, PlaitContextService, getElementsInGroup, getRectangleByGroup, isSelectedElementOrGroup, isSelectionMoving } from '@plait/core';
1
+ import { PlaitBoard, getElementsInGroup, getRectangleByGroup, isSelectedElementOrGroup, isSelectionMoving } from '@plait/core';
2
2
  import { GroupGenerator } from '../generators/group.generator';
3
3
  import { ActiveGenerator } from '../generators';
4
4
  import { CommonElementFlavour } from './element-flavour';
@@ -22,7 +22,7 @@ export class GroupComponent extends CommonElementFlavour {
22
22
  initialize() {
23
23
  super.initialize();
24
24
  this.initializeGenerator();
25
- const contextService = PlaitBoard.getViewContainerRef(this.board).injector.get(PlaitContextService);
25
+ const contextService = PlaitBoard.getBoardContext(this.board);
26
26
  this.onStableSubscription = contextService.onStable().subscribe(() => {
27
27
  const elementsInGroup = getElementsInGroup(this.board, this.element, false, true);
28
28
  const isPartialSelectGroup = elementsInGroup.some(item => isSelectedElementOrGroup(this.board, item)) &&
@@ -36,4 +36,4 @@ export class GroupComponent extends CommonElementFlavour {
36
36
  this.onStableSubscription?.unsubscribe();
37
37
  }
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb3JlL2dyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsVUFBVSxFQUNWLG1CQUFtQixFQUduQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHekQsTUFBTSxPQUFPLGNBQWUsU0FBUSxvQkFBNEM7SUFHNUU7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFNRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFhLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDL0QsWUFBWSxFQUFFLENBQUMsT0FBbUIsRUFBRSxFQUFFO2dCQUNsQyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekIsZUFBZSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFVBQVU7UUFDTixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pFLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEYsTUFBTSxvQkFBb0IsR0FDdEIsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3hFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQy9GLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUNaLEtBQXdELEVBQ3hELFFBQTJELElBQzVELENBQUM7SUFFSixPQUFPO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIE9uQ29udGV4dENoYW5nZWQsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdENvbnRleHRTZXJ2aWNlLFxuICAgIFBsYWl0R3JvdXAsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBnZXRFbGVtZW50c0luR3JvdXAsXG4gICAgZ2V0UmVjdGFuZ2xlQnlHcm91cCxcbiAgICBpc1NlbGVjdGVkRWxlbWVudE9yR3JvdXAsXG4gICAgaXNTZWxlY3Rpb25Nb3Zpbmdcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR3JvdXBHZW5lcmF0b3IgfSBmcm9tICcuLi9nZW5lcmF0b3JzL2dyb3VwLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBBY3RpdmVHZW5lcmF0b3IgfSBmcm9tICcuLi9nZW5lcmF0b3JzJztcbmltcG9ydCB7IENvbW1vbkVsZW1lbnRGbGF2b3VyIH0gZnJvbSAnLi9lbGVtZW50LWZsYXZvdXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBHcm91cENvbXBvbmVudCBleHRlbmRzIENvbW1vbkVsZW1lbnRGbGF2b3VyPFBsYWl0R3JvdXAsIFBsYWl0Qm9hcmQ+IGltcGxlbWVudHMgT25Db250ZXh0Q2hhbmdlZDxQbGFpdEdyb3VwLCBQbGFpdEJvYXJkPiB7XG4gICAgb25TdGFibGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBhY3RpdmVHZW5lcmF0b3IhOiBBY3RpdmVHZW5lcmF0b3I8UGxhaXRHcm91cD47XG5cbiAgICBncm91cEdlbmVyYXRvciE6IEdyb3VwR2VuZXJhdG9yO1xuXG4gICAgaW5pdGlhbGl6ZUdlbmVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IgPSBuZXcgQWN0aXZlR2VuZXJhdG9yPFBsYWl0R3JvdXA+KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgIGdldFJlY3RhbmdsZTogKGVsZW1lbnQ6IFBsYWl0R3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlQnlHcm91cCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTdHJva2VXaWR0aDogKCkgPT4gMCxcbiAgICAgICAgICAgIGdldFN0cm9rZU9wYWNpdHk6ICgpID0+IDAsXG4gICAgICAgICAgICBoYXNSZXNpemVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWlzU2VsZWN0aW9uTW92aW5nKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ncm91cEdlbmVyYXRvciA9IG5ldyBHcm91cEdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUdlbmVyYXRvcigpO1xuICAgICAgICBjb25zdCBjb250ZXh0U2VydmljZSA9IFBsYWl0Qm9hcmQuZ2V0Vmlld0NvbnRhaW5lclJlZih0aGlzLmJvYXJkKS5pbmplY3Rvci5nZXQoUGxhaXRDb250ZXh0U2VydmljZSk7XG4gICAgICAgIHRoaXMub25TdGFibGVTdWJzY3JpcHRpb24gPSBjb250ZXh0U2VydmljZS5vblN0YWJsZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50c0luR3JvdXAgPSBnZXRFbGVtZW50c0luR3JvdXAodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBpc1BhcnRpYWxTZWxlY3RHcm91cCA9XG4gICAgICAgICAgICAgICAgZWxlbWVudHNJbkdyb3VwLnNvbWUoaXRlbSA9PiBpc1NlbGVjdGVkRWxlbWVudE9yR3JvdXAodGhpcy5ib2FyZCwgaXRlbSkpICYmXG4gICAgICAgICAgICAgICAgIWVsZW1lbnRzSW5Hcm91cC5ldmVyeShpdGVtID0+IGlzU2VsZWN0ZWRFbGVtZW50T3JHcm91cCh0aGlzLmJvYXJkLCBpdGVtKSk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgdGhpcy5nZXRFbGVtZW50RygpLCBpc1BhcnRpYWxTZWxlY3RHcm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZWQoXG4gICAgICAgIHZhbHVlOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFBsYWl0R3JvdXAsIFBsYWl0Qm9hcmQ+LFxuICAgICAgICBwcmV2aW91czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxQbGFpdEdyb3VwLCBQbGFpdEJvYXJkPlxuICAgICkge31cblxuICAgIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5vblN0YWJsZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9jb3JlL2dyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsVUFBVSxFQUdWLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNwQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUd6RCxNQUFNLE9BQU8sY0FBZSxTQUFRLG9CQUE0QztJQUc1RTtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQU1ELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQWEsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMvRCxZQUFZLEVBQUUsQ0FBQyxPQUFtQixFQUFFLEVBQUU7Z0JBQ2xDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkIsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN6QixlQUFlLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUM7U0FDSixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsVUFBVTtRQUNOLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakUsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsRixNQUFNLG9CQUFvQixHQUN0QixlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDeEUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCLENBQ1osS0FBd0QsRUFDeEQsUUFBMkQsSUFDNUQsQ0FBQztJQUVKLE9BQU87UUFDSCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzdDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgT25Db250ZXh0Q2hhbmdlZCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0R3JvdXAsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBnZXRFbGVtZW50c0luR3JvdXAsXG4gICAgZ2V0UmVjdGFuZ2xlQnlHcm91cCxcbiAgICBpc1NlbGVjdGVkRWxlbWVudE9yR3JvdXAsXG4gICAgaXNTZWxlY3Rpb25Nb3Zpbmdcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgR3JvdXBHZW5lcmF0b3IgfSBmcm9tICcuLi9nZW5lcmF0b3JzL2dyb3VwLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBBY3RpdmVHZW5lcmF0b3IgfSBmcm9tICcuLi9nZW5lcmF0b3JzJztcbmltcG9ydCB7IENvbW1vbkVsZW1lbnRGbGF2b3VyIH0gZnJvbSAnLi9lbGVtZW50LWZsYXZvdXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBHcm91cENvbXBvbmVudCBleHRlbmRzIENvbW1vbkVsZW1lbnRGbGF2b3VyPFBsYWl0R3JvdXAsIFBsYWl0Qm9hcmQ+IGltcGxlbWVudHMgT25Db250ZXh0Q2hhbmdlZDxQbGFpdEdyb3VwLCBQbGFpdEJvYXJkPiB7XG4gICAgb25TdGFibGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBhY3RpdmVHZW5lcmF0b3IhOiBBY3RpdmVHZW5lcmF0b3I8UGxhaXRHcm91cD47XG5cbiAgICBncm91cEdlbmVyYXRvciE6IEdyb3VwR2VuZXJhdG9yO1xuXG4gICAgaW5pdGlhbGl6ZUdlbmVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IgPSBuZXcgQWN0aXZlR2VuZXJhdG9yPFBsYWl0R3JvdXA+KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgIGdldFJlY3RhbmdsZTogKGVsZW1lbnQ6IFBsYWl0R3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlQnlHcm91cCh0aGlzLmJvYXJkLCBlbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTdHJva2VXaWR0aDogKCkgPT4gMCxcbiAgICAgICAgICAgIGdldFN0cm9rZU9wYWNpdHk6ICgpID0+IDAsXG4gICAgICAgICAgICBoYXNSZXNpemVIYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWlzU2VsZWN0aW9uTW92aW5nKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ncm91cEdlbmVyYXRvciA9IG5ldyBHcm91cEdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUdlbmVyYXRvcigpO1xuICAgICAgICBjb25zdCBjb250ZXh0U2VydmljZSA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250ZXh0KHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLm9uU3RhYmxlU3Vic2NyaXB0aW9uID0gY29udGV4dFNlcnZpY2Uub25TdGFibGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNJbkdyb3VwID0gZ2V0RWxlbWVudHNJbkdyb3VwKHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCwgZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgaXNQYXJ0aWFsU2VsZWN0R3JvdXAgPVxuICAgICAgICAgICAgICAgIGVsZW1lbnRzSW5Hcm91cC5zb21lKGl0ZW0gPT4gaXNTZWxlY3RlZEVsZW1lbnRPckdyb3VwKHRoaXMuYm9hcmQsIGl0ZW0pKSAmJlxuICAgICAgICAgICAgICAgICFlbGVtZW50c0luR3JvdXAuZXZlcnkoaXRlbSA9PiBpc1NlbGVjdGVkRWxlbWVudE9yR3JvdXAodGhpcy5ib2FyZCwgaXRlbSkpO1xuICAgICAgICAgICAgdGhpcy5ncm91cEdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIHRoaXMuZ2V0RWxlbWVudEcoKSwgaXNQYXJ0aWFsU2VsZWN0R3JvdXApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKFxuICAgICAgICB2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxQbGFpdEdyb3VwLCBQbGFpdEJvYXJkPixcbiAgICAgICAgcHJldmlvdXM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRHcm91cCwgUGxhaXRCb2FyZD5cbiAgICApIHt9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMub25TdGFibGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ export * from './element-flavour';
2
+ export * from './element-ref';
3
+ export * from './group.component';
4
+ export * from './render-component';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VsZW1lbnQtZmxhdm91cic7XG5leHBvcnQgKiBmcm9tICcuL2VsZW1lbnQtcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVuZGVyLWNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29yZS9yZW5kZXItY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFJlbmRlckNvbXBvbmVudFJlZjxUPiB7XG4gICAgZGVzdHJveTogKCkgPT4gdm9pZDtcbiAgICB1cGRhdGU6IChwcm9wczogUGFydGlhbDxUPikgPT4gdm9pZDtcbn1cbiJdfQ==
@@ -61,4 +61,4 @@ export function hasAfterDraw(value) {
61
61
  }
62
62
  return false;
63
63
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9nZW5lcmF0b3JzL2dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDZixNQUFNLGFBQWEsQ0FBQztBQVNyQixNQUFNLE9BQWdCLFNBQVM7SUFVM0IsWUFBc0IsS0FBUSxFQUFFLE9BQVc7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBRztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQVUsRUFBRSxPQUFvQixFQUFFLElBQVE7UUFDckQsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDSixJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDVCxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNwQixDQUFDO29CQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQzt3QkFDeEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNCLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDWCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDUCxJQUFJLEtBQUssQ0FBQztvQkFDVixJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNyQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDN0UsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUMxQixDQUFDO29CQUNELElBQUksS0FBSyxFQUFFLENBQUM7d0JBQ1IsWUFBWSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNqRSxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLENBQUM7WUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztJQVlELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDdkIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQU1ELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBVTtJQUNuQyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRHcm91cEVsZW1lbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGdldEVsZW1lbnRzSW5Hcm91cCxcbiAgICBnZXRTZWxlY3Rpb25BbmdsZSxcbiAgICBzZXRBbmdsZUZvckdcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUGxhaXRDb21tb25FbGVtZW50UmVmIH0gZnJvbSAnLi4vY29yZS9lbGVtZW50LXJlZic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdG9yRXh0cmFEYXRhIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdG9yT3B0aW9ucyB7XG4gICAgcHJlcGVuZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmF0b3I8XG4gICAgVCBleHRlbmRzIFBsYWl0RWxlbWVudCA9IFBsYWl0RWxlbWVudCxcbiAgICBLIGV4dGVuZHMgR2VuZXJhdG9yRXh0cmFEYXRhID0gR2VuZXJhdG9yRXh0cmFEYXRhLFxuICAgIFYgZXh0ZW5kcyBHZW5lcmF0b3JPcHRpb25zID0gR2VuZXJhdG9yT3B0aW9ucyxcbiAgICBQIGV4dGVuZHMgUGxhaXRCb2FyZCA9IFBsYWl0Qm9hcmRcbj4ge1xuICAgIGc/OiBTVkdHRWxlbWVudDtcblxuICAgIHByb3RlY3RlZCBvcHRpb25zPzogVjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBib2FyZDogUCwgb3B0aW9ucz86IFYpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwcm9jZXNzRHJhd2luZyhlbGVtZW50OiBULCBwYXJlbnRHOiBTVkdHRWxlbWVudCwgZGF0YT86IEspIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuRHJhdyAmJiB0aGlzLmNhbkRyYXcoZWxlbWVudCwgZGF0YSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGcgPSB0aGlzLmRyYXcoZWxlbWVudCwgZGF0YSk7XG4gICAgICAgICAgICBpZiAoZykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmcgJiYgcGFyZW50Ry5jb250YWlucyh0aGlzLmcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZy5yZXBsYWNlV2l0aChnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmcucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucz8ucHJlcGVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Ry5wcmVwZW5kKGcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Ry5hcHBlbmRDaGlsZChnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmcgPSBnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmJvYXJkLmdldFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAocmVjdCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYW5nbGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChQbGFpdEdyb3VwRWxlbWVudC5pc0dyb3VwKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKGdldEVsZW1lbnRzSW5Hcm91cCh0aGlzLmJvYXJkLCBlbGVtZW50LCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IGVsZW1lbnQuYW5nbGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRBbmdsZUZvckcoZywgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KHJlY3QpLCBhbmdsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc0FmdGVyRHJhdyh0aGlzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJEcmF3KGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhYnN0cmFjdCBmdW5jdGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjYW5EcmF3KGVsZW1lbnQ6IFQsIGRhdGE/OiBLKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIGFic3RyYWN0IGZ1bmN0aW9uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGRyYXcoZWxlbWVudDogVCwgZGF0YT86IEspOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmcpIHtcbiAgICAgICAgICAgIHRoaXMuZy5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZnRlckRyYXc8VCBleHRlbmRzIFBsYWl0RWxlbWVudCA9IFBsYWl0RWxlbWVudD4ge1xuICAgIGFmdGVyRHJhdyhlbGVtZW50OiBUKTogdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0FmdGVyRHJhdyh2YWx1ZTogYW55KTogdmFsdWUgaXMgQWZ0ZXJEcmF3IHtcbiAgICBpZiAodmFsdWUuYWZ0ZXJEcmF3KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9nZW5lcmF0b3JzL2dlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDZixNQUFNLGFBQWEsQ0FBQztBQVFyQixNQUFNLE9BQWdCLFNBQVM7SUFVM0IsWUFBc0IsS0FBUSxFQUFFLE9BQVc7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBRztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQVUsRUFBRSxPQUFvQixFQUFFLElBQVE7UUFDckQsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDSixJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDVCxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNwQixDQUFDO29CQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQzt3QkFDeEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNCLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDWCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDUCxJQUFJLEtBQUssQ0FBQztvQkFDVixJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNyQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDN0UsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUMxQixDQUFDO29CQUNELElBQUksS0FBSyxFQUFFLENBQUM7d0JBQ1IsWUFBWSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNqRSxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLENBQUM7WUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztJQVlELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDdkIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQU1ELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBVTtJQUNuQyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXRHcm91cEVsZW1lbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGdldEVsZW1lbnRzSW5Hcm91cCxcbiAgICBnZXRTZWxlY3Rpb25BbmdsZSxcbiAgICBzZXRBbmdsZUZvckdcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRvckV4dHJhRGF0YSB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRvck9wdGlvbnMge1xuICAgIHByZXBlbmQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2VuZXJhdG9yPFxuICAgIFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEVsZW1lbnQsXG4gICAgSyBleHRlbmRzIEdlbmVyYXRvckV4dHJhRGF0YSA9IEdlbmVyYXRvckV4dHJhRGF0YSxcbiAgICBWIGV4dGVuZHMgR2VuZXJhdG9yT3B0aW9ucyA9IEdlbmVyYXRvck9wdGlvbnMsXG4gICAgUCBleHRlbmRzIFBsYWl0Qm9hcmQgPSBQbGFpdEJvYXJkXG4+IHtcbiAgICBnPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBwcm90ZWN0ZWQgb3B0aW9ucz86IFY7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYm9hcmQ6IFAsIG9wdGlvbnM/OiBWKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0RyYXdpbmcoZWxlbWVudDogVCwgcGFyZW50RzogU1ZHR0VsZW1lbnQsIGRhdGE/OiBLKSB7XG4gICAgICAgIGlmICh0aGlzLmNhbkRyYXcgJiYgdGhpcy5jYW5EcmF3KGVsZW1lbnQsIGRhdGEpKSB7XG4gICAgICAgICAgICBjb25zdCBnID0gdGhpcy5kcmF3KGVsZW1lbnQsIGRhdGEpO1xuICAgICAgICAgICAgaWYgKGcpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nICYmIHBhcmVudEcuY29udGFpbnModGhpcy5nKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmcucmVwbGFjZVdpdGgoZyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnM/LnByZXBlbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEcucHJlcGVuZChnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEcuYXBwZW5kQ2hpbGQoZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5nID0gZztcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5ib2FyZC5nZXRSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFuZ2xlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoUGxhaXRHcm91cEVsZW1lbnQuaXNHcm91cChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBnZXRTZWxlY3Rpb25BbmdsZShnZXRFbGVtZW50c0luR3JvdXAodGhpcy5ib2FyZCwgZWxlbWVudCwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBlbGVtZW50LmFuZ2xlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QW5nbGVGb3JHKGcsIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChyZWN0KSwgYW5nbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXNBZnRlckRyYXcodGhpcykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyRHJhdyhlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWJzdHJhY3QgZnVuY3Rpb25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2FuRHJhdyhlbGVtZW50OiBULCBkYXRhPzogSyk6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBhYnN0cmFjdCBmdW5jdGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBkcmF3KGVsZW1lbnQ6IFQsIGRhdGE/OiBLKTogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5nKSB7XG4gICAgICAgICAgICB0aGlzLmcucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWZ0ZXJEcmF3PFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEVsZW1lbnQ+IHtcbiAgICBhZnRlckRyYXcoZWxlbWVudDogVCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNBZnRlckRyYXcodmFsdWU6IGFueSk6IHZhbHVlIGlzIEFmdGVyRHJhdyB7XG4gICAgaWYgKHZhbHVlLmFmdGVyRHJhdykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuIl19
@@ -1,4 +1,4 @@
1
1
  export * from './generator';
2
2
  export * from './active.generator';
3
- export * from './image.generator';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2dlbmVyYXRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZW5lcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3RpdmUuZ2VuZXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UuZ2VuZXJhdG9yJztcbiJdfQ==
3
+ export * from '../image/image.generator';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2dlbmVyYXRvcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9nZW5lcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3RpdmUuZ2VuZXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4uL2ltYWdlL2ltYWdlLmdlbmVyYXRvcic7XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { IMAGE_CONTAINER_CLASS_NAME } from './image.generator';
2
+ export class ImageBaseComponent {
3
+ constructor() {
4
+ this.initialized = false;
5
+ }
6
+ set imageItem(value) {
7
+ this._imageItem = value;
8
+ if (this.initialized) {
9
+ this.afterImageItemChange(this._imageItem, value);
10
+ }
11
+ }
12
+ get imageItem() {
13
+ return this._imageItem;
14
+ }
15
+ set isFocus(value) {
16
+ this._isFocus = value;
17
+ }
18
+ get isFocus() {
19
+ return this._isFocus;
20
+ }
21
+ initialize() {
22
+ this.initialized = true;
23
+ this.nativeElement().classList.add(IMAGE_CONTAINER_CLASS_NAME);
24
+ }
25
+ destroy() {
26
+ }
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2ltYWdlL2ltYWdlLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9ELE1BQU0sT0FBZ0Isa0JBQWtCO0lBQXhDO1FBS0ksZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFvQ3hCLENBQUM7SUFoQ0csSUFBSSxTQUFTLENBQUMsS0FBc0I7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUlELElBQUksT0FBTyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBTUQsVUFBVTtRQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELE9BQU87SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBDb21tb25JbWFnZUl0ZW0gfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBJTUFHRV9DT05UQUlORVJfQ0xBU1NfTkFNRSB9IGZyb20gJy4vaW1hZ2UuZ2VuZXJhdG9yJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEltYWdlQmFzZUNvbXBvbmVudCB7XG4gICAgX2ltYWdlSXRlbSE6IENvbW1vbkltYWdlSXRlbTtcblxuICAgIF9pc0ZvY3VzITogYm9vbGVhbjtcblxuICAgIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBlbGVtZW50ITogUGxhaXRFbGVtZW50O1xuXG4gICAgc2V0IGltYWdlSXRlbSh2YWx1ZTogQ29tbW9uSW1hZ2VJdGVtKSB7XG4gICAgICAgIHRoaXMuX2ltYWdlSXRlbSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5hZnRlckltYWdlSXRlbUNoYW5nZSh0aGlzLl9pbWFnZUl0ZW0sIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpbWFnZUl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbWFnZUl0ZW07XG4gICAgfVxuXG4gICAgYm9hcmQhOiBQbGFpdEJvYXJkO1xuXG4gICAgc2V0IGlzRm9jdXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faXNGb2N1cyA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBpc0ZvY3VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNGb2N1cztcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBhZnRlckltYWdlSXRlbUNoYW5nZShwcmV2aW91czogQ29tbW9uSW1hZ2VJdGVtLCBjdXJyZW50OiBDb21tb25JbWFnZUl0ZW0pOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudDtcblxuICAgIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQoKS5jbGFzc0xpc3QuYWRkKElNQUdFX0NPTlRBSU5FUl9DTEFTU19OQU1FKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,99 @@
1
+ import { ACTIVE_STROKE_WIDTH, PlaitBoard, RectangleClient, createForeignObject, createG, getSelectedElements, isSelectionMoving, setAngleForG, updateForeignObject } from '@plait/core';
2
+ import { Generator } from '../generators/generator';
3
+ import { canResize, getElementOfFocusedImage } from '../utils';
4
+ import { ActiveGenerator } from '../generators/active.generator';
5
+ export const FOREIGN_OBJECT_IMAGE_CLASS_NAME = 'foreign-object-image';
6
+ export const IMAGE_CONTAINER_CLASS_NAME = 'plait-image-container';
7
+ export class ImageGenerator extends Generator {
8
+ static { this.key = 'image-generator'; }
9
+ constructor(board, options) {
10
+ super(board, options);
11
+ this.board = board;
12
+ this.options = options;
13
+ this.isFocus = false;
14
+ }
15
+ canDraw(element) {
16
+ return !!this.options.getImageItem(element);
17
+ }
18
+ draw(element) {
19
+ this.element = element;
20
+ const g = createG();
21
+ const foreignRectangle = this.options.getRectangle(element);
22
+ this.foreignObject = createForeignObject(foreignRectangle.x, foreignRectangle.y, foreignRectangle.width, foreignRectangle.height);
23
+ this.foreignObject.classList.add(FOREIGN_OBJECT_IMAGE_CLASS_NAME);
24
+ g.append(this.foreignObject);
25
+ const props = {
26
+ board: this.board,
27
+ imageItem: this.options.getImageItem(element),
28
+ element,
29
+ getRectangle: () => {
30
+ return this.options.getRectangle(element);
31
+ }
32
+ };
33
+ this.imageComponentRef = this.board.renderImage(this.foreignObject, props);
34
+ this.activeGenerator = new ActiveGenerator(this.board, {
35
+ getStrokeWidth: () => {
36
+ const selectedElements = getSelectedElements(this.board);
37
+ if (!(selectedElements.length === 1 && !isSelectionMoving(this.board))) {
38
+ return ACTIVE_STROKE_WIDTH;
39
+ }
40
+ else {
41
+ return ACTIVE_STROKE_WIDTH;
42
+ }
43
+ },
44
+ getStrokeOpacity: () => {
45
+ const selectedElements = getSelectedElements(this.board);
46
+ if ((selectedElements.length === 1 && !isSelectionMoving(this.board)) || !selectedElements.length) {
47
+ return 1;
48
+ }
49
+ else {
50
+ return 0.5;
51
+ }
52
+ },
53
+ getRectangle: () => {
54
+ return this.options.getRectangle(this.element);
55
+ },
56
+ hasResizeHandle: () => {
57
+ const isSelectedImageElement = canResize(this.board, this.element);
58
+ const isSelectedImage = !!getElementOfFocusedImage(this.board);
59
+ return isSelectedImage || isSelectedImageElement;
60
+ }
61
+ });
62
+ return g;
63
+ }
64
+ updateImage(nodeG, previous, current) {
65
+ this.element = current;
66
+ if (previous !== current && this.imageComponentRef) {
67
+ const props = {
68
+ imageItem: this.options.getImageItem(current),
69
+ element: current,
70
+ getRectangle: () => {
71
+ return this.options.getRectangle(current);
72
+ }
73
+ };
74
+ this.imageComponentRef.update(props);
75
+ }
76
+ const currentForeignObject = this.options.getRectangle(current);
77
+ updateForeignObject(this.g, currentForeignObject.width, currentForeignObject.height, currentForeignObject.x, currentForeignObject.y);
78
+ if (currentForeignObject && current.angle) {
79
+ setAngleForG(this.g, RectangleClient.getCenterPoint(currentForeignObject), current.angle);
80
+ }
81
+ const activeG = PlaitBoard.getElementActiveHost(this.board);
82
+ this.activeGenerator.processDrawing(current, activeG, { selected: this.isFocus });
83
+ }
84
+ setFocus(element, isFocus) {
85
+ this.isFocus = isFocus;
86
+ const activeG = PlaitBoard.getElementActiveHost(this.board);
87
+ this.activeGenerator.processDrawing(element, activeG, { selected: isFocus });
88
+ const props = {
89
+ isFocus
90
+ };
91
+ this.imageComponentRef.update(props);
92
+ }
93
+ destroy() {
94
+ super.destroy();
95
+ this.imageComponentRef?.destroy();
96
+ this.activeGenerator?.destroy();
97
+ }
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9pbWFnZS9pbWFnZS5nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILG1CQUFtQixFQUNuQixVQUFVLEVBRVYsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osbUJBQW1CLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxTQUFTLEVBQXdDLE1BQU0seUJBQXlCLENBQUM7QUFDMUYsT0FBTyxFQUFtQixTQUFTLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2pFLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLHNCQUFzQixDQUFDO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLHVCQUF1QixDQUFDO0FBT2xFLE1BQU0sT0FBTyxjQUFzRCxTQUFRLFNBSTFFO2FBQ1UsUUFBRyxHQUFHLGlCQUFpQixBQUFwQixDQUFxQjtJQVkvQixZQUFtQixLQUFpQixFQUFTLE9BQWlDO1FBQzFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFEUCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFKOUUsWUFBTyxHQUFHLEtBQUssQ0FBQztJQU1oQixDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQVU7UUFDZCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQVU7UUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixN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VSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDN0UsTUFBTSxLQUFLLEdBQXdCO1lBQy9CLE9BQU87U0FDVixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsT0FBTztRQUNILEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICBjcmVhdGVGb3JlaWduT2JqZWN0LFxuICAgIGNyZWF0ZUcsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBzZXRBbmdsZUZvckcsXG4gICAgdXBkYXRlRm9yZWlnbk9iamVjdFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmF0b3IsIEdlbmVyYXRvckV4dHJhRGF0YSwgR2VuZXJhdG9yT3B0aW9ucyB9IGZyb20gJy4uL2dlbmVyYXRvcnMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IENvbW1vbkltYWdlSXRlbSwgY2FuUmVzaXplLCBnZXRFbGVtZW50T2ZGb2N1c2VkSW1hZ2UgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBBY3RpdmVHZW5lcmF0b3IgfSBmcm9tICcuLi9nZW5lcmF0b3JzL2FjdGl2ZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgUGxhaXRJbWFnZUJvYXJkLCBJbWFnZUNvbXBvbmVudFJlZiwgSW1hZ2VQcm9wcyB9IGZyb20gJy4vd2l0aC1pbWFnZSc7XG5cbmV4cG9ydCBjb25zdCBGT1JFSUdOX09CSkVDVF9JTUFHRV9DTEFTU19OQU1FID0gJ2ZvcmVpZ24tb2JqZWN0LWltYWdlJztcbmV4cG9ydCBjb25zdCBJTUFHRV9DT05UQUlORVJfQ0xBU1NfTkFNRSA9ICdwbGFpdC1pbWFnZS1jb250YWluZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlR2VuZXJhdG9yT3B0aW9uczxUPiB7XG4gICAgZ2V0UmVjdGFuZ2xlOiAoZWxlbWVudDogVCkgPT4gUmVjdGFuZ2xlQ2xpZW50O1xuICAgIGdldEltYWdlSXRlbTogKGVsZW1lbnQ6IFQpID0+IENvbW1vbkltYWdlSXRlbTtcbn1cblxuZXhwb3J0IGNsYXNzIEltYWdlR2VuZXJhdG9yPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnQgPSBQbGFpdEVsZW1lbnQ+IGV4dGVuZHMgR2VuZXJhdG9yPFxuICAgIFQsXG4gICAgR2VuZXJhdG9yRXh0cmFEYXRhLFxuICAgIEltYWdlR2VuZXJhdG9yT3B0aW9uczxUPiAmIEdlbmVyYXRvck9wdGlvbnNcbj4ge1xuICAgIHN0YXRpYyBrZXkgPSAnaW1hZ2UtZ2VuZXJhdG9yJztcblxuICAgIGZvcmVpZ25PYmplY3QhOiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDtcblxuICAgIGltYWdlQ29tcG9uZW50UmVmITogSW1hZ2VDb21wb25lbnRSZWY7XG5cbiAgICBhY3RpdmVHZW5lcmF0b3IhOiBBY3RpdmVHZW5lcmF0b3I7XG5cbiAgICBpc0ZvY3VzID0gZmFsc2U7XG5cbiAgICBlbGVtZW50ITogVDtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBib2FyZDogUGxhaXRCb2FyZCwgcHVibGljIG9wdGlvbnM6IEltYWdlR2VuZXJhdG9yT3B0aW9uczxUPikge1xuICAgICAgICBzdXBlcihib2FyZCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY2FuRHJhdyhlbGVtZW50OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMub3B0aW9ucy5nZXRJbWFnZUl0ZW0oZWxlbWVudCk7XG4gICAgfVxuXG4gICAgZHJhdyhlbGVtZW50OiBUKTogU1ZHR0VsZW1lbnQge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICBjb25zdCBnID0gY3JlYXRlRygpO1xuICAgICAgICBjb25zdCBmb3JlaWduUmVjdGFuZ2xlID0gdGhpcy5vcHRpb25zLmdldFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICAgICAgdGhpcy5mb3JlaWduT2JqZWN0ID0gY3JlYXRlRm9yZWlnbk9iamVjdChmb3JlaWduUmVjdGFuZ2xlLngsIGZvcmVpZ25SZWN0YW5nbGUueSwgZm9yZWlnblJlY3RhbmdsZS53aWR0aCwgZm9yZWlnblJlY3RhbmdsZS5oZWlnaHQpO1xuICAgICAgICB0aGlzLmZvcmVpZ25PYmplY3QuY2xhc3NMaXN0LmFkZChGT1JFSUdOX09CSkVDVF9JTUFHRV9DTEFTU19OQU1FKTtcbiAgICAgICAgZy5hcHBlbmQodGhpcy5mb3JlaWduT2JqZWN0KTtcbiAgICAgICAgY29uc3QgcHJvcHM6IEltYWdlUHJvcHMgPSB7XG4gICAgICAgICAgICBib2FyZDogdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIGltYWdlSXRlbTogdGhpcy5vcHRpb25zLmdldEltYWdlSXRlbShlbGVtZW50KSxcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5pbWFnZUNvbXBvbmVudFJlZiA9ICgodGhpcy5ib2FyZCBhcyB1bmtub3duKSBhcyBQbGFpdEltYWdlQm9hcmQpLnJlbmRlckltYWdlKHRoaXMuZm9yZWlnbk9iamVjdCwgcHJvcHMpO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yID0gbmV3IEFjdGl2ZUdlbmVyYXRvcih0aGlzLmJvYXJkLCB7XG4gICAgICAgICAgICBnZXRTdHJva2VXaWR0aDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFDVElWRV9TVFJPS0VfV0lEVEg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFDVElWRV9TVFJPS0VfV0lEVEg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFN0cm9rZU9wYWNpdHk6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkgfHwgIXNlbGVjdGVkRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwLjU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFJlY3RhbmdsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0UmVjdGFuZ2xlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzUmVzaXplSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZEltYWdlRWxlbWVudCA9IGNhblJlc2l6ZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWRJbWFnZSA9ICEhZ2V0RWxlbWVudE9mRm9jdXNlZEltYWdlKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc1NlbGVjdGVkSW1hZ2UgfHwgaXNTZWxlY3RlZEltYWdlRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBnO1xuICAgIH1cblxuICAgIHVwZGF0ZUltYWdlKG5vZGVHOiBTVkdHRWxlbWVudCwgcHJldmlvdXM6IFQsIGN1cnJlbnQ6IFQpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gY3VycmVudDtcbiAgICAgICAgaWYgKHByZXZpb3VzICE9PSBjdXJyZW50ICYmIHRoaXMuaW1hZ2VDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAgICAgICAgIGltYWdlSXRlbTogdGhpcy5vcHRpb25zLmdldEltYWdlSXRlbShjdXJyZW50KSxcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBjdXJyZW50LFxuICAgICAgICAgICAgICAgIGdldFJlY3RhbmdsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldFJlY3RhbmdsZShjdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5pbWFnZUNvbXBvbmVudFJlZi51cGRhdGUocHJvcHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRGb3JlaWduT2JqZWN0ID0gdGhpcy5vcHRpb25zLmdldFJlY3RhbmdsZShjdXJyZW50KTtcbiAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdChcbiAgICAgICAgICAgIHRoaXMuZyEsXG4gICAgICAgICAgICBjdXJyZW50Rm9yZWlnbk9iamVjdC53aWR0aCxcbiAgICAgICAgICAgIGN1cnJlbnRGb3JlaWduT2JqZWN0LmhlaWdodCxcbiAgICAgICAgICAgIGN1cnJlbnRGb3JlaWduT2JqZWN0LngsXG4gICAgICAgICAgICBjdXJyZW50Rm9yZWlnbk9iamVjdC55XG4gICAgICAgICk7XG4gICAgICAgIGlmIChjdXJyZW50Rm9yZWlnbk9iamVjdCAmJiBjdXJyZW50LmFuZ2xlKSB7XG4gICAgICAgICAgICBzZXRBbmdsZUZvckcodGhpcy5nISwgUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KGN1cnJlbnRGb3JlaWduT2JqZWN0KSwgY3VycmVudC5hbmdsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0aXZlRyA9IFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKGN1cnJlbnQsIGFjdGl2ZUcsIHsgc2VsZWN0ZWQ6IHRoaXMuaXNGb2N1cyB9KTtcbiAgICB9XG5cbiAgICBzZXRGb2N1cyhlbGVtZW50OiBQbGFpdEVsZW1lbnQsIGlzRm9jdXM6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc0ZvY3VzID0gaXNGb2N1cztcbiAgICAgICAgY29uc3QgYWN0aXZlRyA9IFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKGVsZW1lbnQsIGFjdGl2ZUcsIHsgc2VsZWN0ZWQ6IGlzRm9jdXMgfSk7XG4gICAgICAgIGNvbnN0IHByb3BzOiBQYXJ0aWFsPEltYWdlUHJvcHM+ID0ge1xuICAgICAgICAgICAgaXNGb2N1c1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmltYWdlQ29tcG9uZW50UmVmLnVwZGF0ZShwcm9wcyk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmltYWdlQ29tcG9uZW50UmVmPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yPy5kZXN0cm95KCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './image-base.component';
2
+ export * from './image.generator';
3
+ export * from './with-image';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2ltYWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW1hZ2UtYmFzZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS5nZW5lcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi93aXRoLWltYWdlJztcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export const withImage = (board) => {
2
+ const newBoard = board;
3
+ newBoard.renderImage = (container, props) => {
4
+ throw new Error('No implementation for renderImage method.');
5
+ };
6
+ return newBoard;
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvaW1hZ2Uvd2l0aC1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBb0MsS0FBUSxFQUFFLEVBQUU7SUFDckUsTUFBTSxRQUFRLEdBQUcsS0FBNEIsQ0FBQztJQUU5QyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsU0FBcUMsRUFBRSxLQUFpQixFQUFFLEVBQUU7UUFDaEYsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQ2pFLENBQUMsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUmVuZGVyQ29tcG9uZW50UmVmIH0gZnJvbSAnLi4vY29yZS9yZW5kZXItY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbkltYWdlSXRlbSB9IGZyb20gJy4uL3V0aWxzL2ltYWdlJztcblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdEltYWdlQm9hcmQge1xuICAgIHJlbmRlckltYWdlOiAoY29udGFpbmVyOiBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCwgcHJvcHM6IEltYWdlUHJvcHMpID0+IEltYWdlQ29tcG9uZW50UmVmO1xufVxuXG5leHBvcnQgY29uc3Qgd2l0aEltYWdlID0gPFQgZXh0ZW5kcyBQbGFpdEJvYXJkID0gUGxhaXRCb2FyZD4oYm9hcmQ6IFQpID0+IHtcbiAgICBjb25zdCBuZXdCb2FyZCA9IGJvYXJkIGFzIFQgJiBQbGFpdEltYWdlQm9hcmQ7XG5cbiAgICBuZXdCb2FyZC5yZW5kZXJJbWFnZSA9IChjb250YWluZXI6IEVsZW1lbnQgfCBEb2N1bWVudEZyYWdtZW50LCBwcm9wczogSW1hZ2VQcm9wcykgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGltcGxlbWVudGF0aW9uIGZvciByZW5kZXJJbWFnZSBtZXRob2QuJyk7XG4gICAgfTtcbiAgICByZXR1cm4gbmV3Qm9hcmQ7XG59O1xuXG5leHBvcnQgdHlwZSBJbWFnZUNvbXBvbmVudFJlZiA9IFJlbmRlckNvbXBvbmVudFJlZjxJbWFnZVByb3BzPjtcblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVByb3BzIHtcbiAgICBib2FyZDogUGxhaXRCb2FyZDtcbiAgICBpbWFnZUl0ZW06IENvbW1vbkltYWdlSXRlbTtcbiAgICBlbGVtZW50OiBQbGFpdEVsZW1lbnQ7XG4gICAgaXNGb2N1cz86IGJvb2xlYW47XG4gICAgZ2V0UmVjdGFuZ2xlOiAoKSA9PiBSZWN0YW5nbGVDbGllbnQ7XG59XG4iXX0=
@@ -1,4 +1,3 @@
1
1
  export * from './with-resize';
2
- export * from './text-options';
3
2
  export * from './with-group';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3BsdWdpbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vd2l0aC1yZXNpemUnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LW9wdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi93aXRoLWdyb3VwJzsiXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3BsdWdpbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dpdGgtcmVzaXplJztcbmV4cG9ydCAqIGZyb20gJy4vd2l0aC1ncm91cCc7XG4iXX0=
@@ -7,9 +7,10 @@ export * from './transforms';
7
7
  export * from './shapes';
8
8
  export * from './plugins';
9
9
  export * from './utils';
10
- export * from './core/element-flavour';
11
- export * from './core/image-base.component';
12
- export * from './core/element-ref';
10
+ export * from './image/image-base.component';
11
+ export * from './core';
13
12
  export * from './algorithms';
13
+ export * from './text';
14
+ export * from './image';
14
15
  export * from './types';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB1dGlsc1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VuZXJhdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zZm9ybXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW5zJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2VsZW1lbnQtZmxhdm91cic7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUvaW1hZ2UtYmFzZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2VsZW1lbnQtcmVmJztcbmV4cG9ydCAqIGZyb20gJy4vYWxnb3JpdGhtcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHV0aWxzXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9nZW5lcmF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5leHBvcnQgKiBmcm9tICcuL3NoYXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbnMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlL2ltYWdlLWJhc2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29yZSc7XG5leHBvcnQgKiBmcm9tICcuL2FsZ29yaXRobXMnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from './text-manage';
2
+ export * from './with-text';
3
+ export * from './text-measure';
4
+ export * from './types';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3RleHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGV4dC1tYW5hZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi93aXRoLXRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LW1lYXN1cmUnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4iXX0=
@@ -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==