ToolbarDockDOM.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'use strict';
  2. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3. /**
  4. * Licensed Materials - Property of IBM
  5. * IBM Business Analytics (C) Copyright IBM Corp. 2019
  6. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. */
  8. define(['react', 'react-dom', '../../../lib/@waca/dashboard-common/dist/core/APIFactory', './ToolbarDockDOMAPI', './ToolbarDockComponent'], function (React, ReactDOM, APIFactory, ToolbarDockDOMAPI, ToolbarDockComponent) {
  9. var ToolbarDockDOM = function () {
  10. function ToolbarDockDOM(_ref) {
  11. var features = _ref.features;
  12. _classCallCheck(this, ToolbarDockDOM);
  13. this._dashboard = features.API;
  14. this._toolbarDock = features.ToolbarDock;
  15. this._sections = {};
  16. this._providers = {};
  17. }
  18. ToolbarDockDOM.prototype.initialize = function initialize() {
  19. if (this._toolbarDock) {
  20. this._api = APIFactory.createAPI(this, [ToolbarDockDOMAPI]);
  21. var canvas = this._dashboard.getCurrentContentView().el;
  22. this._root = document.createElement('div');
  23. canvas.insertBefore(this._root, canvas.firstChild);
  24. return this.render();
  25. } else {
  26. this._api = undefined;
  27. return Promise.resolve();
  28. }
  29. };
  30. ToolbarDockDOM.prototype.getAPI = function getAPI() {
  31. return this._api;
  32. };
  33. ToolbarDockDOM.prototype.destroy = function destroy() {
  34. this._root && ReactDOM.unmountComponentAtNode(this._root);
  35. this._root && this._root.parentNode && this._root.parentNode.removeChild(this._root);
  36. delete this._api;
  37. delete this._providers;
  38. delete this._node;
  39. };
  40. /** API implementations */
  41. ToolbarDockDOM.prototype.render = function render() {
  42. var _this = this;
  43. return new Promise(function (resolve) {
  44. ReactDOM.render(React.createElement(ToolbarDockComponent, {
  45. toolbarDockDOM: _this
  46. }), _this._root, resolve);
  47. });
  48. };
  49. ToolbarDockDOM.prototype.addProvider = function addProvider(providerID, provider) {
  50. this._providers[providerID] = provider;
  51. this.render();
  52. };
  53. ToolbarDockDOM.prototype.removeProvider = function removeProvider(providerID) {
  54. delete this._providers[providerID];
  55. this.render();
  56. };
  57. ToolbarDockDOM.prototype.getProviders = function getProviders() {
  58. return this._providers;
  59. };
  60. return ToolbarDockDOM;
  61. }();
  62. return ToolbarDockDOM;
  63. });
  64. //# sourceMappingURL=ToolbarDockDOM.js.map