From 057656739f1fdc6c90da9985cb61116a41470a3f Mon Sep 17 00:00:00 2001
From: Johannes Goslar <jogo@kronberger-spiele.de>
Date: Sat, 3 Jun 2017 00:18:01 +0200
Subject: [PATCH] [TASK] Move bower dependencies to npm

Resolves: #81448
Resolves: #81449
Resolves: #81450
Releases: master, 8.7
Change-Id: Ic87b62f09d607e7f37491ebec2ea4619bc1aff70
Reviewed-on: https://review.typo3.org/53078
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Markus Sommer <markussom@posteo.de>
Tested-by: Markus Sommer <markussom@posteo.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
---
 Build/Gruntfile.js      |  92 +++++------
 Build/bower.json        |  22 ---
 Build/package-lock.json | 348 ++++++++++++++++++++++++++++++++++++++++
 Build/package.json      |  21 ++-
 4 files changed, 409 insertions(+), 74 deletions(-)

diff --git a/Build/Gruntfile.js b/Build/Gruntfile.js
index 0265f549721d..a557f509cdfc 100644
--- a/Build/Gruntfile.js
+++ b/Build/Gruntfile.js
@@ -60,8 +60,8 @@ module.exports = function (grunt) {
 			ckeditor: '<%= paths.sysext %>rte_ckeditor/Resources/',
 			core: '<%= paths.sysext %>core/Resources/',
 			bower: 'bower_components/',
-			t3icons: '<%= paths.bower %>typo3-icons/dist/',
-			npm: 'node_modules/'
+			npm: 'node_modules/',
+			t3icons: '<%= paths.npm %>@typo3/icons/dist/'
 		},
 		stylelint: {
 			options: {
@@ -84,9 +84,9 @@ module.exports = function (grunt) {
 				outputStyle: 'expanded',
 				precision: 8,
 				includePaths: [
-					'bower_components/bootstrap-sass/assets/stylesheets',
-					'bower_components/fontawesome/scss',
-					'bower_components/eonasdan-bootstrap-datetimepicker/src/sass',
+					'node_modules/bootstrap-sass/assets/stylesheets',
+					'node_modules/font-awesome/scss',
+					'node_modules/eonasdan-bootstrap-datetimepicker/src/sass',
 					'node_modules/tagsort'
 				]
 			},
@@ -374,23 +374,23 @@ module.exports = function (grunt) {
 				files: [
 					{
 						dest: '<%= paths.sysext %>backend/Resources/Public/Fonts/FontAwesome/fontawesome-webfont.eot',
-						src: '<%= paths.bower %>fontawesome/fonts/fontawesome-webfont.eot'
+						src: '<%= paths.npm %>font-awesome/fonts/fontawesome-webfont.eot'
 					},
 					{
 						dest: '<%= paths.sysext %>backend/Resources/Public/Fonts/FontAwesome/fontawesome-webfont.svg',
-						src: '<%= paths.bower %>fontawesome/fonts/fontawesome-webfont.svg'
+						src: '<%= paths.npm %>font-awesome/fonts/fontawesome-webfont.svg'
 					},
 					{
 						dest: '<%= paths.sysext %>backend/Resources/Public/Fonts/FontAwesome/fontawesome-webfont.ttf',
-						src: '<%= paths.bower %>fontawesome/fonts/fontawesome-webfont.ttf'
+						src: '<%= paths.npm %>font-awesome/fonts/fontawesome-webfont.ttf'
 					},
 					{
 						dest: '<%= paths.sysext %>backend/Resources/Public/Fonts/FontAwesome/fontawesome-webfont.woff',
-						src: '<%= paths.bower %>fontawesome/fonts/fontawesome-webfont.woff'
+						src: '<%= paths.npm %>font-awesome/fonts/fontawesome-webfont.woff'
 					},
 					{
 						dest: '<%= paths.sysext %>backend/Resources/Public/Fonts/FontAwesome/fontawesome-webfont.woff2',
-						src: '<%= paths.bower %>fontawesome/fonts/fontawesome-webfont.woff2'
+						src: '<%= paths.npm %>font-awesome/fonts/fontawesome-webfont.woff2'
 					}
 				]
 			}
@@ -402,26 +402,15 @@ module.exports = function (grunt) {
 				runBower: false,
 				srcPrefix: "bower_components/"
 			},
-			glob: {
-				files: {
-					// When using glob patterns, destinations are *always* folder names
-					// into which matching files will be copied
-					// Also note that subdirectories are **not** maintained
-					// if a destination is specified
-					// For example, one of the files copied here is
-					// 'lodash/dist/lodash.js' -> 'public/js/libs/lodash/lodash.js'
-					'<%= paths.sysext %>core/Resources/Public/Images/colorpicker': 'jquery-minicolors/*.png'
-				}
-			},
 			ckeditor: {
 				options: {
 					destPrefix: "<%= paths.ckeditor %>Public/JavaScript/Contrib"
 				},
 				files: {
-					'ckeditor.js': 'ckeditor/ckeditor.js',
-					'plugins/': 'ckeditor/plugins/',
-					'skins/': 'ckeditor/skins/',
-					'lang/': 'ckeditor/lang/'
+					'ckeditor.js': '../node_modules/ckeditor/ckeditor.js',
+					'plugins/': '../node_modules/ckeditor/plugins/',
+					'skins/': '../node_modules/ckeditor/skins/',
+					'lang/': '../node_modules/ckeditor/lang/'
 				}
 			},
 			all: {
@@ -429,27 +418,28 @@ module.exports = function (grunt) {
 					destPrefix: "<%= paths.core %>Public/JavaScript/Contrib"
 				},
 				files: {
-					'nprogress.js': 'nprogress/nprogress.js',
-					'jquery.matchHeight-min.js': 'matchHeight/dist/jquery.matchHeight-min.js',
-					'jquery.dataTables.js': 'datatables/media/js/jquery.dataTables.min.js',
-					'require.js': 'requirejs/require.js',
-					'moment.js': 'moment/min/moment-with-locales.min.js',
-					'moment-timezone.js': 'moment-timezone/builds/moment-timezone-with-data.min.js',
-					'cropper.min.js': 'cropper/dist/cropper.min.js',
-					'imagesloaded.pkgd.min.js': 'imagesloaded/imagesloaded.pkgd.min.js',
-					'bootstrap-datetimepicker.js': 'eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
-					'autosize.js': 'autosize/dist/autosize.min.js',
-					'taboverride.min.js': 'taboverride/build/output/taboverride.min.js',
-					'bootstrap-slider.min.js': 'seiyria-bootstrap-slider/dist/bootstrap-slider.min.js',
+					'nprogress.js': '../node_modules/nprogress/nprogress.js',
+					'jquery.matchHeight-min.js': '../node_modules/jquery-match-height/dist/jquery.matchHeight-min.js',
+					'jquery.dataTables.js': '../node_modules/datatables/media/js/jquery.dataTables.min.js',
+					'require.js': '../node_modules/requirejs/require.js',
+					'moment.js': '../node_modules/moment/min/moment-with-locales.min.js',
+					'moment-timezone.js': '../node_modules/moment-timezone/builds/moment-timezone-with-data.min.js',
+					'cropper.min.js': '../node_modules/cropper/dist/cropper.min.js',
+					'imagesloaded.pkgd.min.js': '../node_modules/imagesloaded/imagesloaded.pkgd.min.js',
+					'bootstrap-datetimepicker.js': '../node_modules/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
+					'autosize.js': '../node_modules/autosize/dist/autosize.min.js',
+					'taboverride.min.js': '../node_modules/taboverride/build/output/taboverride.min.js',
+					'bootstrap-slider.min.js': '../node_modules/bootstrap-slider/dist/bootstrap-slider.min.js',
 					/* disabled until events are not bound to document only
-					 see https://github.com/claviska/jquery-minicolors/issues/192
-					 see https://github.com/claviska/jquery-minicolors/issues/206
-					 'jquery.minicolors.js': 'jquery-minicolors/jquery.minicolors.min.js',
+					see https://github.com/claviska/jquery-minicolors/issues/192
+					see https://github.com/claviska/jquery-minicolors/issues/206
+					'jquery.minicolors.js': '../node_modules/@claviska/jquery-minicolors/jquery.minicolors.min.js',
+					'../../Images/colorpicker/jquery.minicolors.png': '../node_modules/@claviska/jquery-minicolors/jquery.minicolors.png'
 					 */
 					/* disabled until autocomplete formatGroup is fixed to pass on the index too
-					 'jquery.autocomplete.js': 'devbridge-autocomplete/src/jquery.autocomplete.js',
+					   'jquery.autocomplete.js': '../node_modules/devbridge-autocomplete/dist/jquery.autocomplete.min.js',
 					 */
-					'd3/d3.js': 'd3/d3.min.js',
+					'd3/d3.js': '../node_modules/d3/build/d3.min.js',
 					/**
 					 * copy needed parts of jquery
 					 */
@@ -458,15 +448,15 @@ module.exports = function (grunt) {
 					/**
 					 * copy needed parts of jquery-ui
 					 */
-					'jquery-ui/core.js': 'jquery-ui/ui/core.js',
-					'jquery-ui/draggable.js': 'jquery-ui/ui/draggable.js',
-					'jquery-ui/droppable.js': 'jquery-ui/ui/droppable.js',
-					'jquery-ui/mouse.js': 'jquery-ui/ui/mouse.js',
-					'jquery-ui/position.js': 'jquery-ui/ui/position.js',
-					'jquery-ui/resizable.js': 'jquery-ui/ui/resizable.js',
-					'jquery-ui/selectable.js': 'jquery-ui/ui/selectable.js',
-					'jquery-ui/sortable.js': 'jquery-ui/ui/sortable.js',
-					'jquery-ui/widget.js': 'jquery-ui/ui/widget.js'
+					'jquery-ui/core.js': '../node_modules/jquery-ui/ui/core.js',
+					'jquery-ui/draggable.js': '../node_modules/jquery-ui/ui/draggable.js',
+					'jquery-ui/droppable.js': '../node_modules/jquery-ui/ui/droppable.js',
+					'jquery-ui/mouse.js': '../node_modules/jquery-ui/ui/mouse.js',
+					'jquery-ui/position.js': '../node_modules/jquery-ui/ui/position.js',
+					'jquery-ui/resizable.js': '../node_modules/jquery-ui/ui/resizable.js',
+					'jquery-ui/selectable.js': '../node_modules/jquery-ui/ui/selectable.js',
+					'jquery-ui/sortable.js': '../node_modules/jquery-ui/ui/sortable.js',
+					'jquery-ui/widget.js': '../node_modules/jquery-ui/ui/widget.js'
 				}
 			}
 		},
diff --git a/Build/bower.json b/Build/bower.json
index e12e820916c4..312802ce10ba 100644
--- a/Build/bower.json
+++ b/Build/bower.json
@@ -22,28 +22,6 @@
   "license": "GPL-2.0+",
   "homepage": "https://typo3.org/",
   "private": true,
-  "devDependencies": {
-    "fontawesome": "^4.6.3",
-    "bootstrap-sass": "^3.3.7"
-  },
   "dependencies": {
-    "requirejs": "^2.3.2",
-    "jquery-ui": "1.11.4",
-    "eonasdan-bootstrap-datetimepicker": "^4.17.45",
-    "moment": "^2.17.1",
-    "moment-timezone": "^0.5.11",
-    "nprogress": "^0.2.0",
-    "datatables": "^1.10.13",
-    "autosize": "^3.0.20",
-    "cropper": "^2.3.2",
-    "imagesloaded": "^4.1.0",
-    "taboverride": "^4.0.3",
-    "seiyria-bootstrap-slider": "^9.7.3",
-    "devbridge-autocomplete": "^1.3.0",
-    "typo3-icons": "1.4.0",
-    "matchHeight": "matchheight#^0.7.2",
-    "jquery-minicolors": "^2.2.4",
-    "d3": "^4.7.3",
-    "ckeditor": "^4.6.2"
   }
 }
diff --git a/Build/package-lock.json b/Build/package-lock.json
index 1082f36acff3..0a71f2294ff5 100644
--- a/Build/package-lock.json
+++ b/Build/package-lock.json
@@ -3,6 +3,12 @@
   "version": "9.0.0-dev",
   "lockfileVersion": 1,
   "dependencies": {
+    "@claviska/jquery-minicolors": {
+      "version": "2.2.6",
+      "resolved": "https://registry.npmjs.org/@claviska/jquery-minicolors/-/jquery-minicolors-2.2.6.tgz",
+      "integrity": "sha1-ALTB5OMeTaSDUBeF1cLtP8z97ck=",
+      "dev": true
+    },
     "@types/bootstrap": {
       "version": "3.3.33",
       "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-3.3.33.tgz",
@@ -39,6 +45,12 @@
       "integrity": "sha1-vEi8gzwHnCwkumr7ym06A7P04vM=",
       "dev": true
     },
+    "@typo3/icons": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/@typo3/icons/-/icons-1.4.1.tgz",
+      "integrity": "sha512-FQT1CjcrX6b1W1fMu/Fmw/iItCd/tlG6UrUyosWA6y6SFGtGdXAkW7zjdqJ1bPld/8dvdoV1dIcFGVqgq5OjwQ==",
+      "dev": true
+    },
     "abbrev": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
@@ -231,6 +243,12 @@
       "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
       "dev": true
     },
