@plait/mind 0.2.0-next.3 → 0.2.0-next.5
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.
- package/draw/indented-link.d.ts +2 -2
- package/draw/link/logic-link.d.ts +2 -2
- package/draw/link.d.ts +2 -2
- package/esm2020/draw/indented-link.mjs +7 -6
- package/esm2020/draw/link/logic-link.mjs +7 -6
- package/esm2020/draw/link.mjs +8 -7
- package/esm2020/draw/shape.mjs +3 -3
- package/esm2020/drawer/quick-insert.drawer.mjs +9 -8
- package/esm2020/interfaces/element.mjs +13 -2
- package/esm2020/node.component.mjs +6 -6
- package/esm2020/plugins/emoji/emoji-base.component.mjs +4 -2
- package/esm2020/plugins/emoji/emoji.drawer.mjs +2 -1
- package/esm2020/plugins/with-abstract.mjs +2 -2
- package/esm2020/plugins/with-dnd.mjs +2 -2
- package/esm2020/plugins/with-mind.mjs +3 -2
- package/esm2020/transforms/layout.mjs +8 -2
- package/esm2020/utils/abstract/common.mjs +49 -15
- package/esm2020/utils/abstract/resize.mjs +2 -2
- package/esm2020/utils/clipboard.mjs +10 -3
- package/esm2020/utils/draw-placeholder.mjs +20 -20
- package/esm2020/utils/index.mjs +2 -2
- package/esm2020/utils/mind.mjs +30 -21
- package/esm2020/utils/node-style/branch.mjs +28 -0
- package/esm2020/utils/node-style/index.mjs +3 -0
- package/esm2020/utils/node-style/node.mjs +22 -0
- package/esm2020/utils/path.mjs +3 -3
- package/fesm2015/plait-mind.mjs +1449 -1377
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +1451 -1379
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/interfaces/element.d.ts +3 -2
- package/package.json +1 -1
- package/plugins/emoji/emoji-base.component.d.ts +3 -1
- package/utils/abstract/common.d.ts +6 -1
- package/utils/abstract/resize.d.ts +1 -1
- package/utils/draw-placeholder.d.ts +8 -8
- package/utils/index.d.ts +1 -1
- package/utils/mind.d.ts +2 -1
- package/utils/node-style/branch.d.ts +7 -0
- package/utils/node-style/index.d.ts +2 -0
- package/utils/node-style/node.d.ts +3 -0
- package/esm2020/utils/colors.mjs +0 -41
- package/utils/colors.d.ts +0 -4
|
@@ -120,7 +120,7 @@ export const withDnd = (board) => {
|
|
|
120
120
|
});
|
|
121
121
|
if (dropTarget?.target) {
|
|
122
122
|
dropTarget = readjustmentDropTarget(dropTarget);
|
|
123
|
-
drawPlaceholderDropNodeG(
|
|
123
|
+
drawPlaceholderDropNodeG(board, dropTarget, fakeDropNodeG);
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
mousemove(event);
|
|
@@ -276,4 +276,4 @@ export const isDragging = (board) => {
|
|
|
276
276
|
export const setIsDragging = (board, state) => {
|
|
277
277
|
IS_DRAGGING.set(board, state);
|
|
278
278
|
};
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL3dpdGgtZG5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxPQUFPLEVBQ1AsNEJBQTRCLEVBQzVCLGdCQUFnQixFQUNoQixJQUFJLEVBQ0osVUFBVSxFQUNWLFlBQVksRUFHWixPQUFPLEVBQ1AsY0FBYyxFQUNkLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDSCxZQUFZLEVBQ1osY0FBYyxFQUNkLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHFCQUFxQixFQUV4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBZSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsYUFBYSxFQUNiLGNBQWMsRUFDZCxzQkFBc0IsRUFDekIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHekMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFFM0IsTUFBTSxDQUFDLE1BQU0sT0FBTyxH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QUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBjcmVhdGVHLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgSVNfVEVYVF9FRElUQUJMRSxcbiAgICBQYXRoLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBsYWl0UGx1Z2luLFxuICAgIFBvaW50LFxuICAgIHRvUG9pbnQsXG4gICAgdHJhbnNmb3JtUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBFTEVNRU5UX1RPX0NPTVBPTkVOVCxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3ROb2RlLFxuICAgIGlzQm90dG9tTGF5b3V0LFxuICAgIGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0LFxuICAgIGlzSW5kZW50ZWRMYXlvdXQsXG4gICAgaXNMZWZ0TGF5b3V0LFxuICAgIGlzUmlnaHRMYXlvdXQsXG4gICAgaXNTdGFuZGFyZExheW91dCxcbiAgICBpc1RvcExheW91dCxcbiAgICBpc1ZlcnRpY2FsTG9naWNMYXlvdXQsXG4gICAgTWluZExheW91dFR5cGVcbn0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgdXBkYXRlRm9yZWlnbk9iamVjdCB9IGZyb20gJ0BwbGFpdC9yaWNodGV4dCc7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBCQVNFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldFJpY2h0ZXh0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vZHJhdy9yaWNodGV4dCc7XG5pbXBvcnQgeyBkcmF3UmVjdGFuZ2xlTm9kZSB9IGZyb20gJy4uL2RyYXcvc2hhcGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBkaXJlY3Rpb25Db3JyZWN0b3IsXG4gICAgZGlyZWN0aW9uRGV0ZWN0b3IsXG4gICAgZHJhd1BsYWNlaG9sZGVyRHJvcE5vZGVHLFxuICAgIGZpbmRVcEVsZW1lbnQsXG4gICAgaXNDaGlsZEVsZW1lbnQsXG4gICAgcmVhZGp1c3RtZW50RHJvcFRhcmdldFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUsIGhpdE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvZ3JhcGgnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzJztcbmltcG9ydCB7IFBsYWl0TWluZENvbXBvbmVudCB9IGZyb20gJy4uL21pbmQuY29tcG9uZW50JztcblxuY29uc3QgRFJBR19NT1ZFX0JVRkZFUiA9IDU7XG5cbmV4cG9ydCBjb25zdCB3aXRoRG5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBtb3VzZWRvd24sIG1vdXNlbW92ZSwgZ2xvYmFsTW91c2V1cCwga2V5ZG93biB9ID0gYm9hcmQ7XG5cbiAgICBsZXQgYWN0aXZlRWxlbWVudDogTWluZEVsZW1lbnQgfCBudWxsO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludDtcbiAgICBsZXQgZmFrZURyYWdOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0gfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoYm9hcmQub3B0aW9ucy5yZWFkb25seSB8fCBJU19URVhUX0VESVRBQkxFLmdldChib2FyZCkgfHwgZXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g56Gu6K6k5piv5ZCmIGhpdCDoioLngrlcbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgYm9hcmQuY2hpbGRyZW4uZm9yRWFjaCgodmFsdWU6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5kbWFwQ29tcG9uZW50ID0gRUxFTUVOVF9UT19DT01QT05FTlQuZ2V0KHZhbHVlKSBhcyBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9vdCA9IG1pbmRtYXBDb21wb25lbnQ/LnJvb3Q7XG4gICAgICAgICAgICAgICAgKHJvb3QgYXMgYW55KS5lYWNoTm9kZSgobm9kZTogTWluZE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbkRyYWcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaGl0TWluZEVsZW1lbnQoYm9hcmQsIHBvaW50LCBub2RlLm9yaWdpbikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFub2RlLm9yaWdpbi5pc1Jvb3QgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChub2RlLm9yaWdpbikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoIDw9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkRyYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBub2RlLm9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgYWN0aXZlRWxlbWVudCAmJiBzdGFydFBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdLCBlbmRQb2ludFswXSwgZW5kUG9pbnRbMV0pO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgRFJBR19NT1ZFX0JVRkZFUikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc0RyYWdnaW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIHNldElzRHJhZ2dpbmcoYm9hcmQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGZha2VEcmFnTm9kZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICAgICAgZmFrZURyYWdOb2RlRy5jbGFzc0xpc3QuYWRkKCdkcmFnZ2luZycsICdmYWtlLW5vZGUnLCAncGxhaXQtYm9hcmQtYXR0YWNoZWQnKTtcbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHID0gY3JlYXRlRygpO1xuICAgICAgICAgICAgICAgIGFkZEFjdGl2ZU9uRHJhZ09yaWdpbihhY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpLmFwcGVuZENoaWxkKGZha2VEcm9wTm9kZUcpO1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kQ2hpbGQoZmFrZURyYWdOb2RlRyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZha2VEcmFnTm9kZUc/LmNoaWxkTm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHPy5jaGlsZE5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGZha2UgZHJhZ2dpbmcgb3JpZ2luIG5vZGVcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFggPSBlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF07XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRZID0gZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IHJvdWdoU1ZHID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgICAgICBjb25zdCBmYWtlRHJhZ2dpbmdOb2RlOiBNaW5kTm9kZSA9IHtcbiAgICAgICAgICAgICAgICAuLi5hY3RpdmVDb21wb25lbnQubm9kZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgeDogYWN0aXZlQ29tcG9uZW50Lm5vZGUueCArIG9mZnNldFgsXG4gICAgICAgICAgICAgICAgeTogYWN0aXZlQ29tcG9uZW50Lm5vZGUueSArIG9mZnNldFlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB0ZXh0UmVjdGFuZ2xlID0gZ2V0UmljaHRleHRSZWN0YW5nbGVCeU5vZGUoYWN0aXZlQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgY29uc3QgZmFrZU5vZGVHID0gZHJhd1JlY3RhbmdsZU5vZGUoYm9hcmQsIGZha2VEcmFnZ2luZ05vZGUpO1xuICAgICAgICAgICAgY29uc3QgcmljaHRleHRHID0gYWN0aXZlQ29tcG9uZW50LnJpY2h0ZXh0Rz8uY2xvbmVOb2RlKHRydWUpIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdChcbiAgICAgICAgICAgICAgICByaWNodGV4dEcsXG4gICAgICAgICAgICAgICAgdGV4dFJlY3RhbmdsZS53aWR0aCArIEJBU0UgKiAxMCxcbiAgICAgICAgICAgICAgICB0ZXh0UmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgICAgICB0ZXh0UmVjdGFuZ2xlLnggKyBvZmZzZXRYLFxuICAgICAgICAgICAgICAgIHRleHRSZWN0YW5nbGUueSArIG9mZnNldFlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmYWtlRHJhZ05vZGVHPy5hcHBlbmQoZmFrZU5vZGVHKTtcbiAgICAgICAgICAgIGZha2VEcmFnTm9kZUc/LmFwcGVuZChyaWNodGV4dEcpO1xuXG4gICAgICAgICAgICAvLyBkcm9wIHBvc2l0aW9uIGRldGVjdFxuICAgICAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUoZmFrZURyYWdnaW5nTm9kZSk7XG4gICAgICAgICAgICBjb25zdCBkZXRlY3RDZW50ZXJQb2ludCA9IFt4ICsgdGV4dFJlY3RhbmdsZS53aWR0aCAvIDIsIHkgKyB0ZXh0UmVjdGFuZ2xlLmhlaWdodCAvIDJdIGFzIFBvaW50O1xuXG4gICAgICAgICAgICBsZXQgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHRbXSB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgYm9hcmQuY2hpbGRyZW4uZm9yRWFjaCgodmFsdWU6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluZG1hcENvbXBvbmVudCA9IEVMRU1FTlRfVE9fQ09NUE9ORU5ULmdldCh2YWx1ZSkgYXMgUGxhaXRNaW5kQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb290ID0gbWluZG1hcENvbXBvbmVudD8ucm9vdDtcblxuICAgICAgICAgICAgICAgICAgICAocm9vdCBhcyBhbnkpLmVhY2hOb2RlKChub2RlOiBNaW5kTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbnMgPSBkaXJlY3Rpb25EZXRlY3Rvcihub2RlLCBkZXRlY3RDZW50ZXJQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdFJlc3VsdCA9IGRpcmVjdGlvbkNvcnJlY3Rvcihub2RlLCBkaXJlY3Rpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCAmJiBpc1ZhbGlkVGFyZ2V0KGFjdGl2ZUNvbXBvbmVudC5ub2RlLm9yaWdpbiwgbm9kZS5vcmlnaW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcFRhcmdldCA9IHsgdGFyZ2V0OiBub2RlLm9yaWdpbiwgZGV0ZWN0UmVzdWx0OiBkZXRlY3RSZXN1bHRbMF0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChkcm9wVGFyZ2V0Py50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBkcm9wVGFyZ2V0ID0gcmVhZGp1c3RtZW50RHJvcFRhcmdldChkcm9wVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBkcmF3UGxhY2Vob2xkZXJEcm9wTm9kZUcoZHJvcFRhcmdldCwgcm91Z2hTVkcsIGZha2VEcm9wTm9kZUcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsTW91c2V1cCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGRyb3BUYXJnZXQ/LnRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlRWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChkcm9wVGFyZ2V0LnRhcmdldCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCB0YXJnZXRDb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluZG1hcEVsZW1lbnQgPSBmaW5kVXBFbGVtZW50KGRyb3BUYXJnZXQudGFyZ2V0KS5yb290O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbmRtYXBDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQobWluZG1hcEVsZW1lbnQgYXMgUGxhaXRNaW5kKSBhcyBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChtaW5kbWFwQ29tcG9uZW50Py5yb290Lm9yaWdpbiBhcyBNaW5kRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UGF0aCA9IHVwZGF0ZVBhdGhCeUxheW91dEFuZERyb3BUYXJnZXQodGFyZ2V0UGF0aCwgbGF5b3V0LCBkcm9wVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5QYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgYWN0aXZlQ29tcG9uZW50LmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGxldCBuZXdFbGVtZW50OiBQYXJ0aWFsPE1pbmRFbGVtZW50PiA9IHsgaXNDb2xsYXBzZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0VGFyZ2V0UGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHRhcmdldENvbXBvbmVudC5lbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1N0YW5kYXJkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlUmlnaHROb2RlQ291bnQoYm9hcmQsIGFjdGl2ZUNvbXBvbmVudCwgdGFyZ2V0Q29tcG9uZW50LCBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0Q29tcG9uZW50LmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UGF0aC5wdXNoKDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSAodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IGFzIG51bWJlcikgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudCA9IHsgaXNDb2xsYXBzZWQ6IGZhbHNlLCByaWdodE5vZGVDb3VudCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcmlnaHRUYXJnZXRQYXRoIGFzIFBhdGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMubW92ZU5vZGUoYm9hcmQsIG9yaWdpblBhdGgsIHRhcmdldFBhdGgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNEcmFnZ2luZyhib2FyZCkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVBY3RpdmVPbkRyYWdPcmlnaW4oYWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRJc0RyYWdnaW5nKGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgIGZha2VEcmFnTm9kZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZmFrZURyYWdOb2RlRyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGdsb2JhbE1vdXNldXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5rZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGtleWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZFRhcmdldCA9IChvcmlnaW46IE1pbmRFbGVtZW50LCB0YXJnZXQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuIG9yaWdpbiAhPT0gdGFyZ2V0ICYmICFpc0NoaWxkRWxlbWVudChvcmlnaW4sIHRhcmdldCk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQWN0aXZlT25EcmFnT3JpZ2luID0gKGFjdGl2ZUVsZW1lbnQ6IE1pbmRFbGVtZW50LCBpc09yaWdpbiA9IHRydWUpID0+IHtcbiAgICBjb25zdCBhY3RpdmVDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGFjdGl2ZUVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGlmIChpc09yaWdpbikge1xuICAgICAgICBhY3RpdmVDb21wb25lbnQuZy5jbGFzc0xpc3QuYWRkKCdkcmFnZ2luZy1vcmlnaW4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhY3RpdmVDb21wb25lbnQuZy5jbGFzc0xpc3QuYWRkKCdkcmFnZ2luZy1jaGlsZCcpO1xuICAgIH1cbiAgICAhYWN0aXZlRWxlbWVudC5pc0NvbGxhcHNlZCAmJlxuICAgICAgICBhY3RpdmVFbGVtZW50LmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICAgICAgYWRkQWN0aXZlT25EcmFnT3JpZ2luKGNoaWxkLCBmYWxzZSk7XG4gICAgICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUFjdGl2ZU9uRHJhZ09yaWdpbiA9IChhY3RpdmVFbGVtZW50OiBNaW5kRWxlbWVudCwgaXNPcmlnaW4gPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgYWN0aXZlQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICBpZiAoaXNPcmlnaW4pIHtcbiAgICAgICAgYWN0aXZlQ29tcG9uZW50LmcuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ2dpbmctb3JpZ2luJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZlQ29tcG9uZW50LmcuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ2dpbmctY2hpbGQnKTtcbiAgICB9XG4gICAgIWFjdGl2ZUVsZW1lbnQuaXNDb2xsYXBzZWQgJiZcbiAgICAgICAgYWN0aXZlRWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgICAgIHJlbW92ZUFjdGl2ZU9uRHJhZ09yaWdpbihjaGlsZCwgZmFsc2UpO1xuICAgICAgICB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZVBhdGhCeUxheW91dEFuZERyb3BUYXJnZXQgPSAoXG4gICAgdGFyZ2V0UGF0aDogUGF0aCxcbiAgICBsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlLFxuICAgIGRyb3BUYXJnZXQ6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfVxuKSA9PiB7XG4gICAgLy8g5LiK5LiL5biD5bGA77ya5bem5Y+z5piv5YWE5byf6IqC54K577yM5LiK5LiL5piv5a2Q6IqC54K5XG4gICAgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpICYmIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAndG9wJykge1xuICAgICAgICAgICAgdGFyZ2V0UGF0aC5wdXNoKGRyb3BUYXJnZXQudGFyZ2V0LmNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkgJiYgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goZHJvcFRhcmdldC50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlpoLmnpzmmK/lt6bvvIzkvY3nva7kuI3lj5jvvIzlj7PliJnmj5LlhaXliLDkuIvkuIDkuKrlhYTlvJ/oioLngrlcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoID0gUGF0aC5uZXh0KHRhcmdldFBhdGgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIOawtOW5s+W4g+WxgC/moIflh4bluIPlsYDvvJrkuIrkuIvmmK/lhYTlvJ/oioLngrnvvIzlt6blj7PmmK/lrZDoioLngrlcbiAgICBpZiAoaXNIb3Jpem9udGFsTG9naWNMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBpZiAoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGgucHVzaChkcm9wVGFyZ2V0LnRhcmdldC5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goZHJvcFRhcmdldC50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlpoLmnpzmmK/kuIrvvIzkvY3nva7kuI3lj5jvvIzkuIvmj5LlhaXliLDkuIvkuIDkuKrlhYTlvJ/oioLngrlcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgdGFyZ2V0UGF0aCA9IFBhdGgubmV4dCh0YXJnZXRQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDnvKnov5vluIPlsYDvvJrkuIrkuIvmmK/lhYTlvJ/oioLngrnvvIzlt6blj7PmmK/lrZDoioLngrnvvIzkvYbkuIrvvIjlt6bkuIov5Y+z5LiK77yJ77yM5o6i5rWL5Yiw5LiK5piv5a2Q6IqC54K577yM5LiL5YiZ5L2N572u5LiN5Y+Y77yM5Y+N5LmL5ZCM55CG44CCXG4gICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGggPSBQYXRoLm5leHQodGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkgJiYgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoID0gUGF0aC5uZXh0KHRhcmdldFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goZHJvcFRhcmdldC50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpICYmIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goZHJvcFRhcmdldC50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0UGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVSaWdodE5vZGVDb3VudCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBhY3RpdmVDb21wb25lbnQ6IE1pbmROb2RlQ29tcG9uZW50LFxuICAgIHRhcmdldENvbXBvbmVudDogTWluZE5vZGVDb21wb25lbnQsXG4gICAgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHRcbikgPT4ge1xuICAgIGxldCByaWdodE5vZGVDb3VudDtcbiAgICBjb25zdCBtaW5kbWFwRWxlbWVudCA9IGZpbmRVcEVsZW1lbnQodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKS5yb290O1xuICAgIGNvbnN0IG1pbmRtYXBDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQobWluZG1hcEVsZW1lbnQgYXMgUGxhaXRNaW5kKSBhcyBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSBtaW5kbWFwQ29tcG9uZW50Py5yb290LmNoaWxkcmVuLmluZGV4T2YoYWN0aXZlQ29tcG9uZW50Lm5vZGUpIGFzIG51bWJlcjtcbiAgICBjb25zdCB0YXJnZXRJbmRleCA9IG1pbmRtYXBDb21wb25lbnQ/LnJvb3QuY2hpbGRyZW4uaW5kZXhPZih0YXJnZXRDb21wb25lbnQubm9kZSkgYXMgbnVtYmVyO1xuICAgIGNvbnN0IGlzQWN0aXZlT25SaWdodCA9IGFjdGl2ZUluZGV4ICE9PSAtMSAmJiBhY3RpdmVJbmRleCA8PSAoYWN0aXZlQ29tcG9uZW50LnBhcmVudC5vcmlnaW4ucmlnaHROb2RlQ291bnQgYXMgbnVtYmVyKSAtIDE7XG4gICAgY29uc3QgaXNUYXJnZXRPblJpZ2h0ID1cbiAgICAgICAgdGFyZ2V0Q29tcG9uZW50LnBhcmVudCAmJiB0YXJnZXRJbmRleCAhPT0gLTEgJiYgdGFyZ2V0SW5kZXggPD0gKHRhcmdldENvbXBvbmVudC5wYXJlbnQub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IGFzIG51bWJlcikgLSAxO1xuICAgIGNvbnN0IGlzQm90aE9uUmlnaHQgPSBpc0FjdGl2ZU9uUmlnaHQgJiYgaXNUYXJnZXRPblJpZ2h0O1xuICAgIGNvbnN0IHJvb3RDaGlsZENvdW50ID0gbWluZG1hcENvbXBvbmVudC5yb290LmNoaWxkcmVuPy5sZW5ndGggYXMgbnVtYmVyO1xuICAgIGNvbnN0IHJvb3RSaWdodE5vZGVDb3VudCA9IG1pbmRtYXBDb21wb25lbnQ/LnJvb3Qub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IGFzIG51bWJlcjtcblxuICAgIGlmICghaXNCb3RoT25SaWdodCkge1xuICAgICAgICBpZiAoaXNBY3RpdmVPblJpZ2h0KSB7XG4gICAgICAgICAgICByaWdodE5vZGVDb3VudCA9IHJvb3RDaGlsZENvdW50IDwgcm9vdFJpZ2h0Tm9kZUNvdW50ID8gcm9vdENoaWxkQ291bnQgLSAxIDogcm9vdFJpZ2h0Tm9kZUNvdW50IC0gMTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyByaWdodE5vZGVDb3VudCB9LCBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBhY3RpdmVDb21wb25lbnQucGFyZW50Lm9yaWdpbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVGFyZ2V0T25SaWdodCAmJiBkZXRlY3RSZXN1bHQgIT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHJpZ2h0Tm9kZUNvdW50ID0gcm9vdENoaWxkQ291bnQgPCByb290UmlnaHROb2RlQ291bnQgPyByb290UmlnaHROb2RlQ291bnQgOiByb290UmlnaHROb2RlQ291bnQgKyAxO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHJpZ2h0Tm9kZUNvdW50IH0sIFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHRhcmdldENvbXBvbmVudC5wYXJlbnQub3JpZ2luKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL+S6jOe6p+WtkOiKgueCueaLluWKqOWIsOagueiKgueCueW3puS+p1xuICAgICAgICBpZiAodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmlzUm9vdCAmJiBkZXRlY3RSZXN1bHQgPT09ICdsZWZ0JyAmJiBhY3RpdmVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJpZ2h0Tm9kZUNvdW50ID0gcm9vdENoaWxkQ291bnQ7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcmlnaHROb2RlQ291bnQgfSwgUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0Q29tcG9uZW50LmVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNvbnN0IElTX0RSQUdHSU5HID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuZXhwb3J0IGNvbnN0IGlzRHJhZ2dpbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gISFJU19EUkFHR0lORy5nZXQoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldElzRHJhZ2dpbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHN0YXRlOiBib29sZWFuKSA9PiB7XG4gICAgSVNfRFJBR0dJTkcuc2V0KGJvYXJkLCBzdGF0ZSk7XG59O1xuIl19
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL3dpdGgtZG5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxPQUFPLEVBQ1AsNEJBQTRCLEVBQzVCLGdCQUFnQixFQUNoQixJQUFJLEVBQ0osVUFBVSxFQUNWLFlBQVksRUFHWixPQUFPLEVBQ1AsY0FBYyxFQUNkLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ3RCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDSCxZQUFZLEVBQ1osY0FBYyxFQUNkLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHFCQUFxQixFQUV4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBZSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsYUFBYSxFQUNiLGNBQWMsRUFDZCxzQkFBc0IsRUFDekIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHekMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFFM0IsTUFBTSxDQUFDLE1BQU0sT0FBTyxH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QUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBjcmVhdGVHLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgSVNfVEVYVF9FRElUQUJMRSxcbiAgICBQYXRoLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBsYWl0UGx1Z2luLFxuICAgIFBvaW50LFxuICAgIHRvUG9pbnQsXG4gICAgdHJhbnNmb3JtUG9pbnQsXG4gICAgVHJhbnNmb3JtcyxcbiAgICBFTEVNRU5UX1RPX0NPTVBPTkVOVCxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3ROb2RlLFxuICAgIGlzQm90dG9tTGF5b3V0LFxuICAgIGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0LFxuICAgIGlzSW5kZW50ZWRMYXlvdXQsXG4gICAgaXNMZWZ0TGF5b3V0LFxuICAgIGlzUmlnaHRMYXlvdXQsXG4gICAgaXNTdGFuZGFyZExheW91dCxcbiAgICBpc1RvcExheW91dCxcbiAgICBpc1ZlcnRpY2FsTG9naWNMYXlvdXQsXG4gICAgTWluZExheW91dFR5cGVcbn0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgdXBkYXRlRm9yZWlnbk9iamVjdCB9IGZyb20gJ0BwbGFpdC9yaWNodGV4dCc7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBCQVNFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldFJpY2h0ZXh0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vZHJhdy9yaWNodGV4dCc7XG5pbXBvcnQgeyBkcmF3UmVjdGFuZ2xlTm9kZSB9IGZyb20gJy4uL2RyYXcvc2hhcGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBkaXJlY3Rpb25Db3JyZWN0b3IsXG4gICAgZGlyZWN0aW9uRGV0ZWN0b3IsXG4gICAgZHJhd1BsYWNlaG9sZGVyRHJvcE5vZGVHLFxuICAgIGZpbmRVcEVsZW1lbnQsXG4gICAgaXNDaGlsZEVsZW1lbnQsXG4gICAgcmVhZGp1c3RtZW50RHJvcFRhcmdldFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUsIGhpdE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvZ3JhcGgnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzJztcbmltcG9ydCB7IFBsYWl0TWluZENvbXBvbmVudCB9IGZyb20gJy4uL21pbmQuY29tcG9uZW50JztcblxuY29uc3QgRFJBR19NT1ZFX0JVRkZFUiA9IDU7XG5cbmV4cG9ydCBjb25zdCB3aXRoRG5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBtb3VzZWRvd24sIG1vdXNlbW92ZSwgZ2xvYmFsTW91c2V1cCwga2V5ZG93biB9ID0gYm9hcmQ7XG5cbiAgICBsZXQgYWN0aXZlRWxlbWVudDogTWluZEVsZW1lbnQgfCBudWxsO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludDtcbiAgICBsZXQgZmFrZURyYWdOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0gfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLm1vdXNlZG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoYm9hcmQub3B0aW9ucy5yZWFkb25seSB8fCBJU19URVhUX0VESVRBQkxFLmdldChib2FyZCkgfHwgZXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g56Gu6K6k5piv5ZCmIGhpdCDoioLngrlcbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgYm9hcmQuY2hpbGRyZW4uZm9yRWFjaCgodmFsdWU6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5kbWFwQ29tcG9uZW50ID0gRUxFTUVOVF9UT19DT01QT05FTlQuZ2V0KHZhbHVlKSBhcyBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9vdCA9IG1pbmRtYXBDb21wb25lbnQ/LnJvb3Q7XG4gICAgICAgICAgICAgICAgKHJvb3QgYXMgYW55KS5lYWNoTm9kZSgobm9kZTogTWluZE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbkRyYWcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaGl0TWluZEVsZW1lbnQoYm9hcmQsIHBvaW50LCBub2RlLm9yaWdpbikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFub2RlLm9yaWdpbi5pc1Jvb3QgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChub2RlLm9yaWdpbikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoIDw9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkRyYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBub2RlLm9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgYWN0aXZlRWxlbWVudCAmJiBzdGFydFBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludChzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdLCBlbmRQb2ludFswXSwgZW5kUG9pbnRbMV0pO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgRFJBR19NT1ZFX0JVRkZFUikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc0RyYWdnaW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIHNldElzRHJhZ2dpbmcoYm9hcmQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGZha2VEcmFnTm9kZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICAgICAgZmFrZURyYWdOb2RlRy5jbGFzc0xpc3QuYWRkKCdkcmFnZ2luZycsICdmYWtlLW5vZGUnLCAncGxhaXQtYm9hcmQtYXR0YWNoZWQnKTtcbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHID0gY3JlYXRlRygpO1xuICAgICAgICAgICAgICAgIGFkZEFjdGl2ZU9uRHJhZ09yaWdpbihhY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpLmFwcGVuZENoaWxkKGZha2VEcm9wTm9kZUcpO1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkuYXBwZW5kQ2hpbGQoZmFrZURyYWdOb2RlRyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZha2VEcmFnTm9kZUc/LmNoaWxkTm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHPy5jaGlsZE5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGZha2UgZHJhZ2dpbmcgb3JpZ2luIG5vZGVcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFggPSBlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF07XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRZID0gZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IHJvdWdoU1ZHID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyhib2FyZCk7XG4gICAgICAgICAgICBjb25zdCBmYWtlRHJhZ2dpbmdOb2RlOiBNaW5kTm9kZSA9IHtcbiAgICAgICAgICAgICAgICAuLi5hY3RpdmVDb21wb25lbnQubm9kZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgeDogYWN0aXZlQ29tcG9uZW50Lm5vZGUueCArIG9mZnNldFgsXG4gICAgICAgICAgICAgICAgeTogYWN0aXZlQ29tcG9uZW50Lm5vZGUueSArIG9mZnNldFlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB0ZXh0UmVjdGFuZ2xlID0gZ2V0UmljaHRleHRSZWN0YW5nbGVCeU5vZGUoYWN0aXZlQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgY29uc3QgZmFrZU5vZGVHID0gZHJhd1JlY3RhbmdsZU5vZGUoYm9hcmQsIGZha2VEcmFnZ2luZ05vZGUpO1xuICAgICAgICAgICAgY29uc3QgcmljaHRleHRHID0gYWN0aXZlQ29tcG9uZW50LnJpY2h0ZXh0Rz8uY2xvbmVOb2RlKHRydWUpIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICAgICAgdXBkYXRlRm9yZWlnbk9iamVjdChcbiAgICAgICAgICAgICAgICByaWNodGV4dEcsXG4gICAgICAgICAgICAgICAgdGV4dFJlY3RhbmdsZS53aWR0aCArIEJBU0UgKiAxMCxcbiAgICAgICAgICAgICAgICB0ZXh0UmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgICAgICB0ZXh0UmVjdGFuZ2xlLnggKyBvZmZzZXRYLFxuICAgICAgICAgICAgICAgIHRleHRSZWN0YW5nbGUueSArIG9mZnNldFlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmYWtlRHJhZ05vZGVHPy5hcHBlbmQoZmFrZU5vZGVHKTtcbiAgICAgICAgICAgIGZha2VEcmFnTm9kZUc/LmFwcGVuZChyaWNodGV4dEcpO1xuXG4gICAgICAgICAgICAvLyBkcm9wIHBvc2l0aW9uIGRldGVjdFxuICAgICAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUoZmFrZURyYWdnaW5nTm9kZSk7XG4gICAgICAgICAgICBjb25zdCBkZXRlY3RDZW50ZXJQb2ludCA9IFt4ICsgdGV4dFJlY3RhbmdsZS53aWR0aCAvIDIsIHkgKyB0ZXh0UmVjdGFuZ2xlLmhlaWdodCAvIDJdIGFzIFBvaW50O1xuXG4gICAgICAgICAgICBsZXQgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHRbXSB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgYm9hcmQuY2hpbGRyZW4uZm9yRWFjaCgodmFsdWU6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluZG1hcENvbXBvbmVudCA9IEVMRU1FTlRfVE9fQ09NUE9ORU5ULmdldCh2YWx1ZSkgYXMgUGxhaXRNaW5kQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb290ID0gbWluZG1hcENvbXBvbmVudD8ucm9vdDtcblxuICAgICAgICAgICAgICAgICAgICAocm9vdCBhcyBhbnkpLmVhY2hOb2RlKChub2RlOiBNaW5kTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbnMgPSBkaXJlY3Rpb25EZXRlY3Rvcihub2RlLCBkZXRlY3RDZW50ZXJQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdFJlc3VsdCA9IGRpcmVjdGlvbkNvcnJlY3Rvcihub2RlLCBkaXJlY3Rpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCAmJiBpc1ZhbGlkVGFyZ2V0KGFjdGl2ZUNvbXBvbmVudC5ub2RlLm9yaWdpbiwgbm9kZS5vcmlnaW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcFRhcmdldCA9IHsgdGFyZ2V0OiBub2RlLm9yaWdpbiwgZGV0ZWN0UmVzdWx0OiBkZXRlY3RSZXN1bHRbMF0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChkcm9wVGFyZ2V0Py50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBkcm9wVGFyZ2V0ID0gcmVhZGp1c3RtZW50RHJvcFRhcmdldChkcm9wVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBkcmF3UGxhY2Vob2xkZXJEcm9wTm9kZUcoYm9hcmQsIGRyb3BUYXJnZXQsIGZha2VEcm9wTm9kZUcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsTW91c2V1cCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGRyb3BUYXJnZXQ/LnRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlRWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChkcm9wVGFyZ2V0LnRhcmdldCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCB0YXJnZXRDb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluZG1hcEVsZW1lbnQgPSBmaW5kVXBFbGVtZW50KGRyb3BUYXJnZXQudGFyZ2V0KS5yb290O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbmRtYXBDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQobWluZG1hcEVsZW1lbnQgYXMgUGxhaXRNaW5kKSBhcyBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChtaW5kbWFwQ29tcG9uZW50Py5yb290Lm9yaWdpbiBhcyBNaW5kRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UGF0aCA9IHVwZGF0ZVBhdGhCeUxheW91dEFuZERyb3BUYXJnZXQodGFyZ2V0UGF0aCwgbGF5b3V0LCBkcm9wVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5QYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgYWN0aXZlQ29tcG9uZW50LmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGxldCBuZXdFbGVtZW50OiBQYXJ0aWFsPE1pbmRFbGVtZW50PiA9IHsgaXNDb2xsYXBzZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0VGFyZ2V0UGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHRhcmdldENvbXBvbmVudC5lbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1N0YW5kYXJkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlUmlnaHROb2RlQ291bnQoYm9hcmQsIGFjdGl2ZUNvbXBvbmVudCwgdGFyZ2V0Q29tcG9uZW50LCBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0Q29tcG9uZW50LmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UGF0aC5wdXNoKDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSAodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IGFzIG51bWJlcikgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudCA9IHsgaXNDb2xsYXBzZWQ6IGZhbHNlLCByaWdodE5vZGVDb3VudCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcmlnaHRUYXJnZXRQYXRoIGFzIFBhdGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMubW92ZU5vZGUoYm9hcmQsIG9yaWdpblBhdGgsIHRhcmdldFBhdGgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNEcmFnZ2luZyhib2FyZCkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVBY3RpdmVPbkRyYWdPcmlnaW4oYWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRJc0RyYWdnaW5nKGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgIGZha2VEcmFnTm9kZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZmFrZURyYWdOb2RlRyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGdsb2JhbE1vdXNldXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5rZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGtleWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZFRhcmdldCA9IChvcmlnaW46IE1pbmRFbGVtZW50LCB0YXJnZXQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuIG9yaWdpbiAhPT0gdGFyZ2V0ICYmICFpc0NoaWxkRWxlbWVudChvcmlnaW4sIHRhcmdldCk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQWN0aXZlT25EcmFnT3JpZ2luID0gKGFjdGl2ZUVsZW1lbnQ6IE1pbmRFbGVtZW50LCBpc09yaWdpbiA9IHRydWUpID0+IHtcbiAgICBjb25zdCBhY3RpdmVDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGFjdGl2ZUVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGlmIChpc09yaWdpbikge1xuICAgICAgICBhY3RpdmVDb21wb25lbnQuZy5jbGFzc0xpc3QuYWRkKCdkcmFnZ2luZy1vcmlnaW4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhY3RpdmVDb21wb25lbnQuZy5jbGFzc0xpc3QuYWRkKCdkcmFnZ2luZy1jaGlsZCcpO1xuICAgIH1cbiAgICAhYWN0aXZlRWxlbWVudC5pc0NvbGxhcHNlZCAmJlxuICAgICAgICBhY3RpdmVFbGVtZW50LmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICAgICAgYWRkQWN0aXZlT25EcmFnT3JpZ2luKGNoaWxkLCBmYWxzZSk7XG4gICAgICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUFjdGl2ZU9uRHJhZ09yaWdpbiA9IChhY3RpdmVFbGVtZW50OiBNaW5kRWxlbWVudCwgaXNPcmlnaW4gPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgYWN0aXZlQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICBpZiAoaXNPcmlnaW4pIHtcbiAgICAgICAgYWN0aXZlQ29tcG9uZW50LmcuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ2dpbmctb3JpZ2luJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZlQ29tcG9uZW50LmcuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ2dpbmctY2hpbGQnKTtcbiAgICB9XG4gICAgIWFjdGl2ZUVsZW1lbnQuaXNDb2xsYXBzZWQgJiZcbiAgICAgICAgYWN0aXZlRWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgICAgIHJlbW92ZUFjdGl2ZU9uRHJhZ09yaWdpbihjaGlsZCwgZmFsc2UpO1xuICAgICAgICB9KTtcbn07XG5cbmNvbnN0IHVwZGF0ZVBhdGhCeUxheW91dEFuZERyb3BUYXJnZXQgPSAoXG4gICAgdGFyZ2V0UGF0aDogUGF0aCxcbiAgICBsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlLFxuICAgIGRyb3BUYXJnZXQ6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfVxuKSA9PiB7XG4gICAgLy8g5LiK5LiL5biD5bGA77ya5bem5Y+z5piv5YWE5byf6IqC54K577yM5LiK5LiL5piv5a2Q6IqC54K5XG4gICAgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpICYmIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAndG9wJykge1xuICAgICAgICAgICAgdGFyZ2V0UGF0aC5wdXNoKGRyb3BUYXJnZXQudGFyZ2V0LmNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkgJiYgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goZHJvcFRhcmdldC50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlpoLmnpzmmK/lt6bvvIzkvY3nva7kuI3lj5jvvIzlj7PliJnmj5LlhaXliLDkuIvkuIDkuKrlhYTlvJ/oioLngrlcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoID0gUGF0aC5uZXh0KHRhcmdldFBhdGgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIOawtOW5s+W4g+WxgC/moIflh4bluIPlsYDvvJrkuIrkuIvmmK/lhYTlvJ/oioLngrnvvIzlt6blj7PmmK/lrZDoioLngrlcbiAgICBpZiAoaXNIb3Jpem9udGFsTG9naWNMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBpZiAoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGgucHVzaChkcm9wVGFyZ2V0LnRhcmdldC5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goZHJvcFRhcmdldC50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlpoLmnpzmmK/kuIrvvIzkvY3nva7kuI3lj5jvvIzkuIvmj5LlhaXliLDkuIvkuIDkuKrlhYTlvJ/oioLngrlcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgdGFyZ2V0UGF0aCA9IFBhdGgubmV4dCh0YXJnZXRQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDnvKnov5vluIPlsYDvvJrkuIrkuIvmmK/lhYTlvJ/oioLngrnvvIzlt6blj7PmmK/lrZDoioLngrnvvIzkvYbkuIrvvIjlt6bkuIov5Y+z5LiK77yJ77yM5o6i5rWL5Yiw5LiK5piv5a2Q6IqC54K577yM5LiL5YiZ5L2N572u5LiN5Y+Y77yM5Y+N5LmL5ZCM55CG44CCXG4gICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGggPSBQYXRoLm5leHQodGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkgJiYgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoID0gUGF0aC5uZXh0KHRhcmdldFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goZHJvcFRhcmdldC50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpICYmIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goZHJvcFRhcmdldC50YXJnZXQuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0UGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVSaWdodE5vZGVDb3VudCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBhY3RpdmVDb21wb25lbnQ6IE1pbmROb2RlQ29tcG9uZW50LFxuICAgIHRhcmdldENvbXBvbmVudDogTWluZE5vZGVDb21wb25lbnQsXG4gICAgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHRcbikgPT4ge1xuICAgIGxldCByaWdodE5vZGVDb3VudDtcbiAgICBjb25zdCBtaW5kbWFwRWxlbWVudCA9IGZpbmRVcEVsZW1lbnQodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKS5yb290O1xuICAgIGNvbnN0IG1pbmRtYXBDb21wb25lbnQgPSBFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQobWluZG1hcEVsZW1lbnQgYXMgUGxhaXRNaW5kKSBhcyBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSBtaW5kbWFwQ29tcG9uZW50Py5yb290LmNoaWxkcmVuLmluZGV4T2YoYWN0aXZlQ29tcG9uZW50Lm5vZGUpIGFzIG51bWJlcjtcbiAgICBjb25zdCB0YXJnZXRJbmRleCA9IG1pbmRtYXBDb21wb25lbnQ/LnJvb3QuY2hpbGRyZW4uaW5kZXhPZih0YXJnZXRDb21wb25lbnQubm9kZSkgYXMgbnVtYmVyO1xuICAgIGNvbnN0IGlzQWN0aXZlT25SaWdodCA9IGFjdGl2ZUluZGV4ICE9PSAtMSAmJiBhY3RpdmVJbmRleCA8PSAoYWN0aXZlQ29tcG9uZW50LnBhcmVudC5vcmlnaW4ucmlnaHROb2RlQ291bnQgYXMgbnVtYmVyKSAtIDE7XG4gICAgY29uc3QgaXNUYXJnZXRPblJpZ2h0ID1cbiAgICAgICAgdGFyZ2V0Q29tcG9uZW50LnBhcmVudCAmJiB0YXJnZXRJbmRleCAhPT0gLTEgJiYgdGFyZ2V0SW5kZXggPD0gKHRhcmdldENvbXBvbmVudC5wYXJlbnQub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IGFzIG51bWJlcikgLSAxO1xuICAgIGNvbnN0IGlzQm90aE9uUmlnaHQgPSBpc0FjdGl2ZU9uUmlnaHQgJiYgaXNUYXJnZXRPblJpZ2h0O1xuICAgIGNvbnN0IHJvb3RDaGlsZENvdW50ID0gbWluZG1hcENvbXBvbmVudC5yb290LmNoaWxkcmVuPy5sZW5ndGggYXMgbnVtYmVyO1xuICAgIGNvbnN0IHJvb3RSaWdodE5vZGVDb3VudCA9IG1pbmRtYXBDb21wb25lbnQ/LnJvb3Qub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IGFzIG51bWJlcjtcblxuICAgIGlmICghaXNCb3RoT25SaWdodCkge1xuICAgICAgICBpZiAoaXNBY3RpdmVPblJpZ2h0KSB7XG4gICAgICAgICAgICByaWdodE5vZGVDb3VudCA9IHJvb3RDaGlsZENvdW50IDwgcm9vdFJpZ2h0Tm9kZUNvdW50ID8gcm9vdENoaWxkQ291bnQgLSAxIDogcm9vdFJpZ2h0Tm9kZUNvdW50IC0gMTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyByaWdodE5vZGVDb3VudCB9LCBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBhY3RpdmVDb21wb25lbnQucGFyZW50Lm9yaWdpbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVGFyZ2V0T25SaWdodCAmJiBkZXRlY3RSZXN1bHQgIT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHJpZ2h0Tm9kZUNvdW50ID0gcm9vdENoaWxkQ291bnQgPCByb290UmlnaHROb2RlQ291bnQgPyByb290UmlnaHROb2RlQ291bnQgOiByb290UmlnaHROb2RlQ291bnQgKyAxO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHJpZ2h0Tm9kZUNvdW50IH0sIFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHRhcmdldENvbXBvbmVudC5wYXJlbnQub3JpZ2luKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL+S6jOe6p+WtkOiKgueCueaLluWKqOWIsOagueiKgueCueW3puS+p1xuICAgICAgICBpZiAodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmlzUm9vdCAmJiBkZXRlY3RSZXN1bHQgPT09ICdsZWZ0JyAmJiBhY3RpdmVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJpZ2h0Tm9kZUNvdW50ID0gcm9vdENoaWxkQ291bnQ7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcmlnaHROb2RlQ291bnQgfSwgUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0Q29tcG9uZW50LmVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNvbnN0IElTX0RSQUdHSU5HID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgYm9vbGVhbj4oKTtcblxuZXhwb3J0IGNvbnN0IGlzRHJhZ2dpbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gISFJU19EUkFHR0lORy5nZXQoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldElzRHJhZ2dpbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHN0YXRlOiBib29sZWFuKSA9PiB7XG4gICAgSVNfRFJBR0dJTkcuc2V0KGJvYXJkLCBzdGF0ZSk7XG59O1xuIl19
|
|
@@ -3,7 +3,7 @@ import { getSizeByText } from '@plait/richtext';
|
|
|
3
3
|
import { MindElement, PlaitMind } from '../interfaces';
|
|
4
4
|
import { PlaitMindComponent } from '../mind.component';
|
|
5
5
|
import { MindNodeComponent } from '../node.component';
|
|
6
|
-
import { changeRightNodeCount, insertMindElement, deleteSelectedELements, filterChildElement, findParentElement, shouldChangeRightNodeCount } from '../utils';
|
|
6
|
+
import { changeRightNodeCount, insertMindElement, deleteSelectedELements, filterChildElement, findParentElement, shouldChangeRightNodeCount, insertSiblingElementHandleAbstract } from '../utils';
|
|
7
7
|
import { getRectangleByNode, hitMindElement } from '../utils/graph';
|
|
8
8
|
import { isVirtualKey } from '../utils/is-virtual-key';
|
|
9
9
|
import { withDnd } from './with-dnd';
|
|
@@ -77,6 +77,7 @@ export const withMind = (board) => {
|
|
|
77
77
|
if (shouldChangeRightNodeCount(selectedElement)) {
|
|
78
78
|
changeRightNodeCount(board, selectedElementPath.slice(0, 1), 1);
|
|
79
79
|
}
|
|
80
|
+
insertSiblingElementHandleAbstract(board, selectedElement);
|
|
80
81
|
insertMindElement(board, selectedElement, findNewSiblingNodePath(board, selectedElement));
|
|
81
82
|
}
|
|
82
83
|
return;
|
|
@@ -182,4 +183,4 @@ export const withMind = (board) => {
|
|
|
182
183
|
};
|
|
183
184
|
return withEmoji(withAbstract(withDnd(board)));
|
|
184
185
|
};
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcGx1Z2lucy93aXRoLW1pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsaUJBQWlCLEVBSWpCLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBRVYsbUJBQW1CLEVBQ25CLFlBQVksRUFDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUNILG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzdCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFF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QUMsRUFBRTtnQkFDdkMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDeEU7U0FDSjtRQUNELGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQXlCLEVBQUUsRUFBRTtRQUNqRCxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBa0IsQ0FBQztRQUNyRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNoRCxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBob3RrZXlzLFxuICAgIElTX1RFWFRfRURJVEFCTEUsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEhpc3RvcnlCb2FyZCxcbiAgICBQbGFpdFBsdWdpbixcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIFBvaW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludCxcbiAgICBUcmFuc2Zvcm1zLFxuICAgIFJhbmdlLFxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb24sXG4gICAgUGxhaXRFbGVtZW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFNpemVCeVRleHQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgUGxhaXRNaW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vbWluZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIGNoYW5nZVJpZ2h0Tm9kZUNvdW50LFxuICAgIGluc2VydE1pbmRFbGVtZW50LFxuICAgIGRlbGV0ZVNlbGVjdGVkRUxlbWVudHMsXG4gICAgZmlsdGVyQ2hpbGRFbGVtZW50LFxuICAgIGZpbmRQYXJlbnRFbGVtZW50LFxuICAgIHNob3VsZENoYW5nZVJpZ2h0Tm9kZUNvdW50XG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSwgaGl0TWluZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9ncmFwaCc7XG5pbXBvcnQgeyBpc1ZpcnR1YWxLZXkgfSBmcm9tICcuLi91dGlscy9pcy12aXJ0dWFsLWtleSc7XG5pbXBvcnQgeyB3aXRoRG5kIH0gZnJvbSAnLi93aXRoLWRuZCc7XG5pbXBvcnQgeyBidWlsZENsaXBib2FyZERhdGEsIGdldERhdGFGcm9tQ2xpcGJvYXJkLCBpbnNlcnRDbGlwYm9hcmREYXRhLCBpbnNlcnRDbGlwYm9hcmRUZXh0LCBzZXRDbGlwYm9hcmREYXRhIH0gZnJvbSAnLi4vdXRpbHMvY2xpcGJvYXJkJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGZpbmROZXdDaGlsZE5vZGVQYXRoLCBmaW5kTmV3U2libGluZ05vZGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvcGF0aCc7XG5pbXBvcnQgeyBlbnRlck5vZGVFZGl0aW5nIH0gZnJvbSAnLi4vdXRpbHMvbm9kZSc7XG5pbXBvcnQgeyB3aXRoRW1vamkgfSBmcm9tICcuL2Vtb2ppL3dpdGgtbWluZC1lbW9qaSc7XG5pbXBvcnQgeyBUT1BJQ19ERUZBVUxUX01BWF9XT1JEX0NPVU5UIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IHdpdGhBYnN0cmFjdCB9IGZyb20gJy4vd2l0aC1hYnN0cmFjdCc7XG5cbmV4cG9ydCBjb25zdCB3aXRoTWluZCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICAgZHJhd0VsZW1lbnQsXG4gICAgICAgIGRibGNsaWNrLFxuICAgICAgICBrZXlkb3duLFxuICAgICAgICBpbnNlcnRGcmFnbWVudCxcbiAgICAgICAgc2V0RnJhZ21lbnQsXG4gICAgICAgIGRlbGV0ZUZyYWdtZW50LFxuICAgICAgICBpc0hpdFNlbGVjdGlvbixcbiAgICAgICAgZ2V0UmVjdGFuZ2xlLFxuICAgICAgICBpc01vdmFibGUsXG4gICAgICAgIGlzUmVjdXJzaW9uXG4gICAgfSA9IGJvYXJkO1xuXG4gICAgYm9hcmQuZHJhd0VsZW1lbnQgPSAoY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCkgPT4ge1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChjb250ZXh0LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gUGxhaXRNaW5kQ29tcG9uZW50O1xuICAgICAgICB9IGVsc2UgaWYgKE1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHJhd0VsZW1lbnQoY29udGV4dCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdldFJlY3RhbmdsZSA9IGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGVCeU5vZGUoTWluZEVsZW1lbnQuZ2V0Tm9kZShlbGVtZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZShlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNSZWN1cnNpb24gPSBlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpICYmIGVsZW1lbnQuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNSZWN1cnNpb24oZWxlbWVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzSGl0U2VsZWN0aW9uID0gKGVsZW1lbnQsIHJhbmdlOiBSYW5nZSkgPT4ge1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgZWxlbWVudCkgJiYgYm9hcmQuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjbGllbnQgPSBnZXRSZWN0YW5nbGVCeU5vZGUoTWluZEVsZW1lbnQuZ2V0Tm9kZShlbGVtZW50KSk7XG4gICAgICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KFJlY3RhbmdsZUNsaWVudC50b1JlY3RhbmdsZUNsaWVudChbcmFuZ2UuYW5jaG9yLCByYW5nZS5mb2N1c10pLCBjbGllbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0hpdFNlbGVjdGlvbihlbGVtZW50LCByYW5nZSk7XG4gICAgfTtcblxuICAgIGJvYXJkLmlzTW92YWJsZSA9IGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KSAmJiBlbGVtZW50LmlzUm9vdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTW92YWJsZShlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoYm9hcmQub3B0aW9ucy5yZWFkb25seSB8fCBJU19URVhUX0VESVRBQkxFLmdldChib2FyZCkpIHtcbiAgICAgICAgICAgIGtleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBNaW5kRWxlbWVudFtdO1xuICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgICAgICAgIChldmVudC5rZXkgPT09ICdUYWInIHx8XG4gICAgICAgICAgICAgICAgICAgIChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIXNlbGVjdGVkRWxlbWVudHNbMF0uaXNSb290ICYmICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChzZWxlY3RlZEVsZW1lbnRzWzBdKSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IHNlbGVjdGVkRWxlbWVudHNbMF07XG4gICAgICAgICAgICAgICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBzZWxlY3RlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ6IFBhcnRpYWw8TWluZEVsZW1lbnQ+ID0geyBpc0NvbGxhcHNlZDogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0SGlzdG9yeUJvYXJkLndpdGhvdXRTYXZpbmcoYm9hcmQsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHNlbGVjdGVkRWxlbWVudFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0TWluZEVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCwgZmluZE5ld0NoaWxkTm9kZVBhdGgoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGFuZ2VSaWdodE5vZGVDb3VudChzZWxlY3RlZEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VSaWdodE5vZGVDb3VudChib2FyZCwgc2VsZWN0ZWRFbGVtZW50UGF0aC5zbGljZSgwLCAxKSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0TWluZEVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCwgZmluZE5ld1NpYmxpbmdOb2RlUGF0aChib2FyZCwgc2VsZWN0ZWRFbGVtZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChob3RrZXlzLmlzRGVsZXRlQmFja3dhcmQoZXZlbnQpIHx8IGhvdGtleXMuaXNEZWxldGVGb3J3YXJkKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlU2VsZWN0ZWRFTGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3ROb2RlOiBNaW5kTm9kZSB8IGFueSA9IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RMZXZlbEVsZW1lbnRzID0gZmlsdGVyQ2hpbGRFbGVtZW50KHNlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IGZpcnN0TGV2ZWxFbGVtZW50c1swXTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZmlyc3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlSW5kZXggPSBmaXJzdENvbXBvbmVudD8ucGFyZW50Py5jaGlsZHJlbi5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLm9yaWdpbi5pZCA9PT0gZmlyc3RFbGVtZW50LmlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1NhbWVQYXJlbnQgPSBmaXJzdExldmVsRWxlbWVudHMuZXZlcnkoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5kUGFyZW50RWxlbWVudChlbGVtZW50KSAmJiBmaW5kUGFyZW50RWxlbWVudChmaXJzdExldmVsRWxlbWVudHNbMF0pID09PSBmaW5kUGFyZW50RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lUGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ291bnQgPSBmaXJzdENvbXBvbmVudCEucGFyZW50Py5jaGlsZHJlbi5sZW5ndGggLSBmaXJzdExldmVsRWxlbWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBmaXJzdENvbXBvbmVudD8ucGFyZW50O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBmaXJzdENvbXBvbmVudD8ucGFyZW50LmNoaWxkcmVuW2ZpcnN0TGV2ZWxFbGVtZW50cy5sZW5ndGhdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJbmRleCEgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGZpcnN0Q29tcG9uZW50Py5wYXJlbnQuY2hpbGRyZW5bbm9kZUluZGV4ISAtIDFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0TGV2ZWxFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZmlyc3RFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGZpcnN0Q29tcG9uZW50LnBhcmVudC5jaGlsZHJlbltmaXJzdEVsZW1lbnQuc3RhcnRdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGxhc3ROb2RlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGF1dG8gZW50ZXIgZWRpdCBzdGF0dXNcbiAgICAgICAgICAgIGlmICghaXNWaXJ0dWFsS2V5KGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgICAgICAgICBlbnRlck5vZGVFZGl0aW5nKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvYXJkLnNlbGVjdGlvbiAmJiBldmVudC5jb2RlID09PSAnU3BhY2UnKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAga2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmRibGNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChib2FyZC5vcHRpb25zLnJlYWRvbmx5IHx8IElTX1RFWFRfRURJVEFCTEUuZ2V0KGJvYXJkKSkge1xuICAgICAgICAgICAgZGJsY2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICBib2FyZC5jaGlsZHJlblxuICAgICAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiBQbGFpdE1pbmQuaXNNaW5kKHZhbHVlKSlcbiAgICAgICAgICAgIC5mb3JFYWNoKG1pbmRtYXAgPT4ge1xuICAgICAgICAgICAgICAgIGRlcHRoRmlyc3RSZWN1cnNpb248TWluZEVsZW1lbnQ+KG1pbmRtYXAgYXMgTWluZEVsZW1lbnQsIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKSAmJiBoaXRNaW5kRWxlbWVudChib2FyZCwgcG9pbnQsIG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRlck5vZGVFZGl0aW5nKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRibGNsaWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuc2V0RnJhZ21lbnQgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZmlsdGVyQ2hpbGRFbGVtZW50KGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpIGFzIE1pbmRFbGVtZW50W10pO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBidWlsZENsaXBib2FyZERhdGEoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgc2V0Q2xpcGJvYXJkRGF0YShkYXRhLCBlbGVtZW50cyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0RnJhZ21lbnQoZGF0YSk7XG4gICAgfTtcblxuICAgIGJvYXJkLmluc2VydEZyYWdtZW50ID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsIHRhcmdldFBvaW50PzogUG9pbnQpID0+IHtcbiAgICAgICAgaWYgKGJvYXJkLm9wdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGluc2VydEZyYWdtZW50KGRhdGEsIHRhcmdldFBvaW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0RGF0YUZyb21DbGlwYm9hcmQoZGF0YSk7XG4gICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGluc2VydENsaXBib2FyZERhdGEoYm9hcmQsIGVsZW1lbnRzLCB0YXJnZXRQb2ludCB8fCBbMCwgMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGRhdGE/LmdldERhdGEoYHRleHQvcGxhaW5gKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFNpemVCeVRleHQoXG4gICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpLnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgVE9QSUNfREVGQVVMVF9NQVhfV09SRF9DT1VOVFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIGlmICh0ZXh0ICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaW5zZXJ0Q2xpcGJvYXJkVGV4dChib2FyZCwgc2VsZWN0ZWRFbGVtZW50c1swXSwgdGV4dCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0RnJhZ21lbnQoZGF0YSwgdGFyZ2V0UG9pbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5kZWxldGVGcmFnbWVudCA9IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBNaW5kRWxlbWVudFtdO1xuICAgICAgICBkZWxldGVTZWxlY3RlZEVMZW1lbnRzKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzKTtcbiAgICAgICAgZGVsZXRlRnJhZ21lbnQoZGF0YSk7XG4gICAgfTtcblxuICAgIHJldHVybiB3aXRoRW1vamkod2l0aEFic3RyYWN0KHdpdGhEbmQoYm9hcmQpKSk7XG59O1xuIl19
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1taW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcGx1Z2lucy93aXRoLW1pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsaUJBQWlCLEVBSWpCLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBRVYsbUJBQW1CLEVBQ25CLFlBQVksRUFDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUNILG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzFCLGtDQUFrQyxFQUNyQyxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FB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SyxDQUFDLENBQUM7WUFDcEQsSUFBSSxJQUFJLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDdkMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDeEU7U0FDSjtRQUNELGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQXlCLEVBQUUsRUFBRTtRQUNqRCxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBa0IsQ0FBQztRQUNyRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNoRCxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBhZGRTZWxlY3RlZEVsZW1lbnQsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBob3RrZXlzLFxuICAgIElTX1RFWFRfRURJVEFCTEUsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEhpc3RvcnlCb2FyZCxcbiAgICBQbGFpdFBsdWdpbixcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIFBvaW50LFxuICAgIFJlY3RhbmdsZUNsaWVudCxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludCxcbiAgICBUcmFuc2Zvcm1zLFxuICAgIFJhbmdlLFxuICAgIGRlcHRoRmlyc3RSZWN1cnNpb24sXG4gICAgUGxhaXRFbGVtZW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFNpemVCeVRleHQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgUGxhaXRNaW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vbWluZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIGNoYW5nZVJpZ2h0Tm9kZUNvdW50LFxuICAgIGluc2VydE1pbmRFbGVtZW50LFxuICAgIGRlbGV0ZVNlbGVjdGVkRUxlbWVudHMsXG4gICAgZmlsdGVyQ2hpbGRFbGVtZW50LFxuICAgIGZpbmRQYXJlbnRFbGVtZW50LFxuICAgIHNob3VsZENoYW5nZVJpZ2h0Tm9kZUNvdW50LFxuICAgIGluc2VydFNpYmxpbmdFbGVtZW50SGFuZGxlQWJzdHJhY3Rcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlLCBoaXRNaW5kRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2dyYXBoJztcbmltcG9ydCB7IGlzVmlydHVhbEtleSB9IGZyb20gJy4uL3V0aWxzL2lzLXZpcnR1YWwta2V5JztcbmltcG9ydCB7IHdpdGhEbmQgfSBmcm9tICcuL3dpdGgtZG5kJztcbmltcG9ydCB7IGJ1aWxkQ2xpcGJvYXJkRGF0YSwgZ2V0RGF0YUZyb21DbGlwYm9hcmQsIGluc2VydENsaXBib2FyZERhdGEsIGluc2VydENsaXBib2FyZFRleHQsIHNldENsaXBib2FyZERhdGEgfSBmcm9tICcuLi91dGlscy9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgQWJzdHJhY3ROb2RlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgZmluZE5ld0NoaWxkTm9kZVBhdGgsIGZpbmROZXdTaWJsaW5nTm9kZVBhdGggfSBmcm9tICcuLi91dGlscy9wYXRoJztcbmltcG9ydCB7IGVudGVyTm9kZUVkaXRpbmcgfSBmcm9tICcuLi91dGlscy9ub2RlJztcbmltcG9ydCB7IHdpdGhFbW9qaSB9IGZyb20gJy4vZW1vamkvd2l0aC1taW5kLWVtb2ppJztcbmltcG9ydCB7IFRPUElDX0RFRkFVTFRfTUFYX1dPUkRfQ09VTlQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgd2l0aEFic3RyYWN0IH0gZnJvbSAnLi93aXRoLWFic3RyYWN0JztcblxuZXhwb3J0IGNvbnN0IHdpdGhNaW5kID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBkcmF3RWxlbWVudCxcbiAgICAgICAgZGJsY2xpY2ssXG4gICAgICAgIGtleWRvd24sXG4gICAgICAgIGluc2VydEZyYWdtZW50LFxuICAgICAgICBzZXRGcmFnbWVudCxcbiAgICAgICAgZGVsZXRlRnJhZ21lbnQsXG4gICAgICAgIGlzSGl0U2VsZWN0aW9uLFxuICAgICAgICBnZXRSZWN0YW5nbGUsXG4gICAgICAgIGlzTW92YWJsZSxcbiAgICAgICAgaXNSZWN1cnNpb25cbiAgICB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5kcmF3RWxlbWVudCA9IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGNvbnRleHQuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiBQbGFpdE1pbmRDb21wb25lbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgY29udGV4dC5lbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkcmF3RWxlbWVudChjb250ZXh0KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2V0UmVjdGFuZ2xlID0gZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZUJ5Tm9kZShNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5pc1JlY3Vyc2lvbiA9IGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgZWxlbWVudCkgJiYgZWxlbWVudC5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc1JlY3Vyc2lvbihlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNIaXRTZWxlY3Rpb24gPSAoZWxlbWVudCwgcmFuZ2U6IFJhbmdlKSA9PiB7XG4gICAgICAgIGlmIChNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSAmJiBib2FyZC5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpKTtcbiAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuaXNIaXQoUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtyYW5nZS5hbmNob3IsIHJhbmdlLmZvY3VzXSksIGNsaWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzSGl0U2VsZWN0aW9uKGVsZW1lbnQsIHJhbmdlKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuaXNNb3ZhYmxlID0gZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpICYmIGVsZW1lbnQuaXNSb290KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNNb3ZhYmxlKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5rZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChib2FyZC5vcHRpb25zLnJlYWRvbmx5IHx8IElTX1RFWFRfRURJVEFCTEUuZ2V0KGJvYXJkKSkge1xuICAgICAgICAgICAga2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgICAgICAgKGV2ZW50LmtleSA9PT0gJ1RhYicgfHxcbiAgICAgICAgICAgICAgICAgICAgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhc2VsZWN0ZWRFbGVtZW50c1swXS5pc1Jvb3QgJiYgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHNlbGVjdGVkRWxlbWVudHNbMF0pKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50UGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudC5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudDogUGFydGlhbDxNaW5kRWxlbWVudD4gPSB7IGlzQ29sbGFwc2VkOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgUGxhaXRIaXN0b3J5Qm9hcmQud2l0aG91dFNhdmluZyhib2FyZCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgc2VsZWN0ZWRFbGVtZW50UGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpbnNlcnRNaW5kRWxlbWVudChib2FyZCwgc2VsZWN0ZWRFbGVtZW50LCBmaW5kTmV3Q2hpbGROb2RlUGF0aChib2FyZCwgc2VsZWN0ZWRFbGVtZW50KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZENoYW5nZVJpZ2h0Tm9kZUNvdW50KHNlbGVjdGVkRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZVJpZ2h0Tm9kZUNvdW50KGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRQYXRoLnNsaWNlKDAsIDEpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGluc2VydFNpYmxpbmdFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0TWluZEVsZW1lbnQoYm9hcmQsIHNlbGVjdGVkRWxlbWVudCwgZmluZE5ld1NpYmxpbmdOb2RlUGF0aChib2FyZCwgc2VsZWN0ZWRFbGVtZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChob3RrZXlzLmlzRGVsZXRlQmFja3dhcmQoZXZlbnQpIHx8IGhvdGtleXMuaXNEZWxldGVGb3J3YXJkKGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlU2VsZWN0ZWRFTGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3ROb2RlOiBNaW5kTm9kZSB8IGFueSA9IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RMZXZlbEVsZW1lbnRzID0gZmlsdGVyQ2hpbGRFbGVtZW50KHNlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IGZpcnN0TGV2ZWxFbGVtZW50c1swXTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZmlyc3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlSW5kZXggPSBmaXJzdENvbXBvbmVudD8ucGFyZW50Py5jaGlsZHJlbi5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLm9yaWdpbi5pZCA9PT0gZmlyc3RFbGVtZW50LmlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1NhbWVQYXJlbnQgPSBmaXJzdExldmVsRWxlbWVudHMuZXZlcnkoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5kUGFyZW50RWxlbWVudChlbGVtZW50KSAmJiBmaW5kUGFyZW50RWxlbWVudChmaXJzdExldmVsRWxlbWVudHNbMF0pID09PSBmaW5kUGFyZW50RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lUGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ291bnQgPSBmaXJzdENvbXBvbmVudCEucGFyZW50Py5jaGlsZHJlbi5sZW5ndGggLSBmaXJzdExldmVsRWxlbWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBmaXJzdENvbXBvbmVudD8ucGFyZW50O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBmaXJzdENvbXBvbmVudD8ucGFyZW50LmNoaWxkcmVuW2ZpcnN0TGV2ZWxFbGVtZW50cy5sZW5ndGhdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJbmRleCEgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGZpcnN0Q29tcG9uZW50Py5wYXJlbnQuY2hpbGRyZW5bbm9kZUluZGV4ISAtIDFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0TGV2ZWxFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZmlyc3RFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0Tm9kZSA9IGZpcnN0Q29tcG9uZW50LnBhcmVudC5jaGlsZHJlbltmaXJzdEVsZW1lbnQuc3RhcnRdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsYXN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGxhc3ROb2RlLm9yaWdpbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGF1dG8gZW50ZXIgZWRpdCBzdGF0dXNcbiAgICAgICAgICAgIGlmICghaXNWaXJ0dWFsS2V5KGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICAgICAgICAgICAgICBlbnRlck5vZGVFZGl0aW5nKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvYXJkLnNlbGVjdGlvbiAmJiBldmVudC5jb2RlID09PSAnU3BhY2UnKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAga2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmRibGNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChib2FyZC5vcHRpb25zLnJlYWRvbmx5IHx8IElTX1RFWFRfRURJVEFCTEUuZ2V0KGJvYXJkKSkge1xuICAgICAgICAgICAgZGJsY2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICBib2FyZC5jaGlsZHJlblxuICAgICAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiBQbGFpdE1pbmQuaXNNaW5kKHZhbHVlKSlcbiAgICAgICAgICAgIC5mb3JFYWNoKG1pbmRtYXAgPT4ge1xuICAgICAgICAgICAgICAgIGRlcHRoRmlyc3RSZWN1cnNpb248TWluZEVsZW1lbnQ+KG1pbmRtYXAgYXMgTWluZEVsZW1lbnQsIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKSAmJiBoaXRNaW5kRWxlbWVudChib2FyZCwgcG9pbnQsIG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRlck5vZGVFZGl0aW5nKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRibGNsaWNrKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuc2V0RnJhZ21lbnQgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZmlsdGVyQ2hpbGRFbGVtZW50KGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpIGFzIE1pbmRFbGVtZW50W10pO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBidWlsZENsaXBib2FyZERhdGEoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgc2V0Q2xpcGJvYXJkRGF0YShkYXRhLCBlbGVtZW50cyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0RnJhZ21lbnQoZGF0YSk7XG4gICAgfTtcblxuICAgIGJvYXJkLmluc2VydEZyYWdtZW50ID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsIHRhcmdldFBvaW50PzogUG9pbnQpID0+IHtcbiAgICAgICAgaWYgKGJvYXJkLm9wdGlvbnMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGluc2VydEZyYWdtZW50KGRhdGEsIHRhcmdldFBvaW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0RGF0YUZyb21DbGlwYm9hcmQoZGF0YSk7XG4gICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGluc2VydENsaXBib2FyZERhdGEoYm9hcmQsIGVsZW1lbnRzLCB0YXJnZXRQb2ludCB8fCBbMCwgMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGRhdGE/LmdldERhdGEoYHRleHQvcGxhaW5gKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFNpemVCeVRleHQoXG4gICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpLnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgVE9QSUNfREVGQVVMVF9NQVhfV09SRF9DT1VOVFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgIGlmICh0ZXh0ICYmIHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaW5zZXJ0Q2xpcGJvYXJkVGV4dChib2FyZCwgc2VsZWN0ZWRFbGVtZW50c1swXSwgdGV4dCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0RnJhZ21lbnQoZGF0YSwgdGFyZ2V0UG9pbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5kZWxldGVGcmFnbWVudCA9IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBNaW5kRWxlbWVudFtdO1xuICAgICAgICBkZWxldGVTZWxlY3RlZEVMZW1lbnRzKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzKTtcbiAgICAgICAgZGVsZXRlRnJhZ21lbnQoZGF0YSk7XG4gICAgfTtcblxuICAgIHJldHVybiB3aXRoRW1vamkod2l0aEFic3RyYWN0KHdpdGhEbmQoYm9hcmQpKSk7XG59O1xuIl19
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { PlaitNode, Transforms } from '@plait/core';
|
|
2
|
-
import { isHorizontalLogicLayout, isVerticalLogicLayout } from '@plait/layouts';
|
|
2
|
+
import { isHorizontalLogicLayout, isStandardLayout, isVerticalLogicLayout } from '@plait/layouts';
|
|
3
|
+
import { PlaitMind } from '../interfaces/element';
|
|
4
|
+
import { handleAbstractIncluded } from '../utils/abstract/common';
|
|
3
5
|
export const setLayout = (board, layout, path) => {
|
|
4
6
|
correctLogicLayoutNode(board, layout, path);
|
|
7
|
+
const element = PlaitNode.get(board, path);
|
|
8
|
+
if (PlaitMind.isMind(element) && isStandardLayout(layout)) {
|
|
9
|
+
handleAbstractIncluded(board, element);
|
|
10
|
+
}
|
|
5
11
|
Transforms.setNode(board, { layout }, path);
|
|
6
12
|
};
|
|
7
13
|
const correctLogicLayoutNode = (board, layout, path) => {
|
|
@@ -20,4 +26,4 @@ const correctLogicLayoutNode = (board, layout, path) => {
|
|
|
20
26
|
});
|
|
21
27
|
}
|
|
22
28
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdHJhbnNmb3Jtcy9sYXlvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSCxPQUFPLEVBQWUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBaUIsRUFBRSxNQUFzQixFQUFFLElBQVUsRUFBRSxFQUFFO0lBQy9FLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFnQixDQUFDO0lBRTFELElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN2RCxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDMUM7SUFFRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE1BQXNCLEVBQUUsSUFBVSxFQUFFLEVBQUU7SUFDckYsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBZ0IsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ2QsSUFDSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDMUU7b0JBQ0UsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUNqRTtnQkFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO29CQUN4QixzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDM0Q7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFDO0tBQ047QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQYXRoLCBQbGFpdE5vZGUsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBpc0hvcml6b250YWxMb2dpY0xheW91dCwgaXNTdGFuZGFyZExheW91dCwgaXNWZXJ0aWNhbExvZ2ljTGF5b3V0LCBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgaGFuZGxlQWJzdHJhY3RJbmNsdWRlZCB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBzZXRMYXlvdXQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGxheW91dDogTWluZExheW91dFR5cGUsIHBhdGg6IFBhdGgpID0+IHtcbiAgICBjb3JyZWN0TG9naWNMYXlvdXROb2RlKGJvYXJkLCBsYXlvdXQsIHBhdGgpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKSBhcyBNaW5kRWxlbWVudDtcblxuICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpICYmIGlzU3RhbmRhcmRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBoYW5kbGVBYnN0cmFjdEluY2x1ZGVkKGJvYXJkLCBlbGVtZW50KTtcbiAgICB9XG5cbiAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgbGF5b3V0IH0sIHBhdGgpO1xufTtcblxuY29uc3QgY29ycmVjdExvZ2ljTGF5b3V0Tm9kZSA9IChib2FyZDogUGxhaXRCb2FyZCwgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKTtcbiAgICBpZiAobm9kZSAmJiBsYXlvdXQpIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgodmFsdWU6IFBsYWl0Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5sYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChpc0hvcml6b250YWxMb2dpY0xheW91dChsYXlvdXQpICYmIGlzVmVydGljYWxMb2dpY0xheW91dCh2YWx1ZS5sYXlvdXQpKSB8fFxuICAgICAgICAgICAgICAgICAgICAoaXNWZXJ0aWNhbExvZ2ljTGF5b3V0KGxheW91dCkgJiYgaXNIb3Jpem9udGFsTG9naWNMYXlvdXQodmFsdWUubGF5b3V0KSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IGxheW91dDogbnVsbCB9LCBbLi4ucGF0aCwgaW5kZXhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29ycmVjdExvZ2ljTGF5b3V0Tm9kZShib2FyZCwgbGF5b3V0LCBbLi4ucGF0aCwgaW5kZXhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AbstractNode, isStandardLayout } from '@plait/layouts';
|
|
2
|
+
import { MindElement } from '../../interfaces/element';
|
|
2
3
|
import { Path, PlaitBoard, PlaitElement, Transforms } from '@plait/core';
|
|
3
4
|
import { createMindElement, divideElementByParent, filterChildElement } from '../mind';
|
|
4
5
|
import { GRAY_COLOR } from '../../constants';
|
|
@@ -27,14 +28,7 @@ export const separateChildren = (parentElement) => {
|
|
|
27
28
|
return { leftChildren, rightChildren };
|
|
28
29
|
};
|
|
29
30
|
export const isSetAbstract = (element) => {
|
|
30
|
-
|
|
31
|
-
const parent = component.parent;
|
|
32
|
-
if (!parent)
|
|
33
|
-
return false;
|
|
34
|
-
const elementIndex = parent.children.indexOf(component.node);
|
|
35
|
-
return parent.children.some(child => {
|
|
36
|
-
return AbstractNode.isAbstract(child.origin) && elementIndex >= child.origin.start && elementIndex <= child.origin.end;
|
|
37
|
-
});
|
|
31
|
+
return !!getCorrespondingAbstract(element);
|
|
38
32
|
};
|
|
39
33
|
export const canSetAbstract = (element) => {
|
|
40
34
|
return !PlaitElement.isRootElement(element) && !AbstractNode.isAbstract(element) && !isSetAbstract(element);
|
|
@@ -58,22 +52,62 @@ export const setAbstractByElements = (board, groupParent, group) => {
|
|
|
58
52
|
const childrenLength = groupParent.children.length;
|
|
59
53
|
const path = [...PlaitBoard.findPath(board, groupParent), childrenLength];
|
|
60
54
|
const leftChildren = indexArray.filter(index => index >= rightNodeCount);
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
55
|
+
const rightChildren = indexArray.filter(index => index < rightNodeCount);
|
|
56
|
+
insertAbstractNode(board, path, rightChildren[0], rightChildren[rightChildren.length - 1]);
|
|
57
|
+
insertAbstractNode(board, Path.next(path), leftChildren[0], leftChildren[leftChildren.length - 1]);
|
|
64
58
|
}
|
|
65
59
|
else {
|
|
66
60
|
const path = [...PlaitBoard.findPath(board, groupParent), groupParent.children.length];
|
|
67
|
-
|
|
61
|
+
insertAbstractNode(board, path, start, end);
|
|
68
62
|
}
|
|
69
63
|
};
|
|
70
|
-
export const
|
|
64
|
+
export const insertAbstractNode = (board, path, start, end) => {
|
|
71
65
|
const mindElement = createMindElement('概要', 28, 20, {
|
|
72
66
|
strokeColor: GRAY_COLOR,
|
|
73
|
-
|
|
67
|
+
branchColor: GRAY_COLOR
|
|
74
68
|
});
|
|
75
69
|
mindElement.start = start;
|
|
76
70
|
mindElement.end = end;
|
|
77
71
|
Transforms.insertNode(board, mindElement, path);
|
|
78
72
|
};
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGFBQTBCLEVBQUUsRUFBRTtJQUMzRCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsY0FBZSxDQUFDO0lBQ3JELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDeEMsSUFBSSxhQUFhLEdBQUcsRUFBRSxFQUNsQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRXRCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxjQUFjLEVBQUU7WUFDOUQsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixTQUFTO1NBQ1o7UUFDRCxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FB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QVcsRUFBRSxFQUFFO0lBQzNGLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ2hELFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLGFBQWEsRUFBRSxVQUFVO0tBQzVCLENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFdBQVcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBRXRCLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdE5vZGUsIGlzU3RhbmRhcmRMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQYXRoLCBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL25vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IGNyZWF0ZU1pbmRFbGVtZW50LCBkaXZpZGVFbGVtZW50QnlQYXJlbnQsIGZpbHRlckNoaWxkRWxlbWVudCB9IGZyb20gJy4uL21pbmQnO1xuaW1wb3J0IHsgR1JBWV9DT0xPUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuXG5leHBvcnQgY29uc3Qgc2VwYXJhdGVDaGlsZHJlbiA9IChwYXJlbnRFbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCE7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuICAgIGxldCByaWdodENoaWxkcmVuID0gW10sXG4gICAgICAgIGxlZnRDaGlsZHJlbiA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLmVuZCA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5zdGFydCA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbGVmdENoaWxkcmVuLCByaWdodENoaWxkcmVuIH07XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZXRBYnN0cmFjdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGNvbnN0IHBhcmVudCA9IGNvbXBvbmVudC5wYXJlbnQ7XG5cbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgZWxlbWVudEluZGV4ID0gcGFyZW50LmNoaWxkcmVuLmluZGV4T2YoY29tcG9uZW50Lm5vZGUpO1xuXG4gICAgcmV0dXJuIHBhcmVudC5jaGlsZHJlbi5zb21lKGNoaWxkID0+IHtcbiAgICAgICAgcmV0dXJuIEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkLm9yaWdpbikgJiYgZWxlbWVudEluZGV4ID49IGNoaWxkLm9yaWdpbi5zdGFydCEgJiYgZWxlbWVudEluZGV4IDw9IGNoaWxkLm9yaWdpbi5lbmQhO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhblNldEFic3RyYWN0ID0gKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgIHJldHVybiAhUGxhaXRFbGVtZW50LmlzUm9vdEVsZW1lbnQoZWxlbWVudCkgJiYgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpICYmICFpc1NldEFic3RyYWN0KGVsZW1lbnQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEFic3RyYWN0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBsZXQgZWxlbWVudEdyb3VwID0gZmlsdGVyQ2hpbGRFbGVtZW50KGVsZW1lbnRzIGFzIE1pbmRFbGVtZW50W10pO1xuICAgIGNvbnN0IHsgcGFyZW50RWxlbWVudHMsIGFic3RyYWN0SW5jbHVkZWRHcm91cHMgfSA9IGRpdmlkZUVsZW1lbnRCeVBhcmVudChlbGVtZW50R3JvdXApO1xuXG4gICAgYWJzdHJhY3RJbmNsdWRlZEdyb3Vwcy5mb3JFYWNoKChncm91cCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgZ3JvdXBQYXJlbnQgPSBwYXJlbnRFbGVtZW50c1tpbmRleF07XG4gICAgICAgIHNldEFic3RyYWN0QnlFbGVtZW50cyhib2FyZCwgZ3JvdXBQYXJlbnQsIGdyb3VwKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRBYnN0cmFjdEJ5RWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGdyb3VwUGFyZW50OiBNaW5kRWxlbWVudCwgZ3JvdXA6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBpbmRleEFycmF5ID0gZ3JvdXAubWFwKGNoaWxkID0+IGdyb3VwUGFyZW50IS5jaGlsZHJlbi5pbmRleE9mKGNoaWxkKSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gZ3JvdXBQYXJlbnQ/LnJpZ2h0Tm9kZUNvdW50O1xuICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXhBcnJheVswXSxcbiAgICAgICAgZW5kID0gaW5kZXhBcnJheVtpbmRleEFycmF5Lmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKFxuICAgICAgICBpc1N0YW5kYXJkTGF5b3V0KE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChncm91cFBhcmVudCkpICYmXG4gICAgICAgIHJpZ2h0Tm9kZUNvdW50ICYmXG4gICAgICAgIHN0YXJ0IDwgcmlnaHROb2RlQ291bnQgJiZcbiAgICAgICAgZW5kID49IHJpZ2h0Tm9kZUNvdW50XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuTGVuZ3RoID0gZ3JvdXBQYXJlbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXRoID0gWy4uLlBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGdyb3VwUGFyZW50KSwgY2hpbGRyZW5MZW5ndGhdO1xuICAgICAgICBjb25zdCBsZWZ0Q2hpbGRyZW4gPSBpbmRleEFycmF5LmZpbHRlcihpbmRleCA9PiBpbmRleCA+PSByaWdodE5vZGVDb3VudCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0Q0hpbGRyZW4gPSBpbmRleEFycmF5LmZpbHRlcihpbmRleCA9PiBpbmRleCA8IHJpZ2h0Tm9kZUNvdW50KTtcblxuICAgICAgICBpbnNldEFic3RyYWN0Tm9kZShib2FyZCwgcGF0aCwgcmlnaHRDSGlsZHJlblswXSwgcmlnaHRDSGlsZHJlbltyaWdodENIaWxkcmVuLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgaW5zZXRBYnN0cmFjdE5vZGUoYm9hcmQsIFBhdGgubmV4dChwYXRoKSwgbGVmdENoaWxkcmVuWzBdLCBsZWZ0Q2hpbGRyZW5bbGVmdENoaWxkcmVuLmxlbmd0aCAtIDFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwYXRoID0gWy4uLlBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGdyb3VwUGFyZW50KSwgZ3JvdXBQYXJlbnQuY2hpbGRyZW4ubGVuZ3RoXTtcblxuICAgICAgICBpbnNldEFic3RyYWN0Tm9kZShib2FyZCwgcGF0aCwgc3RhcnQsIGVuZCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGluc2V0QWJzdHJhY3ROb2RlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwYXRoOiBQYXRoLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1pbmRFbGVtZW50ID0gY3JlYXRlTWluZEVsZW1lbnQoJ+amguimgScsIDI4LCAyMCwge1xuICAgICAgICBzdHJva2VDb2xvcjogR1JBWV9DT0xPUixcbiAgICAgICAgbGlua0xpbmVDb2xvcjogR1JBWV9DT0xPUlxuICAgIH0pO1xuXG4gICAgbWluZEVsZW1lbnQuc3RhcnQgPSBzdGFydDtcbiAgICBtaW5kRWxlbWVudC5lbmQgPSBlbmQ7XG5cbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG1pbmRFbGVtZW50LCBwYXRoKTtcbn07XG4iXX0=
|
|
73
|
+
export const handleAbstractIncluded = (board, element) => {
|
|
74
|
+
const rightNodeCount = element.rightNodeCount;
|
|
75
|
+
const abstract = element.children.find(child => {
|
|
76
|
+
return AbstractNode.isAbstract(child) && child.end >= rightNodeCount && child.start < rightNodeCount;
|
|
77
|
+
});
|
|
78
|
+
if (abstract) {
|
|
79
|
+
const path = PlaitBoard.findPath(board, abstract);
|
|
80
|
+
Transforms.setNode(board, { end: rightNodeCount - 1 }, path);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
export const getCorrespondingAbstract = (element) => {
|
|
84
|
+
const parent = MindElement.getParent(element);
|
|
85
|
+
if (!parent)
|
|
86
|
+
return undefined;
|
|
87
|
+
const elementIndex = parent.children.indexOf(element);
|
|
88
|
+
return parent.children.find(child => {
|
|
89
|
+
return AbstractNode.isAbstract(child) && elementIndex >= child.start && elementIndex <= child.end;
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
export const getBehindAbstracts = (element) => {
|
|
93
|
+
const parent = MindElement.getParent(element);
|
|
94
|
+
const index = parent.children.indexOf(element);
|
|
95
|
+
return parent.children.filter(child => AbstractNode.isAbstract(child) && child.start > index);
|
|
96
|
+
};
|
|
97
|
+
export const insertSiblingElementHandleAbstract = (board, selectedElement) => {
|
|
98
|
+
const abstract = getCorrespondingAbstract(selectedElement);
|
|
99
|
+
if (abstract) {
|
|
100
|
+
PlaitBoard.findPath(board, abstract);
|
|
101
|
+
Transforms.setNode(board, { end: abstract.end + 1 }, PlaitBoard.findPath(board, abstract));
|
|
102
|
+
}
|
|
103
|
+
const abstracts = getBehindAbstracts(selectedElement);
|
|
104
|
+
if (abstracts.length) {
|
|
105
|
+
moveAbstractPosition(board, abstracts, 1);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
export const moveAbstractPosition = (board, abstracts, step) => {
|
|
109
|
+
abstracts.forEach(abstract => {
|
|
110
|
+
Transforms.setNode(board, { start: abstract.start + step, end: abstract.end + step }, PlaitBoard.findPath(board, abstract));
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxhQUEwQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGNBQWUsQ0FBQztJQUNyRCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3hDLElBQUksYUFBYSxHQUFHLEVBQUUsRUFDbEIsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUV0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsY0FBYyxFQUFFO1lBQzlELGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIs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LEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQU0sR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNsSSxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Tm9kZSwgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgVHJhbnNmb3JtcyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZU1pbmRFbGVtZW50LCBkaXZpZGVFbGVtZW50QnlQYXJlbnQsIGZpbHRlckNoaWxkRWxlbWVudCB9IGZyb20gJy4uL21pbmQnO1xuaW1wb3J0IHsgR1JBWV9DT0xPUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuXG5leHBvcnQgY29uc3Qgc2VwYXJhdGVDaGlsZHJlbiA9IChwYXJlbnRFbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCE7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuICAgIGxldCByaWdodENoaWxkcmVuID0gW10sXG4gICAgICAgIGxlZnRDaGlsZHJlbiA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLmVuZCA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5zdGFydCA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbGVmdENoaWxkcmVuLCByaWdodENoaWxkcmVuIH07XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZXRBYnN0cmFjdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gISFnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QoZWxlbWVudCBhcyBNaW5kRWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FuU2V0QWJzdHJhY3QgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuICFQbGFpdEVsZW1lbnQuaXNSb290RWxlbWVudChlbGVtZW50KSAmJiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkgJiYgIWlzU2V0QWJzdHJhY3QoZWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QWJzdHJhY3QgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGxldCBlbGVtZW50R3JvdXAgPSBmaWx0ZXJDaGlsZEVsZW1lbnQoZWxlbWVudHMgYXMgTWluZEVsZW1lbnRbXSk7XG4gICAgY29uc3QgeyBwYXJlbnRFbGVtZW50cywgYWJzdHJhY3RJbmNsdWRlZEdyb3VwcyB9ID0gZGl2aWRlRWxlbWVudEJ5UGFyZW50KGVsZW1lbnRHcm91cCk7XG5cbiAgICBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzLmZvckVhY2goKGdyb3VwLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cFBhcmVudCA9IHBhcmVudEVsZW1lbnRzW2luZGV4XTtcbiAgICAgICAgc2V0QWJzdHJhY3RCeUVsZW1lbnRzKGJvYXJkLCBncm91cFBhcmVudCwgZ3JvdXApO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEFic3RyYWN0QnlFbGVtZW50cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZ3JvdXBQYXJlbnQ6IE1pbmRFbGVtZW50LCBncm91cDogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IGluZGV4QXJyYXkgPSBncm91cC5tYXAoY2hpbGQgPT4gZ3JvdXBQYXJlbnQhLmNoaWxkcmVuLmluZGV4T2YoY2hpbGQpKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBncm91cFBhcmVudD8ucmlnaHROb2RlQ291bnQ7XG4gICAgY29uc3Qgc3RhcnQgPSBpbmRleEFycmF5WzBdLFxuICAgICAgICBlbmQgPSBpbmRleEFycmF5W2luZGV4QXJyYXkubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoXG4gICAgICAgIGlzU3RhbmRhcmRMYXlvdXQoTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KGdyb3VwUGFyZW50KSkgJiZcbiAgICAgICAgcmlnaHROb2RlQ291bnQgJiZcbiAgICAgICAgc3RhcnQgPCByaWdodE5vZGVDb3VudCAmJlxuICAgICAgICBlbmQgPj0gcmlnaHROb2RlQ291bnRcbiAgICApIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5MZW5ndGggPSBncm91cFBhcmVudC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBhdGggPSBbLi4uUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZ3JvdXBQYXJlbnQpLCBjaGlsZHJlbkxlbmd0aF07XG4gICAgICAgIGNvbnN0IGxlZnRDaGlsZHJlbiA9IGluZGV4QXJyYXkuZmlsdGVyKGluZGV4ID0+IGluZGV4ID49IHJpZ2h0Tm9kZUNvdW50KTtcbiAgICAgICAgY29uc3QgcmlnaHRDaGlsZHJlbiA9IGluZGV4QXJyYXkuZmlsdGVyKGluZGV4ID0+IGluZGV4IDwgcmlnaHROb2RlQ291bnQpO1xuXG4gICAgICAgIGluc2VydEFic3RyYWN0Tm9kZShib2FyZCwgcGF0aCwgcmlnaHRDaGlsZHJlblswXSwgcmlnaHRDaGlsZHJlbltyaWdodENoaWxkcmVuLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgaW5zZXJ0QWJzdHJhY3ROb2RlKGJvYXJkLCBQYXRoLm5leHQocGF0aCksIGxlZnRDaGlsZHJlblswXSwgbGVmdENoaWxkcmVuW2xlZnRDaGlsZHJlbi5sZW5ndGggLSAxXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IFsuLi5QbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBncm91cFBhcmVudCksIGdyb3VwUGFyZW50LmNoaWxkcmVuLmxlbmd0aF07XG5cbiAgICAgICAgaW5zZXJ0QWJzdHJhY3ROb2RlKGJvYXJkLCBwYXRoLCBzdGFydCwgZW5kKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0QWJzdHJhY3ROb2RlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBwYXRoOiBQYXRoLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1pbmRFbGVtZW50ID0gY3JlYXRlTWluZEVsZW1lbnQoJ+amguimgScsIDI4LCAyMCwge1xuICAgICAgICBzdHJva2VDb2xvcjogR1JBWV9DT0xPUixcbiAgICAgICAgYnJhbmNoQ29sb3I6IEdSQVlfQ09MT1JcbiAgICB9KTtcblxuICAgIG1pbmRFbGVtZW50LnN0YXJ0ID0gc3RhcnQ7XG4gICAgbWluZEVsZW1lbnQuZW5kID0gZW5kO1xuXG4gICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBtaW5kRWxlbWVudCwgcGF0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQWJzdHJhY3RJbmNsdWRlZCA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IGVsZW1lbnQucmlnaHROb2RlQ291bnQhO1xuICAgIGNvbnN0IGFic3RyYWN0ID0gZWxlbWVudC5jaGlsZHJlbi5maW5kKGNoaWxkID0+IHtcbiAgICAgICAgcmV0dXJuIEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5lbmQgPj0gcmlnaHROb2RlQ291bnQgJiYgY2hpbGQuc3RhcnQgPCByaWdodE5vZGVDb3VudDtcbiAgICB9KTtcblxuICAgIGlmIChhYnN0cmFjdCkge1xuICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgYWJzdHJhY3QpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgZW5kOiByaWdodE5vZGVDb3VudCAtIDEgfSwgcGF0aCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IChlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50KTtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGVsZW1lbnRJbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpO1xuICAgIHJldHVybiBwYXJlbnQuY2hpbGRyZW4uZmluZChjaGlsZCA9PiB7XG4gICAgICAgIHJldHVybiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgZWxlbWVudEluZGV4ID49IGNoaWxkLnN0YXJ0ISAmJiBlbGVtZW50SW5kZXggPD0gY2hpbGQuZW5kITtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCZWhpbmRBYnN0cmFjdHMgPSAoZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgY29uc3QgaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KTtcbiAgICByZXR1cm4gcGFyZW50LmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuc3RhcnQhID4gaW5kZXgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydFNpYmxpbmdFbGVtZW50SGFuZGxlQWJzdHJhY3QgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGVkRWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBhYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChzZWxlY3RlZEVsZW1lbnQpO1xuICAgIGlmIChhYnN0cmFjdCkge1xuICAgICAgICBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBhYnN0cmFjdCk7XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBlbmQ6IGFic3RyYWN0LmVuZCEgKyAxIH0sIFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGFic3RyYWN0KSk7XG4gICAgfVxuXG4gICAgY29uc3QgYWJzdHJhY3RzID0gZ2V0QmVoaW5kQWJzdHJhY3RzKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgaWYgKGFic3RyYWN0cy5sZW5ndGgpIHtcbiAgICAgICAgbW92ZUFic3RyYWN0UG9zaXRpb24oYm9hcmQsIGFic3RyYWN0cywgMSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG1vdmVBYnN0cmFjdFBvc2l0aW9uID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBhYnN0cmFjdHM6IE1pbmRFbGVtZW50W10sIHN0ZXA6IG51bWJlcikgPT4ge1xuICAgIGFic3RyYWN0cy5mb3JFYWNoKGFic3RyYWN0ID0+IHtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHN0YXJ0OiBhYnN0cmFjdC5zdGFydCEgKyBzdGVwLCBlbmQ6IGFic3RyYWN0LmVuZCEgKyBzdGVwIH0sIFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGFic3RyYWN0KSk7XG4gICAgfSk7XG59O1xuIl19
|