UNPKG

@nova-ui/bits

Version:

SolarWinds Nova Framework

77 lines 9.94 kB
// © 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