diff --git a/Gruntfile.js b/Gruntfile.js index 57eb4a7188..8e0094da0e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -119,19 +119,6 @@ module.exports = function(grunt) { ], options: { jshintrc: '.jshintrc' }, }, - dist: { - src: [ - 'background.html', - 'index.html', - 'options.html', - '_locales/**', - 'protos/*', - 'js/**', - 'stylesheets/*.css', - '!js/register.js', - ], - res: ['images/**/*', 'fonts/*'], - }, copy: { deps: { files: [ @@ -145,12 +132,6 @@ module.exports = function(grunt) { }, ], }, - res: { - files: [{ expand: true, dest: 'dist/', src: ['<%= dist.res %>'] }], - }, - src: { - files: [{ expand: true, dest: 'dist/', src: ['<%= dist.src %>'] }], - }, }, watch: { dist: { diff --git a/bower.json b/bower.json index 43583e96e4..7b71e67b56 100644 --- a/bower.json +++ b/bower.json @@ -6,7 +6,6 @@ "private": true, "dependencies": { "autosize": "~4.0.0", - "blueimp-load-image": "~1.13.0", "indexeddb-backbonejs-adapter": "*", "mp3lameencoder": "https://github.com/higuma/mp3-lame-encoder-js.git", "protobuf": "~3.8.0", @@ -17,33 +16,33 @@ "mock-socket": "~0.3.2" }, "preen": { - "long": [ - "dist/Long.js" + "autosize": [ + "dist/autosize.js" ], "bytebuffer": [ "dist/ByteBufferAB.js" ], + "indexeddb-backbonejs-adapter": [ + "backbone-indexeddb.js" + ], + "long": [ + "dist/Long.js" + ], + "mock-socket": [ + "dist/mock-socket.js" + ], + "mp3lameencoder": [ + "lib/Mp3LameEncoder.js" + ], "protobuf": [ "dist/ProtoBuf.js" ], "qrcode": [ "qrcode.js" ], - "indexeddb-backbonejs-adapter": [ - "backbone-indexeddb.js" - ], - "mock-socket": [ - "dist/mock-socket.js" - ], - "autosize": [ - "dist/autosize.js" - ], "webaudiorecorder": [ "lib/WebAudioRecorder.js", "lib/WebAudioRecorderMp3.js" - ], - "mp3lameencoder": [ - "lib/Mp3LameEncoder.js" ] }, "concat": { diff --git a/components/blueimp-canvas-to-blob/js/canvas-to-blob.js b/components/blueimp-canvas-to-blob/js/canvas-to-blob.js deleted file mode 100644 index fcef3391ce..0000000000 --- a/components/blueimp-canvas-to-blob/js/canvas-to-blob.js +++ /dev/null @@ -1,95 +0,0 @@ -/* - * JavaScript Canvas to Blob 2.0.5 - * https://github.com/blueimp/JavaScript-Canvas-to-Blob - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - * - * Based on stackoverflow user Stoive's code snippet: - * http://stackoverflow.com/q/4998908 - */ - -/*jslint nomen: true, regexp: true */ -/*global window, atob, Blob, ArrayBuffer, Uint8Array, define */ - -(function (window) { - 'use strict'; - var CanvasPrototype = window.HTMLCanvasElement && - window.HTMLCanvasElement.prototype, - hasBlobConstructor = window.Blob && (function () { - try { - return Boolean(new Blob()); - } catch (e) { - return false; - } - }()), - hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && - (function () { - try { - return new Blob([new Uint8Array(100)]).size === 100; - } catch (e) { - return false; - } - }()), - BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || - window.MozBlobBuilder || window.MSBlobBuilder, - dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && - window.ArrayBuffer && window.Uint8Array && function (dataURI) { - var byteString, - arrayBuffer, - intArray, - i, - mimeString, - bb; - if (dataURI.split(',')[0].indexOf('base64') >= 0) { - // Convert base64 to raw binary data held in a string: - byteString = atob(dataURI.split(',')[1]); - } else { - // Convert base64/URLEncoded data component to raw binary data: - byteString = decodeURIComponent(dataURI.split(',')[1]); - } - // Write the bytes of the string to an ArrayBuffer: - arrayBuffer = new ArrayBuffer(byteString.length); - intArray = new Uint8Array(arrayBuffer); - for (i = 0; i < byteString.length; i += 1) { - intArray[i] = byteString.charCodeAt(i); - } - // Separate out the mime component: - mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; - // Write the ArrayBuffer (or ArrayBufferView) to a blob: - if (hasBlobConstructor) { - return new Blob( - [hasArrayBufferViewSupport ? intArray : arrayBuffer], - {type: mimeString} - ); - } - bb = new BlobBuilder(); - bb.append(arrayBuffer); - return bb.getBlob(mimeString); - }; - if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) { - if (CanvasPrototype.mozGetAsFile) { - CanvasPrototype.toBlob = function (callback, type, quality) { - if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) { - callback(dataURLtoBlob(this.toDataURL(type, quality))); - } else { - callback(this.mozGetAsFile('blob', type)); - } - }; - } else if (CanvasPrototype.toDataURL && dataURLtoBlob) { - CanvasPrototype.toBlob = function (callback, type, quality) { - callback(dataURLtoBlob(this.toDataURL(type, quality))); - }; - } - } - if (typeof define === 'function' && define.amd) { - define(function () { - return dataURLtoBlob; - }); - } else { - window.dataURLtoBlob = dataURLtoBlob; - } -}(this)); diff --git a/components/blueimp-load-image/js/load-image.js b/components/blueimp-load-image/js/load-image.js deleted file mode 100644 index adb63a98df..0000000000 --- a/components/blueimp-load-image/js/load-image.js +++ /dev/null @@ -1,301 +0,0 @@ -/* - * JavaScript Load Image 1.10.0 - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/*jslint nomen: true */ -/*global define, window, document, URL, webkitURL, Blob, File, FileReader */ - -(function ($) { - 'use strict'; - - // 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) { - var img = document.createElement('img'), - url, - oUrl; - img.onerror = callback; - img.onload = function () { - if (oUrl && !(options && options.noRevoke)) { - loadImage.revokeObjectURL(oUrl); - } - if (callback) { - callback(loadImage.scale(img, 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; - } else if (typeof file === 'string') { - url = file; - if (options && options.crossOrigin) { - img.crossOrigin = options.crossOrigin; - } - } else { - return false; - } - if (url) { - img.src = url; - return img; - } - return loadImage.readFile(file, function (e) { - var target = e.target; - if (target && target.result) { - img.src = target.result; - } else { - if (callback) { - callback(e); - } - } - }); - }, - // The check for URL.revokeObjectURL fixes an issue with Opera 12, - // which provides URL.createObjectURL but doesn't properly implement it: - urlAPI = (window.createObjectURL && window) || - (window.URL && URL.revokeObjectURL && URL) || - (window.webkitURL && webkitURL); - - loadImage.isInstanceOf = function (type, obj) { - // Cross-frame instanceof check - return Object.prototype.toString.call(obj) === '[object ' + type + ']'; - }; - - // Transform image coordinates, allows to override e.g. - // the canvas orientation based on the orientation option, - // gets canvas, options passed as arguments: - loadImage.transformCoordinates = function () { - return; - }; - - // Returns transformed options, allows to override e.g. - // maxWidth, maxHeight and crop options based on the aspectRatio. - // gets img, options passed as arguments: - loadImage.getTransformedOptions = function (img, options) { - var aspectRatio = options.aspectRatio, - newOptions, - i, - width, - height; - if (!aspectRatio) { - return options; - } - newOptions = {}; - for (i in options) { - if (options.hasOwnProperty(i)) { - newOptions[i] = options[i]; - } - } - newOptions.crop = true; - width = img.naturalWidth || img.width; - height = img.naturalHeight || img.height; - if (width / height > aspectRatio) { - newOptions.maxWidth = height * aspectRatio; - newOptions.maxHeight = height; - } else { - newOptions.maxWidth = width; - newOptions.maxHeight = width / aspectRatio; - } - return newOptions; - }; - - // Canvas render method, allows to override the - // rendering e.g. to work around issues on iOS: - loadImage.renderImageToCanvas = function ( - canvas, - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - destX, - destY, - destWidth, - destHeight - ) { - canvas.getContext('2d').drawImage( - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - destX, - destY, - destWidth, - destHeight - ); - return canvas; - }; - - // This method is used to determine if the target image - // should be a canvas element: - loadImage.hasCanvasOption = function (options) { - return options.canvas || options.crop || options.aspectRatio; - }; - - // Scales and/or crops the given image (img or canvas HTML element) - // using the given options. - // 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) { - options = options || {}; - var canvas = document.createElement('canvas'), - useCanvas = img.getContext || - (loadImage.hasCanvasOption(options) && canvas.getContext), - width = img.naturalWidth || img.width, - height = img.naturalHeight || img.height, - destWidth = width, - destHeight = height, - maxWidth, - maxHeight, - minWidth, - minHeight, - sourceWidth, - sourceHeight, - sourceX, - sourceY, - tmp, - scaleUp = function () { - var scale = Math.max( - (minWidth || destWidth) / destWidth, - (minHeight || destHeight) / destHeight - ); - if (scale > 1) { - destWidth = destWidth * scale; - destHeight = destHeight * scale; - } - }, - scaleDown = function () { - var scale = Math.min( - (maxWidth || destWidth) / destWidth, - (maxHeight || destHeight) / destHeight - ); - if (scale < 1) { - destWidth = destWidth * scale; - destHeight = destHeight * scale; - } - }; - if (useCanvas) { - options = loadImage.getTransformedOptions(img, options); - sourceX = options.left || 0; - sourceY = options.top || 0; - if (options.sourceWidth) { - sourceWidth = options.sourceWidth; - if (options.right !== undefined && options.left === undefined) { - sourceX = width - sourceWidth - options.right; - } - } else { - sourceWidth = width - sourceX - (options.right || 0); - } - if (options.sourceHeight) { - sourceHeight = options.sourceHeight; - if (options.bottom !== undefined && options.top === undefined) { - sourceY = height - sourceHeight - options.bottom; - } - } else { - sourceHeight = height - sourceY - (options.bottom || 0); - } - destWidth = sourceWidth; - destHeight = sourceHeight; - } - maxWidth = options.maxWidth; - maxHeight = options.maxHeight; - minWidth = options.minWidth; - minHeight = options.minHeight; - if (useCanvas && maxWidth && maxHeight && options.crop) { - destWidth = maxWidth; - destHeight = maxHeight; - tmp = sourceWidth / sourceHeight - maxWidth / maxHeight; - if (tmp < 0) { - sourceHeight = maxHeight * sourceWidth / maxWidth; - if (options.top === undefined && options.bottom === undefined) { - sourceY = (height - sourceHeight) / 2; - } - } else if (tmp > 0) { - sourceWidth = maxWidth * sourceHeight / maxHeight; - if (options.left === undefined && options.right === undefined) { - sourceX = (width - sourceWidth) / 2; - } - } - } else { - if (options.contain || options.cover) { - minWidth = maxWidth = maxWidth || minWidth; - minHeight = maxHeight = maxHeight || minHeight; - } - if (options.cover) { - scaleDown(); - scaleUp(); - } else { - scaleUp(); - scaleDown(); - } - } - if (useCanvas) { - canvas.width = destWidth; - canvas.height = destHeight; - loadImage.transformCoordinates( - canvas, - options - ); - return loadImage.renderImageToCanvas( - canvas, - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - 0, - 0, - destWidth, - destHeight - ); - } - img.width = destWidth; - img.height = destHeight; - return img; - }; - - loadImage.createObjectURL = function (file) { - return urlAPI ? urlAPI.createObjectURL(file) : false; - }; - - loadImage.revokeObjectURL = function (url) { - return urlAPI ? urlAPI.revokeObjectURL(url) : false; - }; - - // Loads a given File object via FileReader interface, - // invokes the callback with the event object (load or error). - // The result can be read via event.target.result: - loadImage.readFile = function (file, callback, method) { - if (window.FileReader) { - var fileReader = new FileReader(); - fileReader.onload = fileReader.onerror = callback; - method = method || 'readAsDataURL'; - if (fileReader[method]) { - fileReader[method](file); - return fileReader; - } - } - return false; - }; - - if (typeof define === 'function' && define.amd) { - define(function () { - return loadImage; - }); - } else { - $.loadImage = loadImage; - } -}(this));