/* * Copyright (C) 2013 - present Instructure, Inc. * * This file is part of Canvas. * * Canvas is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, version 3 of the License. * * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License along * with this program. If not, see . */ import $ from 'jquery' import _ from 'underscore' const debounce = _.debounce export function closeDialog() { return $('.ui-dialog-content').dialog('close') } export function useOldDebounce() { // this version of debounce works with sinon's useFakeTimers return (_.debounce = (func, wait, immediate) => function() { let result const context = this const args = arguments const timestamp = new Date() const later = function() { let timeout const last = new Date() - timestamp if (last < wait) { return (timeout = setTimeout(later, wait - last)) } else { timeout = null if (!immediate) { let result return (result = func.apply(context, args)) } } } const callNow = immediate && !timeout if (!timeout) { var timeout = setTimeout(later, wait) } if (callNow) { result = func.apply(context, args) } return result }) } export function useNormalDebounce() { return (_.debounce = debounce) }