+    "autosize": {
+      "version": "3.0.20",
+      "resolved": "https://registry.npmjs.org/autosize/-/autosize-3.0.20.tgz",
+      "integrity": "sha1-40PqfFYDg0c4FpQg8DSdyVPmKp4=",
+      "dev": true
+    },
     "aws-sign2": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
@@ -350,6 +368,24 @@
       "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
       "dev": true
     },
+    "bootstrap": {
+      "version": "3.3.7",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
+      "integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E=",
+      "dev": true
+    },
+    "bootstrap-sass": {
+      "version": "3.3.7",
+      "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz",
+      "integrity": "sha1-ZZbHq0D2Y3OTMjqwvIDQZPxjBJg=",
+      "dev": true
+    },
+    "bootstrap-slider": {
+      "version": "9.7.3",
+      "resolved": "https://registry.npmjs.org/bootstrap-slider/-/bootstrap-slider-9.7.3.tgz",
+      "integrity": "sha1-zny5ctkB8oHI4oSzBFbtrPga+ZM=",
+      "dev": true
+    },
     "bower": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/bower/-/bower-1.8.0.tgz",
@@ -494,6 +530,12 @@
       "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=",
       "dev": true
     },
+    "ckeditor": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/ckeditor/-/ckeditor-4.6.2.tgz",
+      "integrity": "sha1-sVUrei+VN+Fl16/S0p09SVn/a60=",
+      "dev": true
+    },
     "clap": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/clap/-/clap-1.1.3.tgz",
