jodit
Version:
Jodit is awesome and usefully wysiwyg editor with filebrowser
40 lines (35 loc) • 1.15 kB
text/typescript
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
import { IDictionary, IViewBased, IViewComponent } from '../../types';
import { error, isFunction, isViewObject } from '../helpers';
import { Component, STATUSES } from '../component';
/**
* Wrap function in debounce wrapper
* @param timeout
*/
export function debounce(
timeout?: number | ((ctx: IViewComponent | IViewBased) => number)
) {
return <T extends Component & IDictionary>(
target: IDictionary,
propertyKey: string
): void => {
if (!isFunction(target[propertyKey])) {
throw error('Handler must be a Function');
}
target.hookStatus(
STATUSES.ready,
(component: IViewComponent | IViewBased) => {
const view = isViewObject(component) ? component : component.j;
(component as any)[propertyKey] = view.async.debounce(
(component as any)[propertyKey].bind(component),
(isFunction(timeout) ? timeout(component) : timeout) ||
view.defaultTimeout
);
}
);
};
}