nuxeo-development-framework 4.1.0 → 4.1.2

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 (89) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +1025 -607
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +2 -2
  4. package/esm2015/lib/components/diagrams/components/circle-node/circle-node.component.js +6 -7
  5. package/esm2015/lib/components/diagrams/components/connection-label.component.js +92 -0
  6. package/esm2015/lib/components/diagrams/components/content-node/content-node.component.js +7 -8
  7. package/esm2015/lib/components/diagrams/components/custom-connection.component.js +68 -32
  8. package/esm2015/lib/components/diagrams/components/custom-socket.component.js +22 -19
  9. package/esm2015/lib/components/diagrams/components/gateway-node/gateway-node.component.js +18 -0
  10. package/esm2015/lib/components/diagrams/components/gateway-ports.component.js +118 -0
  11. package/esm2015/lib/components/diagrams/components/index.js +5 -1
  12. package/esm2015/lib/components/diagrams/components/node-inputs.component.js +34 -35
  13. package/esm2015/lib/components/diagrams/components/node-outputs.component.js +30 -31
  14. package/esm2015/lib/components/diagrams/components/node-ports.component.js +98 -0
  15. package/esm2015/lib/components/diagrams/components/remove-button.component.js +46 -43
  16. package/esm2015/lib/components/diagrams/components/template-node/template-node.component.js +6 -7
  17. package/esm2015/lib/components/diagrams/constants/node-type.js +2 -1
  18. package/esm2015/lib/components/diagrams/constants/sizes.js +2 -1
  19. package/esm2015/lib/components/diagrams/constants/status.js +4 -1
  20. package/esm2015/lib/components/diagrams/diagrams.module.js +14 -6
  21. package/esm2015/lib/components/diagrams/directive/diagram.directive.js +9 -6
  22. package/esm2015/lib/components/diagrams/editor/customize.js +16 -12
  23. package/esm2015/lib/components/diagrams/editor/editor.js +21 -19
  24. package/esm2015/lib/components/diagrams/editor/overrides/connection-path.transformers.js +32 -7
  25. package/esm2015/lib/components/diagrams/editor/path-plugin.js +10 -9
  26. package/esm2015/lib/components/diagrams/models/base-node.model.js +3 -2
  27. package/esm2015/lib/components/diagrams/models/connection.model.js +11 -4
  28. package/esm2015/lib/components/diagrams/models/gate-way.model.js +11 -0
  29. package/esm2015/lib/components/diagrams/models/index.js +2 -1
  30. package/esm2015/lib/components/diagrams/models/ports.model.js +14 -0
  31. package/esm2015/lib/components/diagrams/models/socket.model.js +5 -4
  32. package/esm2015/lib/components/diagrams/services/diagram.service.js +77 -29
  33. package/esm2015/lib/components/diagrams/services/workflow.service.js +14 -19
  34. package/esm2015/lib/components/diagrams/types/common.type.js +1 -1
  35. package/esm2015/lib/components/diagrams/types/connection-config.type.js +2 -0
  36. package/esm2015/lib/components/diagrams/types/connection-label.type.js +2 -0
  37. package/esm2015/lib/components/diagrams/types/diagram-config.type.js +1 -1
  38. package/esm2015/lib/components/diagrams/types/diagram-editor.type.js +1 -1
  39. package/esm2015/lib/components/diagrams/types/index.js +6 -2
  40. package/esm2015/lib/components/diagrams/types/node-definition.js +1 -1
  41. package/esm2015/lib/components/diagrams/types/path.type.js +1 -1
  42. package/esm2015/lib/components/diagrams/types/ports-config.type.js +2 -0
  43. package/esm2015/lib/components/diagrams/types/socket.type.js +2 -0
  44. package/esm2015/lib/components/diagrams/utilities/common.js +35 -0
  45. package/esm2015/lib/components/diagrams/utilities/index.js +3 -1
  46. package/esm2015/lib/components/diagrams/utilities/random.js +11 -0
  47. package/esm2015/lib/components/diagrams/utilities/remove.util.js +2 -2
  48. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +238 -200
  49. package/esm2015/lib/components/file-manger/file-manger.module.js +10 -6
  50. package/esm2015/lib/shared/components/nuxeo-dialog/nuxeo.dialog.js +2 -2
  51. package/fesm2015/nuxeo-development-framework.js +1194 -640
  52. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  53. package/lib/components/diagrams/components/base-node.component.d.ts +1 -0
  54. package/lib/components/diagrams/components/connection-label.component.d.ts +19 -0
  55. package/lib/components/diagrams/components/custom-connection.component.d.ts +5 -0
  56. package/lib/components/diagrams/components/gateway-node/gateway-node.component.d.ts +6 -0
  57. package/lib/components/diagrams/components/gateway-ports.component.d.ts +12 -0
  58. package/lib/components/diagrams/components/index.d.ts +4 -0
  59. package/lib/components/diagrams/components/node-ports.component.d.ts +13 -0
  60. package/lib/components/diagrams/constants/node-type.d.ts +1 -0
  61. package/lib/components/diagrams/constants/sizes.d.ts +1 -0
  62. package/lib/components/diagrams/constants/status.d.ts +3 -0
  63. package/lib/components/diagrams/diagrams.module.d.ts +12 -8
  64. package/lib/components/diagrams/editor/overrides/connection-path.transformers.d.ts +2 -7
  65. package/lib/components/diagrams/models/base-node.model.d.ts +3 -2
  66. package/lib/components/diagrams/models/connection.model.d.ts +9 -1
  67. package/lib/components/diagrams/models/gate-way.model.d.ts +8 -0
  68. package/lib/components/diagrams/models/index.d.ts +1 -0
  69. package/lib/components/diagrams/models/ports.model.d.ts +11 -0
  70. package/lib/components/diagrams/models/socket.model.d.ts +3 -1
  71. package/lib/components/diagrams/services/diagram.service.d.ts +20 -9
  72. package/lib/components/diagrams/services/workflow.service.d.ts +0 -1
  73. package/lib/components/diagrams/types/common.type.d.ts +5 -0
  74. package/lib/components/diagrams/types/connection-config.type.d.ts +11 -0
  75. package/lib/components/diagrams/types/connection-label.type.d.ts +4 -0
  76. package/lib/components/diagrams/types/diagram-config.type.d.ts +6 -0
  77. package/lib/components/diagrams/types/diagram-editor.type.d.ts +3 -2
  78. package/lib/components/diagrams/types/index.d.ts +5 -1
  79. package/lib/components/diagrams/types/node-definition.d.ts +1 -0
  80. package/lib/components/diagrams/types/path.type.d.ts +1 -0
  81. package/lib/components/diagrams/types/ports-config.type.d.ts +11 -0
  82. package/lib/components/diagrams/types/socket.type.d.ts +5 -0
  83. package/lib/components/diagrams/utilities/common.d.ts +19 -0
  84. package/lib/components/diagrams/utilities/index.d.ts +2 -0
  85. package/lib/components/diagrams/utilities/random.d.ts +1 -0
  86. package/lib/components/diagrams/utilities/remove.util.d.ts +1 -1
  87. package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +13 -19
  88. package/lib/components/file-manger/file-manger.module.d.ts +2 -1
  89. package/package.json +1 -1
@@ -1,17 +1,18 @@
1
1
  import { curveLinear } from 'd3-shape';
2
- import { ConnectionPathPlugin, Transformers, } from 'rete-connection-path-plugin';
2
+ import { ConnectionPathPlugin, Transformers } from 'rete-connection-path-plugin';
3
3
  import { createSegmentedPath } from './overrides';
