@mintplayer/ng-bootstrap 15.25.0 → 15.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dock/src/dock/dock.component.d.ts +3 -1
  2. package/dock/src/dock-panel-header/dock-panel-header.component.d.ts +5 -4
  3. package/dock/src/index.d.ts +1 -0
  4. package/dock/src/panes/content-pane.d.ts +1 -0
  5. package/dock/src/panes/dock-pane.d.ts +1 -0
  6. package/dock/src/panes/document-host-pane.d.ts +1 -0
  7. package/dock/src/panes/floating-pane.d.ts +2 -1
  8. package/dock/src/panes/split-pane.d.ts +1 -0
  9. package/dock/src/panes/tab-group-pane.d.ts +1 -0
  10. package/dock/src/services/dock/dock.service.d.ts +14 -0
  11. package/dock/src/services/index.d.ts +1 -0
  12. package/esm2020/dock/src/dock/dock.component.mjs +10 -2
  13. package/esm2020/dock/src/dock-panel-header/dock-panel-header.component.mjs +202 -96
  14. package/esm2020/dock/src/index.mjs +2 -1
  15. package/esm2020/dock/src/panes/content-pane.mjs +4 -1
  16. package/esm2020/dock/src/panes/dock-pane.mjs +1 -1
  17. package/esm2020/dock/src/panes/document-host-pane.mjs +4 -1
  18. package/esm2020/dock/src/panes/floating-pane.mjs +7 -2
  19. package/esm2020/dock/src/panes/split-pane.mjs +4 -1
  20. package/esm2020/dock/src/panes/tab-group-pane.mjs +4 -1
  21. package/esm2020/dock/src/services/dock/dock.service.mjs +56 -0
  22. package/esm2020/dock/src/services/index.mjs +2 -0
  23. package/esm2020/resizable/src/resize-glyph/resize-glyph.directive.mjs +1 -1
  24. package/fesm2015/mintplayer-ng-bootstrap-dock.mjs +287 -111
  25. package/fesm2015/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  26. package/fesm2015/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  27. package/fesm2020/mintplayer-ng-bootstrap-dock.mjs +285 -111
  28. package/fesm2020/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  29. package/fesm2020/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  30. package/package.json +2 -2
  31. package/resizable/src/resize-glyph/resize-glyph.directive.d.ts +1 -1
@@ -216,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
216
216
  type: HostListener,
217
217
  args: ['touchend', ['$event']]