@@ -730,6 +772,12 @@
       "integrity": "sha1-lSdx6w3dwcs/ovb75RpSLpOz7go=",
       "dev": true
     },
+    "cropper": {
+      "version": "2.3.4",
+      "resolved": "https://registry.npmjs.org/cropper/-/cropper-2.3.4.tgz",
+      "integrity": "sha1-KjqFFucgaRUjZv6eyTnt2M8uBYA=",
+      "dev": true
+    },
     "cross-spawn": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
@@ -832,6 +880,224 @@
       "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
       "dev": true
     },
+    "d3": {
+      "version": "4.7.4",
+      "resolved": "https://registry.npmjs.org/d3/-/d3-4.7.4.tgz",
+      "integrity": "sha1-ovQOtX3sxRvEaQENSK50og4CV3I=",
+      "dev": true,
+      "dependencies": {
+        "d3-array": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.1.1.tgz",
+          "integrity": "sha1-oBq+Y6Jf+5HTQjw8bQUbTTa8igk=",
+          "dev": true
+        },
+        "d3-axis": {
+          "version": "1.0.6",
+          "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.6.tgz",
+          "integrity": "sha1-3MvCGnPleG3oIL8aIrI39SK4eL4=",
+          "dev": true
+        },
+        "d3-drag": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.0.4.tgz",
+          "integrity": "sha1-qcFgnxHdVTCuJ169ZDd+xU77nY8=",
+          "dev": true
+        },
+        "d3-format": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.1.1.tgz",
+          "integrity": "sha1-JuCU57D6kl02FapvQ7JlxcqCtG4=",
+          "dev": true
+        },
+        "d3-geo": {
+          "version": "1.6.3",
+          "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.6.3.tgz",
+          "integrity": "sha1-IWg6Q6Bh6rohp/JUtR1ZN+tkB1Y=",
+          "dev": true
+        },
+        "d3-interpolate": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.4.tgz",
+          "integrity": "sha1-pD7Fs77jUNhRbv34GaTAjAU9swI=",
+          "dev": true
+        },
+        "d3-queue": {
+          "version": "3.0.5",
+          "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.5.tgz",
+          "integrity": "sha1-DO/+HxMcRZsTufafEFa0HfwzwA0=",
+          "dev": true
+        },
+        "d3-random": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.0.3.tgz",
+          "integrity": "sha1-ZSbIRKpefEV+Kd2s1vJzT4RbQsE=",
+          "dev": true
+        },
+        "d3-scale": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.5.tgz",
+          "integrity": "sha1-QYUG8PsY6wUrOF4ZY5iswqQTSFg=",
+          "dev": true
+        },
+        "d3-selection": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.0.5.tgz",
+          "integrity": "sha1-lIxztBpE4o0XQq4v8gfCrryic0s=",
+          "dev": true
+        },
+        "d3-shape": {
+          "version": "1.0.6",
+          "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.0.6.tgz",
+          "integrity": "sha1-sJ4wXPDHxrmpjJDmtC9i2sS8/Vs=",
+          "dev": true
+        },
+        "d3-transition": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.0.4.tgz",
+          "integrity": "sha1-4anrrjhpqdnCh0qwCEH6gxOuXeU=",
+          "dev": true
+        },
+        "d3-zoom": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.1.4.tgz",
+          "integrity": "sha1-kD/SyYi1ys5D8A3Peq4JRwycwS0=",
+          "dev": true
+        }
+      }
+    },
+    "d3-array": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.0.tgz",
+      "integrity": "sha1-FH0mlyDhdMQFen9CvosPPyulMQg=",
+      "dev": true
+    },
+    "d3-brush": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz",
+      "integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=",
+      "dev": true
+    },
+    "d3-chord": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz",
+      "integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=",
+      "dev": true
+    },
+    "d3-collection": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.3.tgz",
+      "integrity": "sha1-AL3qlPvBYo1DWruuL03CFk433TQ=",
+      "dev": true
+    },
+    "d3-color": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz",
+      "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs=",
+      "dev": true
+    },
+    "d3-dispatch": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz",
+      "integrity": "sha1-RuFJHqqbWMNY/OW+TovtYm54cfg=",
+      "dev": true
+    },
+    "d3-drag": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.1.0.tgz",
+      "integrity": "sha1-Skm013pC6ePVoO87SSsUqqLlpzM=",
+      "dev": true
+    },
+    "d3-dsv": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.5.tgz",
+      "integrity": "sha1-QZ99tH9ih4n8P9tjbmeESdCCETY=",
+      "dev": true
+    },
+    "d3-ease": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz",
+      "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=",
+      "dev": true
+    },
+    "d3-force": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.0.6.tgz",
+      "integrity": "sha1-6n4bdzDiZkzTFPWU1nGMV8wTK3k=",
+      "dev": true
+    },
+    "d3-hierarchy": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.4.tgz",
+      "integrity": "sha1-lsOULz8hz5l6EbTt8A3eKne0xtA=",
+      "dev": true
+    },
+    "d3-interpolate": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.5.tgz",
+      "integrity": "sha1-aeCZ/zkhRxblY8muw+qdHqS4p58=",
+      "dev": true
+    },
+    "d3-path": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz",
+      "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q=",
+      "dev": true
+    },
+    "d3-polygon": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz",
+      "integrity": "sha1-FoiOkCZGCTPysXllKtN4Ik04LGI=",
+      "dev": true
+    },
+    "d3-quadtree": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz",
+      "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=",
+      "dev": true
+    },
+    "d3-request": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.5.tgz",
+      "integrity": "sha1-TarpRtHdDVff4B8CKVY1SVjVHyM=",
+      "dev": true
+    },
+    "d3-selection": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.1.0.tgz",
+      "integrity": "sha1-GZhoSJZIj4OcoDchI9o08dMYgJw=",
+      "dev": true
+    },
+    "d3-time": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.6.tgz",
+      "integrity": "sha1-pVsT19FdOhYK6RcIIy4INfHV6UU=",
+      "dev": true
+    },
+    "d3-time-format": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.5.tgz",
+      "integrity": "sha1-nXeAIE98kRnJFwsaVttN6aivly4=",
+      "dev": true
+    },
+    "d3-timer": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.5.tgz",
+      "integrity": "sha1-smbUdscbDSaeesXzUrQQo7b+bvA=",
+      "dev": true
+    },
+    "d3-transition": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.0.tgz",
+      "integrity": "sha1-z8hcdOUjkyQpBUZiNXKZBWDDlm8=",
+      "dev": true
+    },
+    "d3-voronoi": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz",
+      "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=",
+      "dev": true
+    },
     "dashdash": {
       "version": "1.14.1",
       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -846,6 +1112,12 @@
         }
       }
     },
