gentics-ui-core
Version:
This is the common core framework for the Gentics CMS and Mesh UI, and other Angular applications.
77 lines • 9.5 kB
JavaScript
export function getDataTransfer(event) {
// if jQuery wrapped the event which contains the dropped file, unwrap it
let ev = event.dataTransfer ? event : event.originalEvent;
return ev.dataTransfer;
}
export function getEventTarget(event) {
// if jQuery wrapped the event, unwrap it
return (event.originalEvent ? event.originalEvent : event).target;
}
/**
* Note: there are issues with current TypeScript lib defs for the DataTransfer interface, which
* seems to define the `types` property as a `string[]` rather than a DOMStringList.
* See https://github.com/Microsoft/TypeScript/issues/12069
*/
export function transferHasFiles(transfer) {
let types = transfer.types;
if (!transfer || !transfer.types) {
return false;
}
else if (typeof types.contains === 'function') {
return types.contains('Files');
}
else if (typeof types.indexOf === 'function') {
return types.indexOf('Files') >= 0;
}
else if (typeof types.length === 'number') {
for (let i = 0; i < types.length; i++) {
if (types.item(i) === 'Files') {
return true;
}
}
}
return false;
}
let _mimeTypeSupport;
export function clientReportsMimeTypesOnDrag() {
if (_mimeTypeSupport === undefined) {
_mimeTypeSupport = 'items' in DataTransfer.prototype;
}
return _mimeTypeSupport;
}
/**
* If the browser does not report a MIME type, match against this value instead.
*/
export const FALLBACK_MIME_TYPE = 'unknown/unknown';
let warnedThatBrowserDoesNotProvideNumberOfItems = false;
/**
* Returns a list of mime types in a DataTransfer if supported by the browser.
*
* This is a workaround for missing DataTransfer.items support in Firefox < 52
* https://bugzilla.mozilla.org/show_bug.cgi?id=906420
*/
export function getTransferMimeTypes(transfer) {
if (!transfer) {
return [];
}
else if (transfer.items && transfer.items.length > 0) {
return Array.from(transfer.items)
.filter(item => item.kind === 'file')
.map(item => item.type || FALLBACK_MIME_TYPE);
}
else if ('mozItemCount' in transfer) {
return new Array(transfer.mozItemCount).fill(FALLBACK_MIME_TYPE);
}
else if (!transfer.items && transfer.types.length === 1 && transfer.types[0] === 'Files') {
// IE11
return [FALLBACK_MIME_TYPE];
}
else {
if (!warnedThatBrowserDoesNotProvideNumberOfItems) {
console.warn('Client does not provide number of items during drag event');
warnedThatBrowserDoesNotProvideNumberOfItems = true;
}
return [FALLBACK_MIME_TYPE];
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZmlsZS1kcm9wLWFyZWEvZHJhZy1kcm9wLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBVTtJQUN0Qyx5RUFBeUU7SUFDekUsSUFBSSxFQUFFLEdBQWMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBQ3JFLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFVO0lBQ3JDLHlDQUF5QztJQUN6QyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3RFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQXNCO0lBQ25ELElBQUksS0FBSyxHQUFRLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDaEMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7UUFDOUIsT0FBTyxLQUFLLENBQUM7S0FDaEI7U0FBTSxJQUFJLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUU7UUFDN0MsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ2xDO1NBQU0sSUFBSSxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO1FBQzVDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdEM7U0FBTSxJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7UUFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sRUFBRTtnQkFDM0IsT0FBTyxJQUFJLENBQUM7YUFDZjtTQUNKO0tBQ0o7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBRUQsSUFBSSxnQkFBeUIsQ0FBQztBQUM5QixNQUFNLFVBQVUsNEJBQTRCO0lBQ3hDLElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFO1FBQ2hDLGdCQUFnQixHQUFHLE9BQU8sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDO0tBQ3hEO0lBQ0QsT0FBTyxnQkFBZ0IsQ0FBQztBQUM1QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQztBQUVwRCxJQUFJLDRDQUE0QyxHQUFHLEtBQUssQ0FBQztBQUV6RDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxRQUFzQjtJQUN2RCxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ1gsT0FBTyxFQUFFLENBQUM7S0FDYjtTQUFNLElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDcEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7YUFDcEMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxDQUFDO0tBQ3JEO1NBQU0sSUFBSSxjQUFjLElBQUksUUFBUSxFQUFFO1FBQ25DLE9BQU8sSUFBSSxLQUFLLENBQVEsUUFBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBQzVFO1NBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxFQUFFO1FBQ3hGLE9BQU87UUFDUCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQUMvQjtTQUFNO1FBQ0gsSUFBSSxDQUFDLDRDQUE0QyxFQUFFO1lBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkRBQTJELENBQUMsQ0FBQztZQUMxRSw0Q0FBNEMsR0FBRyxJQUFJLENBQUM7U0FDdkQ7UUFDRCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQUMvQjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0RGF0YVRyYW5zZmVyKGV2ZW50OiBhbnkpOiBEYXRhVHJhbnNmZXIge1xuICAgIC8vIGlmIGpRdWVyeSB3cmFwcGVkIHRoZSBldmVudCB3aGljaCBjb250YWlucyB0aGUgZHJvcHBlZCBmaWxlLCB1bndyYXAgaXRcbiAgICBsZXQgZXY6IERyYWdFdmVudCA9IGV2ZW50LmRhdGFUcmFuc2ZlciA/IGV2ZW50IDogZXZlbnQub3JpZ2luYWxFdmVudDtcbiAgICByZXR1cm4gZXYuZGF0YVRyYW5zZmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZlbnRUYXJnZXQoZXZlbnQ6IGFueSk6IEhUTUxFbGVtZW50IHtcbiAgICAvLyBpZiBqUXVlcnkgd3JhcHBlZCB0aGUgZXZlbnQsIHVud3JhcCBpdFxuICAgIHJldHVybiAoZXZlbnQub3JpZ2luYWxFdmVudCA/IGV2ZW50Lm9yaWdpbmFsRXZlbnQgOiBldmVudCkudGFyZ2V0O1xufVxuXG4vKipcbiAqIE5vdGU6IHRoZXJlIGFyZSBpc3N1ZXMgd2l0aCBjdXJyZW50IFR5cGVTY3JpcHQgbGliIGRlZnMgZm9yIHRoZSBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlLCB3aGljaFxuICogc2VlbXMgdG8gZGVmaW5lIHRoZSBgdHlwZXNgIHByb3BlcnR5IGFzIGEgYHN0cmluZ1tdYCByYXRoZXIgdGhhbiBhIERPTVN0cmluZ0xpc3QuXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8xMjA2OVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmZXJIYXNGaWxlcyh0cmFuc2ZlcjogRGF0YVRyYW5zZmVyKTogYm9vbGVhbiB7XG4gICAgbGV0IHR5cGVzOiBhbnkgPSB0cmFuc2Zlci50eXBlcztcbiAgICBpZiAoIXRyYW5zZmVyIHx8ICF0cmFuc2Zlci50eXBlcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZXMuY29udGFpbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVzLmNvbnRhaW5zKCdGaWxlcycpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHR5cGVzLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVzLmluZGV4T2YoJ0ZpbGVzJykgPj0gMDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlcy5sZW5ndGggPT09ICdudW1iZXInKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0eXBlcy5pdGVtKGkpID09PSAnRmlsZXMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5sZXQgX21pbWVUeXBlU3VwcG9ydDogYm9vbGVhbjtcbmV4cG9ydCBmdW5jdGlvbiBjbGllbnRSZXBvcnRzTWltZVR5cGVzT25EcmFnKCk6IGJvb2xlYW4ge1xuICAgIGlmIChfbWltZVR5cGVTdXBwb3J0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgX21pbWVUeXBlU3VwcG9ydCA9ICdpdGVtcycgaW4gRGF0YVRyYW5zZmVyLnByb3RvdHlwZTtcbiAgICB9XG4gICAgcmV0dXJuIF9taW1lVHlwZVN1cHBvcnQ7XG59XG5cbi8qKlxuICogSWYgdGhlIGJyb3dzZXIgZG9lcyBub3QgcmVwb3J0IGEgTUlNRSB0eXBlLCBtYXRjaCBhZ2FpbnN0IHRoaXMgdmFsdWUgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEZBTExCQUNLX01JTUVfVFlQRSA9ICd1bmtub3duL3Vua25vd24nO1xuXG5sZXQgd2FybmVkVGhhdEJyb3dzZXJEb2VzTm90UHJvdmlkZU51bWJlck9mSXRlbXMgPSBmYWxzZTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBtaW1lIHR5cGVzIGluIGEgRGF0YVRyYW5zZmVyIGlmIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci5cbiAqXG4gKiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBEYXRhVHJhbnNmZXIuaXRlbXMgc3VwcG9ydCBpbiBGaXJlZm94IDwgNTJcbiAqIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjQyMFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNmZXJNaW1lVHlwZXModHJhbnNmZXI6IERhdGFUcmFuc2Zlcik6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRyYW5zZmVyKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9IGVsc2UgaWYgKHRyYW5zZmVyLml0ZW1zICYmIHRyYW5zZmVyLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odHJhbnNmZXIuaXRlbXMpXG4gICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5raW5kID09PSAnZmlsZScpXG4gICAgICAgICAgICAubWFwKGl0ZW0gPT4gaXRlbS50eXBlIHx8IEZBTExCQUNLX01JTUVfVFlQRSk7XG4gICAgfSBlbHNlIGlmICgnbW96SXRlbUNvdW50JyBpbiB0cmFuc2Zlcikge1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5KCg8YW55PiB0cmFuc2ZlcikubW96SXRlbUNvdW50KS5maWxsKEZBTExCQUNLX01JTUVfVFlQRSk7XG4gICAgfSBlbHNlIGlmICghdHJhbnNmZXIuaXRlbXMgJiYgdHJhbnNmZXIudHlwZXMubGVuZ3RoID09PSAxICYmIHRyYW5zZmVyLnR5cGVzWzBdID09PSAnRmlsZXMnKSB7XG4gICAgICAgIC8vIElFMTFcbiAgICAgICAgcmV0dXJuIFtGQUxMQkFDS19NSU1FX1RZUEVdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghd2FybmVkVGhhdEJyb3dzZXJEb2VzTm90UHJvdmlkZU51bWJlck9mSXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQ2xpZW50IGRvZXMgbm90IHByb3ZpZGUgbnVtYmVyIG9mIGl0ZW1zIGR1cmluZyBkcmFnIGV2ZW50Jyk7XG4gICAgICAgICAgICB3YXJuZWRUaGF0QnJvd3NlckRvZXNOb3RQcm92aWRlTnVtYmVyT2ZJdGVtcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtGQUxMQkFDS19NSU1FX1RZUEVdO1xuICAgIH1cbn1cbiJdfQ==