218
218
  }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWdseXBoLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvcmVzaXphYmxlL3NyYy9yZXNpemUtZ2x5cGgvcmVzaXplLWdseXBoLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFLMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUs1RCxNQUFNLE9BQU8sc0JBQXNCO0lBSWpDLFlBQStCLFNBQWM7UUFJdkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNULGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUErRnpDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFwR3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFNRCxJQUFhLGFBQWEsQ0FBQyxLQUFpQjtRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVzQyxXQUFXLENBQUMsRUFBYztRQUMvRCxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFdUMsWUFBWSxDQUFDLEVBQWM7UUFDakUsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRStDLFdBQVcsQ0FBQyxFQUFjO1FBQ3hFLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUs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Q0Y7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7O21IQTdLVSxzQkFBc0Isa0JBSWIsU0FBUzt1R0FKbEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7OzBCQUtjLE1BQU07MkJBQUMsU0FBUzs0Q0FJUCxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU87Z0JBQ1EsVUFBVTtzQkFBckMsV0FBVzt1QkFBQyxhQUFhO2dCQUNHLFdBQVc7c0JBQXZDLFdBQVc7dUJBQUMsY0FBYztnQkFFZCxhQUFhO3NCQUF6QixLQUFLO2dCQUlpQyxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLRyxZQUFZO3NCQUFuRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLVSxXQUFXO3NCQUExRCxZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlQLFdBQVc7c0JBQWpELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1TLFNBQVM7c0JBQXRELFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSU4sVUFBVTtzQkFBL0MsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIGZvcndhcmRSZWYsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgdHlwZSB7IEJzUmVzaXphYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzaXplQWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXNpemUtYWN0aW9uJztcbmltcG9ydCB7IFBvaW50ZXJEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludGVyLWRhdGEnO1xuaW1wb3J0IHsgUkVTSVpBQkxFIH0gZnJvbSAnLi4vcHJvdmlkZXJzL3Jlc2l6YWJsZS5wcm92aWRlcic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tic1Jlc2l6ZUdseXBoXSdcbn0pXG5leHBvcnQgY2xhc3MgQnNSZXNpemVHbHlwaERpcmVjdGl2ZSB7XG5cbiAgLy8gQ2FuJ3QgdXNlIHR5cGVkIERJIGJlY2F1c2Ugb2YgdGhlIGBpbXBvcnQgdHlwZWBcbiAgcHJpdmF0ZSByZXNpemFibGU6IEJzUmVzaXphYmxlQ29tcG9uZW50O1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KFJFU0laQUJMRSkgcmVzaXphYmxlOiBhbnkpIHtcbiAgICB0aGlzLnJlc2l6YWJsZSA9IHJlc2l6YWJsZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBwb3NpdGlvbnMgPSAnJztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nbHlwaCcpIGdseXBoQ2xhc3MgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpIGFjdGl2ZUNsYXNzID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGJzUmVzaXplR2x5cGgodmFsdWU6IFBvc2l0aW9uW10pIHtcbiAgICB0aGlzLnBvc2l0aW9ucyA9IHZhbHVlLmpvaW4oJyAnKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pIG9uTW91c2VEb3duKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm9uUG9pbnRlckRvd24oKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pIG9uVG91Y2hTdGFydChldjogVG91Y2hFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5vblBvaW50ZXJEb3duKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKSBvbk1vdXNlTW92ZShldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMub25Qb2ludGVyTW92ZSh7IGNsaWVudFg6IGV2LmNsaWVudFgsIGNsaWVudFk6IGV2LmNsaWVudFksIHByZXZlbnREZWZhdWx0OiAoKSA9PiBldi5wcmV2ZW50RGVmYXVsdCgpIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndG91Y2htb3ZlJywgWyckZXZlbnQnXSkgb25Ub3VjaE1vdmUoZXY6IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAoZXYudG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMub25Qb2ludGVyTW92ZSh7IGNsaWVudFg6IGV2LnRvdWNoZXNbMF0uY2xpZW50WCwgY2xpZW50WTogZXYudG91Y2hlc1swXS5jbGllbnRZLCBwcmV2ZW50RGVmYXVsdDogKCkgPT4gZXYucHJldmVudERlZmF1bHQoKSB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJywgWyckZXZlbnQnXSkgb25Nb3VzZVVwKGV2OiBFdmVudCkge1xuICAgIHRoaXMub25Qb2ludGVyVXAoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJywgWyckZXZlbnQnXSkgb25Ub3VjaEVuZChldjogRXZlbnQpIHtcbiAgICB0aGlzLm9uUG9pbnRlclVwKCk7XG4gIH1cblxuICBvblBvaW50ZXJEb3duKCkge1xuICAgIGxldCBhY3Rpb246IFJlc2l6ZUFjdGlvbiA9IHtcbiAgICAgIHBvc2l0aW9uaW5nOiB0aGlzLnJlc2l6YWJsZS5wb3NpdGlvbmluZ1xuICAgIH07XG4gICAgY29uc3QgcmVjdCA9IHRoaXMucmVzaXphYmxlLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJlc2l6YWJsZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgY29uc3QgbWFyZ2luTGVmdCA9ICh0aGlzLnJlc2l6YWJsZS5wb3NpdGlvbmluZyA9PT0gJ2Fic29sdXRlJykgPyB1bmRlZmluZWQgOiBwYXJzZUZsb2F0KHN0eWxlcy5tYXJnaW5MZWZ0LnNsaWNlKDAsIC0yKSk7XG4gICAgY29uc3QgbWFyZ2luUmlnaHQgPSAodGhpcy5yZXNpemFibGUucG9zaXRpb25pbmcgPT09ICdhYnNvbHV0ZScpID8gdW5kZWZpbmVkIDogcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luUmlnaHQuc2xpY2UoMCwgLTIpKTtcbiAgICBjb25zdCBtYXJnaW5Ub3AgPSAodGhpcy5yZXNpemFibGUucG9zaXRpb25pbmcgPT09ICdhYnNvbHV0ZScpID8gdW5kZWZpbmVkIDogcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luVG9wLnNsaWNlKDAsIC0yKSk7XG4gICAgY29uc3QgbWFyZ2luQm90dG9tID0gKHRoaXMucmVzaXphYmxlLnBvc2l0aW9uaW5nID09PSAnYWJzb2x1dGUnKSA/IHVuZGVmaW5lZCA6IHBhcnNlRmxvYXQoc3R5bGVzLm1hcmdpbkJvdHRvbS5zbGljZSgwLCAtMikpO1xuXG4gICAgaWYgKHRoaXMucG9zaXRpb25zPy5pbmNsdWRlcygnc3RhcnQnKSkge1xuICAgICAgYWN0aW9uID0ge1xuICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgIGVuZDoge1xuICAgICAgICAgIGVkZ2U6IHJlY3QucmlnaHQsXG4gICAgICAgICAgc2l6ZTogcmVjdC53aWR0aCxcbiAgICAgICAgICBtYXJnaW46IG1hcmdpblJpZ2h0LFxuICAgICAgICAgIGRyYWdNYXJnaW46IG1hcmdpbkxlZnRcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ2VuZCcpKSB7XG4gICAgICBhY3Rpb24gPSB7XG4gICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICBlZGdlOiByZWN0LmxlZnQsXG4gICAgICAgICAgc2l6ZTogcmVjdC53aWR0aCxcbiAgICAgICAgICBtYXJnaW46IG1hcmdpbkxlZnQsXG4gICAgICAgICAgZHJhZ01hcmdpbjogbWFyZ2luUmlnaHRcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ3RvcCcpKSB7XG4gICAgICBhY3Rpb24gPSB7XG4gICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgYm90dG9tOiB7XG4gICAgICAgICAgZWRnZTogcmVjdC5ib3R0b20sXG4gICAgICAgICAgc2l6ZTogcmVjdC5oZWlnaHQsXG4gICAgICAgICAgbWFyZ2luOiBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgZHJhZ01hcmdpbjogbWFyZ2luVG9wXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy5wb3NpdGlvbnM/LmluY2x1ZGVzKCdib3R0b20nKSkge1xuICAgICAgYWN0aW9uID0ge1xuICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgIHRvcDoge1xuICAgICAgICAgIGVkZ2U6IHJlY3QudG9wLFxuICAgICAgICAgIHNpemU6IHJlY3QuaGVpZ2h0LFxuICAgICAgICAgIG1hcmdpbjogbWFyZ2luVG9wLFxuICAgICAgICAgIGRyYWdNYXJnaW46IG1hcmdpbkJvdHRvbVxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc2l6YWJsZS5yZXNpemVBY3Rpb24gPSBhY3Rpb247XG4gICAgdGhpcy5hY3RpdmVDbGFzcyA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGlzQnVzeSA9IGZhbHNlO1xuICBvblBvaW50ZXJNb3ZlKGV2OiBQb2ludGVyRGF0YSkge1xuICAgIGlmICh0aGlzLnJlc2l6YWJsZS5yZXNpemVBY3Rpb24gJiYgIXRoaXMuaXNCdXN5KSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5pc0J1c3kgPSB0cnVlO1xuICAgICAgY29uc3QgcmN0ID0gdGhpcy5yZXNpemFibGUuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgaWYgKHRoaXMucmVzaXphYmxlLnJlc2l6ZUFjdGlvbi5zdGFydCAmJiB0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ2VuZCcpKSB7XG4gICAgICAgIC8vIFJpZ2h0IGdseXBoXG4gICAgICAgIGNvbnN0IHggPSAoZXYuY2xpZW50WCA8IHJjdC5sZWZ0ICsgMTApID8gcmN0LmxlZnQgKyAxMCA6IGV2LmNsaWVudFg7XG4gICAgICAgIHN3aXRjaCAodGhpcy5yZXNpemFibGUucG9zaXRpb25pbmcpIHtcbiAgICAgICAgICBjYXNlICdpbmxpbmUnOiB7XG4gICAgICAgICAgICBjb25zdCBpbml0YWxNYXJnaW4gPSB0aGlzLnJlc2l6YWJsZS5tYXJnaW5SaWdodCA/PyAwO1xuICAgICAgICAgICAgdGhpcy5yZXNpemFibGUubWFyZ2luUmlnaHQgPSBpbml0YWxNYXJnaW4gLSAoeCAtIHJjdC5yaWdodCk7XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlICdhYnNvbHV0ZSc6IHtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLndpZHRoID0geCAtIHJjdC5sZWZ0O1xuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXNpemFibGUucmVzaXplQWN0aW9uLmVuZCAmJiB0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ3N0YXJ0JykpIHtcbiAgICAgICAgLy8gTGVmdCBnbHlwaFxuICAgICAgICBjb25zdCB4ID0gKGV2LmNsaWVudFggPiByY3QucmlnaHQgLSAxMCkgPyByY3QucmlnaHQgLSAxMCA6IGV2LmNsaWVudFg7XG4gICAgICAgIHN3aXRjaCAodGhpcy5yZXNpemFibGUucG9zaXRpb25pbmcpIHtcbiAgICAgICAgICBjYXNlICdpbmxpbmUnOiB7XG4gICAgICAgICAgICBjb25zdCBpbml0YWxNYXJnaW4gPSB0aGlzLnJlc2l6YWJsZS5tYXJnaW5MZWZ0ID8/IDA7XG4gICAgICAgICAgICB0aGlzLnJlc2l6YWJsZS5tYXJnaW5MZWZ0ID0gaW5pdGFsTWFyZ2luICsgeCAtIHJjdC5sZWZ0O1xuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYWJzb2x1dGUnOiB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6YWJsZS5sZWZ0ID0geDtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLndpZHRoID0gdGhpcy5yZXNpemFibGUucmVzaXplQWN0aW9uLmVuZC5lZGdlIC0geDtcbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnJlc2l6YWJsZS5yZXNpemVBY3Rpb24udG9wICYmIHRoaXMucG9zaXRpb25zPy5pbmNsdWRlcygnYm90dG9tJykpIHtcbiAgICAgICAgLy8gQm90dG9tIGdseXBoXG4gICAgICAgIGNvbnN0IHkgPSAoZXYuY2xpZW50WSA8IHJjdC50b3AgKyAxMCkgPyByY3QudG9wICsgMTAgOiBldi5jbGllbnRZO1xuICAgICAgICBzd2l0Y2ggKHRoaXMucmVzaXphYmxlLnBvc2l0aW9uaW5nKSB7XG4gICAgICAgICAgY2FzZSAnaW5saW5lJzoge1xuICAgICAgICAgICAgY29uc3QgaW5pdGFsTWFyZ2luID0gdGhpcy5yZXNpemFibGUubWFyZ2luQm90dG9tID8/IDA7XG4gICAgICAgICAgICB0aGlzLnJlc2l6YWJsZS5oZWlnaHQgPSB5IC0gcmN0LnRvcDtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLm1hcmdpbkJvdHRvbSA9IGluaXRhbE1hcmdpbiAtICh5IC0gcmN0LmJvdHRvbSk7XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlICdhYnNvbHV0ZSc6IHtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLmhlaWdodCA9IHkgLSByY3QudG9wO1xuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXNpemFibGUucmVzaXplQWN0aW9uLmJvdHRvbSAmJiB0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ3RvcCcpKSB7XG4gICAgICAgIC8vIFRvcCBnbHlwaFxuICAgICAgICBjb25zdCB5ID0gKGV2LmNsaWVudFkgPiByY3QuYm90dG9tIC0gMTApID8gcmN0LmJvdHRvbSAtIDEwIDogZXYuY2xpZW50WTtcbiAgICAgICAgc3dpdGNoICh0aGlzLnJlc2l6YWJsZS5wb3NpdGlvbmluZykge1xuICAgICAgICAgIGNhc2UgJ2lubGluZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRhbE1hcmdpbiA9IHRoaXMucmVzaXphYmxlLm1hcmdpblRvcCA/PyAwO1xuICAgICAgICAgICAgdGhpcy5yZXNpemFibGUuaGVpZ2h0ID0gcmN0LmJvdHRvbSAtIHk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6YWJsZS5tYXJnaW5Ub3AgPSBpbml0YWxNYXJnaW4gKyB5IC0gcmN0LnRvcDtcbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2Fic29sdXRlJzoge1xuICAgICAgICAgICAgdGhpcy5yZXNpemFibGUudG9wID0geTtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLmhlaWdodCA9IHRoaXMucmVzaXphYmxlLnJlc2l6ZUFjdGlvbi5ib3R0b20uZWRnZSAtIHk7XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5pc0J1c3kgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgXG4gIG9uUG9pbnRlclVwKCkge1xuICAgIHRoaXMucmVzaXphYmxlLnJlc2l6ZUFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmFjdGl2ZUNsYXNzID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWdseXBoLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvcmVzaXphYmxlL3NyYy9yZXNpemUtZ2x5cGgvcmVzaXplLWdseXBoLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFLMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUs1RCxNQUFNLE9BQU8sc0JBQXNCO0lBSWpDLFlBQStCLFNBQWM7UUFJdkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNULGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUErRnpDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFwR3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFNRCxJQUFhLGFBQWEsQ0FBQyxLQUFpQjtRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVzQyxXQUFXLENBQUMsRUFBYztRQUMvRCxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFdUMsWUFBWSxDQUFDLEVBQWM7UUFDakUsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRStDLFdBQVcsQ0FBQyxFQUFjO1FBQ3hFLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUs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Q0Y7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7O21IQTdLVSxzQkFBc0Isa0JBSWIsU0FBUzt1R0FKbEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7OzBCQUtjLE1BQU07MkJBQUMsU0FBUzs0Q0FJUCxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU87Z0JBQ1EsVUFBVTtzQkFBckMsV0FBVzt1QkFBQyxhQUFhO2dCQUNHLFdBQVc7c0JBQXZDLFdBQVc7dUJBQUMsY0FBYztnQkFFZCxhQUFhO3NCQUF6QixLQUFLO2dCQUlpQyxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLRyxZQUFZO3NCQUFuRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLVSxXQUFXO3NCQUExRCxZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlQLFdBQVc7c0JBQWpELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1TLFNBQVM7c0JBQXRELFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSU4sVUFBVTtzQkFBL0MsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIGZvcndhcmRSZWYsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgdHlwZSB7IEJzUmVzaXphYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzaXplQWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXNpemUtYWN0aW9uJztcbmltcG9ydCB7IFBvaW50ZXJEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludGVyLWRhdGEnO1xuaW1wb3J0IHsgUkVTSVpBQkxFIH0gZnJvbSAnLi4vcHJvdmlkZXJzL3Jlc2l6YWJsZS5wcm92aWRlcic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tic1Jlc2l6ZUdseXBoXSdcbn0pXG5leHBvcnQgY2xhc3MgQnNSZXNpemVHbHlwaERpcmVjdGl2ZSB7XG5cbiAgLy8gQ2FuJ3QgdXNlIHR5cGVkIERJIGJlY2F1c2Ugb2YgdGhlIGBpbXBvcnQgdHlwZWBcbiAgcHJpdmF0ZSByZWFkb25seSByZXNpemFibGU6IEJzUmVzaXphYmxlQ29tcG9uZW50O1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KFJFU0laQUJMRSkgcmVzaXphYmxlOiBhbnkpIHtcbiAgICB0aGlzLnJlc2l6YWJsZSA9IHJlc2l6YWJsZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBwb3NpdGlvbnMgPSAnJztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nbHlwaCcpIGdseXBoQ2xhc3MgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpIGFjdGl2ZUNsYXNzID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IGJzUmVzaXplR2x5cGgodmFsdWU6IFBvc2l0aW9uW10pIHtcbiAgICB0aGlzLnBvc2l0aW9ucyA9IHZhbHVlLmpvaW4oJyAnKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pIG9uTW91c2VEb3duKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm9uUG9pbnRlckRvd24oKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pIG9uVG91Y2hTdGFydChldjogVG91Y2hFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5vblBvaW50ZXJEb3duKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKSBvbk1vdXNlTW92ZShldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMub25Qb2ludGVyTW92ZSh7IGNsaWVudFg6IGV2LmNsaWVudFgsIGNsaWVudFk6IGV2LmNsaWVudFksIHByZXZlbnREZWZhdWx0OiAoKSA9PiBldi5wcmV2ZW50RGVmYXVsdCgpIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigndG91Y2htb3ZlJywgWyckZXZlbnQnXSkgb25Ub3VjaE1vdmUoZXY6IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAoZXYudG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMub25Qb2ludGVyTW92ZSh7IGNsaWVudFg6IGV2LnRvdWNoZXNbMF0uY2xpZW50WCwgY2xpZW50WTogZXYudG91Y2hlc1swXS5jbGllbnRZLCBwcmV2ZW50RGVmYXVsdDogKCkgPT4gZXYucHJldmVudERlZmF1bHQoKSB9KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJywgWyckZXZlbnQnXSkgb25Nb3VzZVVwKGV2OiBFdmVudCkge1xuICAgIHRoaXMub25Qb2ludGVyVXAoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJywgWyckZXZlbnQnXSkgb25Ub3VjaEVuZChldjogRXZlbnQpIHtcbiAgICB0aGlzLm9uUG9pbnRlclVwKCk7XG4gIH1cblxuICBvblBvaW50ZXJEb3duKCkge1xuICAgIGxldCBhY3Rpb246IFJlc2l6ZUFjdGlvbiA9IHtcbiAgICAgIHBvc2l0aW9uaW5nOiB0aGlzLnJlc2l6YWJsZS5wb3NpdGlvbmluZ1xuICAgIH07XG4gICAgY29uc3QgcmVjdCA9IHRoaXMucmVzaXphYmxlLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJlc2l6YWJsZS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgY29uc3QgbWFyZ2luTGVmdCA9ICh0aGlzLnJlc2l6YWJsZS5wb3NpdGlvbmluZyA9PT0gJ2Fic29sdXRlJykgPyB1bmRlZmluZWQgOiBwYXJzZUZsb2F0KHN0eWxlcy5tYXJnaW5MZWZ0LnNsaWNlKDAsIC0yKSk7XG4gICAgY29uc3QgbWFyZ2luUmlnaHQgPSAodGhpcy5yZXNpemFibGUucG9zaXRpb25pbmcgPT09ICdhYnNvbHV0ZScpID8gdW5kZWZpbmVkIDogcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luUmlnaHQuc2xpY2UoMCwgLTIpKTtcbiAgICBjb25zdCBtYXJnaW5Ub3AgPSAodGhpcy5yZXNpemFibGUucG9zaXRpb25pbmcgPT09ICdhYnNvbHV0ZScpID8gdW5kZWZpbmVkIDogcGFyc2VGbG9hdChzdHlsZXMubWFyZ2luVG9wLnNsaWNlKDAsIC0yKSk7XG4gICAgY29uc3QgbWFyZ2luQm90dG9tID0gKHRoaXMucmVzaXphYmxlLnBvc2l0aW9uaW5nID09PSAnYWJzb2x1dGUnKSA/IHVuZGVmaW5lZCA6IHBhcnNlRmxvYXQoc3R5bGVzLm1hcmdpbkJvdHRvbS5zbGljZSgwLCAtMikpO1xuXG4gICAgaWYgKHRoaXMucG9zaXRpb25zPy5pbmNsdWRlcygnc3RhcnQnKSkge1xuICAgICAgYWN0aW9uID0ge1xuICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgIGVuZDoge1xuICAgICAgICAgIGVkZ2U6IHJlY3QucmlnaHQsXG4gICAgICAgICAgc2l6ZTogcmVjdC53aWR0aCxcbiAgICAgICAgICBtYXJnaW46IG1hcmdpblJpZ2h0LFxuICAgICAgICAgIGRyYWdNYXJnaW46IG1hcmdpbkxlZnRcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ2VuZCcpKSB7XG4gICAgICBhY3Rpb24gPSB7XG4gICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICBlZGdlOiByZWN0LmxlZnQsXG4gICAgICAgICAgc2l6ZTogcmVjdC53aWR0aCxcbiAgICAgICAgICBtYXJnaW46IG1hcmdpbkxlZnQsXG4gICAgICAgICAgZHJhZ01hcmdpbjogbWFyZ2luUmlnaHRcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ3RvcCcpKSB7XG4gICAgICBhY3Rpb24gPSB7XG4gICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgYm90dG9tOiB7XG4gICAgICAgICAgZWRnZTogcmVjdC5ib3R0b20sXG4gICAgICAgICAgc2l6ZTogcmVjdC5oZWlnaHQsXG4gICAgICAgICAgbWFyZ2luOiBtYXJnaW5Cb3R0b20sXG4gICAgICAgICAgZHJhZ01hcmdpbjogbWFyZ2luVG9wXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy5wb3NpdGlvbnM/LmluY2x1ZGVzKCdib3R0b20nKSkge1xuICAgICAgYWN0aW9uID0ge1xuICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgIHRvcDoge1xuICAgICAgICAgIGVkZ2U6IHJlY3QudG9wLFxuICAgICAgICAgIHNpemU6IHJlY3QuaGVpZ2h0LFxuICAgICAgICAgIG1hcmdpbjogbWFyZ2luVG9wLFxuICAgICAgICAgIGRyYWdNYXJnaW46IG1hcmdpbkJvdHRvbVxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc2l6YWJsZS5yZXNpemVBY3Rpb24gPSBhY3Rpb247XG4gICAgdGhpcy5hY3RpdmVDbGFzcyA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGlzQnVzeSA9IGZhbHNlO1xuICBvblBvaW50ZXJNb3ZlKGV2OiBQb2ludGVyRGF0YSkge1xuICAgIGlmICh0aGlzLnJlc2l6YWJsZS5yZXNpemVBY3Rpb24gJiYgIXRoaXMuaXNCdXN5KSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5pc0J1c3kgPSB0cnVlO1xuICAgICAgY29uc3QgcmN0ID0gdGhpcy5yZXNpemFibGUuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgaWYgKHRoaXMucmVzaXphYmxlLnJlc2l6ZUFjdGlvbi5zdGFydCAmJiB0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ2VuZCcpKSB7XG4gICAgICAgIC8vIFJpZ2h0IGdseXBoXG4gICAgICAgIGNvbnN0IHggPSAoZXYuY2xpZW50WCA8IHJjdC5sZWZ0ICsgMTApID8gcmN0LmxlZnQgKyAxMCA6IGV2LmNsaWVudFg7XG4gICAgICAgIHN3aXRjaCAodGhpcy5yZXNpemFibGUucG9zaXRpb25pbmcpIHtcbiAgICAgICAgICBjYXNlICdpbmxpbmUnOiB7XG4gICAgICAgICAgICBjb25zdCBpbml0YWxNYXJnaW4gPSB0aGlzLnJlc2l6YWJsZS5tYXJnaW5SaWdodCA/PyAwO1xuICAgICAgICAgICAgdGhpcy5yZXNpemFibGUubWFyZ2luUmlnaHQgPSBpbml0YWxNYXJnaW4gLSAoeCAtIHJjdC5yaWdodCk7XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlICdhYnNvbHV0ZSc6IHtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLndpZHRoID0geCAtIHJjdC5sZWZ0O1xuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXNpemFibGUucmVzaXplQWN0aW9uLmVuZCAmJiB0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ3N0YXJ0JykpIHtcbiAgICAgICAgLy8gTGVmdCBnbHlwaFxuICAgICAgICBjb25zdCB4ID0gKGV2LmNsaWVudFggPiByY3QucmlnaHQgLSAxMCkgPyByY3QucmlnaHQgLSAxMCA6IGV2LmNsaWVudFg7XG4gICAgICAgIHN3aXRjaCAodGhpcy5yZXNpemFibGUucG9zaXRpb25pbmcpIHtcbiAgICAgICAgICBjYXNlICdpbmxpbmUnOiB7XG4gICAgICAgICAgICBjb25zdCBpbml0YWxNYXJnaW4gPSB0aGlzLnJlc2l6YWJsZS5tYXJnaW5MZWZ0ID8/IDA7XG4gICAgICAgICAgICB0aGlzLnJlc2l6YWJsZS5tYXJnaW5MZWZ0ID0gaW5pdGFsTWFyZ2luICsgeCAtIHJjdC5sZWZ0O1xuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYWJzb2x1dGUnOiB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6YWJsZS5sZWZ0ID0geDtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLndpZHRoID0gdGhpcy5yZXNpemFibGUucmVzaXplQWN0aW9uLmVuZC5lZGdlIC0geDtcbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnJlc2l6YWJsZS5yZXNpemVBY3Rpb24udG9wICYmIHRoaXMucG9zaXRpb25zPy5pbmNsdWRlcygnYm90dG9tJykpIHtcbiAgICAgICAgLy8gQm90dG9tIGdseXBoXG4gICAgICAgIGNvbnN0IHkgPSAoZXYuY2xpZW50WSA8IHJjdC50b3AgKyAxMCkgPyByY3QudG9wICsgMTAgOiBldi5jbGllbnRZO1xuICAgICAgICBzd2l0Y2ggKHRoaXMucmVzaXphYmxlLnBvc2l0aW9uaW5nKSB7XG4gICAgICAgICAgY2FzZSAnaW5saW5lJzoge1xuICAgICAgICAgICAgY29uc3QgaW5pdGFsTWFyZ2luID0gdGhpcy5yZXNpemFibGUubWFyZ2luQm90dG9tID8/IDA7XG4gICAgICAgICAgICB0aGlzLnJlc2l6YWJsZS5oZWlnaHQgPSB5IC0gcmN0LnRvcDtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLm1hcmdpbkJvdHRvbSA9IGluaXRhbE1hcmdpbiAtICh5IC0gcmN0LmJvdHRvbSk7XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlICdhYnNvbHV0ZSc6IHtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLmhlaWdodCA9IHkgLSByY3QudG9wO1xuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXNpemFibGUucmVzaXplQWN0aW9uLmJvdHRvbSAmJiB0aGlzLnBvc2l0aW9ucz8uaW5jbHVkZXMoJ3RvcCcpKSB7XG4gICAgICAgIC8vIFRvcCBnbHlwaFxuICAgICAgICBjb25zdCB5ID0gKGV2LmNsaWVudFkgPiByY3QuYm90dG9tIC0gMTApID8gcmN0LmJvdHRvbSAtIDEwIDogZXYuY2xpZW50WTtcbiAgICAgICAgc3dpdGNoICh0aGlzLnJlc2l6YWJsZS5wb3NpdGlvbmluZykge1xuICAgICAgICAgIGNhc2UgJ2lubGluZSc6IHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRhbE1hcmdpbiA9IHRoaXMucmVzaXphYmxlLm1hcmdpblRvcCA/PyAwO1xuICAgICAgICAgICAgdGhpcy5yZXNpemFibGUuaGVpZ2h0ID0gcmN0LmJvdHRvbSAtIHk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6YWJsZS5tYXJnaW5Ub3AgPSBpbml0YWxNYXJnaW4gKyB5IC0gcmN0LnRvcDtcbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2Fic29sdXRlJzoge1xuICAgICAgICAgICAgdGhpcy5yZXNpemFibGUudG9wID0geTtcbiAgICAgICAgICAgIHRoaXMucmVzaXphYmxlLmhlaWdodCA9IHRoaXMucmVzaXphYmxlLnJlc2l6ZUFjdGlvbi5ib3R0b20uZWRnZSAtIHk7XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5pc0J1c3kgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgXG4gIG9uUG9pbnRlclVwKCkge1xuICAgIHRoaXMucmVzaXphYmxlLnJlc2l6ZUFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmFjdGl2ZUNsYXNzID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ViewChild, Input, ContentChildren, ViewChildren, HostBinding, HostListener, NgModule } from '@angular/core';