4
4
  export const initPathPlugin = (config) => new ConnectionPathPlugin({
5
5
  curve: (c) => { var _a; return (_a = (c.curve || (config === null || config === void 0 ? void 0 : config.curve))) !== null && _a !== void 0 ? _a : curveLinear; },
6
6
  transformer: (c) => {
7
7
  var _a, _b, _c;
8
- return ((_a = config === null || config === void 0 ? void 0 : config.transform) === null || _a === void 0 ? void 0 : _a.active)
9
- ? createSegmentedPath(c, (_b = config === null || config === void 0 ? void 0 : config.transform) === null || _b === void 0 ? void 0 : _b.options)
10
- : Transformers.classic({
11
- vertical: !!(config === null || config === void 0 ? void 0 : config.vertical),
12
- curvature: (_c = config === null || config === void 0 ? void 0 : config.curvature) !== null && _c !== void 0 ? _c : 0.3,
13
- });
8
+ if ((_a = config === null || config === void 0 ? void 0 : config.transform) === null || _a === void 0 ? void 0 : _a.active) {
9
+ return (((_b = c === null || c === void 0 ? void 0 : c.createSegmentedPath) === null || _b === void 0 ? void 0 : _b.call(c, c, config)) || createSegmentedPath(c, config));
10
+ }
11
+ return Transformers.classic({
12
+ vertical: !!(config === null || config === void 0 ? void 0 : config.vertical),
13
+ curvature: (_c = config === null || config === void 0 ? void 0 : config.curvature) !== null && _c !== void 0 ? _c : 0.3
14
+ });
14
15
  },
15
- arrow: (connection) => (!(config === null || config === void 0 ? void 0 : config.arrow) ? false : config === null || config === void 0 ? void 0 : config.arrow),
16
+ arrow: (connection) => (!(config === null || config === void 0 ? void 0 : config.arrow) ? false : config === null || config === void 0 ? void 0 : config.arrow)
16
17
  });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL2VkaXRvci9wYXRoLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsWUFBWSxHQUNiLE1BQU0sNkJBQTZCLENBQUM7QUFJckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FFMkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUMvRCxJQUFJLG9CQUFvQixDQUEyQjtJQUNqRCxLQUFLLEVBQUUsQ0FBQyxDQUFhLEVBQUUsRUFBRSxXQUFDLE9BQUEsTUFBQSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQSxDQUFDLG1DQUFJLFdBQVcsQ0FBQSxFQUFBO0lBQ25FLFdBQVcsRUFBRSxDQUFDLENBQWEsRUFBRSxFQUFFOztRQUM3QixPQUFBLENBQUEsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsU0FBUywwQ0FBRSxNQUFNO1lBQ3ZCLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsU0FBUywwQ0FBRSxPQUFPLENBQUM7WUFDcEQsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7Z0JBQ25CLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUSxDQUFBO2dCQUM1QixTQUFTLEVBQUUsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsU0FBUyxtQ0FBSSxHQUFHO2FBQ3BDLENBQUMsQ0FBQTtLQUFBO0lBQ1IsS0FBSyxFQUFFLENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLENBQUM7Q0FDNUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3VydmVMaW5lYXIgfSBmcm9tICdkMy1zaGFwZSc7XHJcbmltcG9ydCB7IEFyZWEyRCB9IGZyb20gJ3JldGUtYXJlYS1wbHVnaW4nO1xyXG5pbXBvcnQge1xyXG4gIENvbm5lY3Rpb25QYXRoUGx1Z2luLFxyXG4gIFRyYW5zZm9ybWVycyxcclxufSBmcm9tICdyZXRlLWNvbm5lY3Rpb24tcGF0aC1wbHVnaW4nO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuXHJcbmltcG9ydCB7IFBhdGhQbHVnaW5Db25maWcsIFNjaGVtZXMgfSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7IGNyZWF0ZVNlZ21lbnRlZFBhdGggfSBmcm9tICcuL292ZXJyaWRlcyc7XHJcblxyXG5leHBvcnQgY29uc3QgaW5pdFBhdGhQbHVnaW46IChcclxuICBjb25maWc/OiBQYXRoUGx1Z2luQ29uZmlnXHJcbikgPT4gQ29ubmVjdGlvblBhdGhQbHVnaW48U2NoZW1lcywgQXJlYTJEPFNjaGVtZXM+PiA9IChjb25maWcpID0+XHJcbiAgbmV3IENvbm5lY3Rpb25QYXRoUGx1Z2luPFNjaGVtZXMsIEFyZWEyRDxTY2hlbWVzPj4oe1xyXG4gICAgY3VydmU6IChjOiBDb25uZWN0aW9uKSA9PiAoYy5jdXJ2ZSB8fCBjb25maWc/LmN1cnZlKSA/PyBjdXJ2ZUxpbmVhcixcclxuICAgIHRyYW5zZm9ybWVyOiAoYzogQ29ubmVjdGlvbikgPT5cclxuICAgICAgY29uZmlnPy50cmFuc2Zvcm0/LmFjdGl2ZVxyXG4gICAgICAgID8gY3JlYXRlU2VnbWVudGVkUGF0aChjLCBjb25maWc/LnRyYW5zZm9ybT8ub3B0aW9ucylcclxuICAgICAgICA6IFRyYW5zZm9ybWVycy5jbGFzc2ljKHtcclxuICAgICAgICAgICAgdmVydGljYWw6ICEhY29uZmlnPy52ZXJ0aWNhbCxcclxuICAgICAgICAgICAgY3VydmF0dXJlOiBjb25maWc/LmN1cnZhdHVyZSA/PyAwLjMsXHJcbiAgICAgICAgICB9KSxcclxuICAgIGFycm93OiAoY29ubmVjdGlvbjogQ29ubmVjdGlvbikgPT4gKCFjb25maWc/LmFycm93ID8gZmFsc2UgOiBjb25maWc/LmFycm93KSxcclxuICB9KTtcclxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL2VkaXRvci9wYXRoLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsWUFBWSxFQUNiLE1BQU0sNkJBQTZCLENBQUM7QUFJckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FFMkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNoRSxJQUFJLG9CQUFvQixDQUEyQjtJQUNsRCxLQUFLLEVBQUUsQ0FBQyxDQUFhLEVBQUUsRUFBRSxXQUFDLE9BQUEsTUFBQSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQSxDQUFDLG1DQUFJLFdBQVcsQ0FBQSxFQUFBO0lBQ25FLFdBQVcsRUFBRSxDQUFDLENBQWEsRUFBRSxFQUFFOztRQUM5QixJQUFJLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsMENBQUUsTUFBTSxFQUFFO1lBQzlCLE9BQU8sQ0FDTixDQUFBLE1BQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLG1CQUFtQiwrQ0FBdEIsQ0FBQyxFQUF3QixDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUksbUJBQW1CLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUNyRSxDQUFDO1NBQ0Y7UUFDRCxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDM0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLENBQUE7WUFDNUIsU0FBUyxFQUFFLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsbUNBQUksR0FBRztTQUNuQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsS0FBSyxFQUFFLENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLENBQUM7Q0FDM0UsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3VydmVMaW5lYXIgfSBmcm9tICdkMy1zaGFwZSc7XHJcbmltcG9ydCB7IEFyZWEyRCB9IGZyb20gJ3JldGUtYXJlYS1wbHVnaW4nO1xyXG5pbXBvcnQge1xyXG4gIENvbm5lY3Rpb25QYXRoUGx1Z2luLFxyXG4gIFRyYW5zZm9ybWVyc1xyXG59IGZyb20gJ3JldGUtY29ubmVjdGlvbi1wYXRoLXBsdWdpbic7XHJcbmltcG9ydCB7IENvbm5lY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5cclxuaW1wb3J0IHsgUGF0aFBsdWdpbkNvbmZpZywgU2NoZW1lcyB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgY3JlYXRlU2VnbWVudGVkUGF0aCB9IGZyb20gJy4vb3ZlcnJpZGVzJztcclxuXHJcbmV4cG9ydCBjb25zdCBpbml0UGF0aFBsdWdpbjogKFxyXG5cdGNvbmZpZz86IFBhdGhQbHVnaW5Db25maWdcclxuKSA9PiBDb25uZWN0aW9uUGF0aFBsdWdpbjxTY2hlbWVzLCBBcmVhMkQ8U2NoZW1lcz4+ID0gKGNvbmZpZykgPT5cclxuXHRuZXcgQ29ubmVjdGlvblBhdGhQbHVnaW48U2NoZW1lcywgQXJlYTJEPFNjaGVtZXM+Pih7XHJcblx0XHRjdXJ2ZTogKGM6IENvbm5lY3Rpb24pID0+IChjLmN1cnZlIHx8IGNvbmZpZz8uY3VydmUpID8/IGN1cnZlTGluZWFyLFxyXG5cdFx0dHJhbnNmb3JtZXI6IChjOiBDb25uZWN0aW9uKSA9PiB7XHJcblx0XHRcdGlmIChjb25maWc/LnRyYW5zZm9ybT8uYWN0aXZlKSB7XHJcblx0XHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRcdGM/LmNyZWF0ZVNlZ21lbnRlZFBhdGg/LihjLCBjb25maWcpIHx8IGNyZWF0ZVNlZ21lbnRlZFBhdGgoYywgY29uZmlnKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIFRyYW5zZm9ybWVycy5jbGFzc2ljKHtcclxuXHRcdFx0XHR2ZXJ0aWNhbDogISFjb25maWc/LnZlcnRpY2FsLFxyXG5cdFx0XHRcdGN1cnZhdHVyZTogY29uZmlnPy5jdXJ2YXR1cmUgPz8gMC4zXHJcblx0XHRcdH0pO1xyXG5cdFx0fSxcclxuXHRcdGFycm93OiAoY29ubmVjdGlvbjogQ29ubmVjdGlvbikgPT4gKCFjb25maWc/LmFycm93ID8gZmFsc2UgOiBjb25maWc/LmFycm93KVxyXG5cdH0pO1xyXG4iXX0=
