@nova-ui/bits
Version:
SolarWinds Nova Framework
77 lines • 9.94 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { Injectable } from "@angular/core";
import _isNil from "lodash/isNil";
import _isObject from "lodash/isObject";
import { Subject } from "rxjs";
import * as i0 from "@angular/core";
/**
* @ignore
*/
export class DragAndDropService {
constructor() {
this.onDragStateSubject = new Subject();
}
get onDragStateChanged() {
return this.onDragStateSubject.asObservable();
}
setDragPayload(payload, event) {
this.dragPayload = payload;
const stringifiedPayload = _isObject(payload)
? JSON.stringify(payload)
: payload;
event.dataTransfer?.setData("Text", stringifiedPayload);
event.dataTransfer?.setData("text/plain", stringifiedPayload);
this.onDragStateSubject.next({
payload: this.dragPayload,
isInProgress: true,
});
}
getDragPayload(event) {
if (_isNil(this.dragPayload)) {
return { data: this.extractDragObject(event), isExternal: true };
}
return { data: this.dragPayload, isExternal: false };
}
resetPayload() {
this.onDragStateSubject.next({
payload: this.dragPayload,
isInProgress: false,
});
this.dragPayload = undefined;
}
extractDragObject(event) {
const payload = event.dataTransfer?.getData("Text") ||
event.dataTransfer?.getData("text/plain");
try {
return JSON.parse(payload || "");
}
catch (e) {
return payload;
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DragAndDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DragAndDropService, providedIn: "root" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DragAndDropService, decorators: [{
type: Injectable,
args: [{ providedIn: "root" }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1hbmQtZHJvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9kaXJlY3RpdmVzL2RyYWdkcm9wL2RyYWctYW5kLWRyb3Auc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsNERBQTREO0FBQzVELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUMvRSwwRUFBMEU7QUFDMUUsaUZBQWlGO0FBQ2pGLDZFQUE2RTtBQUM3RSxpQkFBaUI7QUFFakIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRVksdUJBQWtCLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztLQTZDMUQ7SUExQ0csSUFBVyxrQkFBa0I7UUFDekIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVNLGNBQWMsQ0FBQyxPQUFZLEVBQUUsS0FBZ0I7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFDM0IsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUN6QixDQUFDLENBQVMsT0FBTyxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3pCLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBZ0I7UUFDbEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzFCLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNwRTtRQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVNLFlBQVk7UUFDZixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVztZQUN6QixZQUFZLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBZ0I7UUFDdEMsTUFBTSxPQUFPLEdBQ1QsS0FBSyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ25DLEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLElBQUk7WUFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLE9BQU8sQ0FBQztTQUNsQjtJQUNMLENBQUM7K0dBN0NRLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDCqSAyMDIyIFNvbGFyV2luZHMgV29ybGR3aWRlLCBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvXG4vLyAgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbi8vICByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Jcbi8vICBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vICBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyAgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyAgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgX2lzTmlsIGZyb20gXCJsb2Rhc2gvaXNOaWxcIjtcbmltcG9ydCBfaXNPYmplY3QgZnJvbSBcImxvZGFzaC9pc09iamVjdFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IElEcmFnUGF5bG9hZCwgSURyYWdTdGF0ZSB9IGZyb20gXCIuL3B1YmxpYy1hcGlcIjtcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBEcmFnQW5kRHJvcFNlcnZpY2Uge1xuICAgIHByaXZhdGUgb25EcmFnU3RhdGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8SURyYWdTdGF0ZT4oKTtcbiAgICBwcml2YXRlIGRyYWdQYXlsb2FkOiBhbnk7XG5cbiAgICBwdWJsaWMgZ2V0IG9uRHJhZ1N0YXRlQ2hhbmdlZCgpOiBPYnNlcnZhYmxlPElEcmFnU3RhdGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub25EcmFnU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREcmFnUGF5bG9hZChwYXlsb2FkOiBhbnksIGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcmFnUGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgICAgIGNvbnN0IHN0cmluZ2lmaWVkUGF5bG9hZCA9IF9pc09iamVjdChwYXlsb2FkKVxuICAgICAgICAgICAgPyBKU09OLnN0cmluZ2lmeShwYXlsb2FkKVxuICAgICAgICAgICAgOiA8c3RyaW5nPnBheWxvYWQ7XG4gICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlcj8uc2V0RGF0YShcIlRleHRcIiwgc3RyaW5naWZpZWRQYXlsb2FkKTtcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyPy5zZXREYXRhKFwidGV4dC9wbGFpblwiLCBzdHJpbmdpZmllZFBheWxvYWQpO1xuICAgICAgICB0aGlzLm9uRHJhZ1N0YXRlU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHRoaXMuZHJhZ1BheWxvYWQsXG4gICAgICAgICAgICBpc0luUHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREcmFnUGF5bG9hZChldmVudDogRHJhZ0V2ZW50KTogSURyYWdQYXlsb2FkIHtcbiAgICAgICAgaWYgKF9pc05pbCh0aGlzLmRyYWdQYXlsb2FkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgZGF0YTogdGhpcy5leHRyYWN0RHJhZ09iamVjdChldmVudCksIGlzRXh0ZXJuYWw6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkYXRhOiB0aGlzLmRyYWdQYXlsb2FkLCBpc0V4dGVybmFsOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldFBheWxvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25EcmFnU3RhdGVTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgcGF5bG9hZDogdGhpcy5kcmFnUGF5bG9hZCxcbiAgICAgICAgICAgIGlzSW5Qcm9ncmVzczogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyYWdQYXlsb2FkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdERyYWdPYmplY3QoZXZlbnQ6IERyYWdFdmVudCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPVxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyPy5nZXREYXRhKFwiVGV4dFwiKSB8fFxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyPy5nZXREYXRhKFwidGV4dC9wbGFpblwiKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHBheWxvYWQgfHwgXCJcIik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19