+    "datatables": {
+      "version": "1.10.13",
+      "resolved": "https://registry.npmjs.org/datatables/-/datatables-1.10.13.tgz",
+      "integrity": "sha1-m7Lexvfc8CBJoA5PDn0/4AnDk0Y=",
+      "dev": true
+    },
     "dateformat": {
       "version": "1.0.12",
       "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
@@ -914,6 +1186,12 @@
       "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=",
       "dev": true
     },
+    "devbridge-autocomplete": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/devbridge-autocomplete/-/devbridge-autocomplete-1.4.1.tgz",
+      "integrity": "sha1-aDV8z7/Q/yuJ4vB9UFnxUZrwFUA=",
+      "dev": true
+    },
     "dezalgo": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
@@ -1093,6 +1371,12 @@
       "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
       "dev": true
     },
+    "eonasdan-bootstrap-datetimepicker": {
+      "version": "4.17.47",
+      "resolved": "https://registry.npmjs.org/eonasdan-bootstrap-datetimepicker/-/eonasdan-bootstrap-datetimepicker-4.17.47.tgz",
+      "integrity": "sha1-ekmXAEQGUnbnll79Fvgic1IZ5zU=",
+      "dev": true
+    },
     "error-ex": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
@@ -1168,6 +1452,12 @@
       "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
       "dev": true
     },
