UNPKG

@vm721/ui-kit

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.1.1.

124 lines 14.8 kB
var _Global, _map, _setLastPointer, _setPointer, _setLastPointer_1, _setPointer_1; import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib"; export var PTR; (function (PTR) { PTR[PTR["POINTER"] = 0] = "POINTER"; PTR[PTR["INSTANCE"] = 1] = "INSTANCE"; })(PTR || (PTR = {})); // @dynamic export class PointerMap { constructor(isScoped = false, inGlobal = true) { this.isScoped = isScoped; this.inGlobal = inGlobal; this.pointers = []; _map.set(this, void 0); _setLastPointer_1.set(this, (pointerID) => { __classPrivateFieldGet(this, _map).set('lastPointer', pointerID); }); _setPointer_1.set(this, (pointer) => { __classPrivateFieldGet(this, _map).set(pointer[PTR.POINTER], pointer[PTR.INSTANCE]); __classPrivateFieldGet(this, _setLastPointer_1).call(this, pointer[PTR.POINTER]); this.pointers.push(pointer[PTR.POINTER]); if (!this.isScoped && this.inGlobal) { __classPrivateFieldGet(PointerMap, _setPointer_1).call(PointerMap, pointer); } console.log(__classPrivateFieldGet(PointerMap, _Global)); }); __classPrivateFieldSet(this, _map, new Map()); __classPrivateFieldGet(this, _map).set('lastPointer', undefined); if (this.isScoped && inGlobal) { __classPrivateFieldGet(PointerMap, _Global).set(this, __classPrivateFieldGet(this, _map)); console.log(__classPrivateFieldGet(PointerMap, _Global)); } } createInstance(inst) { let pointerTuple = this.createPointer(inst); return pointerTuple[PTR.INSTANCE]; } createPointer(inst) { let pointer; const pointerID = Math.random().toString(); pointer = [pointerID, inst]; __classPrivateFieldGet(this, _setPointer_1).call(this, pointer); return pointer; } getInstance(pointerID) { return __classPrivateFieldGet(this, _map).get(pointerID); } createEmptyPointer() { return Math.random().toString(); } useEmptyPointer(pointerID, Inst) { let pointer; pointer = [pointerID, Inst]; __classPrivateFieldGet(this, _setPointer_1).call(this, pointer); return pointer; } getPointer(pointerID) { let pointer; pointer = [pointerID, this.getInstance(pointerID)]; return pointer; } printGlobalMap() { console.log("PointerMap[Global] -> ", __classPrivateFieldGet(PointerMap, _Global)); } getLastPointer() { return __classPrivateFieldGet(this, _map).get('lastPointer'); } static getPointer(pointerID, scope) { if (scope) { return PointerMap.getScope(scope).get(pointerID); } return __classPrivateFieldGet(PointerMap, _Global).get(pointerID); } static getScope(scope) { return __classPrivateFieldGet(PointerMap, _Global).get(scope); } static getLastPointer(scope) { if (scope) { return PointerMap.getScope(scope).get('lastPointer'); } else { return __classPrivateFieldGet(PointerMap, _Global).get('lastPointer'); } } static clear(pointerMapInst) { console.log('Clearing', pointerMapInst); if (pointerMapInst.inGlobal) { if (pointerMapInst.isScoped) { console.log("Deleting:", __classPrivateFieldGet(PointerMap, _Global).get(pointerMapInst), __classPrivateFieldGet(PointerMap, _Global).delete(pointerMapInst)); } } else { for (const pointerId in pointerMapInst.pointers) { __classPrivateFieldGet(PointerMap, _Global).delete(pointerId); if (PointerMap.getLastPointer() === pointerId) { __classPrivateFieldGet(PointerMap, _setLastPointer_1).call(PointerMap, 'null'); } } } console.log("Clear complete ->", __classPrivateFieldGet(PointerMap, _Global)); } } _Global = new WeakMap(), _map = new WeakMap(), _setLastPointer = new WeakMap(), _setPointer = new WeakMap(), _setLastPointer_1 = new WeakMap(), _setPointer_1 = new WeakMap(); // @ts-ignore - static private property _Global.set(PointerMap, new Map()); // @ts-ignore - static private property _setLastPointer_1.set(PointerMap, (pointerID) => { __classPrivateFieldGet(PointerMap, _Global).set('lastPointer', pointerID); } // @ts-ignore - static private property ); // @ts-ignore - static private property _setPointer_1.set(PointerMap, (pointer) => { __classPrivateFieldGet(PointerMap, _Global).set(pointer[PTR.POINTER], pointer[PTR.INSTANCE]); __classPrivateFieldGet(PointerMap, _setLastPointer_1).call(PointerMap, pointer[PTR.POINTER]); }); // // let ptrMap = new PointerMap(); // let ptrMap2 = new PointerMap(true); // let evH = ptrMap2.createInstance((ev?:string): void => { // console.log(ev,"Handled!"); // }); // let evH1 = ptrMap.createPointer(() => {}); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRlck1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWtpdC9kZXYtbmluamEvcG9pbnRlck1hcC9wb2ludGVyTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsTUFBTSxDQUFOLElBQVksR0FHWDtBQUhELFdBQVksR0FBRztJQUNiLG1DQUFPLENBQUE7SUFDUCxxQ0FBUSxDQUFBO0FBQ1YsQ0FBQyxFQUhXLEdBQUcsS0FBSCxHQUFHLFFBR2Q7QUFFRCxXQUFXO0FBQ1gsTUFBTSxPQUFPLFVBQVU7SUFPckIsWUFBb0IsV0FBbUIsS0FBSyxFQUFVLFdBQW9CLElBQUk7UUFBMUQsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUo5RSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsdUJBQXVCO1FBc0R2Qiw0QkFBa0IsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDdEMsbUNBQVUsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDLEVBQUE7UUFFRCx3QkFBYyxDQUFDLE9BQWUsRUFBUSxFQUFFO1lBQ3RDLG1DQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMzRCxxREFBQSxJQUFJLEVBQWlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBQztnQkFDakMsdURBQUEsVUFBVSxFQUFhLE9BQU8sQ0FBQyxDQUFDO2FBQ2pDO1lBQ0QsT0FBTyxD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aW5nLCBhbnldO1xuXG5leHBvcnQgZW51bSBQVFIge1xuICBQT0lOVEVSLFxuICBJTlNUQU5DRVxufVxuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIFBvaW50ZXJNYXB7XG4gIC8vIEB0cy1pZ25vcmUgLSBzdGF0aWMgcHJpdmF0ZSBwcm9wZXJ0eVxuICBzdGF0aWMgI0dsb2JhbCA9IG5ldyBNYXA8YW55LCBhbnk+KCk7XG4gIHBvaW50ZXJzID0gW107XG4gICNtYXA6IE1hcDxzdHJpbmcsIGFueT47XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlzU2NvcGVkOmJvb2xlYW4gPSBmYWxzZSwgcHJpdmF0ZSBpbkdsb2JhbDogYm9vbGVhbiA9IHRydWUpIHtcbiAgICB0aGlzLiNtYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgIHRoaXMuI21hcC5zZXQoJ2xhc3RQb2ludGVyJywgdW5kZWZpbmVkKTtcbiAgICBpZih0aGlzLmlzU2NvcGVkICYmIGluR2xvYmFsKXtcbiAgICAgIFBvaW50ZXJNYXAuI0dsb2JhbC5zZXQodGhpcywgdGhpcy4jbWFwKTtcbiAgICAgIGNvbnNvbGUubG9nKFBvaW50ZXJNYXAuI0dsb2JhbCk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlSW5zdGFuY2UoaW5zdDogYW55KTogYW55e1xuICAgIGxldCBwb2ludGVyVHVwbGUgPSB0aGlzLmNyZWF0ZVBvaW50ZXIoaW5zdCk7XG4gICAgcmV0dXJuIHBvaW50ZXJUdXBsZVtQVFIuSU5TVEFOQ0VdO1xuICB9XG5cbiAgY3JlYXRlUG9pbnRlcihpbnN0OiBhbnkpOiBQb2ludGVye1xuICAgIGxldCBwb2ludGVyOiBQb2ludGVyO1xuICAgIGNvbnN0IHBvaW50ZXJJRDogc3RyaW5nID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygpO1xuICAgIHBvaW50ZXIgPSBbcG9pbnRlcklELCBpbnN0XTtcbiAgICB0aGlzLiNzZXRQb2ludGVyKHBvaW50ZXIpO1xuICAgIHJldHVybiBwb2ludGVyO1xuICB9XG5cbiAgZ2V0SW5zdGFuY2UocG9pbnRlcklEOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLiNtYXAuZ2V0KHBvaW50ZXJJRCk7XG4gIH1cblxuICBjcmVhdGVFbXB0eVBvaW50ZXIoKXtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygpXG4gIH1cblxuICB1c2VFbXB0eVBvaW50ZXIocG9pbnRlcklEOiBzdHJpbmcsIEluc3Q6IGFueSl7XG4gICAgbGV0IHBvaW50ZXI6IFBvaW50ZXI7XG4gICAgcG9pbnRlciA9IFtwb2ludGVySUQsIEluc3RdO1xuICAgIHRoaXMuI3NldFBvaW50ZXIocG9pbnRlcik7XG4gICAgcmV0dXJuIHBvaW50ZXI7XG4gIH1cblxuICBnZXRQb2ludGVyKHBvaW50ZXJJRDogc3RyaW5nKXtcbiAgICBsZXQgcG9pbnRlcjogUG9pbnRlcjtcbiAgICBwb2ludGVyID0gW3BvaW50ZXJJRCwgdGhpcy5nZXRJbnN0YW5jZShwb2ludGVySUQpXTtcbiAgICByZXR1cm4gcG9pbnRlclxuICB9XG5cbiAgcHJpbnRHbG9iYWxNYXAoKXtcbiAgICBjb25zb2xlLmxvZyhcIlBvaW50ZXJNYXBbR2xvYmFsXSAtPiBcIixQb2ludGVyTWFwLiNHbG9iYWwpXG4gIH1cblxuICBnZXRMYXN0UG9pbnRlcigpe1xuICAgIHJldHVybiB0aGlzLiNtYXAuZ2V0KCdsYXN0UG9pbnRlcicpO1xuICB9XG5cbiAgI3NldExhc3RQb2ludGVyID0gKHBvaW50ZXJJRDogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy4jbWFwLnNldCgnbGFzdFBvaW50ZXInLCBwb2ludGVySUQpO1xuICB9XG5cbiAgI3NldFBvaW50ZXIgPSAocG9pbnRlcjpQb2ludGVyKTogdm9pZCA9PiB7XG4gICAgdGhpcy4jbWFwLnNldChwb2ludGVyW1BUUi5QT0lOVEVSXSwgcG9pbnRlcltQVFIuSU5TVEFOQ0VdKTtcbiAgICB0aGlzLiNzZXRMYXN0UG9pbnRlcihwb2ludGVyW1BUUi5QT0lOVEVSXSk7XG4gICAgdGhpcy5wb2ludGVycy5wdXNoKHBvaW50ZXJbUFRSLlBPSU5URVJdKTtcbiAgICBpZighdGhpcy5pc1Njb3BlZCAmJiB0aGlzLmluR2xvYmFsKXtcbiAgICAgIFBvaW50ZXJNYXAuI3NldFBvaW50ZXIocG9pbnRlcik7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKFBvaW50ZXJNYXAuI0dsb2JhbClcbiAgfTtcblxuICBzdGF0aWMgZ2V0UG9pbnRlcihwb2ludGVySUQ6IHN0cmluZywgc2NvcGU/OiBQb2ludGVyTWFwKXtcbiAgICBpZihzY29wZSl7XG4gICAgICByZXR1cm4gUG9pbnRlck1hcC5nZXRTY29wZShzY29wZSkuZ2V0KHBvaW50ZXJJRCk7XG4gICAgfVxuICAgIHJldHVybiBQb2ludGVyTWFwLiNHbG9iYWwuZ2V0KHBvaW50ZXJJRCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0U2NvcGUoc2NvcGU6IFBvaW50ZXJNYXApe1xuICAgIHJldHVybiBQb2ludGVyTWFwLiNHbG9iYWwuZ2V0KHNjb3BlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMYXN0UG9pbnRlcihzY29wZT86IFBvaW50ZXJNYXApe1xuICAgIGlmKHNjb3BlKXtcbiAgICAgIHJldHVybiBQb2ludGVyTWFwLmdldFNjb3BlKHNjb3BlKS5nZXQoJ2xhc3RQb2ludGVyJyk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICByZXR1cm4gUG9pbnRlck1hcC4jR2xvYmFsLmdldCgnbGFzdFBvaW50ZXInKTtcbiAgICB9XG4gIH1cblxuICAvLyBAdHMtaWdub3JlIC0gc3RhdGljIHByaXZhdGUgcHJvcGVydHlcbiAgc3RhdGljICNzZXRMYXN0UG9pbnRlciA9IChwb2ludGVySUQ6IHN0cmluZykgPT4ge1xuICAgIFBvaW50ZXJNYXAuI0dsb2JhbC5zZXQoJ2xhc3RQb2ludGVyJywgcG9pbnRlcklEKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmUgLSBzdGF0aWMgcHJpdmF0ZSBwcm9wZXJ0eVxuICBzdGF0aWMgI3NldFBvaW50ZXIgPSAocG9pbnRlcjogUG9pbnRlcik6IHZvaWQgPT57XG4gICAgUG9pbnRlck1hcC4jR2xvYmFsLnNldChwb2ludGVyW1BUUi5QT0lOVEVSXSwgcG9pbnRlcltQVFIuSU5TVEFOQ0VdKTtcbiAgICBQb2ludGVyTWFwLiNzZXRMYXN0UG9pbnRlcihwb2ludGVyW1BUUi5QT0lOVEVSXSk7XG4gIH1cblxuICBzdGF0aWMgY2xlYXIocG9pbnRlck1hcEluc3QpOiB2b2lke1xuICAgIGNvbnNvbGUubG9nKCdDbGVhcmluZycsIHBvaW50ZXJNYXBJbnN0KTtcbiAgICBpZihwb2ludGVyTWFwSW5zdC5pbkdsb2JhbCl7XG4gICAgICBpZihwb2ludGVyTWFwSW5zdC5pc1Njb3BlZCl7XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJEZWxldGluZzpcIiwgUG9pbnRlck1hcC4jR2xvYmFsLmdldChwb2ludGVyTWFwSW5zdCksIFBvaW50ZXJNYXAuI0dsb2JhbC5kZWxldGUocG9pbnRlck1hcEluc3QpKTtcbiAgICAgIH1cbiAgICAgIH1lbHNle1xuICAgICAgICBmb3IgKGNvbnN0IHBvaW50ZXJJZCBpbiBwb2ludGVyTWFwSW5zdC5wb2ludGVycyl7XG4gICAgICAgICAgUG9pbnRlck1hcC4jR2xvYmFsLmRlbGV0ZShwb2ludGVySWQpO1xuICAgICAgICAgIGlmKFBvaW50ZXJNYXAuZ2V0TGFzdFBvaW50ZXIoKSA9PT0gcG9pbnRlcklkKSB7XG4gICAgICAgICAgICBQb2ludGVyTWFwLiNzZXRMYXN0UG9pbnRlcignbnVsbCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuICAgIGNvbnNvbGUubG9nKFwiQ2xlYXIgY29tcGxldGUgLT5cIixQb2ludGVyTWFwLiNHbG9iYWwpO1xuXG4gIH1cblxuXG5cbn1cbi8vXG4vLyBsZXQgcHRyTWFwID0gbmV3IFBvaW50ZXJNYXAoKTtcbi8vIGxldCBwdHJNYXAyID0gbmV3IFBvaW50ZXJNYXAodHJ1ZSk7XG4vLyBsZXQgZXZIID0gcHRyTWFwMi5jcmVhdGVJbnN0YW5jZSgoZXY/OnN0cmluZyk6IHZvaWQgPT4ge1xuLy8gICAgIGNvbnNvbGUubG9nKGV2LFwiSGFuZGxlZCFcIik7XG4vLyB9KTtcbi8vIGxldCBldkgxID0gcHRyTWFwLmNyZWF0ZVBvaW50ZXIoKCkgPT4ge30pO1xuIl19