jmontoyaa 8 лет назад
Родитель
Сommit
fb8a7802fc
43 измененных файлов с 460 добавлено и 372 удалено
  1. 1 1
      app/Resources/public/assets/MathJax/.bower.json
  2. 5 5
      app/Resources/public/assets/blueimp-canvas-to-blob/.bower.json
  3. 1 1
      app/Resources/public/assets/blueimp-canvas-to-blob/js/canvas-to-blob.js
  4. 8 5
      app/Resources/public/assets/blueimp-canvas-to-blob/package.json
  5. 1 1
      app/Resources/public/assets/blueimp-canvas-to-blob/test/index.html
  6. 9 9
      app/Resources/public/assets/blueimp-canvas-to-blob/test/test.js
  7. 4 4
      app/Resources/public/assets/blueimp-load-image/.bower.json
  8. 12 6
      app/Resources/public/assets/blueimp-load-image/README.md
  9. 1 1
      app/Resources/public/assets/blueimp-load-image/index.html
  10. 87 74
      app/Resources/public/assets/blueimp-load-image/js/demo.js
  11. 1 1
      app/Resources/public/assets/blueimp-load-image/js/load-image-exif-map.js
  12. 1 1
      app/Resources/public/assets/blueimp-load-image/js/load-image-exif.js
  13. 19 3
      app/Resources/public/assets/blueimp-load-image/js/load-image-meta.js
  14. 15 5
      app/Resources/public/assets/blueimp-load-image/js/load-image-orientation.js
  15. 0 0
      app/Resources/public/assets/blueimp-load-image/js/load-image.all.min.js
  16. 0 0
      app/Resources/public/assets/blueimp-load-image/js/load-image.all.min.js.map
  17. 38 22
      app/Resources/public/assets/blueimp-load-image/js/load-image.js
  18. 9 6
      app/Resources/public/assets/blueimp-load-image/package.json
  19. 2 2
      app/Resources/public/assets/blueimp-load-image/test/index.html
  20. 187 166
      app/Resources/public/assets/blueimp-load-image/test/test.js
  21. 4 4
      app/Resources/public/assets/blueimp-tmpl/.bower.json
  22. 0 2
      app/Resources/public/assets/blueimp-tmpl/js/compile.js
  23. 1 1
      app/Resources/public/assets/blueimp-tmpl/js/demo.js
  24. 2 2
      app/Resources/public/assets/blueimp-tmpl/js/runtime.js
  25. 2 2
      app/Resources/public/assets/blueimp-tmpl/js/tmpl.js
  26. 1 1
      app/Resources/public/assets/blueimp-tmpl/js/tmpl.min.js
  27. 1 1
      app/Resources/public/assets/blueimp-tmpl/js/tmpl.min.js.map
  28. 8 6
      app/Resources/public/assets/blueimp-tmpl/package.json
  29. 1 1
      app/Resources/public/assets/blueimp-tmpl/test/index.html
  30. 26 26
      app/Resources/public/assets/blueimp-tmpl/test/test.js
  31. 1 1
      app/Resources/public/assets/bootstrap-daterangepicker/.bower.json
  32. 1 1
      app/Resources/public/assets/ckeditor/.bower.json
  33. 1 1
      app/Resources/public/assets/cropper/.bower.json
  34. 1 1
      app/Resources/public/assets/fontawesome/.bower.json
  35. 1 1
      app/Resources/public/assets/fullcalendar/.bower.json
  36. 1 1
      app/Resources/public/assets/image-map-resizer/.bower.json
  37. 1 1
      app/Resources/public/assets/jquery-timeago/.bower.json
  38. 1 1
      app/Resources/public/assets/jquery-ui/.bower.json
  39. 1 1
      app/Resources/public/assets/jquery.scrollbar/.bower.json
  40. 1 1
      app/Resources/public/assets/jqueryui-timepicker-addon/.bower.json
  41. 1 1
      app/Resources/public/assets/modernizr/.bower.json
  42. 1 1
      app/Resources/public/assets/moment/.bower.json
  43. 1 1
      app/Resources/public/assets/simpleWebRTC/.bower.json

+ 1 - 1
app/Resources/public/assets/MathJax/.bower.json

@@ -21,7 +21,7 @@
     "tag": "2.5.3",
     "commit": "ba9afeb5a743249acdea17540b48b14ebc95dbe4"
   },
-  "_source": "git://github.com/mathjax/MathJax.git",
+  "_source": "https://github.com/mathjax/MathJax.git",
   "_target": "2.5.*",
   "_originalSource": "MathJax"
 }

+ 5 - 5
app/Resources/public/assets/blueimp-canvas-to-blob/.bower.json

@@ -1,14 +1,14 @@
 {
   "name": "blueimp-canvas-to-blob",
   "homepage": "https://github.com/blueimp/JavaScript-Canvas-to-Blob",
-  "version": "3.3.0",
-  "_release": "3.3.0",
+  "version": "3.4.0",
+  "_release": "3.4.0",
   "_resolution": {
     "type": "version",
-    "tag": "v3.3.0",
-    "commit": "443806e20bf0cc6e5b812b0cf686f3109d791074"
+    "tag": "v3.4.0",
+    "commit": "ca0326180f984600aa25eab8a19c4be11b5f048c"
   },
-  "_source": "git://github.com/blueimp/JavaScript-Canvas-to-Blob.git",
+  "_source": "https://github.com/blueimp/JavaScript-Canvas-to-Blob.git",
   "_target": ">=2.1.1",
   "_originalSource": "blueimp-canvas-to-blob"
 }

+ 1 - 1
app/Resources/public/assets/blueimp-canvas-to-blob/js/canvas-to-blob.js

@@ -12,7 +12,7 @@
  * http://stackoverflow.com/q/4998908
  */
 