2
+ import { Component, ViewChild, Input, ContentChildren, ViewChildren, HostBinding, Injectable, HostListener, NgModule } from '@angular/core';
3
3
  import * as i2 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i3 from '@angular/cdk/portal';
@@ -13,7 +13,8 @@ import * as i6 from '@mintplayer/ng-bootstrap/tab-control';
13
13
  import { BsTabControlModule } from '@mintplayer/ng-bootstrap/tab-control';
14
14
  import * as i4 from '@mintplayer/ng-bootstrap/instance-of';
15
15
  import { BsInstanceOfModule } from '@mintplayer/ng-bootstrap/instance-of';
16
- import { BehaviorSubject, Subject, takeUntil, take } from 'rxjs';
16
+ import { BehaviorSubject, Subject, takeUntil, map, take } from 'rxjs';
17
+ import { deepClone } from '@mintplayer/parentify';
17
18
  import * as i1 from '@angular/cdk/overlay';
18
19
 
19
20
  class BsDockPanelComponent {
@@ -49,6 +50,9 @@ class BsTabGroupPane extends BsDockPane {
49
50
  this.panes = [];
50
51
  Object.assign(this, data);
51
52
  }
53
+ get isEmpty() {
54
+ return this.panes.length === 0;
55
+ }
52
56
  }
