source: node_modules/internmap/dist/internmap.js@ e4c61dd

Last change on this file since e4c61dd was e4c61dd, checked in by istevanoska <ilinastevanoska@…>, 6 months ago

Prototype 1.1

  • Property mode set to 100644
File size: 2.1 KB
Line 
1// https://github.com/mbostock/internmap/ v2.0.3 Copyright 2021 Mike Bostock
2(function (global, factory) {
3typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
4typeof define === 'function' && define.amd ? define(['exports'], factory) :
5(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.internmap = {}));
6}(this, (function (exports) { 'use strict';
7
8class InternMap extends Map {
9 constructor(entries, key = keyof) {
10 super();
11 Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});
12 if (entries != null) for (const [key, value] of entries) this.set(key, value);
13 }
14 get(key) {
15 return super.get(intern_get(this, key));
16 }
17 has(key) {
18 return super.has(intern_get(this, key));
19 }
20 set(key, value) {
21 return super.set(intern_set(this, key), value);
22 }
23 delete(key) {
24 return super.delete(intern_delete(this, key));
25 }
26}
27
28class InternSet extends Set {
29 constructor(values, key = keyof) {
30 super();
31 Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});
32 if (values != null) for (const value of values) this.add(value);
33 }
34 has(value) {
35 return super.has(intern_get(this, value));
36 }
37 add(value) {
38 return super.add(intern_set(this, value));
39 }
40 delete(value) {
41 return super.delete(intern_delete(this, value));
42 }
43}
44
45function intern_get({_intern, _key}, value) {
46 const key = _key(value);
47 return _intern.has(key) ? _intern.get(key) : value;
48}
49
50function intern_set({_intern, _key}, value) {
51 const key = _key(value);
52 if (_intern.has(key)) return _intern.get(key);
53 _intern.set(key, value);
54 return value;
55}
56
57function intern_delete({_intern, _key}, value) {
58 const key = _key(value);
59 if (_intern.has(key)) {
60 value = _intern.get(key);
61 _intern.delete(key);
62 }
63 return value;
64}
65
66function keyof(value) {
67 return value !== null && typeof value === "object" ? value.valueOf() : value;
68}
69
70exports.InternMap = InternMap;
71exports.InternSet = InternSet;
72
73Object.defineProperty(exports, '__esModule', { value: true });
74
75})));
Note: See TracBrowser for help on using the repository browser.