[TASK] Migrate AjaxDataHandler to TypeScript 08/55908/3
authorAndreas Fernandez <a.fernandez@scripting-base.de>
Mon, 26 Feb 2018 19:11:24 +0000 (20:11 +0100)
committerFrank Naegler <frank.naegler@typo3.org>
Thu, 1 Mar 2018 11:33:35 +0000 (12:33 +0100)
Change-Id: I151598e90487811217dfa685dcb83081848f2bb6
Resolves: #82578
Releases: master
Reviewed-on: https://review.typo3.org/55908
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Frank Naegler <frank.naegler@typo3.org>
Tested-by: Frank Naegler <frank.naegler@typo3.org>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/backend/Resources/Private/TypeScript/AjaxDataHandler.ts [new file with mode: 0644]
typo3/sysext/backend/Resources/Private/TypeScript/Viewport.ts
typo3/sysext/backend/Resources/Public/JavaScript/AjaxDataHandler.js
typo3/sysext/backend/Resources/Public/JavaScript/Viewport.js

diff --git a/typo3/sysext/backend/Resources/Private/TypeScript/AjaxDataHandler.ts b/typo3/sysext/backend/Resources/Private/TypeScript/AjaxDataHandler.ts
new file mode 100644 (file)
index 0000000..9fea6d6
--- /dev/null
@@ -0,0 +1,270 @@
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+import {SeverityEnum} from './Enum/Severity';
+import * as $ from 'jquery';
+import Icons = require('./Icons');
+import Modal = require('./Modal');
+import Notification = require('./Notification');
+import Viewport = require('./Viewport');
+
+enum Identifiers {
+  hide = '.t3js-record-hide',
+  delete = '.t3js-record-delete',
+  icon = '.t3js-icon'
+}
+
+interface Message {
+  title: string;
+  message: string;
+  severity: SeverityEnum;
+}
+
+interface Response {
+  redirect: string;
+  messages: Array<Message>;
+  hasErrors: boolean;
+}
+
+/**
+ * Module: TYPO3/CMS/Backend/AjaxDataHandler
+ * AjaxDataHandler - Javascript functions to work with AJAX and interacting with tce_db.php
+ */
+class AjaxDataHandler {
+  /**
+   * Refresh the page tree
+   */
+  private static refreshPageTree(): void {
+    if (Viewport.NavigationContainer && Viewport.NavigationContainer.PageTree) {
+      Viewport.NavigationContainer.PageTree.refreshTree();
+    }
+  }
+
+  constructor() {
+    $((): void => {
+      this.initialize();
+    });
+  }
+
+  /**
+   * Generic function to call from the outside the script and validate directly showing errors
+   *
+   * @param {Object} parameters
+   * @returns {JQueryPromise<any>}
+   */
+  public process(parameters: Object): JQueryPromise<any> {
+    return this._call(parameters).done((result: Response): void => {
+      if (result.hasErrors) {
+        this.handleErrors(result);
+      }
+    });
+  }
+
+  private initialize(): void {
+    // HIDE/UNHIDE: click events for all action icons to hide/unhide
+    $(document).on('click', Identifiers.hide, (e: JQueryEventObject): void => {
+      e.preventDefault();
+      const $anchorElement = $(e.currentTarget);
+      const $iconElement = $anchorElement.find(Identifiers.icon);
+      const $rowElement = $anchorElement.closest('tr[data-uid]');
+      const params = $anchorElement.data('params');
+
+      // add a spinner
+      this._showSpinnerIcon($iconElement);
+
+      // make the AJAX call to toggle the visibility
+      this._call(params).done((result: Response): void => {
+        // print messages on errors
+        if (result.hasErrors) {
+          this.handleErrors(result);
+        } else {
+          // adjust overlay icon
+          this.toggleRow($rowElement);
+        }
+      });
+    });
+
+    // DELETE: click events for all action icons to delete
+    $(document).on('click', Identifiers.delete, (evt: JQueryEventObject): void => {
+      evt.preventDefault();
+      const $anchorElement = $(evt.currentTarget);
+      const $modal = Modal.confirm($anchorElement.data('title'), $anchorElement.data('message'), SeverityEnum.warning, [
+        {
+          text: $anchorElement.data('button-close-text') || TYPO3.lang['button.cancel'] || 'Cancel',
+          active: true,
+          btnClass: 'btn-default',
+          name: 'cancel'
+        },
+        {
+          text: $anchorElement.data('button-ok-text') || TYPO3.lang['button.delete'] || 'Delete',
+          btnClass: 'btn-warning',
+          name: 'delete'
+        }
+      ]);
+      $modal.on('button.clicked', (e: JQueryEventObject): void => {
+        if (e.target.getAttribute('name') === 'cancel') {
+          Modal.dismiss();
+        } else if (e.target.getAttribute('name') === 'delete') {
+          Modal.dismiss();
+          this.deleteRecord($anchorElement);
+        }
+      });
+    });
+  }
+
+  /**
+   * Toggle row visibility after record has been changed
+   *
+   * @param {JQuery} $rowElement
+   */
+  private toggleRow($rowElement: JQuery): void {
+    const $anchorElement = $rowElement.find(Identifiers.hide);
+    const table = $anchorElement.closest('table[data-table]').data('table');
+    const params = $anchorElement.data('params');
+    let nextParams;
+    let nextState;
+    let iconName;
+
+    if ($anchorElement.data('state') === 'hidden') {
+      nextState = 'visible';
+      nextParams = params.replace('=0', '=1');
+      iconName = 'actions-edit-hide';
+    } else {
+      nextState = 'hidden';
+      nextParams = params.replace('=1', '=0');
+      iconName = 'actions-edit-unhide';
+    }
+    $anchorElement.data('state', nextState).data('params', nextParams);
+
+    // Update tooltip title
+    $anchorElement.tooltip('hide').one('hidden.bs.tooltip', (): void => {
+      const nextTitle = $anchorElement.data('toggleTitle');
+      // Bootstrap Tooltip internally uses only .attr('data-original-title')
+      $anchorElement
+        .data('toggleTitle', $anchorElement.attr('data-original-title'))
+        .attr('data-original-title', nextTitle)
+        .tooltip('show');
+    });
+
+    const $iconElement = $anchorElement.find(Identifiers.icon);
+    Icons.getIcon(iconName, Icons.sizes.small).done((icon: string): void => {
+      $iconElement.replaceWith(icon);
+    });
+
+    // Set overlay for the record icon
+    const $recordIcon = $rowElement.find('.col-icon ' + Identifiers.icon);
+    if (nextState === 'hidden') {
+      Icons.getIcon('miscellaneous-placeholder', Icons.sizes.small, 'overlay-hidden').done((icon: string): void => {
+        $recordIcon.append($(icon).find('.icon-overlay'));
+      });
+    } else {
+      $recordIcon.find('.icon-overlay').remove();
+    }
+
+    $rowElement.fadeTo('fast', 0.4, (): void => {
+      $rowElement.fadeTo('fast', 1);
+    });
+    if (table === 'pages') {
+      AjaxDataHandler.refreshPageTree();
+    }
+  }
+
+  /**
+   * Delete record by given element (icon in table)
+   * don't call it directly!
+   *
+   * @param {JQuery} $anchorElement
+   */
+  private deleteRecord($anchorElement: JQuery): void {
+    const params = $anchorElement.data('params');
+    let $iconElement = $anchorElement.find(Identifiers.icon);
+
+    // add a spinner
+    this._showSpinnerIcon($iconElement);
+
+    // make the AJAX call to toggle the visibility
+    this._call(params).done((result: Response): void => {
+      // revert to the old class
+      Icons.getIcon('actions-edit-delete', Icons.sizes.small).done((icon: string): void => {
+        $iconElement = $anchorElement.find(Identifiers.icon);
+        $iconElement.replaceWith(icon);
+      });
+      // print messages on errors
+      if (result.hasErrors) {
+        this.handleErrors(result);
+      } else {
+        const $table = $anchorElement.closest('table[data-table]');
+        const $panel = $anchorElement.closest('.panel');
+        const $panelHeading = $panel.find('.panel-heading');
+        const table = $table.data('table');
+        let $rowElements = $anchorElement.closest('tr[data-uid]');
+        const uid = $rowElements.data('uid');
+        const $translatedRowElements = $table.find('[data-l10nparent=' + uid + ']').closest('tr[data-uid]');
+        $rowElements = $rowElements.add($translatedRowElements);
+
+        $rowElements.fadeTo('slow', 0.4, (): void => {
+          $rowElements.slideUp('slow', (): void => {
+            $rowElements.remove();
+            if ($table.find('tbody tr').length === 0) {
+              $panel.slideUp('slow');
+            }
+          });
+        });
+        if ($anchorElement.data('l10parent') === '0' || $anchorElement.data('l10parent') === '') {
+          const count = Number($panelHeading.find('.t3js-table-total-items').html());
+          $panelHeading.find('.t3js-table-total-items').text(count - 1);
+        }
+
+        if (table === 'pages') {
+          AjaxDataHandler.refreshPageTree();
+        }
+      }
+    });
+  }
+
+  /**
+   * Handle the errors from result object
+   *
+   * @param {Object} result
+   */
+  private handleErrors(result: Response): void {
+    $.each(result.messages, (position: number, message: Message): void => {
+      Notification.error(message.title, message.message);
+    });
+  }
+
+  /**
+   * AJAX call to tce_db.php
+   * returns a jQuery Promise to work with
+   *
+   * @param {Object} params
+   * @returns {JQueryXHR}
+   */
+  private _call(params: Object): JQueryXHR {
+    return $.getJSON(TYPO3.settings.ajaxUrls.record_process, params);
+  }
+
+  /**
+   * Replace the given icon with a spinner icon
+   *
+   * @param {Object} $iconElement
+   * @private
+   */
+  private _showSpinnerIcon($iconElement: JQuery): void {
+    Icons.getIcon('spinner-circle-dark', Icons.sizes.small).done((icon: string): void => {
+      $iconElement.replaceWith(icon);
+    });
+  }
+}
+
+export = new AjaxDataHandler();
index 867337b..ab261aa 100644 (file)
@@ -50,11 +50,11 @@ class Viewport {
 
 let viewportObject;
 
-if (!TYPO3.Backend) {
+if (!top.TYPO3.Backend) {
   viewportObject = new Viewport();
-  TYPO3.Backend = viewportObject;
+  top.TYPO3.Backend = viewportObject;
 } else {
-  viewportObject = TYPO3.Backend;
+  viewportObject = top.TYPO3.Backend;
 }
 
 export = viewportObject;
index c60162c..0c2b510 100644 (file)
  *
  * The TYPO3 project - inspiring people to share!
  */
-
-/**
- * Module: TYPO3/CMS/Backend/AjaxDataHandler
- * AjaxDataHandler - Javascript functions to work with AJAX and interacting with tce_db.php
- */
-define(['jquery',
-  'TYPO3/CMS/Backend/Modal',
-  'TYPO3/CMS/Backend/Icons',
-  'TYPO3/CMS/Backend/Notification',
-  'TYPO3/CMS/Backend/Severity'
-], function($, Modal, Icons, Notification, Severity) {
-  'use strict';
-
-  /**
-   *
-   * @type {{identifier: {hide: string, delete: string, icon: string}}}
-   * @exports TYPO3/CMS/Backend/AjaxDataHandler
-   */
-  var AjaxDataHandler = {
-    identifier: {
-      hide: '.t3js-record-hide',
-      delete: '.t3js-record-delete',
-      icon: '.t3js-icon'
-    }
-  };
-
-  /**
-   * generic function to call from the outside the script and validate directly showing errors
-   *
-   * @param {Object} parameters
-   * @return {Promise<Object>} a jQuery deferred object (promise)
-   */
-  AjaxDataHandler.process = function(parameters) {
-    return AjaxDataHandler._call(parameters).done(function(result) {
-      if (result.hasErrors) {
-        AjaxDataHandler.handleErrors(result);
-      }
-    });
-  };
-
-  /**
-   *
-   */
-  AjaxDataHandler.initialize = function() {
-
-    // HIDE/UNHIDE: click events for all action icons to hide/unhide
-    $(document).on('click', AjaxDataHandler.identifier.hide, function(evt) {
-      evt.preventDefault();
-      var $anchorElement = $(this);
-      var $iconElement = $anchorElement.find(AjaxDataHandler.identifier.icon);
-      var $rowElement = $anchorElement.closest('tr[data-uid]');
-      var params = $anchorElement.data('params');
-
-      // add a spinner
-      AjaxDataHandler._showSpinnerIcon($iconElement);
-
-      // make the AJAX call to toggle the visibility
-      AjaxDataHandler._call(params).done(function(result) {
-        // print messages on errors
-        if (result.hasErrors) {
-          AjaxDataHandler.handleErrors(result);
-        } else {
-          // adjust overlay icon
-          AjaxDataHandler.toggleRow($rowElement);
-        }
-      });
-    });
-
-    // DELETE: click events for all action icons to delete
-    $(document).on('click', AjaxDataHandler.identifier.delete, function(evt) {
-      evt.preventDefault();
-      var $anchorElement = $(this);
-      var $modal = Modal.confirm($anchorElement.data('title'), $anchorElement.data('message'), Severity.warning, [
-        {
-          text: $(this).data('button-close-text') || TYPO3.lang['button.cancel'] || 'Cancel',
-          active: true,
-          btnClass: 'btn-default',
-          name: 'cancel'
-        },
-        {
-          text: $(this).data('button-ok-text') || TYPO3.lang['button.delete'] || 'Delete',
-          btnClass: 'btn-warning',
-          name: 'delete'
-        }
-      ]);
-      $modal.on('button.clicked', function(e) {
-        if (e.target.name === 'cancel') {
-          Modal.dismiss();
-        } else if (e.target.name === 'delete') {
-          Modal.dismiss();
-          AjaxDataHandler.deleteRecord($anchorElement);
-        }
-      });
-    });
-  };
-
-  /**
-   * Toggle row visibility after record has been changed
-   *
-   * @param {Object} $rowElement
-   */
-  AjaxDataHandler.toggleRow = function($rowElement) {
-    var $anchorElement = $rowElement.find(AjaxDataHandler.identifier.hide);
-    var table = $anchorElement.closest('table[data-table]').data('table');
-    var params = $anchorElement.data('params');
-    var nextParams, nextState, iconName;
-
-    if ($anchorElement.data('state') === 'hidden') {
-      nextState = 'visible';
-      nextParams = params.replace('=0', '=1');
-      iconName = 'actions-edit-hide';
-    } else {
-      nextState = 'hidden';
-      nextParams = params.replace('=1', '=0');
-      iconName = 'actions-edit-unhide';
-    }
-    $anchorElement.data('state', nextState).data('params', nextParams);
-
-    // Update tooltip title
-    $anchorElement.tooltip('hide').one('hidden.bs.tooltip', function() {
-      var nextTitle = $anchorElement.data('toggleTitle');
-      // Bootstrap Tooltip internally uses only .attr('data-original-title')
-      $anchorElement
-        .data('toggleTitle', $anchorElement.attr('data-original-title'))
-        .attr('data-original-title', nextTitle)
-        .tooltip('show');
-    });
-
-    var $iconElement = $anchorElement.find(AjaxDataHandler.identifier.icon);
-    Icons.getIcon(iconName, Icons.sizes.small).done(function(icon) {
-      $iconElement.replaceWith(icon);
-    });
-
-    // Set overlay for the record icon
-    var $recordIcon = $rowElement.find('.col-icon ' + AjaxDataHandler.identifier.icon);
-    if (nextState === 'hidden') {
-      Icons.getIcon('miscellaneous-placeholder', Icons.sizes.small, 'overlay-hidden').done(function(icon) {
-        $recordIcon.append($(icon).find('.icon-overlay'));
-      });
-    } else {
-      $recordIcon.find('.icon-overlay').remove();
-    }
-
-    $rowElement.fadeTo('fast', 0.4, function() {
-      $rowElement.fadeTo('fast', 1);
-    });
-    if (table === 'pages') {
-      AjaxDataHandler.refreshPageTree();
-    }
-  };
-
-  /**
-   * delete record by given element (icon in table)
-   * don't call it directly!
-   *
-   * @param {HTMLElement} element
-   */
-  AjaxDataHandler.deleteRecord = function(element) {
-    var $anchorElement = $(element);
-    var params = $anchorElement.data('params');
-    var $iconElement = $anchorElement.find(AjaxDataHandler.identifier.icon);
-
-    // add a spinner
-    AjaxDataHandler._showSpinnerIcon($iconElement);
-
-    // make the AJAX call to toggle the visibility
-    AjaxDataHandler._call(params).done(function(result) {
-      // revert to the old class
-      Icons.getIcon('actions-edit-delete', Icons.sizes.small).done(function(icon) {
-        $iconElement = $anchorElement.find(AjaxDataHandler.identifier.icon);
-        $iconElement.replaceWith(icon);
-      });
-      // print messages on errors
-      if (result.hasErrors) {
-        AjaxDataHandler.handleErrors(result);
-      } else {
-        var $table = $anchorElement.closest('table[data-table]');
-        var $panel = $anchorElement.closest('.panel');
-        var $panelHeading = $panel.find('.panel-heading');
-        var table = $table.data('table');
-        var $rowElements = $anchorElement.closest('tr[data-uid]');
-        var uid = $rowElements.data('uid');
-        var $translatedRowElements = $table.find('[data-l10nparent=' + uid + ']').closest('tr[data-uid]');
-        $rowElements = $rowElements.add($translatedRowElements);
-
-        $rowElements.fadeTo('slow', 0.4, function() {
-          $rowElements.slideUp('slow', 0, function() {
-            $rowElements.remove();
-            if ($table.find('tbody tr').length === 0) {
-              $panel.slideUp('slow');
-            }
-          });
-        });
-        if ($anchorElement.data('l10parent') === '0' || $anchorElement.data('l10parent') === '') {
-          var count = Number($panelHeading.find('.t3js-table-total-items').html());
-          $panelHeading.find('.t3js-table-total-items').html(count - 1);
-        }
-
-        if (table === 'pages') {
-          AjaxDataHandler.refreshPageTree();
-        }
-      }
-    });
-  };
-
-  /**
-   * handle the errors from result object
-   *
-   * @param {Object} result
-   * @private
-   */
-  AjaxDataHandler.handleErrors = function(result) {
-    $.each(result.messages, function(position, message) {
-      Notification.error(message.title, message.message);
-    });
-  };
-
-  /**
-   * refresh the page tree
-   * @private
-   */
-  AjaxDataHandler.refreshPageTree = function() {
-    if (top.TYPO3 && top.TYPO3.Backend && top.TYPO3.Backend.NavigationContainer && top.TYPO3.Backend.NavigationContainer.PageTree) {
-      top.TYPO3.Backend.NavigationContainer.PageTree.refreshTree();
-    }
-  };
-
-  /**
-   * AJAX call to tce_db.php
-   * returns a jQuery Promise to work with
-   *
-   * @param {Object} params
-   * @returns {Object}
-   * @private
-   */
-  AjaxDataHandler._call = function(params) {
-    return $.getJSON(TYPO3.settings.ajaxUrls['record_process'], params);
-  };
-
-  /**
-   * Replace the given icon with a spinner icon
-   *
-   * @param {Object} $iconElement
-   * @private
-   */
-  AjaxDataHandler._showSpinnerIcon = function($iconElement) {
-    Icons.getIcon('spinner-circle-dark', Icons.sizes.small).done(function(icon) {
-      $iconElement.replaceWith(icon);
-    });
-  };
-
-  $(AjaxDataHandler.initialize);
-
-  return AjaxDataHandler;
-});
+define(["require","exports","./Enum/Severity","jquery","./Icons","./Modal","./Notification","./Viewport"],function(e,t,n,a,i,o,r,s){"use strict";var l,d;return(d=l||(l={})).hide=".t3js-record-hide",d.delete=".t3js-record-delete",d.icon=".t3js-icon",new(function(){function e(){var e=this;a(function(){e.initialize()})}return e.refreshPageTree=function(){s.NavigationContainer&&s.NavigationContainer.PageTree&&s.NavigationContainer.PageTree.refreshTree()},e.prototype.process=function(e){var t=this;return this._call(e).done(function(e){e.hasErrors&&t.handleErrors(e)})},e.prototype.initialize=function(){var e=this;a(document).on("click",l.hide,function(t){t.preventDefault();var n=a(t.currentTarget),i=n.find(l.icon),o=n.closest("tr[data-uid]"),r=n.data("params");e._showSpinnerIcon(i),e._call(r).done(function(t){t.hasErrors?e.handleErrors(t):e.toggleRow(o)})}),a(document).on("click",l.delete,function(t){t.preventDefault();var i=a(t.currentTarget);o.confirm(i.data("title"),i.data("message"),n.SeverityEnum.warning,[{text:i.data("button-close-text")||TYPO3.lang["button.cancel"]||"Cancel",active:!0,btnClass:"btn-default",name:"cancel"},{text:i.data("button-ok-text")||TYPO3.lang["button.delete"]||"Delete",btnClass:"btn-warning",name:"delete"}]).on("button.clicked",function(t){"cancel"===t.target.getAttribute("name")?o.dismiss():"delete"===t.target.getAttribute("name")&&(o.dismiss(),e.deleteRecord(i))})})},e.prototype.toggleRow=function(t){var n,o,r,s=t.find(l.hide),d=s.closest("table[data-table]").data("table"),c=s.data("params");"hidden"===s.data("state")?(o="visible",n=c.replace("=0","=1"),r="actions-edit-hide"):(o="hidden",n=c.replace("=1","=0"),r="actions-edit-unhide"),s.data("state",o).data("params",n),s.tooltip("hide").one("hidden.bs.tooltip",function(){var e=s.data("toggleTitle");s.data("toggleTitle",s.attr("data-original-title")).attr("data-original-title",e).tooltip("show")});var f=s.find(l.icon);i.getIcon(r,i.sizes.small).done(function(e){f.replaceWith(e)});var u=t.find(".col-icon "+l.icon);"hidden"===o?i.getIcon("miscellaneous-placeholder",i.sizes.small,"overlay-hidden").done(function(e){u.append(a(e).find(".icon-overlay"))}):u.find(".icon-overlay").remove(),t.fadeTo("fast",.4,function(){t.fadeTo("fast",1)}),"pages"===d&&e.refreshPageTree()},e.prototype.deleteRecord=function(t){var n=this,a=t.data("params"),o=t.find(l.icon);this._showSpinnerIcon(o),this._call(a).done(function(a){if(i.getIcon("actions-edit-delete",i.sizes.small).done(function(e){(o=t.find(l.icon)).replaceWith(e)}),a.hasErrors)n.handleErrors(a);else{var r=t.closest("table[data-table]"),s=t.closest(".panel"),d=s.find(".panel-heading"),c=r.data("table"),f=t.closest("tr[data-uid]"),u=f.data("uid"),p=r.find("[data-l10nparent="+u+"]").closest("tr[data-uid]");if((f=f.add(p)).fadeTo("slow",.4,function(){f.slideUp("slow",function(){f.remove(),0===r.find("tbody tr").length&&s.slideUp("slow")})}),"0"===t.data("l10parent")||""===t.data("l10parent")){var h=Number(d.find(".t3js-table-total-items").html());d.find(".t3js-table-total-items").text(h-1)}"pages"===c&&e.refreshPageTree()}})},e.prototype.handleErrors=function(e){a.each(e.messages,function(e,t){r.error(t.title,t.message)})},e.prototype._call=function(e){return a.getJSON(TYPO3.settings.ajaxUrls.record_process,e)},e.prototype._showSpinnerIcon=function(e){i.getIcon("spinner-circle-dark",i.sizes.small).done(function(t){e.replaceWith(t)})},e}())});
\ No newline at end of file
index a16af34..979a0b2 100644 (file)
@@ -10,4 +10,4 @@
  *
  * The TYPO3 project - inspiring people to share!
  */
-define(["require","exports","jquery","./Viewport/ContentContainer","./Event/ConsumerScope","./Viewport/Loader","./Viewport/NavigationContainer","./Viewport/Topbar"],function(t,n,i,o,e,a,r,s){"use strict";var c,u=function(){function t(){var t=this;this.Loader=a,this.Topbar=s,this.NavigationContainer=null,this.ContentContainer=null,this.consumerScope=e,i(function(){t.initialize()}),this.NavigationContainer=new r(this.consumerScope),this.ContentContainer=new o(this.consumerScope)}return t.prototype.initialize=function(){var t=this;this.doLayout(),i(window).on("resize",function(){t.doLayout()})},t.prototype.doLayout=function(){this.NavigationContainer.cleanup(),this.NavigationContainer.calculateScrollbar(),i(".t3js-topbar-header").css("padding-right",i(".t3js-scaffold-toolbar").outerWidth())},t}();return TYPO3.Backend?c=TYPO3.Backend:(c=new u,TYPO3.Backend=c),c});
\ No newline at end of file
+define(["require","exports","jquery","./Viewport/ContentContainer","./Event/ConsumerScope","./Viewport/Loader","./Viewport/NavigationContainer","./Viewport/Topbar"],function(t,n,o,i,e,a,r,s){"use strict";var c,u=function(){function t(){var t=this;this.Loader=a,this.Topbar=s,this.NavigationContainer=null,this.ContentContainer=null,this.consumerScope=e,o(function(){t.initialize()}),this.NavigationContainer=new r(this.consumerScope),this.ContentContainer=new i(this.consumerScope)}return t.prototype.initialize=function(){var t=this;this.doLayout(),o(window).on("resize",function(){t.doLayout()})},t.prototype.doLayout=function(){this.NavigationContainer.cleanup(),this.NavigationContainer.calculateScrollbar(),o(".t3js-topbar-header").css("padding-right",o(".t3js-scaffold-toolbar").outerWidth())},t}();return top.TYPO3.Backend?c=top.TYPO3.Backend:(c=new u,top.TYPO3.Backend=c),c});
\ No newline at end of file