53
57
 
54
58
  class BsDocumentHost extends BsDockPane {
@@ -56,38 +60,53 @@ class BsDocumentHost extends BsDockPane {
56
60
  super();
57
61
  Object.assign(this, data);
58
62
  }
63
+ get isEmpty() {
64
+ var _a, _b;
65
+ return (_b = (_a = this.rootPane) === null || _a === void 0 ? void 0 : _a.isEmpty) !== null && _b !== void 0 ? _b : true;
66
+ }
59
67
  }
60
68
 
61
- var EPaneType;
62
- (function (EPaneType) {
63
- EPaneType[EPaneType["documentHost"] = 1] = "documentHost";
64
- EPaneType[EPaneType["splitPane"] = 2] = "splitPane";
65
- EPaneType[EPaneType["contentPane"] = 3] = "contentPane";
66
- EPaneType[EPaneType["tabGroupPane"] = 4] = "tabGroupPane";
67
- })(EPaneType || (EPaneType = {}));
68
-
69
- class BsSplitPane extends BsDockPane {
69
+ class BsContentPane extends BsDockPane {
70
70
  constructor(data) {
71
71
  super();
72
- this.orientation = 'horizontal';
73
- this.panes = [];
74
72
  Object.assign(this, data);
75
73
  }
74
+ get isEmpty() {
75
+ return false;
76
+ }
76
77
  }
77
78
 
78
- class BsContentPane extends BsDockPane {
79
+ class BsFloatingPane extends BsDockPane {
79
80
  constructor(data) {
80
81
  super();
81
82
  Object.assign(this, data);
82
83
  }
84
+ get isEmpty() {
85
+ var _a, _b;
86
+ return (_b = (_a = this.pane) === null || _a === void 0 ? void 0 : _a.isEmpty) !== null && _b !== void 0 ? _b : true;
87
+ }
83
88
  }
84
89
 
85
- class BsFloatingPane {
90
+ class BsSplitPane extends BsDockPane {
86
91
  constructor(data) {
92
+ super();
93
+ this.orientation = 'horizontal';
94
+ this.panes = [];
87
95
  Object.assign(this, data);
88
96
  }
97
+ get isEmpty() {
98
+ return this.panes.length === 0;
99
+ }
89
100
  }
90
101
 
102
+ var EPaneType;
103
+ (function (EPaneType) {
104
+ EPaneType[EPaneType["documentHost"] = 1] = "documentHost";
105
+ EPaneType[EPaneType["splitPane"] = 2] = "splitPane";
106
+ EPaneType[EPaneType["contentPane"] = 3] = "contentPane";
107
+ EPaneType[EPaneType["tabGroupPane"] = 4] = "tabGroupPane";
108
+ })(EPaneType || (EPaneType = {}));
109
+
91
110
  class BsDockPaneRendererComponent {
92
111
  constructor(overlay, element) {
93
112
  this.overlay = overlay;
@@ -154,6 +173,10 @@ class BsDockComponent {
154
173
  .subscribe((floating) => {
155
174
  floating.forEach((panel) => panel.moveToOverlay());
156
175
  });
176
+ this.parentifiedLayout$ = this.layout$.pipe(map(layout => deepClone(layout, true,
177
+ // []
178
+ [BsContentPane, BsDocumentHost, BsFloatingPane, BsSplitPane, BsTabGroupPane], true)));
179
+ this.parentifiedLayout$.pipe(takeUntil(this.destroyed$)).subscribe(console.log);
157
180
  }
158
181
  set panels(value) {
159
182
  this.panels$.next(value.toArray());
@@ -202,13 +225,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
202
225
  args: ['style.right']
203
226
  }] } });
204
227
 
228
+ class BsDockService {
229
+ buildTraces(layout) {
230
+ const result = [layout.rootPane, ...layout.floatingPanes].map(pane => this.buildTracesPrivate([pane]));
231
+ // const result = this.buildTracesPrivate([layout.rootPane]);
232
+ return result.flatMap(traceGroup => traceGroup);
233
+ }
234
+ buildTracesPrivate(currentSequence) {
235
+ const children = this.getChildPanes(currentSequence[currentSequence.length - 1]);
236
+ if (children.length === 0) {
237
+ return [{
238
+ finished: true,
239
+ trace: currentSequence
240
+ }];
241
+ }
242
+ else {
243
+ const result = children.map(child => this.buildTracesPrivate([...currentSequence, child]));
244
+ return result.flatMap(r => r);
245
+ }
246
+ }
247
+ getChildPanes(pane) {
248
+ if (pane instanceof BsContentPane) {
249
+ return [];
250
+ }
251
+ else if (pane instanceof BsTabGroupPane) {
252
+ return pane.panes;
253
+ }
254
+ else if (pane instanceof BsSplitPane) {
255
+ return pane.panes;
256
+ }
257
+ else if (pane instanceof BsFloatingPane) {
258
+ return pane.pane ? [pane.pane] : [];
259
+ }
260
+ else if (pane instanceof BsDocumentHost) {
261
+ return pane.rootPane ? [pane.rootPane] : [];
262
+ }
263
+ else {
264
+ return [];
265
+ }
266
+ }
267
+ }
268
+ BsDockService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
269
+ BsDockService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockService, providedIn: 'root' });
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockService, decorators: [{
271
+ type: Injectable,
272
+ args: [{
273
+ providedIn: 'root'
274
+ }]
275
+ }] });
276
+
205
277
  class BsDockPanelHeaderComponent {
206
- constructor(dockPanel, dock, element) {
278
+ constructor(dockPanel, dock, dockService, element) {
207
279
  this.dockPanel = dockPanel;
208
280
  this.dock = dock;
281
+ this.dockService = dockService;
209
282
  this.element = element;
210
283
  this.isMouseDown = false;
211
- this.isLayoutDetached = false;
284
+ this.isDragging = false;
212
285
  this.dBlock = true;
213
286
  }
214
287
  onMouseDown(ev) {
@@ -217,131 +290,234 @@ class BsDockPanelHeaderComponent {
217
290
  }
218
291
  onMouseMove(ev) {
219
292
  if (this.isMouseDown) {
220
- if (!this.isLayoutDetached) {
221
- this.isLayoutDetached = true;
222
- this.dock.layout$.pipe(take(1)).subscribe((layout) => {
293
+ if (!this.isDragging) {
294
+ this.isDragging = true;
295
+ this.dock.parentifiedLayout$.pipe(take(1)).subscribe((layout) => {
223
296
  var _a, _b, _c, _d;
224
- let element = this.element.nativeElement;
225
- let tree = [];
297
+ // this.dock.layout$.pipe(take(1)).subscribe((layout) => {
298
+ const traces = this.dockService.buildTraces(layout);
299
+ console.log('traces', { layout, traces });
300
+ const matching = traces.filter(t => {
301
+ const lastPane = t.trace[t.trace.length - 1];
302
+ // return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);
303
+ return (lastPane instanceof BsContentPane) && (lastPane.dockPanel === this.dockPanel);
304
+ });
305
+ console.log('matching', matching);
306
+ if (matching.length !== 1) {
307
+ return;
308
+ }
309
+ // const tabs = matching[0].trace.filter(pane => pane instanceof BsTabGroupPane);
310
+ // const lastTabGroup = tabs[tabs.length - 1];
311
+ // // console.log('last tabgroup', lastTabGroup);
312
+ let tabControlEl = this.element.nativeElement;
226
313
  do {
227
- tree.push(element);
228
- element = element.parentElement;
229
- } while (element);
230
- const tabControls = tree.filter(el => el.tagName.toUpperCase() === 'BS-TAB-CONTROL');
231
- if (tabControls.length > 0) {
232
- const coords = {
233
- width: tabControls[0].clientWidth,
234
- height: tabControls[0].clientHeight,
235
- left: ev.clientX - ev.offsetX,
236
- top: ev.clientY - ev.offsetY,
237
- };
238
- ((_a = this.dockPanel.headerPortal) === null || _a === void 0 ? void 0 : _a.isAttached) && ((_b = this.dockPanel.headerPortal) === null || _b === void 0 ? void 0 : _b.detach());
239
- ((_c = this.dockPanel.contentPortal) === null || _c === void 0 ? void 0 : _c.isAttached) && ((_d = this.dockPanel.contentPortal) === null || _d === void 0 ? void 0 : _d.detach());
240
- this.removeFromPane(layout.rootPane, this.dockPanel);
241
- const floatingPane = new BsFloatingPane({
242
- pane: new BsTabGroupPane({
243
- panes: [
244
- new BsContentPane({
245
- dockPanel: this.dockPanel
246
- })
247
- ]
248
- }),
249
- size: {
250
- width: coords.width,
251
- height: coords.height,
252
- },
253
- location: {
254
- x: coords.left,
255
- y: coords.top,
314
+ if (tabControlEl.parentElement) {
315
+ tabControlEl = tabControlEl.parentElement;
316
+ }
317
+ else {
318
+ throw 'No more parents';
319
+ }
320
+ } while (tabControlEl.tagName.toUpperCase() !== 'BS-TAB-CONTROL');
321
+ const coords = {
322
+ width: tabControlEl.clientWidth,
323
+ height: tabControlEl.clientHeight,
324
+ left: ev.clientX - ev.offsetX,
325
+ top: ev.clientY - ev.offsetY,
326
+ };
327
+ // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();
328
+ // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();
329
+ // this.removeFromPane(layout.rootPane, this.dockPanel);
330
+ const trace = [...matching[0].trace];
331
+ ((_a = this.dockPanel.headerPortal) === null || _a === void 0 ? void 0 : _a.isAttached) && ((_b = this.dockPanel.headerPortal) === null || _b === void 0 ? void 0 : _b.detach());
332
+ ((_c = this.dockPanel.contentPortal) === null || _c === void 0 ? void 0 : _c.isAttached) && ((_d = this.dockPanel.contentPortal) === null || _d === void 0 ? void 0 : _d.detach());
333
+ for (let index = trace.length - 1; index >= 0; index--) {
334
+ if (index > 0) {
335
+ this.removeFromPaneBis(trace[index - 1], trace[index]);
336
+ if (!trace[index - 1].isEmpty)
337
+ break;
338
+ }
339
+ else {
340
+ const floatingIndex = layout.floatingPanes.indexOf(trace[0]);
341
+ if (trace[0].isEmpty && (floatingIndex > -1)) {
342
+ layout.floatingPanes.splice(floatingIndex, 1);
256
343
  }
257
- });
258
- this.dragOperation = {
259
- offsetX: ev.offsetX,
260
- offsetY: ev.offsetY,
261
- floatingPane
262
- };
263
- layout.floatingPanes.push(floatingPane);
264
- this.dock.layout$.next(layout);
344
+ }
265
345
  }
346
+ // this.removeFromPane((<any>matching[0].trace[0])['$original'], this.dockPanel);
347
+ const floatingPane = new BsFloatingPane({
348
+ pane: new BsTabGroupPane({
349
+ panes: [
350
+ new BsContentPane({
351
+ dockPanel: this.dockPanel
352
+ })
353
+ ]
354
+ }),
355
+ size: {
356
+ width: coords.width,
357
+ height: coords.height,
358
+ },
359
+ location: {
360
+ x: coords.left,
361
+ y: coords.top,
362
+ }
363
+ });
364
+ this.dragOperation = {
365
+ offsetX: ev.offsetX,
366
+ offsetY: ev.offsetY,
367
+ floatingPane
368
+ };
369
+ layout.floatingPanes.push(floatingPane);
370
+ setTimeout(() => this.dock.layout$.next(layout), 5);
371
+ // console.log('traces', { traces, matching, dockPanel: this.dockPanel, equals: traces[2].trace[3] });
372
+ // let element: HTMLElement | null = this.element.nativeElement;
373
+ // let tree: HTMLElement[] = [];
374
+ // do {
375
+ // tree.push(element!);
376
+ // element = element!.parentElement;
377
+ // } while (element);
378
+ // const tabControls = tree.filter(el => el.tagName.toUpperCase() === 'BS-TAB-CONTROL');
379
+ // if (tabControls.length > 0) {
380
+ // const coords = {
381
+ // width: tabControls[0].clientWidth,
382
+ // height: tabControls[0].clientHeight,
383
+ // left: ev.clientX - ev.offsetX,
384
+ // top: ev.clientY - ev.offsetY,
385
+ // };
386
+ // this.dockPanel.headerPortal?.isAttached && this.dockPanel.headerPortal?.detach();
387
+ // this.dockPanel.contentPortal?.isAttached && this.dockPanel.contentPortal?.detach();
388
+ // this.removeFromPane(layout.rootPane, this.dockPanel);
389
+ // const floatingPane = new BsFloatingPane({
390
+ // pane: new BsTabGroupPane({
391
+ // panes: [
392
+ // new BsContentPane({
393
+ // dockPanel: this.dockPanel
394
+ // })
395
+ // ]
396
+ // }),
397
+ // size: {
398
+ // width: coords.width,
399
+ // height: coords.height,
400
+ // },
401
+ // location: {
402
+ // x: coords.left,
403
+ // y: coords.top,
404
+ // }
405
+ // });
406
+ // this.dragOperation = {
407
+ // offsetX: ev.offsetX,
408
+ // offsetY: ev.offsetY,
409
+ // floatingPane
410
+ // };
411
+ // layout.floatingPanes.push(floatingPane);
412
+ // this.dock.layout$.next(layout);
413
+ // }
266
414
  });
267
415
  }
268
- else if (this.dragOperation) {
269
- if (this.dragOperation.floatingPane.location) {
270
- this.dragOperation.floatingPane.location.x = ev.clientX - this.dragOperation.offsetX;
271
- this.dragOperation.floatingPane.location.y = ev.clientY - this.dragOperation.offsetY;
416
+ else {
417
+ if (this.dragOperation) {
418
+ if (this.dragOperation.floatingPane.location) {
419
+ this.dragOperation.floatingPane.location.x = ev.clientX - this.dragOperation.offsetX;
420
+ this.dragOperation.floatingPane.location.y = ev.clientY - this.dragOperation.offsetY;
421
+ }
422
+ // } else {
423
+ // const traces = this.dockService.buildTraces(this.dock.layout);
424
+ // const matchingTrace = traces.filter(trace => {
425
+ // const pane = trace.trace[trace.trace.length - 1];
426
+ // return (pane instanceof BsContentPane) && (pane.dockPanel === this.dockPanel);
427
+ // });
428
+ // console.log('matching', { traces, matchingTrace });
429
+ // // this.dragOperation = {
430
+ // // }
272
431
  }
273
432
  }
274
433
  }
275
434
  }
276
- removeFromPane(host, panel /*, parents: BsDockPane[] */) {
435
+ removeFromPaneBis(host, pane) {
277
436
  if (host instanceof BsContentPane) {
278
- return { paneRemoved: false, hostIsEmpty: false };
279
437
  }
280
438
  else if (host instanceof BsDocumentHost) {
281
439
  // Actually documentHost should never be removed
282
- if (!host.rootPane) {
283
- return { paneRemoved: false, hostIsEmpty: true };
284
- }
285
- const result = this.removeFromPane(host.rootPane, panel);
286
- return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };
287
440
  }
288
441
  else if (host instanceof BsTabGroupPane) {
289
- const matching = host.panes.filter(p => p.dockPanel === panel);
290
- if (matching.length > 0) {
291
- host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);
292
- return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
293
- }
294
- else {
295
- // ATM. all panes are ContentPanes anyway.
296
- // So unless you'd want to have splitters inside the tabs,
297
- // This code will not be hit.
298
- // const result = host.panes
299
- // .map(parentPane => this.removeFromPane(parentPane, panel))
300
- // .filter(r => r.paneRemoved);
301
- //
302
- // if (result.length > 0) {
303
- // return { paneRemoved: true, hostIsEmpty: }
304
- // }
305
- return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
442
+ if (pane instanceof BsContentPane) {
443
+ const index = host.panes.indexOf(pane);
444
+ host.panes.splice(index, 1);
306
445
  }
307
446
  }
308
447
  else if (host instanceof BsSplitPane) {
309
- const matching = host.panes
310
- .filter(p => p instanceof BsContentPane)
311
- .map(p => p)
312
- .filter(p => p.dockPanel === panel);
313
- if (matching.length > 0) {
314
- host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);
315
- // TODO: Remove splitter if only 1 pane left?
316
- return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
317
- }
318
- else {
319
- for (let splitPane of host.panes) {
320
- const result = this.removeFromPane(splitPane, panel);
321
- if (result.paneRemoved && result.hostIsEmpty) {
322
- // splitPane is empty now, so we can remove it from this splitter
323
- host.panes.splice(host.panes.indexOf(splitPane), 1);
324
- return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
325
- }
326
- }
327
- }
328
- return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
448
+ const index = host.panes.indexOf(pane);
449
+ host.panes.splice(index, 1);
450
+ }
451
+ else if (host instanceof BsFloatingPane) {
329
452
  }
330
453
  else {
331
- throw 'unknown host type';
454
+ throw 'Unknown pane type';
332
455
  }
333
456
  }
457
+ // removeFromPane(host: BsDockPane, panel: BsDockPanelComponent /*, parents: BsDockPane[] */): RemoveFromPaneResult {
458
+ // if (host instanceof BsContentPane) {
459
+ // return { paneRemoved: false, hostIsEmpty: false };
460
+ // } else if (host instanceof BsDocumentHost) {
461
+ // // Actually documentHost should never be removed
462
+ // if (!host.rootPane) {
463
+ // return { paneRemoved: false, hostIsEmpty: true };
464
+ // }
465
+ // const result = this.removeFromPane(host.rootPane, panel);
466
+ // return { paneRemoved: result.paneRemoved, hostIsEmpty: result.hostIsEmpty };
467
+ // } else if (host instanceof BsTabGroupPane) {
468
+ // const matching = host.panes.filter(p => p.dockPanel === panel);
469
+ // if (matching.length > 0) {
470
+ // host.panes.splice(host.panes.findIndex(p => p.dockPanel === panel), 1);
471
+ // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
472
+ // } else {
473
+ // // ATM. all panes are ContentPanes anyway.
474
+ // // So unless you'd want to have splitters inside the tabs,
475
+ // // This code will not be hit.
476
+ // // const result = host.panes
477
+ // // .map(parentPane => this.removeFromPane(parentPane, panel))
478
+ // // .filter(r => r.paneRemoved);
479
+ // //
480
+ // // if (result.length > 0) {
481
+ // // return { paneRemoved: true, hostIsEmpty: }
482
+ // // }
483
+ // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
484
+ // }
485
+ // } else if (host instanceof BsSplitPane) {
486
+ // const matching = host.panes
487
+ // .filter(p => p instanceof BsContentPane)
488
+ // .map(p => <BsContentPane>p)
489
+ // .filter(p => p.dockPanel === panel);
490
+ // if (matching.length > 0) {
491
+ // host.panes.splice(host.panes.findIndex(p => (p instanceof BsContentPane) && matching.includes(p)), 1);
492
+ // // TODO: Remove splitter if only 1 pane left?
493
+ // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
494
+ // } else {
495
+ // for (let splitPane of host.panes) {
496
+ // const result = this.removeFromPane(splitPane, panel);
497
+ // if (result.paneRemoved && result.hostIsEmpty) {
498
+ // // splitPane is empty now, so we can remove it from this splitter
499
+ // host.panes.splice(host.panes.indexOf(splitPane), 1);
500
+ // return { paneRemoved: true, hostIsEmpty: host.panes.length === 0 };
501
+ // }
502
+ // }
503
+ // }
504
+ // return { paneRemoved: false, hostIsEmpty: host.panes.length === 0 };
505
+ // } else {
506
+ // throw 'unknown host type';
507
+ // }
508
+ // }
334
509
  onMouseUp(ev) {
335
510
  this.isMouseDown = false;
511
+ this.isDragging = false;
336
512
  this.dragOperation = undefined;
337
513
  }
338
514
  }
339
- BsDockPanelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockPanelHeaderComponent, deps: [{ token: BsDockPanelComponent }, { token: BsDockComponent }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
515
+ BsDockPanelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockPanelHeaderComponent, deps: [{ token: BsDockPanelComponent }, { token: BsDockComponent }, { token: BsDockService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
340
516
  BsDockPanelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BsDockPanelHeaderComponent, selector: "bs-dock-panel-header", host: { listeners: { "mousedown": "onMouseDown($event)", "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.d-block": "this.dBlock" } }, ngImport: i0, template: "<ng-content></ng-content>", styles: [":host{padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);margin:calc(-1 * var(--bs-nav-link-padding-y)) calc(-1 * var(--bs-nav-link-padding-x))}\n"] });
341
517
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsDockPanelHeaderComponent, decorators: [{
342
518
  type: Component,
343
519
  args: [{ selector: 'bs-dock-panel-header', template: "<ng-content></ng-content>", styles: [":host{padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);margin:calc(-1 * var(--bs-nav-link-padding-y)) calc(-1 * var(--bs-nav-link-padding-x))}\n"] }]
344
- }], ctorParameters: function () { return [{ type: BsDockPanelComponent }, { type: BsDockComponent }, { type: i0.ElementRef }]; }, propDecorators: { onMouseDown: [{
520
+ }], ctorParameters: function () { return [{ type: BsDockPanelComponent }, { type: BsDockComponent }, { type: BsDockService }, { type: i0.ElementRef }]; }, propDecorators: { onMouseDown: [{
345
521
  type: HostListener,
346
522
  args: ['mousedown', ['$event']]
347
523
  }], onMouseMove: [{
@@ -409,5 +585,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
409
585
  * Generated bundle index. Do not edit.
410
586
  */
411
587
 
412
- export { BsContentPane, BsDockComponent, BsDockModule, BsDockPane, BsDockPaneRendererComponent, BsDockPanelComponent, BsDockPanelHeaderComponent, BsDocumentHost, BsFloatingPane, BsSplitPane, BsTabGroupPane, EPaneType };
588
+ export { BsContentPane, BsDockComponent, BsDockModule, BsDockPane, BsDockPaneRendererComponent, BsDockPanelComponent, BsDockPanelHeaderComponent, BsDockService, BsDocumentHost, BsFloatingPane, BsSplitPane, BsTabGroupPane, EPaneType };
413
589
  //# sourceMappingURL=mintplayer-ng-bootstrap-dock.mjs.map