@@ -8,7 +8,7 @@ export class BaseNodeClass extends ClassicPreset.Node {
8
8
  this.height = NODE_HEIGHT;
9
9
  this.directions = {
10
10
  inputs: IN_OUT_DIRECTION.start,
11
- outputs: IN_OUT_DIRECTION.end,
11
+ outputs: IN_OUT_DIRECTION.end
12
12
  };
13
13
  this.name = config === null || config === void 0 ? void 0 : config.name;
14
14
  this.directions = (config === null || config === void 0 ? void 0 : config.directions) || this.directions;
@@ -20,6 +20,7 @@ export class BaseNodeClass extends ClassicPreset.Node {
20
20
  this.content = config === null || config === void 0 ? void 0 : config.content;
21
21
  this.config = config === null || config === void 0 ? void 0 : config.config;
22
22
  this.styleClass = config === null || config === void 0 ? void 0 : config.styleClass;
23
+ this.options = config === null || config === void 0 ? void 0 : config.options;
23
24
  }
24
25
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ub2RlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaWFncmFtcy9tb2RlbHMvYmFzZS1ub2RlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBV3BGLE1BQU0sT0FBZ0IsYUFDcEIsU0FBUSxhQUFhLENBQUMsSUFBSTtJQXNCMUIsWUFBWSxNQUEwQjtRQUNwQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBaEJ0QixTQUFJLEdBQWEsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUVuQyxVQUFLLEdBQVcsVUFBVSxDQUFDO1FBQzNCLFdBQU0sR0FBVyxXQUFXLENBQUM7UUFNN0IsZUFBVSxHQUFnRDtZQUN4RCxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsS0FBSztZQUM5QixPQUFPLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztTQUM5QixDQUFDO1FBS0EsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsVUFBVSxLQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsV0FBVyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssS0FBSSxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLEtBQUksV0FBVyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDbGFzc2ljUHJlc2V0IH0gZnJvbSAncmV0ZSc7XHJcbmltcG9ydCB7IElOX09VVF9ESVJFQ1RJT04sIE5PREVfSEVJR0hULCBOT0RFX1RZUEUsIE5PREVfV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQge1xyXG4gIERpYWdyYW1Db25maWcsXHJcbiAgRGlyZWN0aW9uVHlwZSxcclxuICBOb2RlQ29udGVudCxcclxuICBOb2RlRGVmaW5pdGlvbkRhdGEsXHJcbiAgTm9kZVR5cGUsXHJcbiAgTm90aWZ5RXZlbnRUeXBlLFxyXG4gIE9wdGlvbmFsLFxyXG59IGZyb20gJy4uL3R5cGVzJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTm9kZUNsYXNzPFQgPSB1bmtub3duPlxyXG4gIGV4dGVuZHMgQ2xhc3NpY1ByZXNldC5Ob2RlXHJcbiAgaW1wbGVtZW50cyBOb2RlRGVmaW5pdGlvbkRhdGFcclxue1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIG5hbWU/OiBPcHRpb25hbDxzdHJpbmc+O1xyXG4gIGRlc2NyaXB0aW9uPzogT3B0aW9uYWw8c3RyaW5nPjtcclxuICB0eXBlOiBOb2RlVHlwZSA9IE5PREVfVFlQRS5jb250ZW50O1xyXG4gIHN0YXR1cz86IHN0cmluZztcclxuICB3aWR0aDogbnVtYmVyID0gTk9ERV9XSURUSDtcclxuICBoZWlnaHQ6IG51bWJlciA9IE5PREVfSEVJR0hUO1xyXG4gIGNvbnRlbnQ/OiBPcHRpb25hbDxOb2RlQ29udGVudDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pj47XHJcbiAgcGFyZW50PzogT3B0aW9uYWw8c3RyaW5nPjtcclxuICBjb25maWc/OiBPcHRpb25hbDxEaWFncmFtQ29uZmlnWydub2RlJ10+O1xyXG4gIGNoaWxkcmVuPzogQmFzZU5vZGVDbGFzczxUPltdO1xyXG4gIHN0eWxlQ2xhc3M/OiBzdHJpbmc7XHJcbiAgZGlyZWN0aW9uczogUmVjb3JkPCdpbnB1dHMnIHwgJ291dHB1dHMnLCBEaXJlY3Rpb25UeXBlPiA9IHtcclxuICAgIGlucHV0czogSU5fT1VUX0RJUkVDVElPTi5zdGFydCxcclxuICAgIG91dHB1dHM6IElOX09VVF9ESVJFQ1RJT04uZW5kLFxyXG4gIH07XHJcbiAgbm90aWZ5ITogKGV2ZW50VHlwZTogTm90aWZ5RXZlbnRUeXBlLCBwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB2b2lkO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc6IE5vZGVEZWZpbml0aW9uRGF0YSkge1xyXG4gICAgc3VwZXIoY29uZmlnLmxhYmVsKTtcclxuICAgIHRoaXMubmFtZSA9IGNvbmZpZz8ubmFtZTtcclxuICAgIHRoaXMuZGlyZWN0aW9ucyA9IGNvbmZpZz8uZGlyZWN0aW9ucyB8fCB0aGlzLmRpcmVjdGlvbnM7XHJcbiAgICB0aGlzLnR5cGUgPSBjb25maWcudHlwZSB8fCBOT0RFX1RZUEUuY29udGVudDtcclxuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWc/LmRlc2NyaXB0aW9uO1xyXG4gICAgdGhpcy5zdGF0dXMgPSBjb25maWc/LnN0YXR1cztcclxuICAgIHRoaXMud2lkdGggPSBjb25maWc/LndpZHRoIHx8IE5PREVfV0lEVEg7XHJcbiAgICB0aGlzLmhlaWdodCA9IGNvbmZpZz8uaGVpZ2h0IHx8IE5PREVfSEVJR0hUO1xyXG4gICAgdGhpcy5jb250ZW50ID0gY29uZmlnPy5jb250ZW50O1xyXG4gICAgdGhpcy5jb25maWcgPSBjb25maWc/LmNvbmZpZztcclxuICAgIHRoaXMuc3R5bGVDbGFzcyA9IGNvbmZpZz8uc3R5bGVDbGFzcztcclxuICB9XHJcbn1cclxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ub2RlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaWFncmFtcy9tb2RlbHMvYmFzZS1ub2RlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDWCxNQUFNLGNBQWMsQ0FBQztBQVl0QixNQUFNLE9BQWdCLGFBQ3JCLFNBQVEsYUFBYSxDQUFDLElBQUk7SUF1QjFCLFlBQVksTUFBMEI7UUFDckMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQWpCckIsU0FBSSxHQUFhLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFFbkMsVUFBSyxHQUFXLFVBQVUsQ0FBQztRQUMzQixXQUFNLEdBQVcsV0FBVyxDQUFDO1FBTzdCLGVBQVUsR0FBZ0Q7WUFDekQsTUFBTSxFQUFFLGdCQUFnQixDQUFDLEtBQUs7WUFDOUIsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEdBQUc7U0FDN0IsQ0FBQztRQUtELElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFVBQVUsS0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLEtBQUksVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxLQUFJLFdBQVcsQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLENBQUM7SUFDaEMsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENsYXNzaWNQcmVzZXQgfSBmcm9tICdyZXRlJztcclxuaW1wb3J0IHtcclxuICBJTl9PVVRfRElSRUNUSU9OLFxyXG4gIE5PREVfSEVJR0hULFxyXG4gIE5PREVfVFlQRSxcclxuICBOT0RFX1dJRFRIXHJcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHtcclxuICBEaWFncmFtQ29uZmlnLFxyXG4gIERpcmVjdGlvblR5cGUsXHJcbiAgTm9kZUNvbnRlbnQsXHJcbiAgTm9kZURlZmluaXRpb25EYXRhLFxyXG4gIE5vZGVTdGF0dXMsXHJcbiAgTm9kZVR5cGUsXHJcbiAgTm90aWZ5RXZlbnRUeXBlLFxyXG4gIE9wdGlvbmFsXHJcbn0gZnJvbSAnLi4vdHlwZXMnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VOb2RlQ2xhc3M8VCA9IHVua25vd24+XHJcblx0ZXh0ZW5kcyBDbGFzc2ljUHJlc2V0Lk5vZGVcclxuXHRpbXBsZW1lbnRzIE5vZGVEZWZpbml0aW9uRGF0YVxyXG57XHJcblx0bGFiZWw6IHN0cmluZztcclxuXHR0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblx0bmFtZT86IE9wdGlvbmFsPHN0cmluZz47XHJcblx0ZGVzY3JpcHRpb24/OiBPcHRpb25hbDxzdHJpbmc+O1xyXG5cdHR5cGU6IE5vZGVUeXBlID0gTk9ERV9UWVBFLmNvbnRlbnQ7XHJcblx0c3RhdHVzPzogTm9kZVN0YXR1cyB8IHN0cmluZztcclxuXHR3aWR0aDogbnVtYmVyID0gTk9ERV9XSURUSDtcclxuXHRoZWlnaHQ6IG51bWJlciA9IE5PREVfSEVJR0hUO1xyXG5cdGNvbnRlbnQ/OiBPcHRpb25hbDxOb2RlQ29udGVudDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pj47XHJcblx0cGFyZW50PzogT3B0aW9uYWw8c3RyaW5nPjtcclxuXHRjb25maWc/OiBPcHRpb25hbDxEaWFncmFtQ29uZmlnWydub2RlJ10+O1xyXG5cdGNoaWxkcmVuPzogQmFzZU5vZGVDbGFzczxUPltdO1xyXG5cdHN0eWxlQ2xhc3M/OiBzdHJpbmc7XHJcblx0b3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0ZGlyZWN0aW9uczogUmVjb3JkPCdpbnB1dHMnIHwgJ291dHB1dHMnLCBEaXJlY3Rpb25UeXBlPiA9IHtcclxuXHRcdGlucHV0czogSU5fT1VUX0RJUkVDVElPTi5zdGFydCxcclxuXHRcdG91dHB1dHM6IElOX09VVF9ESVJFQ1RJT04uZW5kXHJcblx0fTtcclxuXHRub3RpZnkhOiAoZXZlbnRUeXBlOiBOb3RpZnlFdmVudFR5cGUsIHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHZvaWQ7XHJcblxyXG5cdGNvbnN0cnVjdG9yKGNvbmZpZzogTm9kZURlZmluaXRpb25EYXRhKSB7XHJcblx0XHRzdXBlcihjb25maWcubGFiZWwpO1xyXG5cdFx0dGhpcy5uYW1lID0gY29uZmlnPy5uYW1lO1xyXG5cdFx0dGhpcy5kaXJlY3Rpb25zID0gY29uZmlnPy5kaXJlY3Rpb25zIHx8IHRoaXMuZGlyZWN0aW9ucztcclxuXHRcdHRoaXMudHlwZSA9IGNvbmZpZy50eXBlIHx8IE5PREVfVFlQRS5jb250ZW50O1xyXG5cdFx0dGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZz8uZGVzY3JpcHRpb247XHJcblx0XHR0aGlzLnN0YXR1cyA9IGNvbmZpZz8uc3RhdHVzO1xyXG5cdFx0dGhpcy53aWR0aCA9IGNvbmZpZz8ud2lkdGggfHwgTk9ERV9XSURUSDtcclxuXHRcdHRoaXMuaGVpZ2h0ID0gY29uZmlnPy5oZWlnaHQgfHwgTk9ERV9IRUlHSFQ7XHJcblx0XHR0aGlzLmNvbnRlbnQgPSBjb25maWc/LmNvbnRlbnQ7XHJcblx0XHR0aGlzLmNvbmZpZyA9IGNvbmZpZz8uY29uZmlnO1xyXG5cdFx0dGhpcy5zdHlsZUNsYXNzID0gY29uZmlnPy5zdHlsZUNsYXNzO1xyXG5cdFx0dGhpcy5vcHRpb25zID0gY29uZmlnPy5vcHRpb25zO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -1,8 +1,15 @@
1
1
  import { ClassicPreset } from 'rete';
2
+ import { DiagramUtils } from '../utilities';
2
3
  export class Connection extends ClassicPreset.Connection {
3
- constructor() {
4
- super(...arguments);
5
- this.renderType = 'default';
4
+ constructor(source, target, config) {
5
+ super(source, (config === null || config === void 0 ? void 0 : config.sourceOutput) || DiagramUtils.createOutputId(source.id), target, (config === null || config === void 0 ? void 0 : config.targetInput) || DiagramUtils.createInputId(target.id));
6
+ this.status = (config === null || config === void 0 ? void 0 : config.status) || target.status;
7
+ this.styleClass = config === null || config === void 0 ? void 0 : config.styleClass;
8
+ this.label = config === null || config === void 0 ? void 0 : config.label;
9
+ this.renderType = (config === null || config === void 0 ? void 0 : config.renderType) || 'default';
10
+ this.sourceNode = source;
11
+ this.targetNode = target;
12
+ this.direction = config === null || config === void 0 ? void 0 : config.direction;
6
13
  }
7
14
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZGlhZ3JhbXMvbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdyQyxNQUFNLE9BQU8sVUFFWCxTQUFRLGFBQWEsQ0FBQyxVQUFvQjtJQUY1Qzs7UUFJRSxlQUFVLEdBQTBCLFNBQVMsQ0FBQztJQUVoRCxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJ2ZUZhY3RvcnkgfSBmcm9tICdkMy1zaGFwZSc7XHJcbmltcG9ydCB7IENsYXNzaWNQcmVzZXQgfSBmcm9tICdyZXRlJztcclxuaW1wb3J0IHsgQmFzZU5vZGVDbGFzcyB9IGZyb20gJy4vYmFzZS1ub2RlLm1vZGVsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uPFxyXG4gIE5PRCBleHRlbmRzIEJhc2VOb2RlQ2xhc3MgPSBCYXNlTm9kZUNsYXNzXHJcbj4gZXh0ZW5kcyBDbGFzc2ljUHJlc2V0LkNvbm5lY3Rpb248Tk9ELCBOT0Q+IHtcclxuICBjdXJ2ZT86IEN1cnZlRmFjdG9yeTtcclxuICByZW5kZXJUeXBlPzogJ2RlZmF1bHQnIHwgJ2N1c3RvbScgPSAnZGVmYXVsdCc7XHJcbiAgc3RhdHVzPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZGlhZ3JhbXMvbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU9yQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzVDLE1BQU0sT0FBTyxVQUdYLFNBQVEsYUFBYSxDQUFDLFVBQTBCO0lBYWpELFlBQVksTUFBYyxFQUFFLE1BQWMsRUFBRSxNQUE2QjtRQUN4RSxLQUFLLENBQ0osTUFBTSxFQUNOLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFlBQVksS0FBSSxZQUFZLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFDOUQsTUFBTSxFQUNOLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFdBQVcsS0FBSSxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FDNUQsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxLQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFVBQVUsS0FBSSxTQUFTLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsU0FBUyxDQUFDO0lBQ3BDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1cnZlRmFjdG9yeSB9IGZyb20gJ2QzLXNoYXBlJztcclxuaW1wb3J0IHsgQ2xhc3NpY1ByZXNldCB9IGZyb20gJ3JldGUnO1xyXG5pbXBvcnQge1xyXG4gIENvbm5lY3Rpb25Db25maWdUeXBlLFxyXG4gIENvbm5lY3Rpb25EaXJlY3Rpb25UeXBlLFxyXG4gIENvbm5lY3Rpb25MYWJlbFR5cGUsXHJcbiAgVHJhbnNmb3JtZXJGYWN0b3J5XHJcbn0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBEaWFncmFtVXRpbHMgfSBmcm9tICcuLi91dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBCYXNlTm9kZUNsYXNzIH0gZnJvbSAnLi9iYXNlLW5vZGUubW9kZWwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb248XHJcblx0U291cmNlIGV4dGVuZHMgQmFzZU5vZGVDbGFzcyA9IEJhc2VOb2RlQ2xhc3MsXHJcblx0VGFyZ2V0IGV4dGVuZHMgQmFzZU5vZGVDbGFzcyA9IEJhc2VOb2RlQ2xhc3NcclxuPiBleHRlbmRzIENsYXNzaWNQcmVzZXQuQ29ubmVjdGlvbjxTb3VyY2UsIFRhcmdldD4ge1xyXG5cdGN1cnZlPzogQ3VydmVGYWN0b3J5O1xyXG5cdGNyZWF0ZVNlZ21lbnRlZFBhdGg/OiBUcmFuc2Zvcm1lckZhY3Rvcnk7XHJcblxyXG5cdHJlbmRlclR5cGU/OiAnZGVmYXVsdCcgfCAnY3VzdG9tJztcclxuXHRzdGF0dXM/OiBzdHJpbmc7XHJcblx0c3R5bGVDbGFzcz86IHN0cmluZztcclxuXHRsYWJlbD86IHN0cmluZyB8IENvbm5lY3Rpb25MYWJlbFR5cGU7XHJcblx0c291cmNlTm9kZTogU291cmNlO1xyXG5cdHRhcmdldE5vZGU6IFRhcmdldDtcclxuXHRkaXJlY3Rpb246IENvbm5lY3Rpb25EaXJlY3Rpb25UeXBlO1xyXG5cclxuXHJcblx0Y29uc3RydWN0b3Ioc291cmNlOiBTb3VyY2UsIHRhcmdldDogVGFyZ2V0LCBjb25maWc/OiBDb25uZWN0aW9uQ29uZmlnVHlwZSkge1xyXG5cdFx0c3VwZXIoXHJcblx0XHRcdHNvdXJjZSxcclxuXHRcdFx0Y29uZmlnPy5zb3VyY2VPdXRwdXQgfHwgRGlhZ3JhbVV0aWxzLmNyZWF0ZU91dHB1dElkKHNvdXJjZS5pZCksXHJcblx0XHRcdHRhcmdldCxcclxuXHRcdFx0Y29uZmlnPy50YXJnZXRJbnB1dCB8fCBEaWFncmFtVXRpbHMuY3JlYXRlSW5wdXRJZCh0YXJnZXQuaWQpXHJcblx0XHQpO1xyXG5cdFx0dGhpcy5zdGF0dXMgPSBjb25maWc/LnN0YXR1cyB8fCB0YXJnZXQuc3RhdHVzO1xyXG5cdFx0dGhpcy5zdHlsZUNsYXNzID0gY29uZmlnPy5zdHlsZUNsYXNzO1xyXG5cdFx0dGhpcy5sYWJlbCA9IGNvbmZpZz8ubGFiZWw7XHJcblx0XHR0aGlzLnJlbmRlclR5cGUgPSBjb25maWc/LnJlbmRlclR5cGUgfHwgJ2RlZmF1bHQnO1xyXG5cdFx0dGhpcy5zb3VyY2VOb2RlID0gc291cmNlO1xyXG5cdFx0dGhpcy50YXJnZXROb2RlID0gdGFyZ2V0O1xyXG5cdFx0dGhpcy5kaXJlY3Rpb24gPSBjb25maWc/LmRpcmVjdGlvbjtcclxuXHR9XHJcbn1cclxuIl19
@@ -0,0 +1,11 @@
1
+ import { NODE_GATEWAY_SIZE, NODE_TYPE } from '../constants';
2
+ import { BaseNodeClass } from './base-node.model';
3
+ export class GateWayNode extends BaseNodeClass {
4
+ constructor(config) {
5
+ super(config);
6
+ this.type = NODE_TYPE.gateway;
7
+ this.width = NODE_GATEWAY_SIZE;
8
+ this.height = NODE_GATEWAY_SIZE;
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZS13YXkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL21vZGVscy9nYXRlLXdheS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxNQUFNLE9BQU8sV0FBeUIsU0FBUSxhQUFnQjtJQUs3RCxZQUFZLE1BQTBCO1FBQ3JDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUxmLFNBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ3pCLFVBQUssR0FBVyxpQkFBaUIsQ0FBQztRQUNsQyxXQUFNLEdBQVcsaUJBQWlCLENBQUM7SUFJbkMsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTk9ERV9HQVRFV0FZX1NJWkUsIE5PREVfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IE5vZGVEZWZpbml0aW9uRGF0YSB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZU5vZGVDbGFzcyB9IGZyb20gJy4vYmFzZS1ub2RlLm1vZGVsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBHYXRlV2F5Tm9kZTxUID0gdW5rbm93bj4gZXh0ZW5kcyBCYXNlTm9kZUNsYXNzPFQ+IHtcclxuXHR0eXBlID0gTk9ERV9UWVBFLmdhdGV3YXk7XHJcblx0d2lkdGg6IG51bWJlciA9IE5PREVfR0FURVdBWV9TSVpFO1xyXG5cdGhlaWdodDogbnVtYmVyID0gTk9ERV9HQVRFV0FZX1NJWkU7XHJcblxyXG5cdGNvbnN0cnVjdG9yKGNvbmZpZzogTm9kZURlZmluaXRpb25EYXRhKSB7XHJcblx0XHRzdXBlcihjb25maWcpO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -2,6 +2,7 @@ export * from './base-node.model';
2
2
  export * from './circle-node.model';
3
3
  export * from './connection.model';
4
4
  export * from './content-node.model';
5
+ export * from './ports.model';
5
6
  export * from './socket.model';
6
7
  export * from './template-node.model';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZS1ub2RlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9jaXJjbGUtbm9kZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29ubmVjdGlvbi5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udGVudC1ub2RlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9zb2NrZXQubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlLW5vZGUubW9kZWwnO1xyXG4iXX0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZS1ub2RlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9jaXJjbGUtbm9kZS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29ubmVjdGlvbi5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udGVudC1ub2RlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9wb3J0cy5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc29ja2V0Lm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi90ZW1wbGF0ZS1ub2RlLm1vZGVsJztcclxuIl19
@@ -0,0 +1,14 @@
1
+ import { ClassicPreset } from 'rete';
2
+ export class OutputPort extends ClassicPreset.Output {
3
+ constructor(config) {
4
+ super(config.socket, config === null || config === void 0 ? void 0 : config.label, (config === null || config === void 0 ? void 0 : config.multipleConnections) !== false);
5
+ this.styleClass = config === null || config === void 0 ? void 0 : config.styleClass;
6
+ }
7
+ }
8
+ export class InputPort extends ClassicPreset.Input {
9
+ constructor(config) {
10
+ super(config.socket, config === null || config === void 0 ? void 0 : config.label, (config === null || config === void 0 ? void 0 : config.multipleConnections) !== false);
11
+ this.styleClass = config === null || config === void 0 ? void 0 : config.styleClass;
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydHMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RpYWdyYW1zL21vZGVscy9wb3J0cy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXJDLE1BQU0sT0FBTyxVQUE2QixTQUFRLGFBQWEsQ0FBQyxNQUFTO0lBRXhFLFlBQVksTUFBMEI7UUFDckMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxtQkFBbUIsTUFBSyxLQUFLLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxVQUFVLENBQUM7SUFDdEMsQ0FBQztDQUNEO0FBRUQsTUFBTSxPQUFPLFNBQTRCLFNBQVEsYUFBYSxDQUFDLEtBQVE7SUFFdEUsWUFBWSxNQUEwQjtRQUNyQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsS0FBSyxFQUFFLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLG1CQUFtQixNQUFLLEtBQUssQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFVBQVUsQ0FBQztJQUN0QyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGFzc2ljUHJlc2V0IH0gZnJvbSAncmV0ZSc7XHJcbmltcG9ydCB7IFBvcnRNb2RlbENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnLi9zb2NrZXQubW9kZWwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIE91dHB1dFBvcnQ8UyBleHRlbmRzIFNvY2tldD4gZXh0ZW5kcyBDbGFzc2ljUHJlc2V0Lk91dHB1dDxTPiB7XHJcblx0c3R5bGVDbGFzcz86IHN0cmluZztcclxuXHRjb25zdHJ1Y3Rvcihjb25maWc6IFBvcnRNb2RlbENvbmZpZzxTPikge1xyXG5cdFx0c3VwZXIoY29uZmlnLnNvY2tldCwgY29uZmlnPy5sYWJlbCwgY29uZmlnPy5tdWx0aXBsZUNvbm5lY3Rpb25zICE9PSBmYWxzZSk7XHJcblx0XHR0aGlzLnN0eWxlQ2xhc3MgPSBjb25maWc/LnN0eWxlQ2xhc3M7XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5wdXRQb3J0PFMgZXh0ZW5kcyBTb2NrZXQ+IGV4dGVuZHMgQ2xhc3NpY1ByZXNldC5JbnB1dDxTPiB7XHJcblx0c3R5bGVDbGFzcz86IHN0cmluZztcclxuXHRjb25zdHJ1Y3Rvcihjb25maWc6IFBvcnRNb2RlbENvbmZpZzxTPikge1xyXG5cdFx0c3VwZXIoY29uZmlnLnNvY2tldCwgY29uZmlnPy5sYWJlbCwgY29uZmlnPy5tdWx0aXBsZUNvbm5lY3Rpb25zICE9PSBmYWxzZSk7XHJcblx0XHR0aGlzLnN0eWxlQ2xhc3MgPSBjb25maWc/LnN0eWxlQ2xhc3M7XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -1,8 +1,9 @@
1
1
  import { ClassicPreset } from 'rete';
2
2
  export class Socket extends ClassicPreset.Socket {
3
- constructor(name, renderType = 'default') {
4
- super(name);
5
- this.renderType = renderType;
3
+ constructor(config) {
4
+ super(config.name);
5
+ this.renderType = (config === null || config === void 0 ? void 0 : config.renderType) || 'default';
6
+ this.styleClass = config === null || config === void 0 ? void 0 : config.styleClass;
6
7
  }
7
8
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaWFncmFtcy9tb2RlbHMvc29ja2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsTUFBTSxPQUFPLE1BQU8sU0FBUSxhQUFhLENBQUMsTUFBTTtJQUM5QyxZQUFZLElBQVksRUFBUyxhQUFtQyxTQUFTO1FBQzNFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQURtQixlQUFVLEdBQVYsVUFBVSxDQUFrQztJQUU3RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGFzc2ljUHJlc2V0IH0gZnJvbSAncmV0ZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU29ja2V0IGV4dGVuZHMgQ2xhc3NpY1ByZXNldC5Tb2NrZXQge1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcHVibGljIHJlbmRlclR5cGU6ICdkZWZhdWx0JyB8ICdjdXN0b20nID0gJ2RlZmF1bHQnKSB7XHJcbiAgICBzdXBlcihuYW1lKTtcclxuICB9XHJcbn1cclxuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaWFncmFtcy9tb2RlbHMvc29ja2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckMsTUFBTSxPQUFPLE1BQU8sU0FBUSxhQUFhLENBQUMsTUFBTTtJQUcvQyxZQUFZLE1BQW9CO1FBQy9CLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxVQUFVLEtBQUksU0FBUyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFVBQVUsQ0FBRTtJQUN6QyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGFzc2ljUHJlc2V0IH0gZnJvbSAncmV0ZSc7XHJcbmltcG9ydCB7IFNvY2tldENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBTb2NrZXQgZXh0ZW5kcyBDbGFzc2ljUHJlc2V0LlNvY2tldCB7XHJcblx0cmVuZGVyVHlwZTogJ2RlZmF1bHQnIHwgJ2N1c3RvbScgO1xyXG5cdHN0eWxlQ2xhc3M/OiBzdHJpbmc7XHJcblx0Y29uc3RydWN0b3IoY29uZmlnOiBTb2NrZXRDb25maWcpIHtcclxuXHRcdHN1cGVyKGNvbmZpZy5uYW1lKTtcclxuICAgIHRoaXMucmVuZGVyVHlwZSA9IGNvbmZpZz8ucmVuZGVyVHlwZSB8fCAnZGVmYXVsdCc7XHJcbiAgICB0aGlzLnN0eWxlQ2xhc3MgPSBjb25maWc/LnN0eWxlQ2xhc3MgO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -1,11 +1,10 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Injectable } from '@angular/core';
3
- import { ClassicPreset } from 'rete';
4
3
  import { Subject } from 'rxjs';
5
4
  import { NODE_CIRCLE_SIZE, NODE_TYPE, NOTIFY_EVENT } from '../constants';
6
5
  import { initNodeByType } from '../editor';
7
- import { Connection } from '../models';
8
- import { removeNode } from '../utilities';
6
+ import { Connection, InputPort, OutputPort } from '../models';
7
+ import { DiagramUtils, removeNode, removeNodeAndConnections } from '../utilities';
9
8
  import * as i0 from "@angular/core";
10
9
  import * as i1 from "./diagram-plugins.service";
11
10
  export class DiagramService {
@@ -24,6 +23,9 @@ export class DiagramService {
24
23
  this.destroy = editor.destroy;
25
24
  this.fitToZoom = editor.fitToZoom;
26
25
  }
26
+ diagramClientRect() {
27
+ return this.plugins.area.container.getBoundingClientRect();
28
+ }
27
29
  getContentNodes() {
28
30
  return this.editor
29
31
  .getNodes()
@@ -48,10 +50,22 @@ export class DiagramService {
48
50
  createNode(type = NODE_TYPE.content, config) {
49
51
  const _node = initNodeByType(type, config);
50
52
  if (config.type !== NODE_TYPE.start) {
51
- this.createInputs(_node);
53
+ this.createInput(_node, DiagramUtils.createInputId(_node.id), {
54
+ styleClass: DiagramUtils.createInputClass()
55
+ });
52
56
  }
53
57
  if (config.type !== NODE_TYPE.end) {
54
- this.createOutputs(_node);
58
+ this.createOutput(_node, DiagramUtils.createOutputId(_node.id), {
59
+ styleClass: DiagramUtils.createOutputClass()
60
+ });
61
+ }
62
+ if (config.type === NODE_TYPE.gateway) {
63
+ this._creteGatewayOutput(_node);
64
+ }
65
+ if ([NODE_TYPE.content, NODE_TYPE.template].includes(config.type)) {
66
+ const contentPorts = ['secondary', 'tertiary', 'quaternary'];
67
+ DiagramUtils.createInputsConfig(_node.id, contentPorts).forEach(({ id, config }) => this.createInput(_node, id, config));
68
+ DiagramUtils.createOutputsConfig(_node.id, contentPorts).forEach(({ id, config }) => this.createOutput(_node, id, config));
55
69
  }
56
70
  _node.notify = this.notifyListener(_node);
57
71
  return _node;
@@ -64,6 +78,18 @@ export class DiagramService {
64
78
  const _isExist = _nodes.some((nd) => nd.type === NODE_TYPE.start);
65
79
  return !_isExist;
66
80
  }
81
+ getNode(id) {
82
+ return this.editor.getNode(id);
83
+ }
84
+ getNodes() {
85
+ return this.editor.getNodes();
86
+ }
87
+ getConnections() {
88
+ return this.editor.getConnections();
89
+ }
90
+ getConnection(id) {
91
+ return this.editor.getConnection(id);
92
+ }
67
93
  getLastNode() {
68
94
  const nodes = this.editor.getNodes();
69
95
  return nodes.length ? nodes[nodes.length - 1] : null;
@@ -71,27 +97,35 @@ export class DiagramService {
71
97
  getNodesByType(type) {
72
98
  return this.editor.getNodes().filter((nd) => nd.type === type);
73
99
  }
100
+ getViewNodes() {
101
+ return Array.from(this.plugins.area.nodeViews.values());
102
+ }
74
103
  getLastViewNode() {
75
- const nodes = Array.from(this.plugins.area.nodeViews.values());
104
+ const nodes = this.getViewNodes();
76
105
  return nodes.length ? nodes[nodes.length - 1] : null;
77
106
  }
78
- createInputs(node) {
79
- node.addInput(`${node.id}-input`, new ClassicPreset.Input(this.socket));
107
+ getViewNode(id) {
108
+ return this.plugins.area.nodeViews.get(id);
109
+ }
110
+ getViewNodePosition(id) {
111
+ const node = this.getViewNode(id);
112
+ return node ? node.position : null;
113
+ }
114
+ createInput(node, id = `${node.id}-input`, config) {
115
+ node.addInput(id, new InputPort(Object.assign({ socket: this.socket }, config)));
80
116
  return node;
81
117
  }
82
- createOutputs(node) {
83
- node.addOutput(`${node.id}-output`, new ClassicPreset.Output(this.socket, '', false));
118
+ createOutput(node, id = `${node.id}-output`, config) {
119
+ node.addOutput(id, new OutputPort(Object.assign({ socket: this.socket }, config)));
84
120
  return node;
85
121
  }
86
- addConnection(sourceNode, targetNode) {
122
+ addConnection(sourceNode, targetNode, config) {
87
123
  return __awaiter(this, void 0, void 0, function* () {
88
- yield this.editor.addConnection(this.createConnection(sourceNode, targetNode));
124
+ yield this.editor.addConnection(this.createConnection(sourceNode, targetNode, config));
89
125
  });
90
126
  }
91
- createConnection(sourceNode, targetNode) {
92
- const connection = new Connection(sourceNode, `${sourceNode.id}-output`, targetNode, `${targetNode.id}-input`);
93
- connection.status = targetNode.status;
94
- return connection;
127
+ createConnection(sourceNode, targetNode, config) {
128
+ return new Connection(sourceNode, targetNode, config);
95
129
  }
96
130
  appendConnection(connection) {
97
131
  return __awaiter(this, void 0, void 0, function* () {
@@ -112,11 +146,36 @@ export class DiagramService {
112
146
  return (eventType, payload) => {
113
147
  var _a;
114
148
  const _actions = {
115
- [NOTIFY_EVENT.remove]: this._removeNode.bind(this),
149
+ [NOTIFY_EVENT.remove]: this._removeNode.bind(this)
116
150
  };
117
151
  return (_a = _actions[eventType]) === null || _a === void 0 ? void 0 : _a.call(_actions, payload);
118
152
  };
119
153
  }
154
+ translateView() {
155
+ return __awaiter(this, void 0, void 0, function* () {
156
+ const { container, area } = this.plugins.area;
157
+ const rect = container.getBoundingClientRect();
158
+ const k = area.transform.k;
159
+ const delta = -0.2;
160
+ const ox = Math.max(0, (rect.left - container.clientWidth / 2) * k);
161
+ const oy = Math.max(0, (rect.top - container.clientHeight / 2) * k);
162
+ area.zoom(Math.max(0.1, k * (1 + delta)), ox * delta, oy * delta);
163
+ });
164
+ }
165
+ removeEndNode() {
166
+ return __awaiter(this, void 0, void 0, function* () {
167
+ const node = this.getNodesByType(NODE_TYPE.end)[0];
168
+ if (node) {
169
+ yield removeNodeAndConnections(node, this.editor);
170
+ }
171
+ });
172
+ }
173
+ _creteGatewayOutput(_node) {
174
+ DiagramUtils.createOutputsConfig(_node.id, [
175
+ 'secondary',
176
+ 'tertiary'
177
+ ]).forEach((input) => this.createOutput(_node, input.id, input === null || input === void 0 ? void 0 : input.config));
178
+ }
120
179
  _removeNode(data) {
121
180
  return __awaiter(this, void 0, void 0, function* () {
122
181
  const node = this.editor.getNode(data.nodeId);
@@ -154,21 +213,10 @@ export class DiagramService {
154
213
  this.plugins.readonly.enable();
155
214
  });
156
215
  }
157
- translateView() {
158
- return __awaiter(this, void 0, void 0, function* () {
159
- const { container, area } = this.plugins.area;
160
- const rect = container.getBoundingClientRect();
161
- const k = area.transform.k;
162
- const delta = -0.2;
163
- const ox = Math.max(0, (rect.left - container.clientWidth / 2) * k);
164
- const oy = Math.max(0, (rect.top - container.clientHeight / 2) * k);
165
- area.zoom(Math.max(0.1, k * (1 + delta)), ox * delta, oy * delta);
166
- });
167
- }
168
216
  }
169
217
  DiagramService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramService, deps: [{ token: i1.DiagramPluginsService }], target: i0.ɵɵFactoryTarget.Injectable });
170
218
  DiagramService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramService });
171
219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramService, decorators: [{
172
220
  type: Injectable
173
221
  }], ctorParameters: function () { return [{ type: i1.DiagramPluginsService }]; } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaWFncmFtcy9zZXJ2aWNlcy9kaWFncmFtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFpQixVQUFVLEVBQWUsTUFBTSxXQUFXLENBQUM7QUFRbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBSTFDLE1BQU0sT0FBTyxjQUFjO0lBVXpCOztPQUVHO0lBQ0gsWUFBbUIsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFaekMsZUFBVSxHQUFHLElBQUksT0FBTyxFQUE0QixDQUFDO1FBSzdELGFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBT1UsQ0FBQztJQUVyRCxTQUFTLENBQUMsTUFBZ0M7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFP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UyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVwRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3BFLENBQUM7S0FBQTs7NEdBaE1VLGNBQWM7Z0hBQWQsY0FBYzs0RkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDbGFzc2ljUHJlc2V0LCBOb2RlRWRpdG9yIH0gZnJvbSAncmV0ZSc7XHJcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAncmV0ZS1hcmVhLXBsdWdpbi9fdHlwZXMvdHlwZXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5PREVfQ0lSQ0xFX1NJWkUsIE5PREVfVFlQRSwgTk9USUZZX0VWRU5UIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgaW5pdE5vZGVCeVR5cGUgfSBmcm9tICcuLi9lZGl0b3InO1xyXG5pbXBvcnQgeyBCYXNlTm9kZUNsYXNzLCBDb25uZWN0aW9uLCBDb250ZW50Tm9kZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7XHJcbiAgRGlhZ3JhbUVkaXRvcldpdGhQbHVnaW5zLFxyXG4gIE5vZGVEZWZpbml0aW9uRGF0YSxcclxuICBOb2RlVHlwZSxcclxuICBOb3RpZnlFdmVudFR5cGUsXHJcbiAgU2NoZW1lcyxcclxufSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7IHJlbW92ZU5vZGUgfSBmcm9tICcuLi91dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBEaWFncmFtUGx1Z2luc1NlcnZpY2UgfSBmcm9tICcuL2RpYWdyYW0tcGx1Z2lucy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERpYWdyYW1TZXJ2aWNlIHtcclxuICBwcml2YXRlIF9lZGl0b3JTdWIgPSBuZXcgU3ViamVjdDxEaWFncmFtRWRpdG9yV2l0aFBsdWdpbnM+KCk7XHJcblxyXG4gIHB1YmxpYyBlZGl0b3IhOiBOb2RlRWRpdG9yPFNjaGVtZXM+O1xyXG4gIHB1YmxpYyBzb2NrZXQhOiBDbGFzc2ljUHJlc2V0LlNvY2tldDtcclxuXHJcbiAgb25SZWFkeSQgPSB0aGlzLl9lZGl0b3JTdWIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgZGVzdHJveSE6ICgpID0+IHZvaWQ7XHJcbiAgZml0VG9ab29tITogKCkgPT4gdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGx1Z2luczogRGlhZ3JhbVBsdWdpbnNTZXJ2aWNlKSB7fVxyXG5cclxuICBzZXRFZGl0b3IoZWRpdG9yOiBEaWFncmFtRWRpdG9yV2l0aFBsdWdpbnMpIHtcclxuICAgIHRoaXMuX2VkaXRvclN1Yi5uZXh0KGVkaXRvcik7XHJcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvci5lZGl0b3I7XHJcbiAgICB0aGlzLnNvY2tldCA9IGVkaXRvci5zb2NrZXQ7XHJcbiAgICB0aGlzLmRlc3Ryb3kgPSBlZGl0b3IuZGVzdHJveTtcclxuICAgIHRoaXMuZml0VG9ab29tID0gZWRpdG9yLmZpdFRvWm9vbTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnROb2RlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclxyXG4gICAgICAuZ2V0Tm9kZXMoKVxyXG4gICAgICAuZmlsdGVyKChuZCkgPT4gIVtOT0RFX1RZUEUuc3RhcnQsIE5PREVfVFlQRS5lbmRdLmluY2x1ZGVzKG5kLnR5cGUgYXMgYW55KSk7XHJcbiAgfVxyXG5cclxuICBnZXROb2Rlc0RhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDb250ZW50Tm9kZXMoKS5tYXAoKG5vZGUpID0+IG5vZGUuY29udGVudC5kYXRhKTtcclxuICB9XHJcblxyXG4gIGNhbkFkZE5vZGUobm9kZVR5cGU6IE5vZGVUeXBlKSB7XHJcbiAgICBpZiAobm9kZVR5cGUgPT09IE5PREVfVFlQRS5jb250ZW50KSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgX25vZGVzID0gdGhpcy5lZGl0b3IuZ2V0Tm9kZXMoKTtcclxuICAgIGNvbnN0IF9pc0V4aXN0ID0gX25vZGVzLnNvbWUoKG5kKSA9PiAobmQgYXMgQmFzZU5vZGVDbGFzcykudHlwZSA9PT0gbm9kZVR5cGUpO1xyXG4gICAgcmV0dXJuICFfaXNFeGlzdDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFkZE5vZGUobm9kZTogQmFzZU5vZGVDbGFzcykge1xyXG4gICAgYXdhaXQgdGhpcy5lZGl0b3IuYWRkTm9kZShub2RlKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU5vZGU8VCBleHRlbmRzIEJhc2VOb2RlQ2xhc3MgPSBDb250ZW50Tm9kZT4oXHJcbiAgICB0eXBlOiBOb2RlVHlwZSA9IE5PREVfVFlQRS5jb250ZW50LFxyXG4gICAgY29uZmlnOiBOb2RlRGVmaW5pdGlvbkRhdGFcclxuICApOiBUIHtcclxuICAgIGNvbnN0IF9ub2RlID0gaW5pdE5vZGVCeVR5cGUodHlwZSwgY29uZmlnKTtcclxuXHJcbiAgICBpZiAoY29uZmlnLnR5cGUgIT09IE5PREVfVFlQRS5zdGFydCkge1xyXG4gICAgICB0aGlzLmNyZWF0ZUlucHV0cyhfbm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZy50eXBlICE9PSBOT0RFX1RZUEUuZW5kKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlT3V0cHV0cyhfbm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX25vZGUubm90aWZ5ID0gdGhpcy5ub3RpZnlMaXN0ZW5lcihfbm9kZSk7XHJcblxyXG4gICAgcmV0dXJuIF9ub2RlIGFzIFQ7XHJcbiAgfVxyXG5cclxuICBzaG91bGRBZGRTdGFydChub2RlVHlwZTogc3RyaW5nKSB7XHJcbiAgICBpZiAobm9kZVR5cGUgPT09IE5PREVfVFlQRS5zdGFydCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBfbm9kZXMgPSB0aGlzLmVkaXRvci5nZXROb2RlcygpO1xyXG4gICAgY29uc3QgX2lzRXhpc3QgPSBfbm9kZXMuc29tZSgobmQpID0+IChuZCBhcyBCYXNlTm9kZUNsYXNzKS50eXBlID09PSBOT0RFX1RZUEUuc3RhcnQpO1xyXG5cclxuICAgIHJldHVybiAhX2lzRXhpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRMYXN0Tm9kZSgpIHtcclxuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5lZGl0b3IuZ2V0Tm9kZXMoKTtcclxuICAgIHJldHVybiBub2Rlcy5sZW5ndGggPyBub2Rlc1tub2Rlcy5sZW5ndGggLSAxXSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXROb2Rlc0J5VHlwZSh0eXBlOiBOb2RlVHlwZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmdldE5vZGVzKCkuZmlsdGVyKChuZCkgPT4gbmQudHlwZSA9PT0gdHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXRMYXN0Vmlld05vZGUoKSB7XHJcbiAgICBjb25zdCBub2RlcyA9IEFycmF5LmZyb20odGhpcy5wbHVnaW5zLmFyZWEubm9kZVZpZXdzLnZhbHVlcygpKTtcclxuICAgIHJldHVybiBub2Rlcy5sZW5ndGggPyBub2Rlc1tub2Rlcy5sZW5ndGggLSAxXSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVJbnB1dHMobm9kZTogQmFzZU5vZGVDbGFzcykge1xyXG4gICAgbm9kZS5hZGRJbnB1dChgJHtub2RlLmlkfS1pbnB1dGAsIG5ldyBDbGFzc2ljUHJlc2V0LklucHV0KHRoaXMuc29ja2V0KSk7XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU91dHB1dHMobm9kZTogQmFzZU5vZGVDbGFzcykge1xyXG4gICAgbm9kZS5hZGRPdXRwdXQoYCR7bm9kZS5pZH0tb3V0cHV0YCwgbmV3IENsYXNzaWNQcmVzZXQuT3V0cHV0KHRoaXMuc29ja2V0LCAnJywgZmFsc2UpKTtcclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWRkQ29ubmVjdGlvbihzb3VyY2VOb2RlOiBCYXNlTm9kZUNsYXNzLCB0YXJnZXROb2RlOiBCYXNlTm9kZUNsYXNzKSB7XHJcbiAgICBhd2FpdCB0aGlzLmVkaXRvci5hZGRDb25uZWN0aW9uKHRoaXMuY3JlYXRlQ29ubmVjdGlvbihzb3VyY2VOb2RlLCB0YXJnZXROb2RlKSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDb25uZWN0aW9uKHNvdXJjZU5vZGU6IEJhc2VOb2RlQ2xhc3MsIHRhcmdldE5vZGU6IEJhc2VOb2RlQ2xhc3MpIHtcclxuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBuZXcgQ29ubmVjdGlvbihcclxuICAgICAgc291cmNlTm9kZSxcclxuICAgICAgYCR7c291cmNlTm9kZS5pZH0tb3V0cHV0YCxcclxuICAgICAgdGFyZ2V0Tm9kZSxcclxuICAgICAgYCR7dGFyZ2V0Tm9kZS5pZH0taW5wdXRgXHJcbiAgICApO1xyXG4gICAgY29ubmVjdGlvbi5zdGF0dXMgPSB0YXJnZXROb2RlLnN0YXR1cztcclxuICAgIHJldHVybiBjb25uZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXBwZW5kQ29ubmVjdGlvbihjb25uZWN0aW9uOiBDb25uZWN0aW9uKSB7XHJcbiAgICBhd2FpdCB0aGlzLmVkaXRvci5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2xlYXIoKSB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5lZGl0b3IuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIHJlZHJhdygpIHtcclxuICAgIHRoaXMuZWRpdG9yLmdldE5vZGVzKCkuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICB0aGlzLnBsdWdpbnMuYXJlYS51cGRhdGUoJ25vZGUnLCBub2RlLmlkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbm90aWZ5TGlzdGVuZXIobm9kZTogQmFzZU5vZGVDbGFzcykge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZXZlbnRUeXBlOiBOb3RpZnlFdmVudFR5cGUsXHJcbiAgICAgIHBheWxvYWQ6IE5vdGlmeUV2ZW50VHlwZSBleHRlbmRzICdyZW1vdmUnID8geyBub2RlSWQ6IHN0cmluZyB9IDogUmVjb3JkPHN0cmluZywgYW55PlxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGNvbnN0IF9hY3Rpb25zID0ge1xyXG4gICAgICAgIFtOT1RJRllfRVZFTlQucmVtb3ZlXTogdGhpcy5fcmVtb3ZlTm9kZS5iaW5kKHRoaXMpLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgcmV0dXJuIF9hY3Rpb25zW2V2ZW50VHlwZV0/LihwYXlsb2FkIGFzIHsgbm9kZUlkOiBzdHJpbmcgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfcmVtb3ZlTm9kZShkYXRhOiB7IG5vZGVJZDogc3RyaW5nIH0pIHtcclxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmVkaXRvci5nZXROb2RlKGRhdGEubm9kZUlkKTtcclxuICAgIGlmICghbm9kZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgdmlld05vZGUgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5wbHVnaW5zLmFyZWEubm9kZVZpZXdzLmdldChpZCk7XHJcblxyXG4gICAgbGV0IGNvbmZpZyA9IG5vZGUuY29uZmlnO1xyXG4gICAgbGV0IGluZGV4ID0gbnVsbDtcclxuICAgIGxldCBwb3NpdGlvbjogUG9zaXRpb24gPSBudWxsO1xyXG4gICAgbGV0IGRpcmVjdGlvbiA9IG51bGw7XHJcbiAgICBpZiAoY29uZmlnLmlzTGlua2VkKSB7XHJcbiAgICAgIGluZGV4ID0gdGhpcy5lZGl0b3IuZ2V0Tm9kZXMoKS5maW5kSW5kZXgoKG5kKSA9PiBuZC5pZCA9PT0gZGF0YS5ub2RlSWQpO1xyXG4gICAgICBwb3NpdGlvbiA9IHZpZXdOb2RlKGRhdGEubm9kZUlkKS5wb3NpdGlvbjtcclxuICAgICAgZGlyZWN0aW9uID0gbm9kZS5kaXJlY3Rpb25zO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wbHVnaW5zLnJlYWRvbmx5LmRpc2FibGUoKTtcclxuICAgIGF3YWl0IHJlbW92ZU5vZGUoZGF0YSwgdGhpcy5lZGl0b3IpO1xyXG5cclxuICAgIGlmIChjb25maWcuaXNMaW5rZWQpIHtcclxuICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmVkaXRvci5nZXROb2RlcygpLnNsaWNlKGluZGV4KTtcclxuXHJcbiAgICAgIHdoaWxlIChub2Rlcy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBfbm9kZSA9IG5vZGVzLnNoaWZ0KCk7XHJcbiAgICAgICAgY29uc3QgX2RpciA9IHsgLi4uX25vZGUuZGlyZWN0aW9ucyB9O1xyXG4gICAgICAgIGNvbnN0IF9wb3NpdGlvbiA9IHsgLi4udmlld05vZGUoX25vZGUuaWQpLnBvc2l0aW9uIH07XHJcbiAgICAgICAgX25vZGUuZGlyZWN0aW9ucyA9IGRpcmVjdGlvbjtcclxuICAgICAgICBpZiAoX25vZGUudHlwZSA9PSBOT0RFX1RZUEUuZW5kKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi55ID0gTWF0aC5hYnMoXHJcbiAgICAgICAgICAgIE1hdGguZmxvb3IocG9zaXRpb24ueSAtIChfbm9kZS5oZWlnaHQgLSBOT0RFX0NJUkNMRV9TSVpFKSAvIDIpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbnMuYXJlYS50cmFuc2xhdGUoX25vZGUuaWQsIHBvc2l0aW9uKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbnMuYXJlYS51cGRhdGUoJ25vZGUnLCBfbm9kZS5pZCk7XHJcbiAgICAgICAgcG9zaXRpb24gPSBfcG9zaXRpb247XHJcbiAgICAgICAgZGlyZWN0aW9uID0gX2RpcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5wbHVnaW5zLnJlYWRvbmx5LmVuYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdHJhbnNsYXRlVmlldygpIHtcclxuICAgIGNvbnN0IHsgY29udGFpbmVyLCBhcmVhIH0gPSB0aGlzLnBsdWdpbnMuYXJlYTtcclxuICAgIGNvbnN0IHJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBrID0gYXJlYS50cmFuc2Zvcm0uaztcclxuICAgIGNvbnN0IGRlbHRhID0gLTAuMjtcclxuICAgIGNvbnN0IG94ID0gTWF0aC5tYXgoMCwgKHJlY3QubGVmdCAtIGNvbnRhaW5lci5jbGllbnRXaWR0aCAvIDIpICogayk7XHJcbiAgICBjb25zdCBveSA9IE1hdGgubWF4KDAsIChyZWN0LnRvcCAtIGNvbnRhaW5lci5jbGllbnRIZWlnaHQgLyAyKSAqIGspO1xyXG5cclxuICAgIGFyZWEuem9vbShNYXRoLm1heCgwLjEsIGsgKiAoMSArIGRlbHRhKSksIG94ICogZGVsdGEsIG95ICogZGVsdGEpO1xyXG4gIH1cclxufVxyXG4iXX0=
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ3JhbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kaWFncmFtcy9zZXJ2aWNlcy9kaWFncmFtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNDLE9BQU8sRUFFTCxVQUFVLEVBRVYsU0FBUyxFQUNULFVBQVUsRUFFWCxNQUFNLFdBQVcsQ0FBQztBQVluQixPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVix3QkFBd0IsRUFDekIsTUFBTSxjQUFjLENBQUM7OztBQUl0QixNQUFNLE9BQU8sY0FBYztJQVUxQjs7T0FFRztJQUNILFlBQW1CLE9BQThCO1FBQTlCLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBWnpDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQUs3RCxhQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQU9VLENBQUM7SUFFckQsU0FBUyxDQUFDLE1BQWdDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FB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LENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzlELENBQUM7cUJBQ0Y7b0JBQ0QsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDdEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDakQsUUFBUSxHQUFHLFNBQVMsQ0FBQztvQkFDckIsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDakI7YUFDRDtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLENBQUM7S0FBQTs7NEdBcFNXLGNBQWM7Z0hBQWQsY0FBYzs0RkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb2RlRWRpdG9yIH0gZnJvbSAncmV0ZSc7XHJcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAncmV0ZS1hcmVhLXBsdWdpbi9fdHlwZXMvdHlwZXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5PREVfQ0lSQ0xFX1NJWkUsIE5PREVfVFlQRSwgTk9USUZZX0VWRU5UIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgaW5pdE5vZGVCeVR5cGUgfSBmcm9tICcuLi9lZGl0b3InO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VOb2RlQ2xhc3MsXHJcbiAgQ29ubmVjdGlvbixcclxuICBDb250ZW50Tm9kZSxcclxuICBJbnB1dFBvcnQsXHJcbiAgT3V0cHV0UG9ydCxcclxuICBTb2NrZXRcclxufSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG4gIENvbm5lY3Rpb25Db25maWdUeXBlLFxyXG4gIERpYWdyYW1FZGl0b3JXaXRoUGx1Z2lucyxcclxuICBJbnB1dENvbmZpZ1R5cGUsXHJcbiAgTm9kZURlZmluaXRpb25EYXRhLFxyXG4gIE5vZGVUeXBlLFxyXG4gIE5vdGlmeUV2ZW50VHlwZSxcclxuICBPdXRwdXRDb25maWdUeXBlLFxyXG4gIFBvcnRUeXBlLFxyXG4gIFNjaGVtZXNcclxufSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgRGlhZ3JhbVV0aWxzLFxyXG4gIHJlbW92ZU5vZGUsXHJcbiAgcmVtb3ZlTm9kZUFuZENvbm5lY3Rpb25zXHJcbn0gZnJvbSAnLi4vdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgRGlhZ3JhbVBsdWdpbnNTZXJ2aWNlIH0gZnJvbSAnLi9kaWFncmFtLXBsdWdpbnMuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEaWFncmFtU2VydmljZSB7XHJcblx0cHJpdmF0ZSBfZWRpdG9yU3ViID0gbmV3IFN1YmplY3Q8RGlhZ3JhbUVkaXRvcldpdGhQbHVnaW5zPigpO1xyXG5cclxuXHRwdWJsaWMgZWRpdG9yITogTm9kZUVkaXRvcjxTY2hlbWVzPjtcclxuXHRwdWJsaWMgc29ja2V0ITogU29ja2V0O1xyXG5cclxuXHRvblJlYWR5JCA9IHRoaXMuX2VkaXRvclN1Yi5hc09ic2VydmFibGUoKTtcclxuXHRkZXN0cm95ITogKCkgPT4gdm9pZDtcclxuXHRmaXRUb1pvb20hOiAoKSA9PiB2b2lkO1xyXG5cclxuXHQvKipcclxuXHQgKlxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBwbHVnaW5zOiBEaWFncmFtUGx1Z2luc1NlcnZpY2UpIHt9XHJcblxyXG5cdHNldEVkaXRvcihlZGl0b3I6IERpYWdyYW1FZGl0b3JXaXRoUGx1Z2lucykge1xyXG5cdFx0dGhpcy5fZWRpdG9yU3ViLm5leHQoZWRpdG9yKTtcclxuXHRcdHRoaXMuZWRpdG9yID0gZWRpdG9yLmVkaXRvcjtcclxuXHRcdHRoaXMuc29ja2V0ID0gZWRpdG9yLnNvY2tldDtcclxuXHRcdHRoaXMuZGVzdHJveSA9IGVkaXRvci5kZXN0cm95O1xyXG5cdFx0dGhpcy5maXRUb1pvb20gPSBlZGl0b3IuZml0VG9ab29tO1xyXG5cdH1cclxuXHJcblx0ZGlhZ3JhbUNsaWVudFJlY3QoKTogRE9NUmVjdCB8IHVuZGVmaW5lZCB7XHJcblx0XHRyZXR1cm4gdGhpcy5wbHVnaW5zLmFyZWEuY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdH1cclxuXHJcblx0Z2V0Q29udGVudE5vZGVzKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWRpdG9yXHJcblx0XHRcdC5nZXROb2RlcygpXHJcblx0XHRcdC5maWx0ZXIoXHJcblx0XHRcdFx0KG5kKSA9PiAhW05PREVfVFlQRS5zdGFydCwgTk9ERV9UWVBFLmVuZF0uaW5jbHVkZXMobmQudHlwZSBhcyBhbnkpXHJcblx0XHRcdCk7XHJcblx0fVxyXG5cclxuXHRnZXROb2Rlc0RhdGEoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5nZXRDb250ZW50Tm9kZXMoKS5tYXAoKG5vZGUpID0+IG5vZGUuY29udGVudC5kYXRhKTtcclxuXHR9XHJcblxyXG5cdGNhbkFkZE5vZGUobm9kZVR5cGU6IE5vZGVUeXBlKSB7XHJcblx0XHRpZiAobm9kZVR5cGUgPT09IE5PREVfVFlQRS5jb250ZW50KSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgX25vZGVzID0gdGhpcy5lZGl0b3IuZ2V0Tm9kZXMoKTtcclxuXHRcdGNvbnN0IF9pc0V4aXN0ID0gX25vZGVzLnNvbWUoXHJcblx0XHRcdChuZCkgPT4gKG5kIGFzIEJhc2VOb2RlQ2xhc3MpLnR5cGUgPT09IG5vZGVUeXBlXHJcblx0XHQpO1xyXG5cdFx0cmV0dXJuICFfaXNFeGlzdDtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGFkZE5vZGUobm9kZTogQmFzZU5vZGVDbGFzcykge1xyXG5cdFx0YXdhaXQgdGhpcy5lZGl0b3IuYWRkTm9kZShub2RlKTtcclxuXHR9XHJcblxyXG5cdGNyZWF0ZU5vZGU8VCBleHRlbmRzIEJhc2VOb2RlQ2xhc3MgPSBDb250ZW50Tm9kZT4oXHJcblx0XHR0eXBlOiBOb2RlVHlwZSA9IE5PREVfVFlQRS5jb250ZW50LFxyXG5cdFx0Y29uZmlnOiBOb2RlRGVmaW5pdGlvbkRhdGFcclxuXHQpOiBUIHtcclxuXHRcdGNvbnN0IF9ub2RlID0gaW5pdE5vZGVCeVR5cGUodHlwZSwgY29uZmlnKTtcclxuXHJcblx0XHRpZiAoY29uZmlnLnR5cGUgIT09IE5PREVfVFlQRS5zdGFydCkge1xyXG5cdFx0XHR0aGlzLmNyZWF0ZUlucHV0KF9ub2RlLCBEaWFncmFtVXRpbHMuY3JlYXRlSW5wdXRJZChfbm9kZS5pZCksIHtcclxuXHRcdFx0XHRzdHlsZUNsYXNzOiBEaWFncmFtVXRpbHMuY3JlYXRlSW5wdXRDbGFzcygpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjb25maWcudHlwZSAhPT0gTk9ERV9UWVBFLmVuZCkge1xyXG5cdFx0XHR0aGlzLmNyZWF0ZU91dHB1dChfbm9kZSwgRGlhZ3JhbVV0aWxzLmNyZWF0ZU91dHB1dElkKF9ub2RlLmlkKSwge1xyXG5cdFx0XHRcdHN0eWxlQ2xhc3M6IERpYWdyYW1VdGlscy5jcmVhdGVPdXRwdXRDbGFzcygpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjb25maWcudHlwZSA9PT0gTk9ERV9UWVBFLmdhdGV3YXkpIHtcclxuXHRcdFx0dGhpcy5fY3JldGVHYXRld2F5T3V0cHV0PFQ+KF9ub2RlKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoW05PREVfVFlQRS5jb250ZW50LCBOT0RFX1RZUEUudGVtcGxhdGVdLmluY2x1ZGVzKGNvbmZpZy50eXBlIGFzIGFueSkpIHtcclxuXHRcdFx0Y29uc3QgY29udGVudFBvcnRzOiBQb3J0VHlwZVtdID0gWydzZWNvbmRhcnknLCAndGVydGlhcnknLCAncXVhdGVybmFyeSddO1xyXG5cclxuXHRcdFx0RGlhZ3JhbVV0aWxzLmNyZWF0ZUlucHV0c0NvbmZpZyhfbm9kZS5pZCwgY29udGVudFBvcnRzKS5mb3JFYWNoKFxyXG5cdFx0XHRcdCh7IGlkLCBjb25maWcgfSkgPT4gdGhpcy5jcmVhdGVJbnB1dChfbm9kZSwgaWQsIGNvbmZpZylcclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdERpYWdyYW1VdGlscy5jcmVhdGVPdXRwdXRzQ29uZmlnKF9ub2RlLmlkLCBjb250ZW50UG9ydHMpLmZvckVhY2goXHJcblx0XHRcdFx0KHsgaWQsIGNvbmZpZyB9KSA9PiB0aGlzLmNyZWF0ZU91dHB1dChfbm9kZSwgaWQsIGNvbmZpZylcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHJcblx0XHRfbm9kZS5ub3RpZnkgPSB0aGlzLm5vdGlmeUxpc3RlbmVyKF9ub2RlKTtcclxuXHJcblx0XHRyZXR1cm4gX25vZGUgYXMgVDtcclxuXHR9XHJcblxyXG5cdHNob3VsZEFkZFN0YXJ0KG5vZGVUeXBlOiBzdHJpbmcpIHtcclxuXHRcdGlmIChub2RlVHlwZSA9PT0gTk9ERV9UWVBFLnN0YXJ0KSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IF9ub2RlcyA9IHRoaXMuZWRpdG9yLmdldE5vZGVzKCk7XHJcblx0XHRjb25zdCBfaXNFeGlzdCA9IF9ub2Rlcy5zb21lKFxyXG5cdFx0XHQobmQpID0+IChuZCBhcyBCYXNlTm9kZUNsYXNzKS50eXBlID09PSBOT0RFX1RZUEUuc3RhcnRcclxuXHRcdCk7XHJcblxyXG5cdFx0cmV0dXJuICFfaXNFeGlzdDtcclxuXHR9XHJcblxyXG5cdGdldE5vZGUoaWQ6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWRpdG9yLmdldE5vZGUoaWQpO1xyXG5cdH1cclxuXHJcblx0Z2V0Tm9kZXMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5lZGl0b3IuZ2V0Tm9kZXMoKTtcclxuXHR9XHJcblxyXG5cdGdldENvbm5lY3Rpb25zKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWRpdG9yLmdldENvbm5lY3Rpb25zKCk7XHJcblx0fVxyXG5cclxuXHRnZXRDb25uZWN0aW9uKGlkOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLmVkaXRvci5nZXRDb25uZWN0aW9uKGlkKTtcclxuXHR9XHJcblxyXG5cdGdldExhc3ROb2RlKCkge1xyXG5cdFx0Y29uc3Qgbm9kZXMgPSB0aGlzLmVkaXRvci5nZXROb2RlcygpO1xyXG5cdFx0cmV0dXJuIG5vZGVzLmxlbmd0aCA/IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdIDogbnVsbDtcclxuXHR9XHJcblxyXG5cdGdldE5vZGVzQnlUeXBlKHR5cGU6IE5vZGVUeXBlKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5lZGl0b3IuZ2V0Tm9kZXMoKS5maWx0ZXIoKG5kKSA9PiBuZC50eXBlID09PSB0eXBlKTtcclxuXHR9XHJcblxyXG5cdGdldFZpZXdOb2RlcygpIHtcclxuXHRcdHJldHVybiBBcnJheS5mcm9tKHRoaXMucGx1Z2lucy5hcmVhLm5vZGVWaWV3cy52YWx1ZXMoKSk7XHJcblx0fVxyXG5cclxuXHRnZXRMYXN0Vmlld05vZGUoKSB7XHJcblx0XHRjb25zdCBub2RlcyA9IHRoaXMuZ2V0Vmlld05vZGVzKCk7XHJcblx0XHRyZXR1cm4gbm9kZXMubGVuZ3RoID8gbm9kZXNbbm9kZXMubGVuZ3RoIC0gMV0gOiBudWxsO1xyXG5cdH1cclxuXHJcblx0Z2V0Vmlld05vZGUoaWQ6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMucGx1Z2lucy5hcmVhLm5vZGVWaWV3cy5nZXQoaWQpO1xyXG5cdH1cclxuXHJcblx0Z2V0Vmlld05vZGVQb3NpdGlvbihpZDogc3RyaW5nKSB7XHJcblx0XHRjb25zdCBub2RlID0gdGhpcy5nZXRWaWV3Tm9kZShpZCk7XHJcblx0XHRyZXR1cm4gbm9kZSA/IG5vZGUucG9zaXRpb24gOiBudWxsO1xyXG5cdH1cclxuXHJcblx0Y3JlYXRlSW5wdXQoXHJcblx0XHRub2RlOiBCYXNlTm9kZUNsYXNzLFxyXG5cdFx0aWQgPSBgJHtub2RlLmlkfS1pbnB1dGAsXHJcblx0XHRjb25maWc/OiBJbnB1dENvbmZpZ1R5cGVcclxuXHQpIHtcclxuXHRcdG5vZGUuYWRkSW5wdXQoXHJcblx0XHRcdGlkLFxyXG5cdFx0XHRuZXcgSW5wdXRQb3J0KHtcclxuXHRcdFx0XHRzb2NrZXQ6IHRoaXMuc29ja2V0LFxyXG5cdFx0XHRcdC4uLmNvbmZpZ1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHRcdHJldHVybiBub2RlO1xyXG5cdH1cclxuXHJcblx0Y3JlYXRlT3V0cHV0KFxyXG5cdFx0bm9kZTogQmFzZU5vZGVDbGFzcyxcclxuXHRcdGlkID0gYCR7bm9kZS5pZH0tb3V0cHV0YCxcclxuXHRcdGNvbmZpZz86IE91dHB1dENvbmZpZ1R5cGVcclxuXHQpIHtcclxuXHRcdG5vZGUuYWRkT3V0cHV0KFxyXG5cdFx0XHRpZCxcclxuXHRcdFx0bmV3IE91dHB1dFBvcnQoe1xyXG5cdFx0XHRcdHNvY2tldDogdGhpcy5zb2NrZXQsXHJcblx0XHRcdFx0Li4uY29uZmlnXHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdFx0cmV0dXJuIG5vZGU7XHJcblx0fVxyXG5cclxuXHRhc3luYyBhZGRDb25uZWN0aW9uKFxyXG5cdFx0c291cmNlTm9kZTogQmFzZU5vZGVDbGFzcyxcclxuXHRcdHRhcmdldE5vZGU6IEJhc2VOb2RlQ2xhc3MsXHJcblx0XHRjb25maWc/OiBDb25uZWN0aW9uQ29uZmlnVHlwZVxyXG5cdCkge1xyXG5cdFx0YXdhaXQgdGhpcy5lZGl0b3IuYWRkQ29ubmVjdGlvbihcclxuXHRcdFx0dGhpcy5jcmVhdGVDb25uZWN0aW9uKHNvdXJjZU5vZGUsIHRhcmdldE5vZGUsIGNvbmZpZylcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRjcmVhdGVDb25uZWN0aW9uKFxyXG5cdFx0c291cmNlTm9kZTogQmFzZU5vZGVDbGFzcyxcclxuXHRcdHRhcmdldE5vZGU6IEJhc2VOb2RlQ2xhc3MsXHJcblx0XHRjb25maWc/OiBDb25uZWN0aW9uQ29uZmlnVHlwZVxyXG5cdCkge1xyXG5cdFx0cmV0dXJuIG5ldyBDb25uZWN0aW9uKHNvdXJjZU5vZGUsIHRhcmdldE5vZGUsIGNvbmZpZyk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBhcHBlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb246IENvbm5lY3Rpb24pIHtcclxuXHRcdGF3YWl0IHRoaXMuZWRpdG9yLmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbik7XHJcblx0fVxyXG5cclxuXHRhc3luYyBjbGVhcigpIHtcclxuXHRcdHJldHVybiBhd2FpdCB0aGlzLmVkaXRvci5jbGVhcigpO1xyXG5cdH1cclxuXHJcblx0cmVkcmF3KCkge1xyXG5cdFx0dGhpcy5lZGl0b3IuZ2V0Tm9kZXMoKS5mb3JFYWNoKChub2RlKSA9PiB7XHJcblx0XHRcdHRoaXMucGx1Z2lucy5hcmVhLnVwZGF0ZSgnbm9kZScsIG5vZGUuaWQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRub3RpZnlMaXN0ZW5lcihub2RlOiBCYXNlTm9kZUNsYXNzKSB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRldmVudFR5cGU6IE5vdGlmeUV2ZW50VHlwZSxcclxuXHRcdFx0cGF5bG9hZDogTm90aWZ5RXZlbnRUeXBlIGV4dGVuZHMgJ3JlbW92ZSdcclxuXHRcdFx0XHQ/IHsgbm9kZUlkOiBzdHJpbmcgfVxyXG5cdFx0XHRcdDogUmVjb3JkPHN0cmluZywgYW55PlxyXG5cdFx0KSA9PiB7XHJcblx0XHRcdGNvbnN0IF9hY3Rpb25zID0ge1xyXG5cdFx0XHRcdFtOT1RJRllfRVZFTlQucmVtb3ZlXTogdGhpcy5fcmVtb3ZlTm9kZS5iaW5kKHRoaXMpXHJcblx0XHRcdH07XHJcblxyXG5cdFx0XHRyZXR1cm4gX2FjdGlvbnNbZXZlbnRUeXBlXT8uKHBheWxvYWQgYXMgeyBub2RlSWQ6IHN0cmluZyB9KTtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRhc3luYyB0cmFuc2xhdGVWaWV3KCkge1xyXG5cdFx0Y29uc3QgeyBjb250YWluZXIsIGFyZWEgfSA9IHRoaXMucGx1Z2lucy5hcmVhO1xyXG5cdFx0Y29uc3QgcmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHRcdGNvbnN0IGsgPSBhcmVhLnRyYW5zZm9ybS5rO1xyXG5cdFx0Y29uc3QgZGVsdGEgPSAtMC4yO1xyXG5cdFx0Y29uc3Qgb3ggPSBNYXRoLm1heCgwLCAocmVjdC5sZWZ0IC0gY29udGFpbmVyLmNsaWVudFdpZHRoIC8gMikgKiBrKTtcclxuXHRcdGNvbnN0IG95ID0gTWF0aC5tYXgoMCwgKHJlY3QudG9wIC0gY29udGFpbmVyLmNsaWVudEhlaWdodCAvIDIpICogayk7XHJcblxyXG5cdFx0YXJlYS56b29tKE1hdGgubWF4KDAuMSwgayAqICgxICsgZGVsdGEpKSwgb3ggKiBkZWx0YSwgb3kgKiBkZWx0YSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyByZW1vdmVFbmROb2RlKCkge1xyXG5cdFx0Y29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZXNCeVR5cGUoTk9ERV9UWVBFLmVuZClbMF07XHJcblx0XHRpZiAobm9kZSkge1xyXG5cdFx0XHRhd2FpdCByZW1vdmVOb2RlQW5kQ29ubmVjdGlvbnMobm9kZSwgdGhpcy5lZGl0b3IpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfY3JldGVHYXRld2F5T3V0cHV0PFQgZXh0ZW5kcyBCYXNlTm9kZUNsYXNzID0gQ29udGVudE5vZGU+KFxyXG5cdFx0X25vZGU6IENvbnRlbnROb2RlPHVua25vd24+XHJcblx0KSB7XHJcblx0XHREaWFncmFtVXRpbHMuY3JlYXRlT3V0cHV0c0NvbmZpZyhfbm9kZS5pZCwgW1xyXG5cdFx0XHQnc2Vjb25kYXJ5JyxcclxuXHRcdFx0J3RlcnRpYXJ5J1xyXG5cdFx0XSkuZm9yRWFjaCgoaW5wdXQpID0+IHRoaXMuY3JlYXRlT3V0cHV0KF9ub2RlLCBpbnB1dC5pZCwgaW5wdXQ/LmNvbmZpZykpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBfcmVtb3ZlTm9kZShkYXRhOiB7IG5vZGVJZDogc3RyaW5nIH0pIHtcclxuXHRcdGNvbnN0IG5vZGUgPSB0aGlzLmVkaXRvci5nZXROb2RlKGRhdGEubm9kZUlkKTtcclxuXHRcdGlmICghbm9kZSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3Qgdmlld05vZGUgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5wbHVnaW5zLmFyZWEubm9kZVZpZXdzLmdldChpZCk7XHJcblxyXG5cdFx0bGV0IGNvbmZpZyA9IG5vZGUuY29uZmlnO1xyXG5cdFx0bGV0IGluZGV4ID0gbnVsbDtcclxuXHRcdGxldCBwb3NpdGlvbjogUG9zaXRpb24gPSBudWxsO1xyXG5cdFx0bGV0IGRpcmVjdGlvbiA9IG51bGw7XHJcblx0XHRpZiAoY29uZmlnLmlzTGlua2VkKSB7XHJcblx0XHRcdGluZGV4ID0gdGhpcy5lZGl0b3IuZ2V0Tm9kZXMoKS5maW5kSW5kZXgoKG5kKSA9PiBuZC5pZCA9PT0gZGF0YS5ub2RlSWQpO1xyXG5cdFx0XHRwb3NpdGlvbiA9IHZpZXdOb2RlKGRhdGEubm9kZUlkKS5wb3NpdGlvbjtcclxuXHRcdFx0ZGlyZWN0aW9uID0gbm9kZS5kaXJlY3Rpb25zO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wbHVnaW5zLnJlYWRvbmx5LmRpc2FibGUoKTtcclxuXHRcdGF3YWl0IHJlbW92ZU5vZGUoZGF0YSwgdGhpcy5lZGl0b3IpO1xyXG5cclxuXHRcdGlmIChjb25maWcuaXNMaW5rZWQpIHtcclxuXHRcdFx0Y29uc3Qgbm9kZXMgPSB0aGlzLmVkaXRvci5nZXROb2RlcygpLnNsaWNlKGluZGV4KTtcclxuXHJcblx0XHRcdHdoaWxlIChub2Rlcy5sZW5ndGgpIHtcclxuXHRcdFx0XHRjb25zdCBfbm9kZSA9IG5vZGVzLnNoaWZ0KCk7XHJcblx0XHRcdFx0Y29uc3QgX2RpciA9IHsgLi4uX25vZGUuZGlyZWN0aW9ucyB9O1xyXG5cdFx0XHRcdGNvbnN0IF9wb3NpdGlvbiA9IHsgLi4udmlld05vZGUoX25vZGUuaWQpLnBvc2l0aW9uIH07XHJcblx0XHRcdFx0X25vZGUuZGlyZWN0aW9ucyA9IGRpcmVjdGlvbjtcclxuXHRcdFx0XHRpZiAoX25vZGUudHlwZSA9PSBOT0RFX1RZUEUuZW5kKSB7XHJcblx0XHRcdFx0XHRwb3NpdGlvbi55ID0gTWF0aC5hYnMoXHJcblx0XHRcdFx0XHRcdE1hdGguZmxvb3IocG9zaXRpb24ueSAtIChfbm9kZS5oZWlnaHQgLSBOT0RFX0NJUkNMRV9TSVpFKSAvIDIpXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbnMuYXJlYS50cmFuc2xhdGUoX25vZGUuaWQsIHBvc2l0aW9uKTtcclxuXHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbnMuYXJlYS51cGRhdGUoJ25vZGUnLCBfbm9kZS5pZCk7XHJcblx0XHRcdFx0cG9zaXRpb24gPSBfcG9zaXRpb247XHJcblx0XHRcdFx0ZGlyZWN0aW9uID0gX2RpcjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5wbHVnaW5zLnJlYWRvbmx5LmVuYWJsZSgpO1xyXG5cdH1cclxufVxyXG4iXX0=