@ng-dnd/core
Version:
Drag and Drop for Angular
91 lines • 12.7 kB
JavaScript
import { NgModule, NgZone } from '@angular/core';
import { DragPreviewDirective, DragSourceDirective, DropTargetDirective } from './dnd-directives';
import { DRAG_DROP_BACKEND, DRAG_DROP_BACKEND_DEBUG_MODE, DRAG_DROP_BACKEND_FACTORY, DRAG_DROP_BACKEND_OPTIONS, DRAG_DROP_GLOBAL_CONTEXT, DRAG_DROP_MANAGER, } from './tokens';
import { createDragDropManager } from 'dnd-core';
import { invariant } from './internal/invariant';
import * as i0 from "@angular/core";
/** @ignore */
export function unpackBackendForEs5Users(backendOrModule) {
// Auto-detect ES6 default export for people still using ES5
let backend = backendOrModule;
if (typeof backend === 'object' && typeof backend.default === 'function') {
backend = backend.default;
}
invariant(typeof backend === 'function', 'Expected the backend to be a function or an ES6 module exporting a default function. ' +
'Read more: http://react-dnd.github.io/react-dnd/docs-drag-drop-context.html');
return backend;
}
// TODO: allow injecting window
/** @ignore */
// @dynamic
export function managerFactory(backendFactory, ngZone, context, backendOptions, debugMode) {
backendFactory = unpackBackendForEs5Users(backendFactory);
return ngZone.runOutsideAngular(() => createDragDropManager(backendFactory, context, backendOptions, debugMode));
}
/** @ignore */
// @dynamic
export function getBackend(manager) {
return manager.getBackend();
}
/** @ignore */
export function getGlobalContext() {
return typeof global !== 'undefined' ? global : window;
}
/** @ignore */
const EXPORTS = [DragSourceDirective, DropTargetDirective, DragPreviewDirective];
// @dynamic
export class DndModule {
static forRoot(backendInput) {
return {
ngModule: DndModule,
providers: [provideDnd(backendInput)],
};
}
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DndModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.5", ngImport: i0, type: DndModule, imports: [DragSourceDirective, DropTargetDirective, DragPreviewDirective], exports: [DragSourceDirective, DropTargetDirective, DragPreviewDirective] }); }
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DndModule }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DndModule, decorators: [{
type: NgModule,
args: [{
imports: EXPORTS,
exports: EXPORTS,
}]
}] });
export function provideDnd(backendInput) {
return [
{
provide: DRAG_DROP_BACKEND_FACTORY,
useValue: backendInput.backend,
},
{
provide: DRAG_DROP_BACKEND_OPTIONS,
useValue: backendInput.options,
},
{
provide: DRAG_DROP_BACKEND_DEBUG_MODE,
useValue: backendInput.debug,
},
{
provide: DRAG_DROP_GLOBAL_CONTEXT,
useFactory: getGlobalContext,
},
{
provide: DRAG_DROP_MANAGER,
useFactory: managerFactory,
deps: [
DRAG_DROP_BACKEND_FACTORY,
NgZone,
DRAG_DROP_GLOBAL_CONTEXT,
DRAG_DROP_BACKEND_OPTIONS,
DRAG_DROP_BACKEND_DEBUG_MODE,
],
},
{
provide: DRAG_DROP_BACKEND,
deps: [DRAG_DROP_MANAGER],
useFactory: getBackend,
},
];
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kbmQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLDRCQUE0QixFQUM1Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDbEIsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUFtQyxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRWpELGNBQWM7QUFDZCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsZUFBb0I7SUFDM0QsNERBQTREO0lBQzVELElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQztJQUM5QixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDekUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUNELFNBQVMsQ0FDUCxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQzdCLHVGQUF1RjtRQUNyRiw2RUFBNkUsQ0FDaEYsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCwrQkFBK0I7QUFDL0IsY0FBYztBQUNkLFdBQVc7QUFDWCxNQUFNLFVBQVUsY0FBYyxDQUM1QixjQUE4QixFQUM5QixNQUFjLEVBQ2QsT0FBZ0IsRUFDaEIsY0FBd0IsRUFDeEIsU0FBbUI7SUFFbkIsY0FBYyxHQUFHLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUNuQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FDMUUsQ0FBQztBQUNKLENBQUM7QUFFRCxjQUFjO0FBQ2QsV0FBVztBQUNYLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBd0I7SUFDakQsT0FBTyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQUlELGNBQWM7QUFDZCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU8sT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLE1BQWMsQ0FBQztBQUNsRSxDQUFDO0FBcUNELGNBQWM7QUFDZCxNQUFNLE9BQU8sR0FBRyxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFFakYsV0FBVztBQUtYLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBMEI7UUFDdkMsT0FBTztZQUNMLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN0QyxDQUFDO0lBQ0osQ0FBQztpSUFOVSxTQUFTO2tJQUFULFNBQVMsWUFQTCxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsYUFBOUQsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CO2tJQU9sRSxTQUFTOzsyRkFBVCxTQUFTO2tCQUpyQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxPQUFPO29CQUNoQixPQUFPLEVBQUUsT0FBTztpQkFDakI7O0FBVUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxZQUEwQjtJQUNuRCxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUseUJBQXlCO1lBQ2xDLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTztTQUMvQjtRQUNEO1lBQ0UsT0FBTyxFQUFFLHlCQUF5QjtZQUNsQyxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU87U0FDL0I7UUFDRDtZQUNFLE9BQU8sRUFBRSw0QkFBNEI7WUFDckMsUUFBUSxFQUFFLFlBQVksQ0FBQyxLQUFLO1NBQzdCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLFVBQVUsRUFBRSxnQkFBZ0I7U0FDN0I7UUFDRDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsVUFBVSxFQUFFLGNBQWM7WUFDMUIsSUFBSSxFQUFFO2dCQUNKLHlCQUF5QjtnQkFDekIsTUFBTTtnQkFDTix3QkFBd0I7Z0JBQ3hCLHlCQUF5QjtnQkFDekIsNEJBQTRCO2FBQzdCO1NBQ0Y7UUFDRDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDekIsVUFBVSxFQUFFLFVBQVU7U0FDdkI7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBOZ1pvbmUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERyYWdQcmV2aWV3RGlyZWN0aXZlLCBEcmFnU291cmNlRGlyZWN0aXZlLCBEcm9wVGFyZ2V0RGlyZWN0aXZlIH0gZnJvbSAnLi9kbmQtZGlyZWN0aXZlcyc7XG5cbmltcG9ydCB7XG4gIERSQUdfRFJPUF9CQUNLRU5ELFxuICBEUkFHX0RST1BfQkFDS0VORF9ERUJVR19NT0RFLFxuICBEUkFHX0RST1BfQkFDS0VORF9GQUNUT1JZLFxuICBEUkFHX0RST1BfQkFDS0VORF9PUFRJT05TLFxuICBEUkFHX0RST1BfR0xPQkFMX0NPTlRFWFQsXG4gIERSQUdfRFJPUF9NQU5BR0VSLFxufSBmcm9tICcuL3Rva2Vucyc7XG5cbmltcG9ydCB7IEJhY2tlbmRGYWN0b3J5LCBEcmFnRHJvcE1hbmFnZXIsIGNyZWF0ZURyYWdEcm9wTWFuYWdlciB9IGZyb20gJ2RuZC1jb3JlJztcblxuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi9pbnRlcm5hbC9pbnZhcmlhbnQnO1xuXG4vKiogQGlnbm9yZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucGFja0JhY2tlbmRGb3JFczVVc2VycyhiYWNrZW5kT3JNb2R1bGU6IGFueSkge1xuICAvLyBBdXRvLWRldGVjdCBFUzYgZGVmYXVsdCBleHBvcnQgZm9yIHBlb3BsZSBzdGlsbCB1c2luZyBFUzVcbiAgbGV0IGJhY2tlbmQgPSBiYWNrZW5kT3JNb2R1bGU7XG4gIGlmICh0eXBlb2YgYmFja2VuZCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGJhY2tlbmQuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGJhY2tlbmQgPSBiYWNrZW5kLmRlZmF1bHQ7XG4gIH1cbiAgaW52YXJpYW50KFxuICAgIHR5cGVvZiBiYWNrZW5kID09PSAnZnVuY3Rpb24nLFxuICAgICdFeHBlY3RlZCB0aGUgYmFja2VuZCB0byBiZSBhIGZ1bmN0aW9uIG9yIGFuIEVTNiBtb2R1bGUgZXhwb3J0aW5nIGEgZGVmYXVsdCBmdW5jdGlvbi4gJyArXG4gICAgICAnUmVhZCBtb3JlOiBodHRwOi8vcmVhY3QtZG5kLmdpdGh1Yi5pby9yZWFjdC1kbmQvZG9jcy1kcmFnLWRyb3AtY29udGV4dC5odG1sJ1xuICApO1xuICByZXR1cm4gYmFja2VuZDtcbn1cblxuLy8gVE9ETzogYWxsb3cgaW5qZWN0aW5nIHdpbmRvd1xuLyoqIEBpZ25vcmUgKi9cbi8vIEBkeW5hbWljXG5leHBvcnQgZnVuY3Rpb24gbWFuYWdlckZhY3RvcnkoXG4gIGJhY2tlbmRGYWN0b3J5OiBCYWNrZW5kRmFjdG9yeSxcbiAgbmdab25lOiBOZ1pvbmUsXG4gIGNvbnRleHQ6IHVua25vd24sXG4gIGJhY2tlbmRPcHRpb25zPzogdW5rbm93bixcbiAgZGVidWdNb2RlPzogYm9vbGVhblxuKTogRHJhZ0Ryb3BNYW5hZ2VyIHtcbiAgYmFja2VuZEZhY3RvcnkgPSB1bnBhY2tCYWNrZW5kRm9yRXM1VXNlcnMoYmFja2VuZEZhY3RvcnkpO1xuICByZXR1cm4gbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgY3JlYXRlRHJhZ0Ryb3BNYW5hZ2VyKGJhY2tlbmRGYWN0b3J5LCBjb250ZXh0LCBiYWNrZW5kT3B0aW9ucywgZGVidWdNb2RlKVxuICApO1xufVxuXG4vKiogQGlnbm9yZSAqL1xuLy8gQGR5bmFtaWNcbmV4cG9ydCBmdW5jdGlvbiBnZXRCYWNrZW5kKG1hbmFnZXI6IERyYWdEcm9wTWFuYWdlcikge1xuICByZXR1cm4gbWFuYWdlci5nZXRCYWNrZW5kKCk7XG59XG5cbi8qKiBAaWdub3JlICovXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogYW55O1xuLyoqIEBpZ25vcmUgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHbG9iYWxDb250ZXh0KCkge1xuICByZXR1cm4gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiAod2luZG93IGFzIGFueSk7XG59XG5cbi8qXG4gKiBIb2xkIG9uLCB0aGlzIGdldHMgYSBsaXR0bGUgY29uZnVzaW5nLlxuICpcbiAqIEEgZG5kLWNvcmUgQmFja2VuZCBoYXMgbG90cyBvZiB1c2VmdWwgbWV0aG9kcyBmb3IgcmVnaXN0ZXJpbmcgZWxlbWVudHMgYW5kIGZpcmluZyBldmVudHMuXG4gKiBIb3dldmVyLCBiYWNrZW5kcyBhcmUgbm90IGRpc3RyaWJ1dGVkIHRoaXMgd2F5LlxuICogVGhlIEhUTUw1QmFja2VuZCBhbmQgdGhlIFRlc3RCYWNrZW5kLCB3aGVuIGltcG9ydGVkIHsgZGVmYXVsdCBhcyBIVE1MNUJhY2tlbmQgfSwgYXJlIG5vdCBCYWNrZW5kcywgdGhleSBhcmVcbiAqIGZ1bmN0aW9uczogKG1hbmFnZXI6IERyYWdEcm9wTWFuYWdlciwgLi4uKSA9PiBCYWNrZW5kLlxuICogVGhpcyBpcyBub3cga25vd24gYXMgYSBCYWNrZW5kRmFjdG9yeSB1bmRlciBkbmQtY29yZSA0KyB0eXBlc2NyaXB0IGFubm90YXRpb25zLlxuICpcbiAqIEhvd2V2ZXIsIEFuZ3VsYXIgaGFzIGl0cyBvd24gY29uY2VwdGlvbiBvZiB3aGF0IGEgZmFjdG9yeSBpcyBmb3IgQU9ULiBUaGlzIGlzIHRoZSAnZmFjdG9yeSdcbiAqIHRvIHdoaWNoIEJhY2tlbmRGYWN0b3J5SW5wdXQgcmVmZXJzIGJlbG93LlxuICogU29tZXRpbWVzLCB1c2VycyB3aWxsIHdhbnQgdG8gcHJlY29uZmlndXJlIGEgYmFja2VuZCAobGlrZSBUb3VjaEJhY2tlbmQsIG9yIE11bHRpQmFja2VuZCkuXG4gKiBGb3IgdGhpcywgdGhleSBuZWVkIHRvIGV4cG9ydCBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGNvbmZpZ3VyZWQgQmFja2VuZEZhY3RvcnlcbiAqIGFuZCBwYXNzIGl0IGluIGFzICB7IGJhY2tlbmRGYWN0b3J5OiBleHBvcnRlZEZ1bmN0aW9uIH0uXG4gKi9cblxuLyoqXG4gKiBVc2VkIGZvciBwcm92aWRpbmcgYmFja2VuZHMgdG8ge0BsaW5rIERuZE1vZHVsZSNmb3JSb290fS5cbiAqIFlvdSBjYW4gY29uZmlndXJlIHlvdXIgYmFja2VuZCB3aXRoIGBvcHRpb25zYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYWNrZW5kSW5wdXQge1xuICAvKiogQSBwbGFpbiBiYWNrZW5kLCBmb3IgZXhhbXBsZSB0aGUgSFRNTDVCYWNrZW5kLiAqL1xuICBiYWNrZW5kOiBCYWNrZW5kRmFjdG9yeTtcbiAgLyoqXG4gICAqIEFueSBjb25maWd1cmF0aW9uIHlvdXIgYmFja2VuZCBhY2NlcHRzLiBVc2UgdGhpcyB3aXRoIHRoZSBUb3VjaEJhY2tlbmQgb3IgdGhlIE11bHRpQmFja2VuZCxcbiAgICogZm9yIGV4YW1wbGUuXG4gICAqL1xuICBvcHRpb25zPzogYW55O1xuICAvKipcbiAgICogV2hldGhlciBkbmQtY29yZSBzaG91bGQgZW5hYmxlIGRlYnVnZ2luZywgd2hpY2ggbGV0cyB5b3Ugc2VlIGRuZC1jb3JlIGFjdGlvbnNcbiAgICogaW4gdGhlIFJlZHV4IGV4dGVuc2lvbiBmb3IgQ2hyb21lLlxuICAgKi9cbiAgZGVidWc/OiBib29sZWFuO1xufVxuXG4vKiogQGlnbm9yZSAqL1xuY29uc3QgRVhQT1JUUyA9IFtEcmFnU291cmNlRGlyZWN0aXZlLCBEcm9wVGFyZ2V0RGlyZWN0aXZlLCBEcmFnUHJldmlld0RpcmVjdGl2ZV07XG5cbi8vIEBkeW5hbWljXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBFWFBPUlRTLFxuICBleHBvcnRzOiBFWFBPUlRTLFxufSlcbmV4cG9ydCBjbGFzcyBEbmRNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChiYWNrZW5kSW5wdXQ6IEJhY2tlbmRJbnB1dCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RG5kTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBEbmRNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtwcm92aWRlRG5kKGJhY2tlbmRJbnB1dCldLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEbmQoYmFja2VuZElucHV0OiBCYWNrZW5kSW5wdXQpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBEUkFHX0RST1BfQkFDS0VORF9GQUNUT1JZLFxuICAgICAgdXNlVmFsdWU6IGJhY2tlbmRJbnB1dC5iYWNrZW5kLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogRFJBR19EUk9QX0JBQ0tFTkRfT1BUSU9OUyxcbiAgICAgIHVzZVZhbHVlOiBiYWNrZW5kSW5wdXQub3B0aW9ucyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IERSQUdfRFJPUF9CQUNLRU5EX0RFQlVHX01PREUsXG4gICAgICB1c2VWYWx1ZTogYmFja2VuZElucHV0LmRlYnVnLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogRFJBR19EUk9QX0dMT0JBTF9DT05URVhULFxuICAgICAgdXNlRmFjdG9yeTogZ2V0R2xvYmFsQ29udGV4dCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IERSQUdfRFJPUF9NQU5BR0VSLFxuICAgICAgdXNlRmFjdG9yeTogbWFuYWdlckZhY3RvcnksXG4gICAgICBkZXBzOiBbXG4gICAgICAgIERSQUdfRFJPUF9CQUNLRU5EX0ZBQ1RPUlksXG4gICAgICAgIE5nWm9uZSxcbiAgICAgICAgRFJBR19EUk9QX0dMT0JBTF9DT05URVhULFxuICAgICAgICBEUkFHX0RST1BfQkFDS0VORF9PUFRJT05TLFxuICAgICAgICBEUkFHX0RST1BfQkFDS0VORF9ERUJVR19NT0RFLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IERSQUdfRFJPUF9CQUNLRU5ELFxuICAgICAgZGVwczogW0RSQUdfRFJPUF9NQU5BR0VSXSxcbiAgICAgIHVzZUZhY3Rvcnk6IGdldEJhY2tlbmQsXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==