+    "ev-emitter": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.0.3.tgz",
+      "integrity": "sha1-7l73S27SjZEbMt3L/JeGf1gJN7w=",
+      "dev": true
+    },
     "eventemitter2": {
       "version": "0.4.14",
       "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
@@ -1398,6 +1688,12 @@
       "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
       "dev": true
     },
+    "font-awesome": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
+      "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=",
+      "dev": true
+    },
     "for-in": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -1931,6 +2227,12 @@
       "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=",
       "dev": true
     },
+    "imagesloaded": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/imagesloaded/-/imagesloaded-4.1.1.tgz",
+      "integrity": "sha1-U7W2ZhU2CFClomSxKT5/TQbTvVE=",
+      "dev": true
+    },
     "imurmurhash": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -2236,6 +2538,16 @@
       "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=",
       "dev": true
     },
+    "jquery-match-height": {
+      "version": "0.7.2",
+      "resolved": "https://registry.npmjs.org/jquery-match-height/-/jquery-match-height-0.7.2.tgz",
+      "integrity": "sha1-+NnzulMU2qsQnPB0CGdL4gS+Xw4=",
+      "dev": true
+    },
+    "jquery-ui": {
+      "version": "git+https://github.com/jquery/jquery-ui.git#d6713024e16de90ea71dc0544ba34e1df01b4d8a",
+      "dev": true
+    },
     "js-base64": {
       "version": "2.1.9",
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz",
@@ -3575,6 +3887,18 @@
         }
       }
     },
