lisn.js
Version:
Simply handle user gestures and actions. Includes widgets.
1 lines • 12.1 kB
Source Map (JSON)
{"version":3,"file":"x-map.cjs","names":["MC","_interopRequireWildcard","require","MH","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","newXMap","getDefaultV","XMap","exports","newXMapGetter","newXWeakMap","XWeakMap","newXWeakMapGetter","XMapBase","constructor","root","key","delete","deleteKey","sGet","result","undefined","prune","sk","rest","lengthOf","slice","isIterableObject","size","length","newMap","iterator","clear","entries","keys","values","SYMBOL","newWeakMap"],"sources":["../../../src/ts/modules/x-map.ts"],"sourcesContent":["/**\n * @module Modules/XMap\n */\n\nimport * as MC from \"@lisn/globals/minification-constants\";\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nimport { MapBase } from \"@lisn/globals/types\";\n\nexport type DefaultValueGetter<K, V> = (key: K) => V;\nexport type IteratorCallback<K, V> = (\n value: V,\n key: K,\n map: XMap<K, V>,\n) => void;\n\n/**\n * For minification optimization\n *\n * @ignore\n * @internal\n */\nexport const newXMap = <K, V>(getDefaultV: DefaultValueGetter<K, V>) =>\n new XMap(getDefaultV);\n\n/**\n * For minification optimization. Exposed through {@link XMap.newXMapGetter}.\n *\n * @ignore\n * @internal\n */\nexport const newXMapGetter =\n <K, V>(getDefaultV: DefaultValueGetter<K, V>) =>\n () =>\n newXMap(getDefaultV);\n\n/**\n * For minification optimization\n *\n * @ignore\n * @internal\n */\nexport const newXWeakMap = <K extends WeakKey, V>(\n getDefaultV: DefaultValueGetter<K, V>,\n) => new XWeakMap(getDefaultV);\n\n/**\n * For minification optimization. Exposed through {@link XMap.newXWeakMapGetter}.\n *\n * @ignore\n * @internal\n */\nexport const newXWeakMapGetter =\n <K extends WeakKey, V>(getDefaultV: DefaultValueGetter<K, V>) =>\n () =>\n newXWeakMap(getDefaultV);\n\nexport abstract class XMapBase<K, V> {\n /**\n * Returns the value at the given key in the {@link XMap} or {@link XWeakMap}.\n */\n readonly get: (key: K) => V | undefined;\n\n /**\n * Like {@link get} except that if the key is not found in the map, then it\n * will set and return a default value by calling `getDefaultV` passed to the\n * constructor.\n */\n readonly sGet: (key: K) => V;\n\n /**\n * Sets a value at the given key in the {@link XMap} or {@link XWeakMap}.\n */\n readonly set: (key: K, value: V) => void;\n\n /**\n * Deletes a value at the given key in the {@link XMap} or {@link XWeakMap}.\n */\n readonly delete: (key: K) => void;\n\n /**\n * Deletes empty keys in the {@link XMap} or {@link XWeakMap} starting at the\n * final nested path and checking the level above after deletion.\n *\n * A key is considered empty if it's value is undefined or it's an empty Map,\n * Set, Array, etc (anything with size or length property equal to 0).\n */\n readonly prune: (sk: K, ...rest: unknown[]) => void;\n\n /**\n * Returns true if the {@link XMap} or {@link XWeakMap} contains the given key.\n */\n readonly has: (key: K) => boolean;\n\n protected constructor(\n root: MapBase<K, V>,\n getDefaultV: DefaultValueGetter<K, V>,\n ) {\n this.get = (key) => root.get(key);\n this.set = (key, value) => root.set(key, value);\n this.delete = (key) => MH.deleteKey(root, key);\n this.has = (key) => root.has(key);\n\n this.sGet = (key) => {\n let result = root.get(key);\n if (result === undefined) {\n result = getDefaultV(key);\n root.set(key, result);\n }\n return result;\n };\n\n this.prune = (sk, ...rest) => {\n const value = root.get(sk);\n if (value instanceof XMapBase && MH.lengthOf(rest)) {\n value.prune(rest[0], ...rest.slice(1));\n }\n\n if (\n value === undefined ||\n (MH.isIterableObject(value) &&\n !(\n (\"size\" in value && value.size) ||\n (\"length\" in value && value.length)\n ))\n ) {\n MH.deleteKey(root, sk);\n }\n };\n }\n}\n\n/**\n * {@link XMap} is like\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map | Map},\n * except that it supports automatically creating missing entries with\n * {@link sGet} according to a default value getter function.\n *\n * @typeParam K The type of the keys the map holds.\n * @typeParam V The type of the values the map holds.\n */\nexport class XMap<K, V> extends XMapBase<K, V> implements Iterable<[K, V]> {\n /**\n * Returns the number of entries in the {@link XMap}.\n */\n readonly size!: number;\n\n /**\n * Deletes all entries in the {@link XMap}.\n */\n readonly clear: () => void;\n\n /**\n * Returns an iterator over the {@link XMap} entries.\n */\n readonly entries: () => MapIterator<[K, V]>;\n\n /**\n * Returns an iterator over the {@link XMap} keys.\n */\n readonly keys: () => MapIterator<K>;\n\n /**\n * Returns an iterator over the {@link XMap} values.\n */\n readonly values: () => MapIterator<V>;\n\n readonly [Symbol.iterator]!: () => IterableIterator<[K, V]>;\n\n /**\n * Returns a function that when called returns a new {@link XMap}.\n *\n * You can pass this to the constructor of an {@link XMap} or an\n * {@link XWeakMap}, whose values are {@link XMap}s.\n */\n static readonly newXMapGetter = newXMapGetter;\n\n /**\n * @param getDefaultV This function is called each time {@link sGet} is\n * called with a non-existent key and must return a value\n * that is then set for that key and returned.\n */\n constructor(getDefaultV: DefaultValueGetter<K, V>) {\n const root = MH.newMap<K, V>();\n super(root, getDefaultV);\n\n MH.defineProperty(this, \"size\", { get: () => root.size });\n this.clear = () => root.clear();\n this.entries = () => root.entries();\n this.keys = () => root.keys();\n this.values = () => root.values();\n this[MC.SYMBOL.iterator] = () => root[MC.SYMBOL.iterator]();\n }\n}\n\n/**\n * {@link XWeakMap} is like\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap | WeakMap},\n * except that it supports automatically creating missing entries with\n * with {@link sGet} according to a default value getter function.\n *\n * @typeParam K The type of the keys the map holds.\n * @typeParam V The type of the values the map holds.\n */\nexport class XWeakMap<K extends WeakKey, V> extends XMapBase<K, V> {\n /**\n * Returns a function that when called returns a new {@link XWeakMap}.\n *\n * You can pass this to the constructor of an {@link XMap} or an\n * {@link XWeakMap}, whose values are {@link XWeakMap}s.\n */\n static readonly newXWeakMapGetter = newXWeakMapGetter;\n\n /**\n * @param getDefaultV This function is called each time {@link sGet} is\n * called with a non-existent key and must return a value\n * that is then set for that key and returned.\n */\n constructor(getDefaultV: DefaultValueGetter<K, V>) {\n const root = MH.newWeakMap<K, V>();\n super(root, getDefaultV);\n }\n}\n"],"mappings":"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","ignoreList":[]}