{"version":3,"file":"array-CwA7qSCC.js","sources":["../../../app/javascript/lib/array.js"],"sourcesContent":["/* eslint-disable */\n// Todo: these are copies of functions from d3-array. For some reason importing these directly has an error\n\nexport const ascending = function (a, b) {\n return a == null || b == null\n ? NaN\n : a < b\n ? -1\n : a > b\n ? 1\n : a >= b\n ? 0\n : NaN;\n};\n\nexport const descending = function (a, b) {\n return a == null || b == null\n ? NaN\n : b < a\n ? -1\n : b > a\n ? 1\n : b >= a\n ? 0\n : NaN;\n};\n\nfunction identity(x) {\n return x;\n}\n\nexport const group = function (values, ...keys) {\n return nest(values, identity, identity, keys);\n};\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n\n\nexport class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(value);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n\nexport const reorder = (arr, startIndex, endIndex) => {\n const result = [...arr];\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n return result;\n};\n\nexport const oxfordCommaList = (arr, useOxfordComma=true) => {\n const listStart = arr.slice(0, -1).join(', ')\n const listEnd = arr.slice(-1)\n const conjunction = arr.length <= 1 \n ? '' \n : useOxfordComma && arr.length > 2 \n ? ', and ' \n : ' and '\n\n return [listStart, listEnd].join(conjunction)\n}\n\nexport const topTags = (arr, count) => {\n const groups = group(arr, (genre) => {\n return genre;\n });\n groups.delete(null);\n const datas = Array.from(groups, ([key, values]) => ({\n id: key,\n count: values.length,\n })).sort((a, b) => {\n return a.count === b.count ? 0 : a.count > b.count ? -1 : 1;\n });\n return datas.slice(0, count).map((g) => g.id);\n\n}"],"names":["reorder","arr","startIndex","endIndex","result","removed","oxfordCommaList","useOxfordComma","listStart","listEnd","conjunction"],"mappings":"AAqHY,MAACA,EAAU,CAACC,EAAKC,EAAYC,IAAa,CACpD,MAAMC,EAAS,CAAC,GAAGH,CAAG,EAChB,CAACI,CAAO,EAAID,EAAO,OAAOF,EAAY,CAAC,EAC7C,OAAAE,EAAO,OAAOD,EAAU,EAAGE,CAAO,EAC3BD,CACT,EAEaE,EAAkB,CAACL,EAAKM,EAAe,KAAS,CAC3D,MAAMC,EAAYP,EAAI,MAAM,EAAG,EAAE,EAAE,KAAK,IAAI,EACtCQ,EAAUR,EAAI,MAAM,EAAE,EACtBS,EAAcT,EAAI,QAAU,EAC9B,GACAM,GAAkBN,EAAI,OAAS,EAC7B,SACA,QAEN,MAAO,CAACO,EAAWC,CAAO,EAAE,KAAKC,CAAW,CAC9C"}