Skip to content

Commit

Permalink
Merge pull request #633 from uploadcare/fix/remove-jquery-from-utils-…
Browse files Browse the repository at this point in the history
…folder

Remove jQuery from utils folder
  • Loading branch information
bautrukevich authored Dec 27, 2019
2 parents e490a2a + 32608d5 commit 3ba056d
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 25 deletions.
22 changes: 21 additions & 1 deletion src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -800,6 +800,25 @@ const extend = function() {
return target
}

const grep = (elems, callback, invert) => {
var callbackInverse
var matches = []
var i = 0
var length = elems.length
var callbackExpect = !invert

// Go through the array, only saving the items
// that pass the validator function
for (; i < length; i++) {
callbackInverse = !callback(elems[i], i)
if (callbackInverse !== callbackExpect) {
matches.push(elems[i])
}
}

return matches
}

export {
unique,
defer,
Expand Down Expand Up @@ -835,5 +854,6 @@ export {
isFunction,
callbacks,
inArray,
extend
extend,
grep,
}
42 changes: 26 additions & 16 deletions src/utils/image-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,34 @@ import $ from 'jquery'

// utils
const trackLoading = function(image, src) {
var def
def = $.Deferred()
let promiseResolve
let promiseReject
const promise = new Promise((resolve, reject) => {
resolve = promiseResolve
reject = promiseReject
})
if (src) {
image.src = src
}
if (image.complete) {
def.resolve(image)
promiseResolve(image)
} else {
$(image).one('load', () => {
return def.resolve(image)
return promiseResolve(image)
})
$(image).one('error', () => {
return def.reject(image)
return promiseReject(image)
})
}

return def.promise()
return promise
}

const imageLoader = function(image) {
// if argument is an array, treat as
// load(['1.jpg', '2.jpg'])
if ($.isArray(image)) {
return $.when.apply(null, $.map(image, imageLoader))
if (Array.isArray(image)) {
return $.when.apply(null, image.map(imageLoader))
}
if (image.src) {
return trackLoading(image)
Expand All @@ -35,16 +39,22 @@ const imageLoader = function(image) {
}

const videoLoader = function(src) {
var def = $.Deferred()
let promiseResolve
let promiseReject
const promise = new Promise((resolve, reject) => {
resolve = promiseResolve
reject = promiseReject
})
const video = document.createElement('video')

$('<video/>')
.on('loadeddata', def.resolve)
.on('error', def.reject)
.attr('src', src)
.get(0)
.load()
video.addEventListener('loadeddata', promiseResolve)
video.addEventListener('error', promiseReject)

return def.promise()
video.setAttribute('src', src)

video.load()

return promise
}

export { imageLoader, videoLoader }
6 changes: 3 additions & 3 deletions src/utils/messages.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import $ from 'jquery'
import { isWindowDefined } from './is-window-defined'
import { grep } from '../utils'

// utils

var callbacks = {}

isWindowDefined() &&
$(window).on('message', ({ originalEvent: e }) => {
window.addEventListener('message', ({ originalEvent: e }) => {
var i, item, len, message, ref, results
try {
message = JSON.parse(e.data)
Expand Down Expand Up @@ -41,7 +41,7 @@ const registerMessage = function(type, sender, callback) {

const unregisterMessage = function(type, sender) {
if (type in callbacks) {
callbacks[type] = $.grep(callbacks[type], function(item) {
callbacks[type] = grep(callbacks[type], function(item) {
return item[0] !== sender
})

Expand Down
4 changes: 1 addition & 3 deletions src/utils/pusher.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import $ from 'jquery'

import { Pusher } from '../vendor/pusher'

// utils.pusher
Expand All @@ -24,7 +22,7 @@ class ManagedPusher extends Pusher {
unsubscribe(name) {
super.unsubscribe(...arguments)
// Schedule disconnect if no channels left.
if ($.isEmptyObject(this.channels.channels)) {
if (this.channels.channels && Object.keys(this.channels.channels).length === 0) {
this.disconnectTimeout = setTimeout(() => {
this.disconnectTimeout = null
return this.disconnect()
Expand Down
4 changes: 2 additions & 2 deletions src/widget/tabs/preview-tab.js
Original file line number Diff line number Diff line change
Expand Up @@ -170,10 +170,10 @@ class PreviewTab extends BasePreviewTab {
}
src = URL.createObjectURL(blob)
op = videoLoader(src)
op.fail(() => {
op.catch(() => {
URL.revokeObjectURL(src)
return df.reject()
}).done(() => {
}).then(() => {
var videoTag
df.resolve()
this.dialogApi.always(function() {
Expand Down

0 comments on commit 3ba056d

Please sign in to comment.