+    "moment": {
+      "version": "2.18.1",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz",
+      "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=",
+      "dev": true
+    },
+    "moment-timezone": {
+      "version": "0.5.13",
+      "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.13.tgz",
+      "integrity": "sha1-mc5cfYJyYusPH3AgRBd/YHRde5A=",
+      "dev": true
+    },
     "ms": {
       "version": "0.7.1",
       "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
@@ -4077,6 +4401,12 @@
       "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==",
       "dev": true
     },
+    "nprogress": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
+      "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=",
+      "dev": true
+    },
     "null-check": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
@@ -4775,6 +5105,12 @@
       "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
       "dev": true
     },
+    "rw": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+      "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=",
+      "dev": true
+    },
     "safe-buffer": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
@@ -5287,6 +5623,12 @@
         }
       }
     },
+    "taboverride": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/taboverride/-/taboverride-4.0.3.tgz",
+      "integrity": "sha1-M5JAEqLzr17mCcXzDhvSanX75qk=",
+      "dev": true
+    },
     "tagsort": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/tagsort/-/tagsort-1.4.0.tgz",
@@ -5670,6 +6012,12 @@
         }
       }
     },
+    "xmlhttprequest": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+      "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=",
+      "dev": true
+    },
     "xmlhttprequest-ssl": {
       "version": "1.5.3",
       "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz",
diff --git a/Build/package.json b/Build/package.json
index 39868b2f1d0e..9a072f15065c 100644
--- a/Build/package.json
+++ b/Build/package.json
@@ -8,15 +8,27 @@
   "version": "9.0.0-dev",
   "license": "GPL-2.0+",
   "devDependencies": {
+    "@claviska/jquery-minicolors": "^2.2.6",
     "@types/bootstrap": "*",
     "@types/jasmine": "^2.5.35",
     "@types/jquery": "*",
     "@types/jqueryui": "*",
     "@types/nprogress": "*",
     "@types/requirejs": "*",
+    "@typo3/icons": "^1.4.1",
     "autoprefixer": "^6.3.7",
+    "autosize": "^3.0.20",
+    "bootstrap-sass": "^3.3.7",
+    "bootstrap-slider": "^9.7.3",
     "bower": "^1.8.0",
     "chosen-js": "^1.7.0",
+    "ckeditor": "^4.6.2",
+    "cropper": "^2.3.4",
+    "d3": "^4.7.4",
+    "datatables": "^1.10.13",
+    "devbridge-autocomplete": "^1.4.1",
+    "eonasdan-bootstrap-datetimepicker": "^4.17.47",
+    "font-awesome": "^4.7.0",
     "grunt": "~1.0.1",
     "grunt-bower-just-install": "0.0.3",
     "grunt-bowercopy": "^1.2.0",
@@ -30,8 +42,11 @@
     "grunt-svgmin": "4.0.0",
     "grunt-ts": "^5.5.1",
     "grunt-tslint": "^3.2.1",
+    "imagesloaded": "^4.1.1",
     "jasmine-core": "~2.6.0",
     "jquery": "^3.2.1",
+    "jquery-match-height": "^0.7.2",
+    "jquery-ui": "^1.11.4",
     "karma": "^1.3.0",
     "karma-chrome-launcher": "^2.0.0",
     "karma-coverage": "^1.0.0",
@@ -43,11 +58,15 @@
     "karma-phantomjs-launcher": "^1.0.0",
     "karma-requirejs": "^1.0.0",
     "karma-safari-launcher": "^1.0.0",
+    "moment": "^2.18.1",
+    "moment-timezone": "^0.5.13",
+    "nprogress": "^0.2.0",
     "phantomjs-prebuilt": "^2.1.7",
     "postcss-banner": "^3.0.0",
     "postcss-clean": "^1.0.2",
-    "requirejs": "^2.2.0",
+    "requirejs": "^2.3.3",
     "stylefmt": "^5.3.0",
+    "taboverride": "^4.0.3",
     "tagsort": "1.4.0",
     "tslint": "^3.15.1",
     "typescript": "^2.2.0"
-- 
GitLab