-/*global window, atob, Blob, ArrayBuffer, Uint8Array, define, module */
+/* global atob, Blob, define */
 
 ;(function (window) {
   'use strict'

+ 8 - 5
app/Resources/public/assets/blueimp-canvas-to-blob/package.json

@@ -1,6 +1,6 @@
 {
   "name": "blueimp-canvas-to-blob",
-  "version": "3.3.0",
+  "version": "3.4.0",
   "title": "JavaScript Canvas to Blob",
   "description": "Canvas to Blob is a polyfill for the standard JavaScript canvas.toBlob method. It can be used to create Blob objects from an HTML canvas element.",
   "keywords": [
@@ -22,12 +22,15 @@
   "license": "MIT",
   "main": "./js/canvas-to-blob.js",
   "devDependencies": {
-    "mocha-phantomjs": "4.0.1",
-    "standard": "6.0.7",
-    "uglify-js": "2.6.1"
+    "phantomjs-prebuilt": "2.1.13",
+    "mocha-phantomjs-core": "1.3.1",
+    "standard": "8.3.0",
+    "uglify-js": "2.7.3"
   },
   "scripts": {
-    "test": "standard js/*.js test/*.js && mocha-phantomjs test/index.html",
+    "lint": "standard js/*.js test/*.js",
+    "unit": "phantomjs node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js test/index.html",
+    "test": "npm run lint && npm run unit",
     "build": "cd js && uglifyjs canvas-to-blob.js -c -m -o canvas-to-blob.min.js --source-map canvas-to-blob.min.js.map",
     "preversion": "npm test",
     "version": "npm run build && git add -A js",

+ 1 - 1
app/Resources/public/assets/blueimp-canvas-to-blob/test/index.html

@@ -24,7 +24,7 @@
 <body>
 <div id="mocha"></div>
 <script src="vendor/mocha.js"></script>
-<script src="vendor/expect.js"></script>
+<script src="vendor/chai.js"></script>
 <script>
 window.initMochaPhantomJS && initMochaPhantomJS();
 mocha.setup('bdd');

+ 9 - 9
app/Resources/public/assets/blueimp-canvas-to-blob/test/test.js

@@ -9,7 +9,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global window, describe, it, Blob */
+/* global describe, it, Blob */
 
 ;(function (expect) {
   'use strict'
@@ -26,7 +26,7 @@
       window.loadImage(blob, function (canvas) {
         canvas.toBlob(
           function (newBlob) {
-            expect(newBlob).to.be.a(Blob)
+            expect(newBlob).to.be.a.instanceOf(Blob)
             done()
           }
         )
@@ -37,7 +37,7 @@
       window.loadImage(blob, function (canvas) {
         canvas.toBlob(
           function (newBlob) {
-            expect(newBlob.type).to.be('image/png')
+            expect(newBlob.type).to.equal('image/png')
             done()
           },
           'image/png'
@@ -49,7 +49,7 @@
       window.loadImage(blob, function (canvas) {
         canvas.toBlob(
           function (newBlob) {
-            expect(newBlob.type).to.be('image/jpeg')
+            expect(newBlob.type).to.equal('image/jpeg')
             done()
           },
           'image/jpeg'
@@ -62,8 +62,8 @@
         canvas.toBlob(
           function (newBlob) {
             window.loadImage(newBlob, function (img) {
-              expect(img.width).to.be(canvas.width)
-              expect(img.height).to.be(canvas.height)
+              expect(img.width).to.equal(canvas.width)
+              expect(img.height).to.equal(canvas.height)
               done()
             })
           }
@@ -80,8 +80,8 @@
                   .getImageData(0, 0, canvas.width, canvas.height)
               var newCanvasData = newCanvas.getContext('2d')
                   .getImageData(0, 0, newCanvas.width, newCanvas.height)
-              expect(canvasData.width).to.be(newCanvasData.width)
-              expect(canvasData.height).to.be(newCanvasData.height)
+              expect(canvasData.width).to.equal(newCanvasData.width)
+              expect(canvasData.height).to.equal(newCanvasData.height)
               done()
             }, {canvas: true})
           }
@@ -89,4 +89,4 @@
       }, {canvas: true})
     })
   })
-}(this.expect))
+}(this.chai.expect))

+ 4 - 4
app/Resources/public/assets/blueimp-load-image/.bower.json

@@ -1,12 +1,12 @@
 {
   "name": "blueimp-load-image",
   "homepage": "https://github.com/blueimp/JavaScript-Load-Image",
-  "version": "2.6.2",
-  "_release": "2.6.2",
+  "version": "2.7.0",
+  "_release": "2.7.0",
   "_resolution": {
     "type": "version",
-    "tag": "v2.6.2",
-    "commit": "d6fdf1575c2f0376d29750a626d096f997e9572a"
+    "tag": "v2.7.0",
+    "commit": "8ee49d987e6951db1c4db6c5270abaa66e6b6659"
   },
   "_source": "https://github.com/blueimp/JavaScript-Load-Image.git",
   "_target": ">=1.13.0",

+ 12 - 6
app/Resources/public/assets/blueimp-load-image/README.md

@@ -194,9 +194,15 @@ Requires `canvas: true`.
 * **crop**: Crops the image to the maxWidth/maxHeight constraints if set to
 `true`.  
 Enabling the `crop` option also enables the `canvas` option.
-* **orientation**: Allows to transform the canvas coordinates according to the
-EXIF orientation specification.  
-Setting the `orientation` also enables the `canvas` option.
+* **orientation**: Transform the canvas according to the specified Exif
+orientation, which can be an `integer` in the range of `1` to `8` or the boolean
+value `true`.  
+When set to `true`, it will set the orientation value based on the EXIF data of
+the image, which will be parsed automatically if the exif library is available.  
+Setting the `orientation` also enables the `canvas` option.  
+Setting `orientation` to `true` alsoe enables the `meta` option.
+* **meta**: Automatically parses the image meta data if set to `true`.  
+The meta data is passed to the callback as second argument.
 * **canvas**: Returns the image as
 [canvas](https://developer.mozilla.org/en/HTML/Canvas) element if set to `true`.
 * **crossOrigin**: Sets the crossOrigin property on the img element for loading
@@ -266,9 +272,9 @@ Blob objects of resized images can be created via
 [canvas.toBlob()](https://github.com/blueimp/JavaScript-Canvas-to-Blob).
 
 ### Exif parser
-If you include the Load Image Exif Parser extension, the **parseMetaData**
-callback **data** contains the additional property **exif** if Exif data could
-be found in the given image.  
+If you include the Load Image Exif Parser extension, the argument passed to the
+callback for **parseMetaData** will contain the additional property **exif** if
+Exif data could be found in the given image.  
 The **exif** object stores the parsed Exif tags:
 
 ```js

+ 1 - 1
app/Resources/public/assets/blueimp-load-image/index.html

@@ -57,10 +57,10 @@ It also provides a method to parse image meta data to extract <a href="https://e
 </div>
 <br>
 <script src="js/load-image.js"></script>
-<script src="js/load-image-orientation.js"></script>
 <script src="js/load-image-meta.js"></script>
 <script src="js/load-image-exif.js"></script>
 <script src="js/load-image-exif-map.js"></script>
+<script src="js/load-image-orientation.js"></script>
 <!-- jQuery and Jcrop are not required by JavaScript Load Image, but included for the demo -->
 <script src="js/vendor/jquery.js"></script>
 <script src="js/vendor/jquery.Jcrop.js"></script>

+ 87 - 74
app/Resources/public/assets/blueimp-load-image/js/demo.js

@@ -9,7 +9,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global window, document, loadImage, HTMLCanvasElement, $ */
+/* global loadImage, HTMLCanvasElement, $ */
 
 $(function () {
   'use strict'
@@ -20,32 +20,7 @@ $(function () {
   var actionsNode = $('#actions')
   var currentFile
   var coordinates
-  function replaceResults (img) {
-    var content
-    if (!(img.src || img instanceof HTMLCanvasElement)) {
-      content = $('<span>Loading image file failed</span>')
-    } else {
-      content = $('<a target="_blank">').append(img)
-        .attr('download', currentFile.name)
-        .attr('href', img.src || img.toDataURL())
-    }
-    result.children().replaceWith(content)
-    if (img.getContext) {
-      actionsNode.show()
-    }
-  }
-  function displayImage (file, options) {
-    currentFile = file
-    if (!loadImage(
-        file,
-        replaceResults,
-        options
-      )) {
-      result.children().replaceWith(
-        $('<span>Your browser does not support the URL or FileReader API.</span>')
-      )
-    }
-  }
+
   function displayExifData (exif) {
     var thumbnail = exif.get('Thumbnail')
     var tags = exif.getAll()
@@ -70,6 +45,40 @@ $(function () {
     }
     exifNode.show()
   }
+
+  function updateResults (img, data) {
+    var content
+    if (!(img.src || img instanceof HTMLCanvasElement)) {
+      content = $('<span>Loading image file failed</span>')
+    } else {
+      content = $('<a target="_blank">').append(img)
+        .attr('download', currentFile.name)
+        .attr('href', img.src || img.toDataURL())
+    }
+    result.children().replaceWith(content)
+    if (img.getContext) {
+      actionsNode.show()
+    }
+    if (data && data.exif) {
+      displayExifData(data.exif)
+    }
+  }
+
+  function displayImage (file, options) {
+    currentFile = file
+    if (!loadImage(
+        file,
+        updateResults,
+        options
+      )) {
+      result.children().replaceWith(
+        $('<span>' +
+          'Your browser does not support the URL or FileReader API.' +
+          '</span>')
+      )
+    }
+  }
+
   function dropChangeHandler (e) {
     e.preventDefault()
     e = e.originalEvent
@@ -79,25 +88,23 @@ $(function () {
       maxWidth: result.width(),
       canvas: true,
       pixelRatio: window.devicePixelRatio,
-      downsamplingRatio: 0.5
+      downsamplingRatio: 0.5,
+      orientation: true
     }
     if (!file) {
       return
     }
     exifNode.hide()
     thumbNode.hide()
-    loadImage.parseMetaData(file, function (data) {
-      if (data.exif) {
-        options.orientation = data.exif.get('Orientation')
-        displayExifData(data.exif)
-      }
-      displayImage(file, options)
-    })
+    displayImage(file, options)
   }
+
   // Hide URL/FileReader API requirement message in capable browsers:
-  if (window.createObjectURL || window.URL || window.webkitURL || window.FileReader) {
+  if (window.createObjectURL || window.URL || window.webkitURL ||
+      window.FileReader) {
     result.children().hide()
   }
+
   $(document)
     .on('dragover', function (e) {
       e.preventDefault()
@@ -105,45 +112,51 @@ $(function () {
       e.dataTransfer.dropEffect = 'copy'
     })
     .on('drop', dropChangeHandler)
-  $('#file-input').on('change', dropChangeHandler)
-  $('#edit').on('click', function (event) {
-    event.preventDefault()
-    var imgNode = result.find('img, canvas')
-    var img = imgNode[0]
-    var pixelRatio = window.devicePixelRatio || 1
-    imgNode.Jcrop({
-      setSelect: [
-        40,
-        40,
-        (img.width / pixelRatio) - 40,
-        (img.height / pixelRatio) - 40
-      ],
-      onSelect: function (coords) {
-        coordinates = coords
-      },
-      onRelease: function () {
+
+  $('#file-input')
+    .on('change', dropChangeHandler)
+
+  $('#edit')
+    .on('click', function (event) {
+      event.preventDefault()
+      var imgNode = result.find('img, canvas')
+      var img = imgNode[0]
+      var pixelRatio = window.devicePixelRatio || 1
+      imgNode.Jcrop({
+        setSelect: [
+          40,
+          40,
+          (img.width / pixelRatio) - 40,
+          (img.height / pixelRatio) - 40
+        ],
+        onSelect: function (coords) {
+          coordinates = coords
+        },
+        onRelease: function () {
+          coordinates = null
+        }
+      }).parent().on('click', function (event) {
+        event.preventDefault()
+      })
+    })
+
+  $('#crop')
+    .on('click', function (event) {
+      event.preventDefault()
+      var img = result.find('img, canvas')[0]
+      var pixelRatio = window.devicePixelRatio || 1
+      if (img && coordinates) {
+        updateResults(loadImage.scale(img, {
+          left: coordinates.x * pixelRatio,
+          top: coordinates.y * pixelRatio,
+          sourceWidth: coordinates.w * pixelRatio,
+          sourceHeight: coordinates.h * pixelRatio,
+          minWidth: result.width(),
+          maxWidth: result.width(),
+          pixelRatio: pixelRatio,
+          downsamplingRatio: 0.5
+        }))
         coordinates = null
       }
-    }).parent().on('click', function (event) {
-      event.preventDefault()
     })
-  })
-  $('#crop').on('click', function (event) {
-    event.preventDefault()
-    var img = result.find('img, canvas')[0]
-    var pixelRatio = window.devicePixelRatio || 1
-    if (img && coordinates) {
-      replaceResults(loadImage.scale(img, {
-        left: coordinates.x * pixelRatio,
-        top: coordinates.y * pixelRatio,
-        sourceWidth: coordinates.w * pixelRatio,
-        sourceHeight: coordinates.h * pixelRatio,
-        minWidth: result.width(),
-        maxWidth: result.width(),
-        pixelRatio: pixelRatio,
-        downsamplingRatio: 0.5
-      }))
-      coordinates = null
-    }
-  })
 })

+ 1 - 1
app/Resources/public/assets/blueimp-load-image/js/load-image-exif-map.js

@@ -12,7 +12,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global define, module, require, window */
+/* global define */
 
 ;(function (factory) {
   'use strict'

+ 1 - 1
app/Resources/public/assets/blueimp-load-image/js/load-image-exif.js

@@ -9,7 +9,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global define, module, require, window, console */
+/* global define */
 
 ;(function (factory) {
   'use strict'

+ 19 - 3
app/Resources/public/assets/blueimp-load-image/js/load-image-meta.js

@@ -13,7 +13,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global define, module, require, window, DataView, Blob, Uint8Array, console */
+/* global define, Blob */
 
 ;(function (factory) {
   'use strict'
@@ -49,12 +49,12 @@
   // The options arguments accepts an object and supports the following properties:
   // * maxMetaDataSize: Defines the maximum number of bytes to parse.
   // * disableImageHead: Disables creating the imageHead property.
-  loadImage.parseMetaData = function (file, callback, options) {
+  loadImage.parseMetaData = function (file, callback, options, data) {
     options = options || {}
+    data = data || {}
     var that = this
     // 256 KiB should contain all EXIF/ICC/IPTC segments:
     var maxMetaDataSize = options.maxMetaDataSize || 262144
-    var data = {}
     var noMetaData = !(window.DataView && file && file.size >= 12 &&
                       file.type === 'image/jpeg' && loadImage.blobSlice)
     if (noMetaData || !loadImage.readFile(
@@ -140,4 +140,20 @@
       callback(data)
     }
   }
+
+  // Determines if meta data should be loaded automatically:
+  loadImage.hasMetaOption = function (options) {
+    return options.meta
+  }
+
+  var originalTransform = loadImage.transform
+  loadImage.transform = function (img, options, callback, file, data) {
+    if (loadImage.hasMetaOption(options || {})) {
+      loadImage.parseMetaData(file, function (data) {
+        originalTransform.call(loadImage, img, options, callback, file, data)
+      }, options, data)
+    } else {
+      originalTransform.apply(loadImage, arguments)
+    }
+  }
 }))

+ 15 - 5
app/Resources/public/assets/blueimp-load-image/js/load-image-orientation.js

@@ -9,7 +9,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global define, module, require, window */
+/* global define */
 
 ;(function (factory) {
   'use strict'
@@ -26,16 +26,22 @@
   'use strict'
 
   var originalHasCanvasOption = loadImage.hasCanvasOption
+  var originalHasMetaOption = loadImage.hasMetaOption
   var originalTransformCoordinates = loadImage.transformCoordinates
   var originalGetTransformedOptions = loadImage.getTransformedOptions
 
-  // This method is used to determine if the target image
-  // should be a canvas element:
+  // Determines if the target image should be a canvas element:
   loadImage.hasCanvasOption = function (options) {
     return !!options.orientation ||
       originalHasCanvasOption.call(loadImage, options)
   }
 
+  // Determines if meta data should be loaded automatically:
+  loadImage.hasMetaOption = function (options) {
+    return options.orientation === true ||
+      originalHasMetaOption.call(loadImage, options)
+  }
+
   // Transform image orientation based on
   // the given EXIF orientation option:
   loadImage.transformCoordinates = function (canvas, options) {
@@ -97,11 +103,14 @@
 
   // Transforms coordinate and dimension options
   // based on the given orientation option:
-  loadImage.getTransformedOptions = function (img, opts) {
+  loadImage.getTransformedOptions = function (img, opts, data) {
     var options = originalGetTransformedOptions.call(loadImage, img, opts)
     var orientation = options.orientation
     var newOptions
     var i
+    if (orientation === true && data && data.exif) {
+      orientation = data.exif.get('Orientation')
+    }
     if (!orientation || orientation > 8 || orientation === 1) {
       return options
     }
@@ -111,7 +120,8 @@
         newOptions[i] = options[i]
       }
     }
-    switch (options.orientation) {
+    newOptions.orientation = orientation
+    switch (orientation) {
       case 2:
         // horizontal flip
         newOptions.left = options.right

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/Resources/public/assets/blueimp-load-image/js/load-image.all.min.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/Resources/public/assets/blueimp-load-image/js/load-image.all.min.js.map


+ 38 - 22
app/Resources/public/assets/blueimp-load-image/js/load-image.js

@@ -9,7 +9,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global define, module, window, document, URL, webkitURL, FileReader */
+/* global define, URL, webkitURL, FileReader */
 
 ;(function ($) {
   'use strict'
@@ -17,26 +17,20 @@
   // Loads an image for a given File object.
   // Invokes the callback with an img or optional canvas
   // element (if supported by the browser) as parameter:
-  var loadImage = function (file, callback, options) {
+  function loadImage (file, callback, options) {
     var img = document.createElement('img')
     var url
-    var oUrl
-    img.onerror = callback
-    img.onload = function () {
-      if (oUrl && !(options && options.noRevoke)) {
-        loadImage.revokeObjectURL(oUrl)
-      }
-      if (callback) {
-        callback(loadImage.scale(img, options))
-      }
+    img.onerror = function (event) {
+      return loadImage.onerror(img, event, file, callback, options)
+    }
+    img.onload = function (event) {
+      return loadImage.onload(img, event, file, callback, options)
     }
     if (loadImage.isInstanceOf('Blob', file) ||
       // Files are also Blob instances, but some browsers
       // (Firefox 3.6) support the File API but not Blobs:
       loadImage.isInstanceOf('File', file)) {
-      url = oUrl = loadImage.createObjectURL(file)
-      // Store the file type for resize processing:
-      img._type = file.type
+      url = img._objectURL = loadImage.createObjectURL(file)
     } else if (typeof file === 'string') {
       url = file
       if (options && options.crossOrigin) {
@@ -53,10 +47,8 @@
       var target = e.target
       if (target && target.result) {
         img.src = target.result
-      } else {
-        if (callback) {
-          callback(e)
-        }
+      } else if (callback) {
+        callback(e)
       }
     })
   }
@@ -66,11 +58,36 @@
                 (window.URL && URL.revokeObjectURL && URL) ||
                 (window.webkitURL && webkitURL)
 
+  function revokeHelper (img, options) {
+    if (img._objectURL && !(options && options.noRevoke)) {
+      loadImage.revokeObjectURL(img._objectURL)
+      delete img._objectURL
+    }
+  }
+
   loadImage.isInstanceOf = function (type, obj) {
     // Cross-frame instanceof check
     return Object.prototype.toString.call(obj) === '[object ' + type + ']'
   }
 
+  loadImage.transform = function (img, options, callback, file, data) {
+    callback(loadImage.scale(img, options, data), data)
+  }
+
+  loadImage.onerror = function (img, event, file, callback, options) {
+    revokeHelper(img, options)
+    if (callback) {
+      callback.call(img, event)
+    }
+  }
+
+  loadImage.onload = function (img, event, file, callback, options) {
+    revokeHelper(img, options)
+    if (callback) {
+      loadImage.transform(img, options, callback, file, {})
+    }
+  }
+
   // Transform image coordinates, allows to override e.g.
   // the canvas orientation based on the orientation option,
   // gets canvas, options passed as arguments:
@@ -136,8 +153,7 @@
     return canvas
   }
 
-  // This method is used to determine if the target image
-  // should be a canvas element:
+  // Determines if the target image should be a canvas element:
   loadImage.hasCanvasOption = function (options) {
     return options.canvas || options.crop || !!options.aspectRatio
   }
@@ -147,7 +163,7 @@
   // Returns a canvas object if the browser supports canvas
   // and the hasCanvasOption method returns true or a canvas
   // object is passed as image, else the scaled image:
-  loadImage.scale = function (img, options) {
+  loadImage.scale = function (img, options, data) {
     options = options || {}
     var canvas = document.createElement('canvas')
     var useCanvas = img.getContext ||
@@ -188,7 +204,7 @@
       }
     }
     if (useCanvas) {
-      options = loadImage.getTransformedOptions(img, options)
+      options = loadImage.getTransformedOptions(img, options, data)
       sourceX = options.left || 0
       sourceY = options.top || 0
       if (options.sourceWidth) {

+ 9 - 6
app/Resources/public/assets/blueimp-load-image/package.json

@@ -1,6 +1,6 @@
 {
   "name": "blueimp-load-image",
-  "version": "2.6.2",
+  "version": "2.7.0",
   "main": "index.js",
   "title": "JavaScript Load Image",
   "description": "JavaScript Load Image is a library to load images provided as File or Blob objects or via URL. It returns an optionally scaled and/or cropped HTML img or canvas element. It also provides a method to parse image meta data to extract Exif tags and thumbnails and to restore the complete image header after resizing.",
@@ -31,13 +31,16 @@
     "url": "git://github.com/blueimp/JavaScript-Load-Image.git"
   },
   "devDependencies": {
-    "mocha-phantomjs": "4.0.1",
-    "standard": "6.0.7",
-    "uglify-js": "2.6.1"
+    "phantomjs-prebuilt": "2.1.13",
+    "mocha-phantomjs-core": "1.3.1",
+    "standard": "8.3.0",
+    "uglify-js": "2.7.3"
   },
   "scripts": {
-    "test": "standard *.js js/*.js test/*.js && mocha-phantomjs test/index.html",
-    "build": "cd js && uglifyjs load-image.js load-image-orientation.js load-image-meta.js load-image-exif.js load-image-exif-map.js -c -m -o load-image.all.min.js --source-map load-image.all.min.js.map",
+    "lint": "standard *.js js/*.js test/*.js",
+    "unit": "phantomjs node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js test/index.html",
+    "test": "npm run lint && npm run unit",
+    "build": "cd js && uglifyjs load-image.js load-image-meta.js load-image-exif.js load-image-exif-map.js load-image-orientation.js -c -m -o load-image.all.min.js --source-map load-image.all.min.js.map",
     "preversion": "npm test",
     "version": "npm run build && git add -A js",
     "postversion": "git push --tags origin master master:gh-pages && npm publish"

+ 2 - 2
app/Resources/public/assets/blueimp-load-image/test/index.html

@@ -24,17 +24,17 @@
 <body>
 <div id="mocha"></div>
 <script src="vendor/mocha.js"></script>
-<script src="vendor/expect.js"></script>
+<script src="vendor/chai.js"></script>
 <script>
 window.initMochaPhantomJS && initMochaPhantomJS();
 mocha.setup('bdd');
 </script>
 <script src="vendor/canvas-to-blob.js"></script>
 <script src="../js/load-image.js"></script>
-<script src="../js/load-image-orientation.js"></script>
 <script src="../js/load-image-meta.js"></script>
 <script src="../js/load-image-exif.js"></script>
 <script src="../js/load-image-exif-map.js"></script>
+<script src="../js/load-image-orientation.js"></script>
 <script src="test.js"></script>
 <script>
 mocha.checkLeaks();

+ 187 - 166
app/Resources/public/assets/blueimp-load-image/test/test.js

@@ -9,7 +9,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global window, describe, it, Blob */
+/* global describe, it, Blob */
 
 ;(function (expect, loadImage) {
   'use strict'
@@ -21,7 +21,7 @@
                     'ovGITCqXzKbzCY1Kp9Sq9YrNarfcrvcLDovH5PKsAAA7'
   var imageUrlGIF = 'data:image/gif;base64,' + b64DataGIF
   var blobGIF = canCreateBlob && window.dataURLtoBlob(imageUrlGIF)
-  // 1x2px JPEG (color white, with the Exif orientation flag set to 6):
+  // 2x1px JPEG (color white, with the Exif orientation flag set to 6):
   var b64DataJPEG = '/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAA' +
                     'ABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEB' +
                     'AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ' +
@@ -59,43 +59,43 @@
       var img = loadImage(blobGIF, function () {
         return
       })
-      expect(img).to.be.an(Object)
+      expect(img).to.be.an.instanceOf(Object)
       expect(img.onload).to.be.a('function')
       expect(img.onerror).to.be.a('function')
     })
 
     it('Load image url', function (done) {
       expect(loadImage(imageUrlGIF, function (img) {
-        expect(img.width).to.be(80)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(80)
+        expect(img.height).to.equal(60)
         done()
-      })).to.be.ok()
+      })).to.be.ok
     })
 
     it('Load image blob', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(80)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(80)
+        expect(img.height).to.equal(60)
         done()
-      })).to.be.ok()
+      })).to.be.ok
     })
 
     it('Return image loading error to callback', function (done) {
       expect(loadImage('404', function (img) {
-        expect(img).to.be.a(window.Event)
-        expect(img.type).to.be('error')
+        expect(img).to.be.an.instanceOf(window.Event)
+        expect(img.type).to.equal('error')
         done()
-      })).to.be.ok()
+      })).to.be.ok
     })
 
     it('Keep object URL if noRevoke is true', function (done) {
       expect(loadImage(blobGIF, function (img) {
         loadImage(img.src, function (img2) {
-          expect(img.width).to.be(img2.width)
-          expect(img.height).to.be(img2.height)
+          expect(img.width).to.equal(img2.width)
+          expect(img.height).to.equal(img2.height)
           done()
         })
-      }, {noRevoke: true})).to.be.ok()
+      }, {noRevoke: true})).to.be.ok
     })
 
     it('Discard object URL if noRevoke is undefined or false', function (done) {
@@ -103,12 +103,12 @@
         loadImage(img.src, function (img2) {
           if (!window.callPhantom) {
             // revokeObjectUrl doesn't seem to have an effect in PhantomJS
-            expect(img2).to.be.a(window.Event)
-            expect(img2.type).to.be('error')
+            expect(img2).to.be.an.instanceOf(window.Event)
+            expect(img2.type).to.equal('error')
           }
           done()
         })
-      })).to.be.ok()
+      })).to.be.ok
     })
   })
 
@@ -116,146 +116,146 @@
     describe('max/min', function () {
       it('Scale to maxWidth', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(40)
-          expect(img.height).to.be(30)
+          expect(img.width).to.equal(40)
+          expect(img.height).to.equal(30)
           done()
-        }, {maxWidth: 40})).to.be.ok()
+        }, {maxWidth: 40})).to.be.ok
       })
 
       it('Scale to maxHeight', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(20)
-          expect(img.height).to.be(15)
+          expect(img.width).to.equal(20)
+          expect(img.height).to.equal(15)
           done()
-        }, {maxHeight: 15})).to.be.ok()
+        }, {maxHeight: 15})).to.be.ok
       })
 
       it('Scale to minWidth', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(160)
-          expect(img.height).to.be(120)
+          expect(img.width).to.equal(160)
+          expect(img.height).to.equal(120)
           done()
-        }, {minWidth: 160})).to.be.ok()
+        }, {minWidth: 160})).to.be.ok
       })
 
       it('Scale to minHeight', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(320)
-          expect(img.height).to.be(240)
+          expect(img.width).to.equal(320)
+          expect(img.height).to.equal(240)
           done()
-        }, {minHeight: 240})).to.be.ok()
+        }, {minHeight: 240})).to.be.ok
       })
 
       it('Scale to minWidth but respect maxWidth', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(160)
-          expect(img.height).to.be(120)
+          expect(img.width).to.equal(160)
+          expect(img.height).to.equal(120)
           done()
-        }, {minWidth: 240, maxWidth: 160})).to.be.ok()
+        }, {minWidth: 240, maxWidth: 160})).to.be.ok
       })
 
       it('Scale to minHeight but respect maxHeight', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(160)
-          expect(img.height).to.be(120)
+          expect(img.width).to.equal(160)
+          expect(img.height).to.equal(120)
           done()
-        }, {minHeight: 180, maxHeight: 120})).to.be.ok()
+        }, {minHeight: 180, maxHeight: 120})).to.be.ok
       })
 
       it('Scale to minWidth but respect maxHeight', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(160)
-          expect(img.height).to.be(120)
+          expect(img.width).to.equal(160)
+          expect(img.height).to.equal(120)
           done()
-        }, {minWidth: 240, maxHeight: 120})).to.be.ok()
+        }, {minWidth: 240, maxHeight: 120})).to.be.ok
       })
 
       it('Scale to minHeight but respect maxWidth', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(160)
-          expect(img.height).to.be(120)
+          expect(img.width).to.equal(160)
+          expect(img.height).to.equal(120)
           done()
-        }, {minHeight: 180, maxWidth: 160})).to.be.ok()
+        }, {minHeight: 180, maxWidth: 160})).to.be.ok
       })
 
       it('Scale up with the given pixelRatio', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(320)
-          expect(img.height).to.be(240)
-          expect(img.style.width).to.be('160px')
-          expect(img.style.height).to.be('120px')
+          expect(img.width).to.equal(320)
+          expect(img.height).to.equal(240)
+          expect(img.style.width).to.equal('160px')
+          expect(img.style.height).to.equal('120px')
           done()
-        }, {minWidth: 160, canvas: true, pixelRatio: 2})).to.be.ok()
+        }, {minWidth: 160, canvas: true, pixelRatio: 2})).to.be.ok
       })
 
       it('Scale down with the given pixelRatio', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(80)
-          expect(img.height).to.be(60)
-          expect(img.style.width).to.be('40px')
-          expect(img.style.height).to.be('30px')
+          expect(img.width).to.equal(80)
+          expect(img.height).to.equal(60)
+          expect(img.style.width).to.equal('40px')
+          expect(img.style.height).to.equal('30px')
           done()
-        }, {maxWidth: 40, canvas: true, pixelRatio: 2})).to.be.ok()
+        }, {maxWidth: 40, canvas: true, pixelRatio: 2})).to.be.ok
       })
 
       it('Scale down with the given downsamplingRatio', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(20)
-          expect(img.height).to.be(15)
+          expect(img.width).to.equal(20)
+          expect(img.height).to.equal(15)
           done()
-        }, {maxWidth: 20, canvas: true, downsamplingRatio: 0.5})).to.be.ok()
+        }, {maxWidth: 20, canvas: true, downsamplingRatio: 0.5})).to.be.ok
       })
 
       it('Ignore max settings if image dimensions are smaller', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(80)
-          expect(img.height).to.be(60)
+          expect(img.width).to.equal(80)
+          expect(img.height).to.equal(60)
           done()
-        }, {maxWidth: 160, maxHeight: 120})).to.be.ok()
+        }, {maxWidth: 160, maxHeight: 120})).to.be.ok
       })
 
       it('Ignore min settings if image dimensions are larger', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(80)
-          expect(img.height).to.be(60)
+          expect(img.width).to.equal(80)
+          expect(img.height).to.equal(60)
           done()
-        }, {minWidth: 40, minHeight: 30})).to.be.ok()
+        }, {minWidth: 40, minHeight: 30})).to.be.ok
       })
     })
 
     describe('contain', function () {
       it('Scale up to contain image in max dimensions', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(160)
-          expect(img.height).to.be(120)
+          expect(img.width).to.equal(160)
+          expect(img.height).to.equal(120)
           done()
-        }, {maxWidth: 160, maxHeight: 160, contain: true})).to.be.ok()
+        }, {maxWidth: 160, maxHeight: 160, contain: true})).to.be.ok
       })
 
       it('Scale down to contain image in max dimensions', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(40)
-          expect(img.height).to.be(30)
+          expect(img.width).to.equal(40)
+          expect(img.height).to.equal(30)
           done()
-        }, {maxWidth: 40, maxHeight: 40, contain: true})).to.be.ok()
+        }, {maxWidth: 40, maxHeight: 40, contain: true})).to.be.ok
       })
     })
 
     describe('cover', function () {
       it('Scale up to cover max dimensions with image dimensions', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(160)
-          expect(img.height).to.be(120)
+          expect(img.width).to.equal(160)
+          expect(img.height).to.equal(120)
           done()
-        }, {maxWidth: 120, maxHeight: 120, cover: true})).to.be.ok()
+        }, {maxWidth: 120, maxHeight: 120, cover: true})).to.be.ok
       })
 
       it('Scale down to cover max dimensions with image dimensions', function (done) {
         expect(loadImage(blobGIF, function (img) {
-          expect(img.width).to.be(40)
-          expect(img.height).to.be(30)
+          expect(img.width).to.equal(40)
+          expect(img.height).to.equal(30)
           done()
-        }, {maxWidth: 30, maxHeight: 30, cover: true})).to.be.ok()
+        }, {maxWidth: 30, maxHeight: 30, cover: true})).to.be.ok
       })
     })
   })
@@ -263,208 +263,219 @@
   describe('Cropping', function () {
     it('Crop to same values for maxWidth and maxHeight', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(40)
-        expect(img.height).to.be(40)
+        expect(img.width).to.equal(40)
+        expect(img.height).to.equal(40)
         done()
-      }, {maxWidth: 40, maxHeight: 40, crop: true})).to.be.ok()
+      }, {maxWidth: 40, maxHeight: 40, crop: true})).to.be.ok
     })
 
     it('Crop to different values for maxWidth and maxHeight', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(40)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(40)
+        expect(img.height).to.equal(60)
         done()
-      }, {maxWidth: 40, maxHeight: 60, crop: true})).to.be.ok()
+      }, {maxWidth: 40, maxHeight: 60, crop: true})).to.be.ok
     })
 
     it('Crop using the given sourceWidth and sourceHeight dimensions', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(40)
-        expect(img.height).to.be(40)
+        expect(img.width).to.equal(40)
+        expect(img.height).to.equal(40)
         done()
-      }, {sourceWidth: 40, sourceHeight: 40, crop: true})).to.be.ok()
+      }, {sourceWidth: 40, sourceHeight: 40, crop: true})).to.be.ok
     })
 
     it('Crop using the given left and top coordinates', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(40)
-        expect(img.height).to.be(20)
+        expect(img.width).to.equal(40)
+        expect(img.height).to.equal(20)
         done()
-      }, {left: 40, top: 40, crop: true})).to.be.ok()
+      }, {left: 40, top: 40, crop: true})).to.be.ok
     })
 
     it('Crop using the given right and bottom coordinates', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(40)
-        expect(img.height).to.be(20)
+        expect(img.width).to.equal(40)
+        expect(img.height).to.equal(20)
         done()
-      }, {right: 40, bottom: 40, crop: true})).to.be.ok()
+      }, {right: 40, bottom: 40, crop: true})).to.be.ok
     })
 
     it('Crop using the given 2:1 aspectRatio', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(80)
-        expect(img.height).to.be(40)
+        expect(img.width).to.equal(80)
+        expect(img.height).to.equal(40)
         done()
-      }, {aspectRatio: 2})).to.be.ok()
+      }, {aspectRatio: 2})).to.be.ok
     })
 
     it('Crop using the given 2:3 aspectRatio', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(40)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(40)
+        expect(img.height).to.equal(60)
         done()
-      }, {aspectRatio: 2 / 3})).to.be.ok()
+      }, {aspectRatio: 2 / 3})).to.be.ok
     })
 
     it('Crop using maxWidth/maxHeight with the given pixelRatio', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(80)
-        expect(img.height).to.be(80)
-        expect(img.style.width).to.be('40px')
-        expect(img.style.height).to.be('40px')
+        expect(img.width).to.equal(80)
+        expect(img.height).to.equal(80)
+        expect(img.style.width).to.equal('40px')
+        expect(img.style.height).to.equal('40px')
         done()
-      }, {maxWidth: 40, maxHeight: 40, crop: true, pixelRatio: 2})).to.be.ok()
+      }, {maxWidth: 40, maxHeight: 40, crop: true, pixelRatio: 2})).to.be.ok
     })
 
     it('Crop using sourceWidth/sourceHeight with the given pixelRatio', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(80)
-        expect(img.height).to.be(80)
-        expect(img.style.width).to.be('40px')
-        expect(img.style.height).to.be('40px')
+        expect(img.width).to.equal(80)
+        expect(img.height).to.equal(80)
+        expect(img.style.width).to.equal('40px')
+        expect(img.style.height).to.equal('40px')
         done()
-      }, {sourceWidth: 40, sourceHeight: 40, crop: true, pixelRatio: 2})).to.be.ok()
+      }, {sourceWidth: 40, sourceHeight: 40, crop: true, pixelRatio: 2})).to.be.ok
     })
   })
 
   describe('Orientation', function () {
     it('Should keep the orientation', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(80)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(80)
+        expect(img.height).to.equal(60)
         done()
-      }, {orientation: 1})).to.be.ok()
+      }, {orientation: 1})).to.be.ok
     })
 
     it('Should rotate left', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(60)
-        expect(img.height).to.be(80)
+        expect(img.width).to.equal(60)
+        expect(img.height).to.equal(80)
         done()
-      }, {orientation: 8})).to.be.ok()
+      }, {orientation: 8})).to.be.ok
     })
 
     it('Should rotate right', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(60)
-        expect(img.height).to.be(80)
+        expect(img.width).to.equal(60)
+        expect(img.height).to.equal(80)
         done()
-      }, {orientation: 6})).to.be.ok()
+      }, {orientation: 6})).to.be.ok
     })
 
     it('Should adjust constraints to new coordinates', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(60)
-        expect(img.height).to.be(80)
+        expect(img.width).to.equal(60)
+        expect(img.height).to.equal(80)
         done()
-      }, {orientation: 6, maxWidth: 60, maxHeight: 80})).to.be.ok()
+      }, {orientation: 6, maxWidth: 60, maxHeight: 80})).to.be.ok
     })
 
     it('Should adjust left and top to new coordinates', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(30)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(30)
+        expect(img.height).to.equal(60)
         done()
-      }, {orientation: 5, left: 30, top: 20})).to.be.ok()
+      }, {orientation: 5, left: 30, top: 20})).to.be.ok
     })
 
     it('Should adjust right and bottom to new coordinates', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(30)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(30)
+        expect(img.height).to.equal(60)
         done()
-      }, {orientation: 5, right: 30, bottom: 20})).to.be.ok()
+      }, {orientation: 5, right: 30, bottom: 20})).to.be.ok
     })
 
     it('Should adjust left and bottom to new coordinates', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(30)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(30)
+        expect(img.height).to.equal(60)
         done()
-      }, {orientation: 7, left: 30, bottom: 20})).to.be.ok()
+      }, {orientation: 7, left: 30, bottom: 20})).to.be.ok
     })
 
     it('Should adjust right and top to new coordinates', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(30)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(30)
+        expect(img.height).to.equal(60)
         done()
-      }, {orientation: 7, right: 30, top: 20})).to.be.ok()
+      }, {orientation: 7, right: 30, top: 20})).to.be.ok
     })
 
     it('Should rotate left with the given pixelRatio', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(120)
-        expect(img.height).to.be(160)
-        expect(img.style.width).to.be('60px')
-        expect(img.style.height).to.be('80px')
+        expect(img.width).to.equal(120)
+        expect(img.height).to.equal(160)
+        expect(img.style.width).to.equal('60px')
+        expect(img.style.height).to.equal('80px')
         done()
-      }, {orientation: 8, pixelRatio: 2})).to.be.ok()
+      }, {orientation: 8, pixelRatio: 2})).to.be.ok
     })
 
     it('Should rotate right with the given pixelRatio', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(120)
-        expect(img.height).to.be(160)
-        expect(img.style.width).to.be('60px')
-        expect(img.style.height).to.be('80px')
+        expect(img.width).to.equal(120)
+        expect(img.height).to.equal(160)
+        expect(img.style.width).to.equal('60px')
+        expect(img.style.height).to.equal('80px')
         done()
-      }, {orientation: 6, pixelRatio: 2})).to.be.ok()
+      }, {orientation: 6, pixelRatio: 2})).to.be.ok
     })
 
     it('Should ignore too small orientation value', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(80)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(80)
+        expect(img.height).to.equal(60)
         done()
-      }, {orientation: -1})).to.be.ok()
+      }, {orientation: -1})).to.be.ok
     })
 
     it('Should ignore too large orientation value', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.width).to.be(80)
-        expect(img.height).to.be(60)
+        expect(img.width).to.equal(80)
+        expect(img.height).to.equal(60)
         done()
-      }, {orientation: 9})).to.be.ok()
+      }, {orientation: 9})).to.be.ok
+    })
+
+    it('Should rotate right based on the exif orientation value', function (done) {
+      expect(loadImage(blobJPEG, function (img, data) {
+        expect(data).to.be.ok
+        expect(data.exif).to.be.ok
+        expect(data.exif.get('Orientation')).to.equal(6)
+        expect(img.width).to.equal(1)
+        expect(img.height).to.equal(2)
+        done()
+      }, {orientation: true})).to.be.ok
     })
   })
 
   describe('Canvas', function () {
     it('Return img element to callback if canvas is not true', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.getContext).to.not.be.ok()
-        expect(img.nodeName.toLowerCase()).to.be('img')
+        expect(img.getContext).to.not.be.ok
+        expect(img.nodeName.toLowerCase()).to.equal('img')
         done()
-      })).to.be.ok()
+      })).to.be.ok
     })
 
     it('Return canvas element to callback if canvas is true', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.getContext).to.be.ok()
-        expect(img.nodeName.toLowerCase()).to.be('canvas')
+        expect(img.getContext).to.be.ok
+        expect(img.nodeName.toLowerCase()).to.equal('canvas')
         done()
-      }, {canvas: true})).to.be.ok()
+      }, {canvas: true})).to.be.ok
     })
 
     it('Return scaled canvas element to callback', function (done) {
       expect(loadImage(blobGIF, function (img) {
-        expect(img.getContext).to.be.ok()
-        expect(img.nodeName.toLowerCase()).to.be('canvas')
-        expect(img.width).to.be(40)
-        expect(img.height).to.be(30)
+        expect(img.getContext).to.be.ok
+        expect(img.nodeName.toLowerCase()).to.equal('canvas')
+        expect(img.width).to.equal(40)
+        expect(img.height).to.equal(30)
         done()
-      }, {canvas: true, maxWidth: 40})).to.be.ok()
+      }, {canvas: true, maxWidth: 40})).to.be.ok
     })
 
     it('Accept a canvas element as parameter for loadImage.scale', function (done) {
@@ -472,39 +483,49 @@
         img = loadImage.scale(img, {
           maxWidth: 40
         })
-        expect(img.getContext).to.be.ok()
-        expect(img.nodeName.toLowerCase()).to.be('canvas')
-        expect(img.width).to.be(40)
-        expect(img.height).to.be(30)
+        expect(img.getContext).to.be.ok
+        expect(img.nodeName.toLowerCase()).to.equal('canvas')
+        expect(img.width).to.equal(40)
+        expect(img.height).to.equal(30)
         done()
-      }, {canvas: true})).to.be.ok()
+      }, {canvas: true})).to.be.ok
     })
   })
 
   describe('Metadata', function () {
     it('Should parse Exif information', function (done) {
       loadImage.parseMetaData(blobJPEG, function (data) {
-        expect(data.exif).to.be.ok()
-        expect(data.exif.get('Orientation')).to.be(6)
+        expect(data.exif).to.be.ok
+        expect(data.exif.get('Orientation')).to.equal(6)
         done()
       })
     })
 
     it('Should parse the complete image head', function (done) {
       loadImage.parseMetaData(blobJPEG, function (data) {
-        expect(data.imageHead).to.be.ok()
+        expect(data.imageHead).to.be.ok
         loadImage.parseMetaData(
           createBlob(data.imageHead, 'image/jpeg'),
           function (data) {
-            expect(data.exif).to.be.ok()
-            expect(data.exif.get('Orientation')).to.be(6)
+            expect(data.exif).to.be.ok
+            expect(data.exif.get('Orientation')).to.equal(6)
             done()
           }
         )
       })
     })
+
+    it('Should parse meta data automatically', function (done) {
+      expect(loadImage(blobJPEG, function (img, data) {
+        expect(data).to.be.ok
+        expect(data.imageHead).to.be.ok
+        expect(data.exif).to.be.ok
+        expect(data.exif.get('Orientation')).to.equal(6)
+        done()
+      }, {meta: true})).to.be.ok
+    })
   })
 }(
-  this.expect,
+  this.chai.expect,
   this.loadImage
 ))

+ 4 - 4
app/Resources/public/assets/blueimp-tmpl/.bower.json

@@ -1,12 +1,12 @@
 {
   "name": "blueimp-tmpl",
   "homepage": "https://github.com/blueimp/JavaScript-Templates",
-  "version": "3.4.0",
-  "_release": "3.4.0",
+  "version": "3.5.0",
+  "_release": "3.5.0",
   "_resolution": {
     "type": "version",
-    "tag": "v3.4.0",
-    "commit": "dcb7a7b44c733c5df0b6000e777bc6942646607e"
+    "tag": "v3.5.0",
+    "commit": "19dfc68580d036de22f1767ef8fde1a6da75b64b"
   },
   "_source": "https://github.com/blueimp/JavaScript-Templates.git",
   "_target": ">=2.5.4",

+ 0 - 2
app/Resources/public/assets/blueimp-tmpl/js/compile.js

@@ -10,8 +10,6 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global require, __dirname, process, console */
-
 ;(function () {
   'use strict'
   var path = require('path')

+ 1 - 1
app/Resources/public/assets/blueimp-tmpl/js/demo.js

@@ -9,7 +9,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/* global document, tmpl */
+/* global tmpl */
 
 ;(function () {
   'use strict'

+ 2 - 2
app/Resources/public/assets/blueimp-tmpl/js/runtime.js

@@ -9,7 +9,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global define, module */
+/* global define */
 
 ;(function ($) {
   'use strict'
@@ -20,7 +20,7 @@
     }
   }
   tmpl.cache = {}
-  tmpl.encReg = /[<>&"'\x00]/g
+  tmpl.encReg = /[<>&"'\x00]/g // eslint-disable-line no-control-regex
   tmpl.encMap = {
     '<': '&lt;',
     '>': '&gt;',

+ 2 - 2
app/Resources/public/assets/blueimp-tmpl/js/tmpl.js

@@ -12,7 +12,7 @@
  * http://ejohn.org/blog/javascript-micro-templating/
  */
 
-/*global document, define, module */
+/* global define */
 
 ;(function ($) {
   'use strict'
@@ -55,7 +55,7 @@
       return "_s+='"
     }
   }
-  tmpl.encReg = /[<>&"'\x00]/g
+  tmpl.encReg = /[<>&"'\x00]/g // eslint-disable-line no-control-regex
   tmpl.encMap = {
     '<': '&lt;',
     '>': '&gt;',

+ 1 - 1
app/Resources/public/assets/blueimp-tmpl/js/tmpl.min.js

@@ -1,2 +1,2 @@
-!function(e){"use strict";var n=function(e,t){var r=/[^\w\-\.:]/.test(e)?new Function(n.arg+",tmpl","var _e=tmpl.encode"+n.helper+",_s='"+e.replace(n.regexp,n.func)+"';return _s;"):n.cache[e]=n.cache[e]||n(n.load(e));return t?r(t,n):function(e){return r(e,n)}};n.cache={},n.load=function(e){return document.getElementById(e).innerHTML},n.regexp=/([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g,n.func=function(e,n,t,r,c,u){return n?{"\n":"\\n","\r":"\\r","	":"\\t"," ":" "}[n]||"\\"+n:t?"="===t?"'+_e("+r+")+'":"'+("+r+"==null?'':"+r+")+'":c?"';":u?"_s+='":void 0},n.encReg=/[<>&"'\x00]/g,n.encMap={"<":"&lt;",">":"&gt;","&":"&amp;",'"':"&quot;","'":"&#39;"},n.encode=function(e){return(null==e?"":""+e).replace(n.encReg,function(e){return n.encMap[e]||""})},n.arg="o",n.helper=",print=function(s,e){_s+=e?(s==null?'':s):_e(s);},include=function(s,d){_s+=tmpl(s,d);}","function"==typeof define&&define.amd?define(function(){return n}):"object"==typeof module&&module.exports?module.exports=n:e.tmpl=n}(this);
+!function(e){"use strict";var n=function(e,t){var r=/[^\w\-\.:]/.test(e)?new Function(n.arg+",tmpl","var _e=tmpl.encode"+n.helper+",_s='"+e.replace(n.regexp,n.func)+"';return _s;"):n.cache[e]=n.cache[e]||n(n.load(e));return t?r(t,n):function(e){return r(e,n)}};n.cache={},n.load=function(e){return document.getElementById(e).innerHTML},n.regexp=/([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g,n.func=function(e,n,t,r,c,u){return n?{"\n":"\\n","\r":"\\r","\t":"\\t"," ":" "}[n]||"\\"+n:t?"="===t?"'+_e("+r+")+'":"'+("+r+"==null?'':"+r+")+'":c?"';":u?"_s+='":void 0},n.encReg=/[<>&"'\x00]/g,n.encMap={"<":"&lt;",">":"&gt;","&":"&amp;",'"':"&quot;","'":"&#39;"},n.encode=function(e){return(null==e?"":""+e).replace(n.encReg,function(e){return n.encMap[e]||""})},n.arg="o",n.helper=",print=function(s,e){_s+=e?(s==null?'':s):_e(s);},include=function(s,d){_s+=tmpl(s,d);}","function"==typeof define&&define.amd?define(function(){return n}):"object"==typeof module&&module.exports?module.exports=n:e.tmpl=n}(this);
 //# sourceMappingURL=tmpl.min.js.map

+ 1 - 1
app/Resources/public/assets/blueimp-tmpl/js/tmpl.min.js.map

@@ -1 +1 @@
-{"version":3,"sources":["tmpl.js"],"names":["$","tmpl","str","data","f","test","Function","arg","helper","replace","regexp","func","cache","load","id","document","getElementById","innerHTML","s","p1","p2","p3","p4","p5","\n","\r","\t"," ","encReg","encMap","<",">","&","\"","'","encode","c","define","amd","module","exports","this"],"mappings":"CAgBE,SAAUA,GACV,YACA,IAAIC,GAAO,SAAUC,EAAKC,GACxB,GAAIC,GAAK,aAAaC,KAAKH,GAEvB,GAAII,UACJL,EAAKM,IAAM,QACX,qBAAuBN,EAAKO,OAAS,QACnCN,EAAIO,QAAQR,EAAKS,OAAQT,EAAKU,MAAQ,gBAJxCV,EAAKW,MAAMV,GAAOD,EAAKW,MAAMV,IAAQD,EAAKA,EAAKY,KAAKX,GAMxD,OAAOC,GAAOC,EAAED,EAAMF,GAAQ,SAAUE,GACtC,MAAOC,GAAED,EAAMF,IAGnBA,GAAKW,SACLX,EAAKY,KAAO,SAAUC,GACpB,MAAOC,UAASC,eAAeF,GAAIG,WAErChB,EAAKS,OAAS,2EACdT,EAAKU,KAAO,SAAUO,EAAGC,EAAIC,EAAIC,EAAIC,EAAIC,GACvC,MAAIJ,IAEAK,KAAM,MACNC,KAAM,MACNC,IAAM,MACNC,IAAK,KACLR,IAAO,KAAOA,EAEdC,EACS,MAAPA,EACK,QAAUC,EAAK,MAEjB,MAAQA,EAAK,aAAeA,EAAK,MAEtCC,EACK,KAELC,EACK,QADT,QAIFtB,EAAK2B,OAAS,eACd3B,EAAK4B,QACHC,IAAK,OACLC,IAAK,OACLC,IAAK,QACLC,IAAK,SACLC,IAAK,SAEPjC,EAAKkC,OAAS,SAAUjB,GACtB,OAAa,MAALA,EAAY,GAAK,GAAKA,GAAGT,QAC/BR,EAAK2B,OACL,SAAUQ,GACR,MAAOnC,GAAK4B,OAAOO,IAAM,MAI/BnC,EAAKM,IAAM,IACXN,EAAKO,OAAS,0FAEQ,kBAAX6B,SAAyBA,OAAOC,IACzCD,OAAO,WACL,MAAOpC,KAEkB,gBAAXsC,SAAuBA,OAAOC,QAC9CD,OAAOC,QAAUvC,EAEjBD,EAAEC,KAAOA,GAEXwC","file":"tmpl.min.js"}
+{"version":3,"sources":["tmpl.js"],"names":["$","tmpl","str","data","f","test","Function","arg","helper","replace","regexp","func","cache","load","id","document","getElementById","innerHTML","s","p1","p2","p3","p4","p5","\n","\r","\t"," ","encReg","encMap","<",">","&","\"","'","encode","c","define","amd","module","exports","this"],"mappings":"CAgBE,SAAUA,GACV,YACA,IAAIC,GAAO,SAAUC,EAAKC,GACxB,GAAIC,GAAK,aAAaC,KAAKH,GAEvB,GAAII,UACJL,EAAKM,IAAM,QACX,qBAAuBN,EAAKO,OAAS,QACnCN,EAAIO,QAAQR,EAAKS,OAAQT,EAAKU,MAAQ,gBAJxCV,EAAKW,MAAMV,GAAOD,EAAKW,MAAMV,IAAQD,EAAKA,EAAKY,KAAKX,GAMxD,OAAOC,GAAOC,EAAED,EAAMF,GAAQ,SAAUE,GACtC,MAAOC,GAAED,EAAMF,IAGnBA,GAAKW,SACLX,EAAKY,KAAO,SAAUC,GACpB,MAAOC,UAASC,eAAeF,GAAIG,WAErChB,EAAKS,OAAS,2EACdT,EAAKU,KAAO,SAAUO,EAAGC,EAAIC,EAAIC,EAAIC,EAAIC,GACvC,MAAIJ,IAEAK,KAAM,MACNC,KAAM,MACNC,KAAM,MACNC,IAAK,KACLR,IAAO,KAAOA,EAEdC,EACS,MAAPA,EACK,QAAUC,EAAK,MAEjB,MAAQA,EAAK,aAAeA,EAAK,MAEtCC,EACK,KAELC,EACK,QADT,QAIFtB,EAAK2B,OAAS,eACd3B,EAAK4B,QACHC,IAAK,OACLC,IAAK,OACLC,IAAK,QACLC,IAAK,SACLC,IAAK,SAEPjC,EAAKkC,OAAS,SAAUjB,GACtB,OAAa,MAALA,EAAY,GAAK,GAAKA,GAAGT,QAC/BR,EAAK2B,OACL,SAAUQ,GACR,MAAOnC,GAAK4B,OAAOO,IAAM,MAI/BnC,EAAKM,IAAM,IACXN,EAAKO,OAAS,0FAEQ,kBAAX6B,SAAyBA,OAAOC,IACzCD,OAAO,WACL,MAAOpC,KAEkB,gBAAXsC,SAAuBA,OAAOC,QAC9CD,OAAOC,QAAUvC,EAEjBD,EAAEC,KAAOA,GAEXwC","file":"tmpl.min.js"}

+ 8 - 6
app/Resources/public/assets/blueimp-tmpl/package.json

@@ -1,6 +1,6 @@
 {
   "name": "blueimp-tmpl",
-  "version": "3.4.0",
+  "version": "3.5.0",
   "title": "JavaScript Templates",
   "description": "1KB lightweight, fast & powerful JavaScript templating engine with zero dependencies. Compatible with server-side environments like Node.js, module loaders like RequireJS, Browserify or webpack and all web browsers.",
   "keywords": [
@@ -19,13 +19,15 @@
   },
   "license": "MIT",
   "devDependencies": {
-    "expect.js": "0.3.1",
-    "mocha": "2.3.4",
-    "standard": "6.0.7",
-    "uglify-js": "2.6.1"
+    "chai": "3.5.0",
+    "mocha": "3.1.0",
+    "standard": "8.3.0",
+    "uglify-js": "2.7.3"
   },
   "scripts": {
-    "test": "standard js/*.js test/*.js && mocha",
+    "lint": "standard js/*.js test/*.js",
+    "unit": "mocha",
+    "test": "npm run lint && npm run unit",
     "build": "cd js && uglifyjs tmpl.js -c -m -o tmpl.min.js --source-map tmpl.min.js.map",
     "preversion": "npm test",
     "version": "npm run build && git add -A js",

+ 1 - 1
app/Resources/public/assets/blueimp-tmpl/test/index.html

@@ -24,7 +24,7 @@
 <body>
 <div id="mocha"></div>
 <script src="vendor/mocha.js"></script>
-<script src="vendor/expect.js"></script>
+<script src="vendor/chai.js"></script>
 <script>
 mocha.setup('bdd');
 </script>

+ 26 - 26
app/Resources/public/assets/blueimp-tmpl/test/test.js

@@ -9,7 +9,7 @@
  * http://www.opensource.org/licenses/MIT
  */
 
-/*global beforeEach, afterEach, describe, it, require */
+/* global beforeEach, afterEach, describe, it */
 
 ;(function (context, expect, tmpl) {
   'use strict'
@@ -53,7 +53,7 @@
     it('String template', function () {
       expect(
         tmpl('{%=o.value%}', data)
-      ).to.be(
+      ).to.equal(
         'value'
       )
     })
@@ -61,7 +61,7 @@
     it('Load template by id', function () {
       expect(
         tmpl('template', data)
-      ).to.be(
+      ).to.equal(
         'value'
       )
     })
@@ -69,7 +69,7 @@
     it('Retun function when called without data parameter', function () {
       expect(
         tmpl('{%=o.value%}')(data)
-      ).to.be(
+      ).to.equal(
         'value'
       )
     })
@@ -86,7 +86,7 @@
     it('Escape HTML special characters with {%=o.prop%}', function () {
       expect(
         tmpl('{%=o.special%}', data)
-      ).to.be(
+      ).to.equal(
         '&lt;&gt;&amp;&quot;&#39;'
       )
     })
@@ -94,7 +94,7 @@
     it('Allow HTML special characters with {%#o.prop%}', function () {
       expect(
         tmpl('{%#o.special%}', data)
-      ).to.be(
+      ).to.equal(
         '<>&"\'\x00'
       )
     })
@@ -102,7 +102,7 @@
     it('Function call', function () {
       expect(
         tmpl('{%=o.func()%}', data)
-      ).to.be(
+      ).to.equal(
         'value'
       )
     })
@@ -110,7 +110,7 @@
     it('Dot notation', function () {
       expect(
         tmpl('{%=o.deep.value%}', data)
-      ).to.be(
+      ).to.equal(
         'value'
       )
     })
@@ -118,7 +118,7 @@
     it('Handle single quotes', function () {
       expect(
         tmpl('\'single quotes\'{%=": \'"%}', data)
-      ).to.be(
+      ).to.equal(
         "'single quotes': &#39;"
       )
     })
@@ -126,7 +126,7 @@
     it('Handle double quotes', function () {
       expect(
         tmpl('"double quotes"{%=": \\""%}', data)
-      ).to.be(
+      ).to.equal(
         '"double quotes": &quot;'
       )
     })
@@ -134,7 +134,7 @@
     it('Handle backslashes', function () {
       expect(
         tmpl('\\backslashes\\{%=": \\\\"%}', data)
-      ).to.be(
+      ).to.equal(
         '\\backslashes\\: \\'
       )
     })
@@ -148,7 +148,7 @@
           '{%=o.zeroValue%}',
           data
         )
-      ).to.be(
+      ).to.equal(
         'false0'
       )
     })
@@ -162,7 +162,7 @@
           '{%#o.zeroValue%}',
           data
         )
-      ).to.be(
+      ).to.equal(
         'false0'
       )
     })
@@ -173,7 +173,7 @@
           '\n\r\t{%=o.value%}  \n\r\t{%=o.value%}  ',
           data
         )
-      ).to.be(
+      ).to.equal(
         '\n\r\tvalue  \n\r\tvalue  '
       )
     })
@@ -183,7 +183,7 @@
     it('Escape HTML special characters with print(data)', function () {
       expect(
         tmpl('{% print(o.special); %}', data)
-      ).to.be(
+      ).to.equal(
         '&lt;&gt;&amp;&quot;&#39;'
       )
     })
@@ -191,7 +191,7 @@
     it('Allow HTML special characters with print(data, true)', function () {
       expect(
         tmpl('{% print(o.special, true); %}', data)
-      ).to.be(
+      ).to.equal(
         '<>&"\'\x00'
       )
     })
@@ -205,7 +205,7 @@
           '{% print(o.zeroValue); %}',
           data
         )
-      ).to.be(
+      ).to.equal(
         'false0'
       )
     })
@@ -219,7 +219,7 @@
           '{% print(o.zeroValue, true); %}',
           data
         )
-      ).to.be(
+      ).to.equal(
         'false0'
       )
     })
@@ -227,7 +227,7 @@
     it('Include template', function () {
       expect(
         tmpl('{% include("template", {value: "value"}); %}', data)
-      ).to.be(
+      ).to.equal(
         'value'
       )
     })
@@ -235,7 +235,7 @@
     it('If condition', function () {
       expect(
         tmpl('{% if (o.value) { %}true{% } else { %}false{% } %}', data)
-      ).to.be(
+      ).to.equal(
         'true'
       )
     })
@@ -246,7 +246,7 @@
           '{% if (o.undefinedValue) { %}false{% } else { %}true{% } %}',
           data
         )
-      ).to.be(
+      ).to.equal(
         'true'
       )
     })
@@ -258,7 +258,7 @@
           '{%=o.list[i]%}{% } %}',
           data
         )
-      ).to.be(
+      ).to.equal(
         '12345'
       )
     })
@@ -270,7 +270,7 @@
           'print(o.list[i]);} %}',
           data
         )
-      ).to.be(
+      ).to.equal(
         '12345'
       )
     })
@@ -282,7 +282,7 @@
           'include("template", {value: o.list[i]});} %}',
           data
         ).replace(/[\r\n]/g, '')
-      ).to.be(
+      ).to.equal(
         '12345'
       )
     })
@@ -293,13 +293,13 @@
           '{% if (o.list.length % 5 === 0) { %}5 list items{% } %}',
           data
         ).replace(/[\r\n]/g, '')
-      ).to.be(
+      ).to.equal(
         '5 list items'
       )
     })
   })
 }(
   this,
-  this.expect || require('expect.js'),
+  (this.chai || require('chai')).expect,
   this.tmpl || require('../js/tmpl')
 ))

+ 1 - 1
app/Resources/public/assets/bootstrap-daterangepicker/.bower.json

@@ -25,7 +25,7 @@
     "tag": "v1.3.23",
     "commit": "f000ab2a40a0e930c2913855b96a4e4d59c8920f"
   },
-  "_source": "git://github.com/dangrossman/bootstrap-daterangepicker.git",
+  "_source": "https://github.com/dangrossman/bootstrap-daterangepicker.git",
   "_target": "1.3.*",
   "_originalSource": "bootstrap-daterangepicker"
 }

+ 1 - 1
app/Resources/public/assets/ckeditor/.bower.json

@@ -21,7 +21,7 @@
   "_resolution": {
     "type": "version",
     "tag": "4.5.9",
-    "commit": "ba2580967f7409784921b4320e297522175e45bb"
+    "commit": "5de42515a5ca7015de75627ad8067f786d7fc425"
   },
   "_source": "https://github.com/AngelFQC/ckeditor-releases.git",
   "_target": "*",

+ 1 - 1
app/Resources/public/assets/cropper/.bower.json

@@ -57,7 +57,7 @@
     "tag": "v1.0.0",
     "commit": "c0805bc83c9270a0be4afdfbd02d517de7a4c970"
   },
-  "_source": "git://github.com/fengyuanchen/cropper.git",
+  "_source": "https://github.com/fengyuanchen/cropper.git",
   "_target": "1.0.*",
   "_originalSource": "cropper"
 }

+ 1 - 1
app/Resources/public/assets/fontawesome/.bower.json

@@ -30,7 +30,7 @@
     "tag": "v4.4.0",
     "commit": "f2cc73da12f0e6d828bc2daaa72bff457067bf39"
   },
-  "_source": "git://github.com/FortAwesome/Font-Awesome.git",
+  "_source": "https://github.com/FortAwesome/Font-Awesome.git",
   "_target": "4.4.*",
   "_originalSource": "fontawesome"
 }

+ 1 - 1
app/Resources/public/assets/fullcalendar/.bower.json

@@ -56,7 +56,7 @@
     "tag": "v2.3.2",
     "commit": "29fb42d6316bd2c293fbcaf699af4427f80abebb"
   },
-  "_source": "git://github.com/arshaw/fullcalendar.git",
+  "_source": "https://github.com/fullcalendar/fullcalendar.git",
   "_target": "2.3.2",
   "_originalSource": "fullcalendar"
 }

+ 1 - 1
app/Resources/public/assets/image-map-resizer/.bower.json

@@ -40,7 +40,7 @@
     "tag": "v0.5.4",
     "commit": "eef318b0892b5ecec2c95a9c2f7f06c420978cbe"
   },
-  "_source": "git://github.com/davidjbradshaw/image-map-resizer.git",
+  "_source": "https://github.com/davidjbradshaw/image-map-resizer.git",
   "_target": "0.5.*",
   "_originalSource": "image-map-resizer"
 }

+ 1 - 1
app/Resources/public/assets/jquery-timeago/.bower.json

@@ -17,7 +17,7 @@
     "tag": "v1.4.3",
     "commit": "5293dacee881e78b25bd4f699161fca81dff5205"
   },
-  "_source": "git://github.com/rmm5t/jquery-timeago.git",
+  "_source": "https://github.com/rmm5t/jquery-timeago.git",
   "_target": "1.4.*",
   "_originalSource": "jquery-timeago"
 }

+ 1 - 1
app/Resources/public/assets/jquery-ui/.bower.json

@@ -15,7 +15,7 @@
     "tag": "1.11.4",
     "commit": "c34f8dbf3ba57b3784b93f26119f436c0e8288e1"
   },
-  "_source": "git://github.com/components/jqueryui.git",
+  "_source": "https://github.com/components/jqueryui.git",
   "_target": "1.11.*",
   "_originalSource": "jquery-ui"
 }

+ 1 - 1
app/Resources/public/assets/jquery.scrollbar/.bower.json

@@ -21,7 +21,7 @@
     "tag": "0.2.10",
     "commit": "058c143d6623f8d39cd45becc1205b9aee325246"
   },
-  "_source": "git://github.com/gromo/jquery.scrollbar.git",
+  "_source": "https://github.com/gromo/jquery.scrollbar.git",
   "_target": "0.2.*",
   "_originalSource": "jquery.scrollbar"
 }

+ 1 - 1
app/Resources/public/assets/jqueryui-timepicker-addon/.bower.json

@@ -17,7 +17,7 @@
     "tag": "v1.5.5",
     "commit": "8498e17dc6c4b5aa21f3a2bbe8c20f3a461c3211"
   },
-  "_source": "git://github.com/trentrichardson/jQuery-Timepicker-Addon.git",
+  "_source": "https://github.com/trentrichardson/jQuery-Timepicker-Addon.git",
   "_target": "1.5.*",
   "_originalSource": "jqueryui-timepicker-addon"
 }

+ 1 - 1
app/Resources/public/assets/modernizr/.bower.json

@@ -8,7 +8,7 @@
     "tag": "v2.8.3",
     "commit": "d6bb30c0f12ebb3ddd01e90b0bf435e1c34e6f11"
   },
-  "_source": "git://github.com/Modernizr/Modernizr.git",
+  "_source": "https://github.com/Modernizr/Modernizr.git",
   "_target": "2.8.*",
   "_originalSource": "modernizr"
 }

+ 1 - 1
app/Resources/public/assets/moment/.bower.json

@@ -24,7 +24,7 @@
     "tag": "2.9.0",
     "commit": "8b35bc74c0e88c1a8c58ccb90117a9edc9f6a479"
   },
-  "_source": "git://github.com/moment/moment.git",
+  "_source": "https://github.com/moment/moment.git",
   "_target": "~2.9.0",
   "_originalSource": "moment"
 }

+ 1 - 1
app/Resources/public/assets/simpleWebRTC/.bower.json

@@ -8,7 +8,7 @@
     "tag": "v1.15.4",
     "commit": "6f84fbcd42bd6ab1af8134ef0c495e8a6c3175f7"
   },
-  "_source": "git://github.com/HenrikJoreteg/SimpleWebRTC.git",
+  "_source": "https://github.com/HenrikJoreteg/SimpleWebRTC.git",
   "_target": "1.15.*",
   "_originalSource": "simpleWebRTC"
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов