pristine-charts 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +154 -0
  2. package/dist/area-chart/index.cjs +1736 -0
  3. package/dist/area-chart/index.cjs.map +1 -0
  4. package/dist/area-chart/index.d.cts +75 -0
  5. package/dist/area-chart/index.d.ts +75 -0
  6. package/dist/area-chart/index.js +1730 -0
  7. package/dist/area-chart/index.js.map +1 -0
  8. package/dist/bar-chart/index.cjs +1808 -0
  9. package/dist/bar-chart/index.cjs.map +1 -0
  10. package/dist/bar-chart/index.d.cts +72 -0
  11. package/dist/bar-chart/index.d.ts +72 -0
  12. package/dist/bar-chart/index.js +1802 -0
  13. package/dist/bar-chart/index.js.map +1 -0
  14. package/dist/box-plot/index.cjs +1858 -0
  15. package/dist/box-plot/index.cjs.map +1 -0
  16. package/dist/box-plot/index.d.cts +58 -0
  17. package/dist/box-plot/index.d.ts +58 -0
  18. package/dist/box-plot/index.js +1852 -0
  19. package/dist/box-plot/index.js.map +1 -0
  20. package/dist/bullet-chart/index.cjs +1707 -0
  21. package/dist/bullet-chart/index.cjs.map +1 -0
  22. package/dist/bullet-chart/index.d.cts +68 -0
  23. package/dist/bullet-chart/index.d.ts +68 -0
  24. package/dist/bullet-chart/index.js +1701 -0
  25. package/dist/bullet-chart/index.js.map +1 -0
  26. package/dist/histogram-chart/index.cjs +1876 -0
  27. package/dist/histogram-chart/index.cjs.map +1 -0
  28. package/dist/histogram-chart/index.d.cts +76 -0
  29. package/dist/histogram-chart/index.d.ts +76 -0
  30. package/dist/histogram-chart/index.js +1870 -0
  31. package/dist/histogram-chart/index.js.map +1 -0
  32. package/dist/index.cjs +6940 -0
  33. package/dist/index.cjs.map +1 -0
  34. package/dist/index.d.cts +19 -0
  35. package/dist/index.d.ts +19 -0
  36. package/dist/index.js +6860 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/kpi-card/index.cjs +1315 -0
  39. package/dist/kpi-card/index.cjs.map +1 -0
  40. package/dist/kpi-card/index.d.cts +79 -0
  41. package/dist/kpi-card/index.d.ts +79 -0
  42. package/dist/kpi-card/index.js +1304 -0
  43. package/dist/kpi-card/index.js.map +1 -0
  44. package/dist/line-chart/index.cjs +1742 -0
  45. package/dist/line-chart/index.cjs.map +1 -0
  46. package/dist/line-chart/index.d.cts +54 -0
  47. package/dist/line-chart/index.d.ts +54 -0
  48. package/dist/line-chart/index.js +1736 -0
  49. package/dist/line-chart/index.js.map +1 -0
  50. package/dist/linearSeries-BQL4Ud3w.d.cts +14 -0
  51. package/dist/linearSeries-BQL4Ud3w.d.ts +14 -0
  52. package/dist/pie-donut-chart/index.cjs +1663 -0
  53. package/dist/pie-donut-chart/index.cjs.map +1 -0
  54. package/dist/pie-donut-chart/index.d.cts +83 -0
  55. package/dist/pie-donut-chart/index.d.ts +83 -0
  56. package/dist/pie-donut-chart/index.js +1655 -0
  57. package/dist/pie-donut-chart/index.js.map +1 -0
  58. package/dist/progress-bar/index.cjs +1336 -0
  59. package/dist/progress-bar/index.cjs.map +1 -0
  60. package/dist/progress-bar/index.d.cts +54 -0
  61. package/dist/progress-bar/index.d.ts +54 -0
  62. package/dist/progress-bar/index.js +1329 -0
  63. package/dist/progress-bar/index.js.map +1 -0
  64. package/dist/ranked-list/index.cjs +1584 -0
  65. package/dist/ranked-list/index.cjs.map +1 -0
  66. package/dist/ranked-list/index.d.cts +70 -0
  67. package/dist/ranked-list/index.d.ts +70 -0
  68. package/dist/ranked-list/index.js +1576 -0
  69. package/dist/ranked-list/index.js.map +1 -0
  70. package/dist/result-C2epnG6V.d.cts +33 -0
  71. package/dist/result-C2epnG6V.d.ts +33 -0
  72. package/dist/scatter-plot/index.cjs +1618 -0
  73. package/dist/scatter-plot/index.cjs.map +1 -0
  74. package/dist/scatter-plot/index.d.cts +55 -0
  75. package/dist/scatter-plot/index.d.ts +55 -0
  76. package/dist/scatter-plot/index.js +1612 -0
  77. package/dist/scatter-plot/index.js.map +1 -0
  78. package/dist/sparkline/index.cjs +1456 -0
  79. package/dist/sparkline/index.cjs.map +1 -0
  80. package/dist/sparkline/index.d.cts +47 -0
  81. package/dist/sparkline/index.d.ts +47 -0
  82. package/dist/sparkline/index.js +1451 -0
  83. package/dist/sparkline/index.js.map +1 -0
  84. package/package.json +126 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isPlaceholder.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curry1.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curry2.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isArray.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isTransformer.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_dispatchable.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_reduced.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xfBase.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xall.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/all.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_arity.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curryN.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/curryN.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_arrayFromIterator.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_includesWith.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_functionName.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_has.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_objectIs.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isArguments.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/keys.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/type.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_equals.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/equals.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_indexOf.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_includes.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_map.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_quote.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_toISOString.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_complement.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_arrayReduce.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_filter.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isObject.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xfilter.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/filter.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/reject.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_toString.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/toString.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/max.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xmap.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/map.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isInteger.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isString.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_nth.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/prop.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/pluck.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curry3.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isArrayLike.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_createReduce.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xArrayReduce.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/bind.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xReduce.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xwrap.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/reduce.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/allPass.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/always.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/anyPass.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_aperture.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_concat.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xaperture.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/aperture.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_reduce.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/ap.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/liftN.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/lift.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/not.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/complement.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/cond.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/defaultTo.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xfindIndex.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/findIndex.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/head.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_identity.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/identity.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/ifElse.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_checkForMethod.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/slice.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/init.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isTypedArray.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/empty.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/isEmpty.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/isNil.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/last.js","../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/tail.js","../../src/shared/className.ts","../../src/shared/option.ts","../../src/shared/number.ts","../../src/shared/result.ts","../../src/chart-error/ChartError.tsx","../../src/histogram-chart/HistogramChart.domain.ts","../../src/histogram-chart/HistogramChart.model.ts","../../src/histogram-chart/components/HistogramChartCaption.tsx","../../src/histogram-chart/components/HistogramChartAxes.tsx","../../src/histogram-chart/components/HistogramChartBar.tsx","../../src/histogram-chart/components/HistogramChartCountLabel.tsx","../../src/histogram-chart/components/HistogramChartBin.tsx","../../src/histogram-chart/components/HistogramChartBins.tsx","../../src/histogram-chart/components/HistogramChartGridLines.tsx","../../src/histogram-chart/components/HistogramChartPlotArea.tsx","../../src/histogram-chart/components/HistogramChartTooltip.tsx","../../src/histogram-chart/HistogramChart.defaults.ts","../../src/histogram-chart/components/HistogramChartXTicks.tsx","../../src/histogram-chart/components/HistogramChartSvg.tsx","../../src/histogram-chart/components/HistogramChartFigure.tsx","../../src/histogram-chart/HistogramChart.tsx"],"names":["XAll","all","curryN","prop","_isArguments","contains","keys","type","b","equals","pad","_toISOString","XFilter","reject","recur","toString","max","XMap","_xmap","map","pluck","_reduce","bind","XWrap","allPass","always","anyPass","XAperture","reduce_default","ap","liftN","lift","not","cond","defaultTo","XFindIndex","findIndex","ifElse","slice","empty","isEmpty","isNil","isNumber","withNumberDefault","createD3Bin","jsx","jsxs","Fragment","getBinKey"],"mappings":"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","file":"index.js","sourcesContent":["export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","export default function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}","import _isArray from \"./_isArray.js\";\nimport _isTransformer from \"./_isTransformer.js\";\n\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer created by [transducerCreator] to return a new transformer\n * (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} transducerCreator transducer factory if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\nexport default function _dispatchable(methodNames, transducerCreator, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n var obj = arguments[arguments.length - 1];\n if (!_isArray(obj)) {\n var idx = 0;\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, Array.prototype.slice.call(arguments, 0, -1));\n }\n idx += 1;\n }\n if (_isTransformer(obj)) {\n var transducer = transducerCreator.apply(null, Array.prototype.slice.call(arguments, 0, -1));\n return transducer(obj);\n }\n }\n return fn.apply(this, arguments);\n };\n}","export default function _reduced(x) {\n return x && x['@@transducer/reduced'] ? x : {\n '@@transducer/value': x,\n '@@transducer/reduced': true\n };\n}","export default {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","import _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XAll = /*#__PURE__*/function () {\n function XAll(f, xf) {\n this.xf = xf;\n this.f = f;\n this.all = true;\n }\n XAll.prototype['@@transducer/init'] = _xfBase.init;\n XAll.prototype['@@transducer/result'] = function (result) {\n if (this.all) {\n result = this.xf['@@transducer/step'](result, true);\n }\n return this.xf['@@transducer/result'](result);\n };\n XAll.prototype['@@transducer/step'] = function (result, input) {\n if (!this.f(input)) {\n this.all = false;\n result = _reduced(this.xf['@@transducer/step'](result, false));\n }\n return result;\n };\n return XAll;\n}();\nexport default function _xall(f) {\n return function (xf) {\n return new XAll(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xall from \"./internal/_xall.js\";\n\n/**\n * Returns `true` if all elements of the list match the predicate, `false` if\n * there are any that don't.\n *\n * Dispatches to the `all` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is satisfied by every element, `false`\n * otherwise.\n * @see R.any, R.none, R.transduce\n * @example\n *\n * const equals3 = R.equals(3);\n * R.all(equals3)([3, 3, 3, 3]); //=> true\n * R.all(equals3)([3, 3, 1, 3]); //=> false\n */\nvar all = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['all'], _xall, function all(fn, list) {\n var idx = 0;\n while (idx < list.length) {\n if (!fn(list[idx])) {\n return false;\n }\n idx += 1;\n }\n return true;\n}));\nexport default all;","export default function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}","import _arity from \"./_arity.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n var hasPlaceholder = false;\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n combined[combinedIdx] = result;\n if (!_isPlaceholder(result)) {\n left -= 1;\n } else {\n hasPlaceholder = true;\n }\n combinedIdx += 1;\n }\n return !hasPlaceholder && left <= 0 ? fn.apply(this, combined) : _arity(Math.max(0, left), _curryN(length, combined, fn));\n };\n}","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _curryN from \"./internal/_curryN.js\";\n\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * const sumArgs = (...args) => R.sum(args);\n *\n * const curriedAddFourNumbers = R.curryN(4, sumArgs);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\nvar curryN = /*#__PURE__*/_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n return _arity(length, _curryN(length, [], fn));\n});\nexport default curryN;","export default function _arrayFromIterator(iter) {\n var list = [];\n var next;\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n return list;\n}","export default function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n}","export default function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","import _has from \"./_has.js\";\nvar toString = Object.prototype.toString;\nvar _isArguments = /*#__PURE__*/function () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\nexport default _isArguments;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport _isArguments from \"./internal/_isArguments.js\";\n\n// cover IE < 9 keys issues\nvar hasEnumBug = ! /*#__PURE__*/{\n toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n// Safari bug\nvar hasArgsEnumBug = /*#__PURE__*/function () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\nvar contains = function contains(list, item) {\n var idx = 0;\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n idx += 1;\n }\n return false;\n};\n\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values, R.toPairs\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? /*#__PURE__*/_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) : /*#__PURE__*/_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n var prop, nIdx;\n var ks = [];\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n nIdx -= 1;\n }\n }\n return ks;\n});\nexport default keys;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig * -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(async () => {}); //=> \"AsyncFunction\"\n * R.type(undefined); //=> \"Undefined\"\n * R.type(BigInt(123)); //=> \"BigInt\"\n */\nvar type = /*#__PURE__*/_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\nexport default type;","import _arrayFromIterator from \"./_arrayFromIterator.js\";\nimport _includesWith from \"./_includesWith.js\";\nimport _functionName from \"./_functionName.js\";\nimport _has from \"./_has.js\";\nimport _objectIs from \"./_objectIs.js\";\nimport keys from \"../keys.js\";\nimport type from \"../type.js\";\n\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparison of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n var b = _arrayFromIterator(bIterator);\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n }\n\n // if *a* array contains any element that is not included in *b*\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\nexport default function _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n var typeA = type(a);\n if (typeA !== type(b)) {\n return false;\n }\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n break;\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n break;\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n break;\n case 'Error':\n return a.name === b.name && a.message === b.message;\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n break;\n }\n var idx = stackA.length - 1;\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n idx -= 1;\n }\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n var keysA = keys(a);\n if (keysA.length !== keys(b).length) {\n return false;\n }\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n idx = keysA.length - 1;\n while (idx >= 0) {\n var key = keysA[idx];\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n idx -= 1;\n }\n return true;\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _equals from \"./internal/_equals.js\";\n\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\nvar equals = /*#__PURE__*/_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\nexport default equals;","import equals from \"../equals.js\";\nexport default function _indexOf(list, a, idx) {\n var inf, item;\n // Array.prototype.indexOf doesn't exist below IE9\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n while (idx < list.length) {\n item = list[idx];\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n }\n // non-zero numbers can utilise Set\n return list.indexOf(a, idx);\n\n // all these types can utilise Set\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n }\n }\n // anything else not covered above, defer to R.equals\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}","import _indexOf from \"./_indexOf.js\";\nexport default function _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}","export default function _map(fn, functor) {\n var idx = 0;\n var len = functor.length;\n var result = Array(len);\n while (idx < len) {\n result[idx] = fn(functor[idx]);\n idx += 1;\n }\n return result;\n}","export default function _quote(s) {\n var escaped = s.replace(/\\\\/g, '\\\\\\\\').replace(/[\\b]/g, '\\\\b') // \\b matches word boundary; [\\b] matches backspace\n .replace(/\\f/g, '\\\\f').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\t/g, '\\\\t').replace(/\\v/g, '\\\\v').replace(/\\0/g, '\\\\0');\n return '\"' + escaped.replace(/\"/g, '\\\\\"') + '\"';\n}","/**\n * Polyfill from <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString>.\n */\nvar pad = function pad(n) {\n return (n < 10 ? '0' : '') + n;\n};\nvar _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) {\n return d.toISOString();\n} : function _toISOString(d) {\n return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z';\n};\nexport default _toISOString;","export default function _complement(f) {\n return function () {\n return !f.apply(this, arguments);\n };\n}","export default function _arrayReduce(reducer, acc, list) {\n var index = 0;\n var length = list.length;\n while (index < length) {\n acc = reducer(acc, list[index]);\n index += 1;\n }\n return acc;\n}","export default function _filter(fn, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n while (idx < len) {\n if (fn(list[idx])) {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n return result;\n}","export default function _isObject(x) {\n return Object.prototype.toString.call(x) === '[object Object]';\n}","import _xfBase from \"./_xfBase.js\";\nvar XFilter = /*#__PURE__*/function () {\n function XFilter(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XFilter.prototype['@@transducer/init'] = _xfBase.init;\n XFilter.prototype['@@transducer/result'] = _xfBase.result;\n XFilter.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n };\n return XFilter;\n}();\nexport default function _xfilter(f) {\n return function (xf) {\n return new XFilter(f, xf);\n };\n}","import _arrayReduce from \"./internal/_arrayReduce.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _filter from \"./internal/_filter.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _xfilter from \"./internal/_xfilter.js\";\nimport keys from \"./keys.js\";\n\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @category Object\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n * const isEven = n => n % 2 === 0;\n *\n * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\nvar filter = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['fantasy-land/filter', 'filter'], _xfilter, function (pred, filterable) {\n return _isObject(filterable) ? _arrayReduce(function (acc, key) {\n if (pred(filterable[key])) {\n acc[key] = filterable[key];\n }\n return acc;\n }, {}, keys(filterable)) :\n // else\n _filter(pred, filterable);\n}));\nexport default filter;","import _complement from \"./internal/_complement.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport filter from \"./filter.js\";\n\n/**\n * The complement of [`filter`](#filter).\n *\n * Acts as a transducer if a transformer is given in list position. Filterable\n * objects include plain objects or any object that has a filter method such\n * as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array}\n * @see R.filter, R.transduce, R.addIndex\n * @example\n *\n * const isOdd = (n) => n % 2 !== 0;\n *\n * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\nvar reject = /*#__PURE__*/_curry2(function reject(pred, filterable) {\n return filter(_complement(pred), filterable);\n});\nexport default reject;","import _includes from \"./_includes.js\";\nimport _map from \"./_map.js\";\nimport _quote from \"./_quote.js\";\nimport _toISOString from \"./_toISOString.js\";\nimport keys from \"../keys.js\";\nimport reject from \"../reject.js\";\nexport default function _toString(x, seen) {\n var recur = function recur(y) {\n var xs = seen.concat([x]);\n return _includes(y, xs) ? '<Circular>' : _toString(y, xs);\n };\n\n // mapPairs :: (Object, [String]) -> [String]\n var mapPairs = function (obj, keys) {\n return _map(function (k) {\n return _quote(k) + ': ' + recur(obj[k]);\n }, keys.slice().sort());\n };\n switch (Object.prototype.toString.call(x)) {\n case '[object Arguments]':\n return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))';\n case '[object Array]':\n return '[' + _map(recur, x).concat(mapPairs(x, reject(function (k) {\n return /^\\d+$/.test(k);\n }, keys(x)))).join(', ') + ']';\n case '[object Boolean]':\n return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString();\n case '[object Date]':\n return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')';\n case '[object Map]':\n return 'new Map(' + recur(Array.from(x)) + ')';\n case '[object Null]':\n return 'null';\n case '[object Number]':\n return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);\n case '[object Set]':\n return 'new Set(' + recur(Array.from(x).sort()) + ')';\n case '[object String]':\n return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x);\n case '[object Undefined]':\n return 'undefined';\n default:\n if (typeof x.toString === 'function') {\n var repr = x.toString();\n if (repr !== '[object Object]') {\n return repr;\n }\n }\n return '{' + mapPairs(x, keys(x)).join(', ') + '}';\n }\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _toString from \"./internal/_toString.js\";\n\n/**\n * Returns the string representation of the given value. `eval`'ing the output\n * should result in a value equivalent to the input value. Many of the built-in\n * `toString` methods do not satisfy this requirement.\n *\n * If the given value is an `[object Object]` with a `toString` method other\n * than `Object.prototype.toString`, this method is invoked with no arguments\n * to produce the return value. This means user-defined constructor functions\n * can provide a suitable `toString` method. For example:\n *\n * function Point(x, y) {\n * this.x = x;\n * this.y = y;\n * }\n *\n * Point.prototype.toString = function() {\n * return 'new Point(' + this.x + ', ' + this.y + ')';\n * };\n *\n * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)'\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category String\n * @sig * -> String\n * @param {*} val\n * @return {String}\n * @example\n *\n * R.toString(42); //=> '42'\n * R.toString('abc'); //=> '\"abc\"'\n * R.toString([1, 2, 3]); //=> '[1, 2, 3]'\n * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{\"bar\": 2, \"baz\": 3, \"foo\": 1}'\n * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date(\"2001-02-03T04:05:06.000Z\")'\n */\nvar toString = /*#__PURE__*/_curry1(function toString(val) {\n return _toString(val, []);\n});\nexport default toString;","import _curry2 from \"./internal/_curry2.js\";\nimport toString from \"./toString.js\";\n\n/**\n * Returns the larger of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.maxBy, R.min\n * @example\n *\n * R.max(789, 123); //=> 789\n * R.max('a', 'b'); //=> 'b'\n */\nvar max = /*#__PURE__*/_curry2(function max(a, b) {\n if (a === b) {\n return b;\n }\n function safeMax(x, y) {\n if (x > y !== y > x) {\n return y > x ? y : x;\n }\n return undefined;\n }\n var maxByValue = safeMax(a, b);\n if (maxByValue !== undefined) {\n return maxByValue;\n }\n var maxByType = safeMax(typeof a, typeof b);\n if (maxByType !== undefined) {\n return maxByType === typeof a ? a : b;\n }\n var stringA = toString(a);\n var maxByStringValue = safeMax(stringA, toString(b));\n if (maxByStringValue !== undefined) {\n return maxByStringValue === stringA ? a : b;\n }\n return b;\n});\nexport default max;","import _xfBase from \"./_xfBase.js\";\nvar XMap = /*#__PURE__*/function () {\n function XMap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XMap.prototype['@@transducer/init'] = _xfBase.init;\n XMap.prototype['@@transducer/result'] = _xfBase.result;\n XMap.prototype['@@transducer/step'] = function (result, input) {\n return this.xf['@@transducer/step'](result, this.f(input));\n };\n return XMap;\n}();\nvar _xmap = function _xmap(f) {\n return function (xf) {\n return new XMap(f, xf);\n };\n};\nexport default _xmap;","import _arrayReduce from \"./internal/_arrayReduce.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _map from \"./internal/_map.js\";\nimport _xmap from \"./internal/_xmap.js\";\nimport curryN from \"./curryN.js\";\nimport keys from \"./keys.js\";\n\n/**\n * Takes a function and\n * a [functor](https://github.com/fantasyland/fantasy-land#functor),\n * applies the function to each of the functor's values, and returns\n * a functor of the same shape.\n *\n * Ramda provides suitable `map` implementations for `Array` and `Object`,\n * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.\n *\n * Dispatches to the `map` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * Also treats functions as functors and will compose them together.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => (a -> b) -> f a -> f b\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {Array} list The list to be iterated over.\n * @return {Array} The new list.\n * @see R.transduce, R.addIndex, R.pluck, R.project\n * @example\n *\n * const double = x => x * 2;\n *\n * R.map(double, [1, 2, 3]); //=> [2, 4, 6]\n *\n * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}\n * @symb R.map(f, [a, b]) = [f(a), f(b)]\n * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }\n * @symb R.map(f, functor_o) = functor_o.map(f)\n */\nvar map = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) {\n switch (Object.prototype.toString.call(functor)) {\n case '[object Function]':\n return curryN(functor.length, function () {\n return fn.call(this, functor.apply(this, arguments));\n });\n case '[object Object]':\n return _arrayReduce(function (acc, key) {\n acc[key] = fn(functor[key]);\n return acc;\n }, {}, keys(functor));\n default:\n return _map(fn, functor);\n }\n}));\nexport default map;","/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nexport default Number.isInteger || function _isInteger(n) {\n return n << 0 === n;\n};","export default function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}","import _isString from \"./_isString.js\";\nexport default function _nth(offset, list) {\n var idx = offset < 0 ? list.length + offset : offset;\n return _isString(list) ? list.charAt(idx) : list[idx];\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport _nth from \"./internal/_nth.js\";\n\n/**\n * Returns a function that when supplied an object returns the indicated\n * property of that object, if it exists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig Idx -> {s: a} -> a | Undefined\n * @param {String|Number} p The property name or array index\n * @param {Object} obj The object to query\n * @return {*} The value at `obj.p`.\n * @see R.path, R.props, R.pluck, R.project, R.nth\n * @example\n *\n * R.prop('x', {x: 100}); //=> 100\n * R.prop('x', {}); //=> undefined\n * R.prop(0, [100]); //=> 100\n * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4\n */\n\nvar prop = /*#__PURE__*/_curry2(function prop(p, obj) {\n if (obj == null) {\n return;\n }\n return _isInteger(p) ? _nth(p, obj) : obj[p];\n});\nexport default prop;","import _curry2 from \"./internal/_curry2.js\";\nimport map from \"./map.js\";\nimport prop from \"./prop.js\";\n\n/**\n * Returns a new list by plucking the same named property off all objects in\n * the list supplied.\n *\n * `pluck` will work on\n * any [functor](https://github.com/fantasyland/fantasy-land#functor) in\n * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => k -> f {k: v} -> f v\n * @param {Number|String} key The key name to pluck off of each object.\n * @param {Array} f The array or functor to consider.\n * @return {Array} The list of values for the given key.\n * @see R.project, R.prop, R.props\n * @example\n *\n * var getAges = R.pluck('age');\n * getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27]\n *\n * R.pluck(0, [[1, 2], [3, 4]]); //=> [1, 3]\n * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5}\n * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5]\n * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5]\n */\nvar pluck = /*#__PURE__*/_curry2(function pluck(p, list) {\n return map(prop(p), list);\n});\nexport default pluck;","import _curry1 from \"./_curry1.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _isArray from \"./_isArray.js\";\nimport _isString from \"./_isString.js\";\n\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n * _isArrayLike({nodeType: 1, length: 1}) // => false\n */\nvar _isArrayLike = /*#__PURE__*/_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n if (!x) {\n return false;\n }\n if (typeof x !== 'object') {\n return false;\n }\n if (_isString(x)) {\n return false;\n }\n if (x.length === 0) {\n return true;\n }\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n return false;\n});\nexport default _isArrayLike;","import _isArrayLike from \"./_isArrayLike.js\";\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\nexport default function _createReduce(arrayReduce, methodReduce, iterableReduce) {\n return function _reduce(xf, acc, list) {\n if (_isArrayLike(list)) {\n return arrayReduce(xf, acc, list);\n }\n if (list == null) {\n return acc;\n }\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return methodReduce(xf, acc, list, 'fantasy-land/reduce');\n }\n if (list[symIterator] != null) {\n return iterableReduce(xf, acc, list[symIterator]());\n }\n if (typeof list.next === 'function') {\n return iterableReduce(xf, acc, list);\n }\n if (typeof list.reduce === 'function') {\n return methodReduce(xf, acc, list, 'reduce');\n }\n throw new TypeError('reduce: list must be array or iterable');\n };\n}","export default function _xArrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n idx += 1;\n }\n return xf['@@transducer/result'](acc);\n}","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\nvar bind = /*#__PURE__*/_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\nexport default bind;","import _createReduce from \"./_createReduce.js\";\nimport _xArrayReduce from \"./_xArrayReduce.js\";\nimport bind from \"../bind.js\";\nfunction _xIterableReduce(xf, acc, iter) {\n var step = iter.next();\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n step = iter.next();\n }\n return xf['@@transducer/result'](acc);\n}\nfunction _xMethodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\nvar _xReduce = /*#__PURE__*/_createReduce(_xArrayReduce, _xMethodReduce, _xIterableReduce);\nexport default _xReduce;","var XWrap = /*#__PURE__*/function () {\n function XWrap(fn) {\n this.f = fn;\n }\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n return XWrap;\n}();\nexport default function _xwrap(fn) {\n return new XWrap(fn);\n}","import _curry3 from \"./internal/_curry3.js\";\nimport _xReduce from \"./internal/_xReduce.js\";\nimport _xwrap from \"./internal/_xwrap.js\";\n\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Be cautious of mutating and returning the accumulator. If you reuse it across\n * invocations, it will continue to accumulate onto the same value. The general\n * recommendation is to always return a new value. If you can't do so for\n * performance reasons, then be sure to reinitialize the accumulator on each\n * invocation.\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\nvar reduce = /*#__PURE__*/_curry3(function (xf, acc, list) {\n return _xReduce(typeof xf === 'function' ? _xwrap(xf) : xf, acc, list);\n});\nexport default reduce;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\n\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if every one of the provided predicates is satisfied\n * by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.anyPass, R.both\n * @example\n *\n * const isQueen = R.propEq('Q', 'rank');\n * const isSpade = R.propEq('♠︎', 'suit');\n * const isQueenOfSpades = R.allPass([isQueen, isSpade]);\n *\n * isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false\n * isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true\n */\nvar allPass = /*#__PURE__*/_curry1(function allPass(preds) {\n return curryN(reduce(max, 0, pluck('length', preds)), function () {\n var idx = 0;\n var len = preds.length;\n while (idx < len) {\n if (!preds[idx].apply(this, arguments)) {\n return false;\n }\n idx += 1;\n }\n return true;\n });\n});\nexport default allPass;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Returns a function that always returns the given value. Note that for\n * non-primitives the value returned is a reference to the original value.\n *\n * This function is known as `const`, `constant`, or `K` (for K combinator) in\n * other languages and libraries.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> (* -> a)\n * @param {*} val The value to wrap in a function\n * @return {Function} A Function :: * -> val.\n * @example\n *\n * const t = R.always('Tee');\n * t(); //=> 'Tee'\n */\nvar always = /*#__PURE__*/_curry1(function always(val) {\n return function () {\n return val;\n };\n});\nexport default always;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\n\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if at least one of the provided predicates is\n * satisfied by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.allPass, R.either\n * @example\n *\n * const isClub = R.propEq('♣', 'suit');\n * const isSpade = R.propEq('♠', 'suit');\n * const isBlackCard = R.anyPass([isClub, isSpade]);\n *\n * isBlackCard({rank: '10', suit: '♣'}); //=> true\n * isBlackCard({rank: 'Q', suit: '♠'}); //=> true\n * isBlackCard({rank: 'Q', suit: '♦'}); //=> false\n */\nvar anyPass = /*#__PURE__*/_curry1(function anyPass(preds) {\n return curryN(reduce(max, 0, pluck('length', preds)), function () {\n var idx = 0;\n var len = preds.length;\n while (idx < len) {\n if (preds[idx].apply(this, arguments)) {\n return true;\n }\n idx += 1;\n }\n return false;\n });\n});\nexport default anyPass;","export default function _aperture(n, list) {\n var idx = 0;\n var limit = list.length - (n - 1);\n var acc = new Array(limit >= 0 ? limit : 0);\n while (idx < limit) {\n acc[idx] = Array.prototype.slice.call(list, idx, idx + n);\n idx += 1;\n }\n return acc;\n}","/**\n * Private `concat` function to merge two array-like objects.\n *\n * @private\n * @param {Array|Arguments} [set1=[]] An array-like object.\n * @param {Array|Arguments} [set2=[]] An array-like object.\n * @return {Array} A new, merged array.\n * @example\n *\n * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n */\nexport default function _concat(set1, set2) {\n set1 = set1 || [];\n set2 = set2 || [];\n var idx;\n var len1 = set1.length;\n var len2 = set2.length;\n var result = [];\n idx = 0;\n while (idx < len1) {\n result[result.length] = set1[idx];\n idx += 1;\n }\n idx = 0;\n while (idx < len2) {\n result[result.length] = set2[idx];\n idx += 1;\n }\n return result;\n}","import _concat from \"./_concat.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XAperture = /*#__PURE__*/function () {\n function XAperture(n, xf) {\n this.xf = xf;\n this.pos = 0;\n this.full = false;\n this.acc = new Array(n);\n }\n XAperture.prototype['@@transducer/init'] = _xfBase.init;\n XAperture.prototype['@@transducer/result'] = function (result) {\n this.acc = null;\n return this.xf['@@transducer/result'](result);\n };\n XAperture.prototype['@@transducer/step'] = function (result, input) {\n this.store(input);\n return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result;\n };\n XAperture.prototype.store = function (input) {\n this.acc[this.pos] = input;\n this.pos += 1;\n if (this.pos === this.acc.length) {\n this.pos = 0;\n this.full = true;\n }\n };\n XAperture.prototype.getCopy = function () {\n return _concat(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos));\n };\n return XAperture;\n}();\nexport default function _xaperture(n) {\n return function (xf) {\n return new XAperture(n, xf);\n };\n}","import _aperture from \"./internal/_aperture.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xaperture from \"./internal/_xaperture.js\";\n\n/**\n * Returns a new list, composed of n-tuples of consecutive elements. If `n` is\n * greater than the length of the list, an empty list is returned.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig Number -> [a] -> [[a]]\n * @param {Number} n The size of the tuples to create\n * @param {Array} list The list to split into `n`-length tuples\n * @return {Array} The resulting list of `n`-length tuples\n * @see R.transduce\n * @example\n *\n * R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]]\n * R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]]\n * R.aperture(7, [1, 2, 3, 4, 5]); //=> []\n */\nvar aperture = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xaperture, _aperture));\nexport default aperture;","import _arrayReduce from \"./_arrayReduce.js\";\nimport _createReduce from \"./_createReduce.js\";\nfunction _iterableReduce(reducer, acc, iter) {\n var step = iter.next();\n while (!step.done) {\n acc = reducer(acc, step.value);\n step = iter.next();\n }\n return acc;\n}\nfunction _methodReduce(reducer, acc, obj, methodName) {\n return obj[methodName](reducer, acc);\n}\nvar _reduce = /*#__PURE__*/_createReduce(_arrayReduce, _methodReduce, _iterableReduce);\nexport default _reduce;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport map from \"./map.js\";\n\n/**\n * ap applies a list of functions to a list of values.\n *\n * Dispatches to the `ap` method of the first argument, if present. Also\n * treats curried functions as applicatives.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig [a -> b] -> [a] -> [b]\n * @sig Apply f => f (a -> b) -> f a -> f b\n * @sig (r -> a -> b) -> (r -> a) -> (r -> b)\n * @param {*} applyF\n * @param {*} applyX\n * @return {*}\n * @example\n *\n * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]\n * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> [\"tasty pizza\", \"tasty salad\", \"PIZZA\", \"SALAD\"]\n *\n * // R.ap can also be used as S combinator\n * // when only two functions are passed\n * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA'\n * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)]\n */\nvar ap = /*#__PURE__*/_curry2(function ap(applyF, applyX) {\n return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) {\n return applyF(x)(applyX(x));\n } : _reduce(function (acc, f) {\n return _concat(acc, map(f, applyX));\n }, [], applyF);\n});\nexport default ap;","import _curry2 from \"./internal/_curry2.js\";\nimport _arrayReduce from \"./internal/_arrayReduce.js\";\nimport ap from \"./ap.js\";\nimport curryN from \"./curryN.js\";\nimport map from \"./map.js\";\n\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" that\n * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig Number -> (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.lift, R.ap\n * @example\n *\n * const madd3 = R.liftN(3, (...args) => R.sum(args));\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n */\nvar liftN = /*#__PURE__*/_curry2(function liftN(arity, fn) {\n var lifted = curryN(arity, fn);\n return curryN(arity, function () {\n return _arrayReduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1));\n });\n});\nexport default liftN;","import _curry1 from \"./internal/_curry1.js\";\nimport liftN from \"./liftN.js\";\n\n/**\n * \"lifts\" a function of arity >= 1 so that it may \"map over\" a list, Function or other\n * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.liftN\n * @example\n *\n * const madd3 = R.lift((a, b, c) => a + b + c);\n *\n * madd3([100, 200], [30, 40], [5, 6, 7]); //=> [135, 136, 137, 145, 146, 147, 235, 236, 237, 245, 246, 247]\n *\n * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e);\n *\n * madd5([10, 20], [1], [2, 3], [4], [100, 200]); //=> [117, 217, 118, 218, 127, 227, 128, 228]\n */\nvar lift = /*#__PURE__*/_curry1(function lift(fn) {\n return liftN(fn.length, fn);\n});\nexport default lift;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * A function that returns the `!` of its argument. It will return `true` when\n * passed false-y value, and `false` when passed a truth-y one.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig * -> Boolean\n * @param {*} a any value\n * @return {Boolean} the logical inverse of passed argument.\n * @see R.complement\n * @example\n *\n * R.not(true); //=> false\n * R.not(false); //=> true\n * R.not(0); //=> true\n * R.not(1); //=> false\n */\nvar not = /*#__PURE__*/_curry1(function not(a) {\n return !a;\n});\nexport default not;","import lift from \"./lift.js\";\nimport not from \"./not.js\";\n\n/**\n * Takes a function `f` and returns a function `g` such that if called with the same arguments\n * when `f` returns a \"truthy\" value, `g` returns `false` and when `f` returns a \"falsy\" value `g` returns `true`.\n *\n * `R.complement` may be applied to any functor\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> *) -> (*... -> Boolean)\n * @param {Function} f\n * @return {Function}\n * @see R.not\n * @example\n *\n * const isNotNil = R.complement(R.isNil);\n * R.isNil(null); //=> true\n * isNotNil(null); //=> false\n * R.isNil(7); //=> false\n * isNotNil(7); //=> true\n */\nvar complement = /*#__PURE__*/lift(not);\nexport default complement;","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport map from \"./map.js\";\nimport max from \"./max.js\";\nimport reduce from \"./reduce.js\";\n\n/**\n * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic.\n * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments\n * to `fn` are applied to each of the predicates in turn until one returns a\n * \"truthy\" value, at which point `fn` returns the result of applying its\n * arguments to the corresponding transformer. If none of the predicates\n * matches, `fn` returns undefined.\n *\n * **Please note**: This is not a direct substitute for a `switch` statement.\n * Remember that both elements of every pair passed to `cond` are *functions*,\n * and `cond` returns a function.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Logic\n * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *)\n * @param {Array} pairs A list of [predicate, transformer]\n * @return {Function}\n * @see R.ifElse, R.unless, R.when\n * @example\n *\n * const fn = R.cond([\n * [R.equals(0), R.always('water freezes at 0°C')],\n * [R.equals(100), R.always('water boils at 100°C')],\n * [R.T, temp => 'nothing special happens at ' + temp + '°C']\n * ]);\n * fn(0); //=> 'water freezes at 0°C'\n * fn(50); //=> 'nothing special happens at 50°C'\n * fn(100); //=> 'water boils at 100°C'\n */\nvar cond = /*#__PURE__*/_curry1(function cond(pairs) {\n var arity = reduce(max, 0, map(function (pair) {\n return pair[0].length;\n }, pairs));\n return _arity(arity, function () {\n var idx = 0;\n while (idx < pairs.length) {\n if (pairs[idx][0].apply(this, arguments)) {\n return pairs[idx][1].apply(this, arguments);\n }\n idx += 1;\n }\n });\n});\nexport default cond;","import _curry2 from \"./internal/_curry2.js\";\n\n/**\n * Returns the second argument if it is not `null`, `undefined` or `NaN`;\n * otherwise the first argument is returned.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {a} default The default value.\n * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`.\n * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value\n * @example\n *\n * const defaultTo42 = R.defaultTo(42);\n *\n * defaultTo42(null); //=> 42\n * defaultTo42(undefined); //=> 42\n * defaultTo42(false); //=> false\n * defaultTo42('Ramda'); //=> 'Ramda'\n * // parseInt('string') results in NaN\n * defaultTo42(parseInt('string')); //=> 42\n */\nvar defaultTo = /*#__PURE__*/_curry2(function defaultTo(d, v) {\n return v == null || v !== v ? d : v;\n});\nexport default defaultTo;","import _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XFindIndex = /*#__PURE__*/function () {\n function XFindIndex(f, xf) {\n this.xf = xf;\n this.f = f;\n this.idx = -1;\n this.found = false;\n }\n XFindIndex.prototype['@@transducer/init'] = _xfBase.init;\n XFindIndex.prototype['@@transducer/result'] = function (result) {\n if (!this.found) {\n result = this.xf['@@transducer/step'](result, -1);\n }\n return this.xf['@@transducer/result'](result);\n };\n XFindIndex.prototype['@@transducer/step'] = function (result, input) {\n this.idx += 1;\n if (this.f(input)) {\n this.found = true;\n result = _reduced(this.xf['@@transducer/step'](result, this.idx));\n }\n return result;\n };\n return XFindIndex;\n}();\nexport default function _xfindIndex(f) {\n return function (xf) {\n return new XFindIndex(f, xf);\n };\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xfindIndex from \"./internal/_xfindIndex.js\";\n\n/**\n * Returns the index of the first element of the list which matches the\n * predicate, or `-1` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> Number\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Number} The index of the element found, or `-1`.\n * @see R.transduce, R.indexOf\n * @example\n *\n * const xs = [{a: 1}, {a: 2}, {a: 3}];\n * R.findIndex(R.propEq(2, 'a'))(xs); //=> 1\n * R.findIndex(R.propEq(4, 'a'))(xs); //=> -1\n */\nvar findIndex = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindIndex, function findIndex(fn, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (fn(list[idx])) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}));\nexport default findIndex;","import _curry1 from \"./internal/_curry1.js\";\nimport _nth from \"./internal/_nth.js\";\n\n/**\n * Returns the first element of the given list or string. In some libraries\n * this function is named `first`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String | Undefined\n * @param {Array|String} list\n * @return {*}\n * @see R.tail, R.init, R.last\n * @example\n *\n * R.head(['fi', 'fo', 'fum']); //=> 'fi'\n * R.head([]); //=> undefined\n *\n * R.head('abc'); //=> 'a'\n * R.head(''); //=> undefined\n */\nvar head = /*#__PURE__*/_curry1(function (list) {\n return _nth(0, list);\n});\nexport default head;","export default function _identity(x) {\n return x;\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _identity from \"./internal/_identity.js\";\n\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\nvar identity = /*#__PURE__*/_curry1(_identity);\nexport default identity;","import _curry3 from \"./internal/_curry3.js\";\nimport curryN from \"./curryN.js\";\n\n/**\n * Creates a function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n *\n * Note that `ifElse` takes its arity from the longest of the three functions passed to it.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *)\n * @param {Function} condition A predicate function\n * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value.\n * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value.\n * @return {Function} A new function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n * @see R.unless, R.when, R.cond\n * @example\n *\n * const incCount = R.ifElse(\n * R.has('count'),\n * R.over(R.lensProp('count'), R.inc),\n * R.assoc('count', 1)\n * );\n * incCount({ count: 1 }); //=> { count: 2 }\n * incCount({}); //=> { count: 1 }\n */\nvar ifElse = /*#__PURE__*/_curry3(function ifElse(condition, onTrue, onFalse) {\n return curryN(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() {\n return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments);\n });\n});\nexport default ifElse;","import _isArray from \"./_isArray.js\";\n\n/**\n * This checks whether a function has a [methodname] function. If it isn't an\n * array it will execute that function otherwise it will default to the ramda\n * implementation.\n *\n * @private\n * @param {Function} fn ramda implementation\n * @param {String} methodname property to check for a custom implementation\n * @return {Object} Whatever the return value of the method is.\n */\nexport default function _checkForMethod(methodname, fn) {\n return function () {\n var length = arguments.length;\n if (length === 0) {\n return fn();\n }\n var obj = arguments[length - 1];\n return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));\n };\n}","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry3 from \"./internal/_curry3.js\";\n\n/**\n * Returns the elements of the given list or string (or object with a `slice`\n * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).\n *\n * Dispatches to the `slice` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @sig Number -> Number -> String -> String\n * @param {Number} fromIndex The start index (inclusive).\n * @param {Number} toIndex The end index (exclusive).\n * @param {*} list\n * @return {*}\n * @example\n *\n * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd']\n * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c']\n * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(0, 3, 'ramda'); //=> 'ram'\n */\nvar slice = /*#__PURE__*/_curry3( /*#__PURE__*/_checkForMethod('slice', function slice(fromIndex, toIndex, list) {\n return Array.prototype.slice.call(list, fromIndex, toIndex);\n}));\nexport default slice;","import slice from \"./slice.js\";\n\n/**\n * Returns all but the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.last, R.head, R.tail\n * @example\n *\n * R.init([1, 2, 3]); //=> [1, 2]\n * R.init([1, 2]); //=> [1]\n * R.init([1]); //=> []\n * R.init([]); //=> []\n *\n * R.init('abc'); //=> 'ab'\n * R.init('ab'); //=> 'a'\n * R.init('a'); //=> ''\n * R.init(''); //=> ''\n */\nvar init = /*#__PURE__*/slice(0, -1);\nexport default init;","/**\n * Tests whether or not an object is a typed array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is a typed array, `false` otherwise.\n * @example\n *\n * _isTypedArray(new Uint8Array([])); //=> true\n * _isTypedArray(new Float32Array([])); //=> true\n * _isTypedArray([]); //=> false\n * _isTypedArray(null); //=> false\n * _isTypedArray({}); //=> false\n */\nexport default function _isTypedArray(val) {\n var type = Object.prototype.toString.call(val);\n return type === '[object Uint8ClampedArray]' || type === '[object Int8Array]' || type === '[object Uint8Array]' || type === '[object Int16Array]' || type === '[object Uint16Array]' || type === '[object Int32Array]' || type === '[object Uint32Array]' || type === '[object Float32Array]' || type === '[object Float64Array]' || type === '[object BigInt64Array]' || type === '[object BigUint64Array]';\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _isArguments from \"./internal/_isArguments.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _isString from \"./internal/_isString.js\";\nimport _isTypedArray from \"./internal/_isTypedArray.js\";\n\n/**\n * Returns the empty value of its argument's type. Ramda defines the empty\n * value of Array (`[]`), Object (`{}`), String (`''`),\n * TypedArray (`Uint8Array []`, `Float32Array []`, etc), and Arguments. Other\n * types are supported if they define `<Type>.empty`,\n * `<Type>.prototype.empty` or implement the\n * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid).\n *\n * Dispatches to the `empty` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> a\n * @param {*} x\n * @return {*}\n * @example\n *\n * R.empty(Just(42)); //=> Nothing()\n * R.empty([1, 2, 3]); //=> []\n * R.empty('unicorns'); //=> ''\n * R.empty({x: 1, y: 2}); //=> {}\n * R.empty(Uint8Array.from('123')); //=> Uint8Array []\n */\nvar empty = /*#__PURE__*/_curry1(function empty(x) {\n return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? function () {\n return arguments;\n }() : _isTypedArray(x) ? x.constructor.from('') : void 0 // else\n ;\n});\n\nexport default empty;","import _curry1 from \"./internal/_curry1.js\";\nimport empty from \"./empty.js\";\nimport equals from \"./equals.js\";\n\n/**\n * Returns `true` if the given value is its type's empty value; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> Boolean\n * @param {*} x\n * @return {Boolean}\n * @see R.empty, R.isNotEmpty\n * @example\n *\n * R.isEmpty([1, 2, 3]); //=> false\n * R.isEmpty([]); //=> true\n * R.isEmpty(''); //=> true\n * R.isEmpty(null); //=> false\n * R.isEmpty({}); //=> true\n * R.isEmpty({length: 0}); //=> false\n * R.isEmpty(Uint8Array.from('')); //=> true\n */\nvar isEmpty = /*#__PURE__*/_curry1(function isEmpty(x) {\n return x != null && equals(x, empty(x));\n});\nexport default isEmpty;","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Checks if the input value is `null` or `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Type\n * @sig * -> Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.\n * @example\n *\n * R.isNil(null); //=> true\n * R.isNil(undefined); //=> true\n * R.isNil(0); //=> false\n * R.isNil([]); //=> false\n */\nvar isNil = /*#__PURE__*/_curry1(function isNil(x) {\n return x == null;\n});\nexport default isNil;","import _curry1 from \"./internal/_curry1.js\";\nimport _nth from \"./internal/_nth.js\";\n\n/**\n * Returns the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String | Undefined\n * @param {*} list\n * @return {*}\n * @see R.init, R.head, R.tail\n * @example\n *\n * R.last(['fi', 'fo', 'fum']); //=> 'fum'\n * R.last([]); //=> undefined\n *\n * R.last('abc'); //=> 'c'\n * R.last(''); //=> undefined\n */\nvar last = /*#__PURE__*/_curry1(function (list) {\n return _nth(-1, list);\n});\nexport default last;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport slice from \"./slice.js\";\n\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n * R.tail([1, 2, 3]); //=> [2, 3]\n * R.tail([1, 2]); //=> [2]\n * R.tail([1]); //=> []\n * R.tail([]); //=> []\n *\n * R.tail('abc'); //=> 'bc'\n * R.tail('ab'); //=> 'b'\n * R.tail('a'); //=> ''\n * R.tail(''); //=> ''\n */\nvar tail = /*#__PURE__*/_curry1( /*#__PURE__*/_checkForMethod('tail', /*#__PURE__*/slice(1, Infinity)));\nexport default tail;","import { filter } from './fp'\n\nconst isPresentClassName = (value: string) => value.trim().length > 0\n\nexport const classNames = (values: readonly string[]) =>\n filter(isPresentClassName, [...values]).join(' ')\n","import { always, ifElse, isNil } from './fp'\n\nexport type Some<TValue> = {\n readonly status: 'some'\n readonly value: TValue\n}\n\nexport type None = {\n readonly status: 'none'\n}\n\nexport type Option<TValue> = Some<TValue> | None\n\nexport type OptionMatcher<TValue, TOutput> = {\n readonly some: (value: TValue) => TOutput\n readonly none: () => TOutput\n}\n\nexport const none: None = { status: 'none' }\n\nexport function some<TValue>(value: TValue): Some<TValue> {\n return { status: 'some', value }\n}\n\nexport const isSome = <TValue>(option: Option<TValue>): option is Some<TValue> =>\n option.status === 'some'\n\nexport const isNone = <TValue>(option: Option<TValue>): option is None =>\n option.status === 'none'\n\nexport const fromNullable = <TValue>(value: TValue): Option<TValue> =>\n ifElse(\n isNil,\n always(none),\n some<TValue>,\n )(value)\n\nexport const getOrElse = <TValue>(fallback: TValue) => (option: Option<TValue>): TValue =>\n ifElse(\n isSome<TValue>,\n (someOption: Some<TValue>) => someOption.value,\n always(fallback),\n )(option)\n\nexport function matchOption<TValue, TOutput>(\n option: Option<TValue>,\n matcher: OptionMatcher<TValue, TOutput>,\n) {\n return ifElse(\n isSome<TValue>,\n (someOption: Some<TValue>) => matcher.some(someOption.value),\n matcher.none,\n )(option)\n}\n","import { always, defaultTo, ifElse } from './fp'\nimport { fromNullable, matchOption } from './option'\n\nconst isNumber = (value: unknown) => typeof value === 'number'\n\nexport const withNumberDefault = (fallback: number) => (value: unknown) =>\n matchOption(fromNullable(value), {\n none: () => fallback,\n some: (resolvedValue) =>\n ifElse(\n isNumber,\n (numberValue: number) => defaultTo(fallback, numberValue),\n always(fallback),\n )(resolvedValue),\n })\n","import { ifElse } from './fp'\n\nexport type Ok<TValue> = {\n readonly status: 'ok'\n readonly value: TValue\n}\n\nexport type Err<TError> = {\n readonly status: 'error'\n readonly error: TError\n}\n\nexport type Result<TValue, TError> = Ok<TValue> | Err<TError>\n\nexport type ResultMatcher<TValue, TError, TOutput> = {\n readonly ok: (value: TValue) => TOutput\n readonly error: (error: TError) => TOutput\n}\n\nexport function ok<TValue>(value: TValue): Ok<TValue> {\n return { status: 'ok', value }\n}\n\nexport function err<TError>(error: TError): Err<TError> {\n return { status: 'error', error }\n}\n\nexport const isOk = <TValue, TError>(\n result: Result<TValue, TError>,\n): result is Ok<TValue> => result.status === 'ok'\n\nexport const andThenResult =\n <TValue, TNextValue, TError>(\n transform: (value: TValue) => Result<TNextValue, TError>,\n ) =>\n (result: Result<TValue, TError>): Result<TNextValue, TError> =>\n matchResult(result, {\n error: err<TError>,\n ok: transform,\n })\n\nexport const mapResult =\n <TValue, TNextValue, TError>(transform: (value: TValue) => TNextValue) =>\n (result: Result<TValue, TError>): Result<TNextValue, TError> =>\n andThenResult<TValue, TNextValue, TError>((value) => ok(transform(value)))(result)\n\nexport const bindResult =\n <TContext extends object, TValue, TNextContext extends object, TError>(\n transform: (context: TContext) => Result<TValue, TError>,\n merge: (context: TContext, value: TValue) => TNextContext,\n ) =>\n (result: Result<TContext, TError>): Result<TNextContext, TError> =>\n andThenResult<TContext, TNextContext, TError>(\n (context) =>\n mapResult<TValue, TNextContext, TError>((value) => merge(context, value))(\n transform(context),\n ),\n )(result)\n\nexport function matchResult<TValue, TError, TOutput>(\n result: Result<TValue, TError>,\n matcher: ResultMatcher<TValue, TError, TOutput>,\n) {\n return ifElse(\n isOk<TValue, TError>,\n (okResult: Ok<TValue>) => matcher.ok(okResult.value),\n (errorResult: Err<TError>) => matcher.error(errorResult.error),\n )(result)\n}\n","import { classNames, matchOption } from '../shared'\nimport type { ChartErrorInputProps } from './ChartError.types'\n\nconst renderDetails = (details: ChartErrorInputProps['details']) =>\n matchOption(details, {\n none: () => null,\n some: (value) => <p className=\"pristine-chart-error__details\">{value}</p>,\n })\n\nexport function ChartError({\n title,\n message,\n details,\n className,\n role,\n}: ChartErrorInputProps) {\n return (\n <div className={classNames(['pristine-chart-error', className])} role={role}>\n <p className=\"pristine-chart-error__title\">{title}</p>\n <p className=\"pristine-chart-error__message\">{message}</p>\n {renderDetails(details)}\n </div>\n )\n}\n","import { bin as createD3Bin, extent } from 'd3'\nimport type { Bin } from 'd3'\n\nimport { bindResult, err, fromNullable, mapResult, matchOption, none, ok, some } from '../shared'\nimport type { Result } from '../shared'\nimport {\n all,\n allPass,\n always,\n anyPass,\n aperture,\n complement,\n cond,\n defaultTo,\n filter,\n findIndex,\n identity,\n ifElse,\n init,\n isEmpty,\n last,\n map,\n tail,\n} from '../shared/fp'\n\nimport type {\n AutoBinStrategy,\n BinStrategy,\n HistogramBin,\n HistogramError,\n HistogramInput,\n HistogramResult,\n ManualBinStrategy,\n Thresholds,\n ValidatedAutoBinStrategy,\n ValidatedBinStrategy,\n ValidatedDataset,\n ValidatedHistogramInput,\n ValidatedManualBinStrategy,\n} from './HistogramChart.types'\n\ntype HistogramExtent = [number, number]\ntype HistogramInputResult = Result<ValidatedHistogramInput, HistogramError>\ntype DatasetResult = Result<ValidatedDataset, HistogramError>\ntype BinStrategyResult = Result<ValidatedBinStrategy, HistogramError>\ntype StrategyMatcher<TOutput> = {\n readonly auto: (strategy: AutoBinStrategy) => TOutput\n readonly manual: (strategy: ManualBinStrategy) => TOutput\n}\ntype ValidatedStrategyMatcher<TOutput> = {\n readonly auto: (strategy: ValidatedAutoBinStrategy) => TOutput\n readonly manual: (strategy: ValidatedManualBinStrategy) => TOutput\n}\n\nexport const DEFAULT_HISTOGRAM_BIN_STRATEGY: BinStrategy = {\n kind: 'auto',\n binCount: 10,\n}\n\nconst detailsFromIndex = ifElse(\n (index: number) => index >= 0,\n (index: number) => some(`Invalid value at index ${index}.`),\n always(none),\n)\n\nconst histogramRules = {\n emptyDataset: (): HistogramError => ({\n type: 'EmptyDataset',\n message: 'A histogram needs at least one numeric value.',\n details: none,\n }),\n nonNumericValue: (index: number): HistogramError => ({\n type: 'NonNumericValue',\n message: 'Every histogram value must be a finite number.',\n details: detailsFromIndex(index),\n }),\n invalidBinCount: (binCount: number): HistogramError => ({\n type: 'InvalidBinCount',\n message: 'Auto bin count must be a positive integer.',\n details: some(`Received ${String(binCount)}.`),\n }),\n invalidBinBoundaries: (): HistogramError => ({\n type: 'InvalidBinBoundaries',\n message: 'Manual thresholds must be finite numbers in strictly ascending order.',\n details: none,\n }),\n boundariesOutsideDatasetRange: (): HistogramError => ({\n type: 'BoundariesOutsideDatasetRange',\n message: 'Manual thresholds must fully cover the dataset range.',\n details: none,\n }),\n}\n\nconst isFiniteNumber = (value: unknown) =>\n allPass([\n (candidate: unknown) => typeof candidate === 'number',\n (candidate: unknown) => Number.isFinite(candidate),\n ])(value)\n\nconst isPositiveInteger = (value: number) =>\n allPass([Number.isInteger, (candidate: number) => candidate > 0])(value)\n\nconst isAscendingPair = ([left, right]: readonly number[]) =>\n allPass([\n (candidate: unknown) => Number.isFinite(candidate),\n () => Number.isFinite(right),\n (candidate: unknown) => Number(candidate) < Number(right),\n ])(left)\n\nconst areStrictlyAscending = (values: readonly number[]) =>\n all(isAscendingPair, aperture(2, [...values]))\n\nconst hasEnoughThresholds = (values: readonly number[]) => values.length >= 2\n\nconst hasOnlyFiniteNumbers = (values: readonly unknown[]) => all(isFiniteNumber, [...values])\n\nconst findInvalidNumberIndex = (values: readonly unknown[]) =>\n findIndex(complement(isFiniteNumber), [...values])\n\nconst toValidatedDataset = (values: readonly unknown[]): ValidatedDataset =>\n filter((value): value is number => isFiniteNumber(value), [...values])\n\nconst toThresholds = (values: readonly number[]): Thresholds => filter(isFiniteNumber, [...values])\n\nconst isNumber = (value: unknown) => typeof value === 'number'\n\nconst withNumberDefault = (fallback: number) => (value: unknown) =>\n matchOption(fromNullable(value), {\n none: () => fallback,\n some: (resolvedValue) =>\n ifElse(\n isNumber,\n (numberValue: number) => defaultTo(fallback, numberValue),\n always(fallback),\n )(resolvedValue),\n })\n\nconst getExtent = (values: readonly number[]): HistogramExtent => {\n const [lowerBound, upperBound] = extent(values)\n\n return [withNumberDefault(0)(lowerBound), withNumberDefault(1)(upperBound)]\n}\n\nconst isZeroWidthExtent = ([lowerBound, upperBound]: HistogramExtent) => lowerBound === upperBound\n\nconst expandZeroWidthExtent = ifElse(\n isZeroWidthExtent,\n ([lowerBound, upperBound]: HistogramExtent): HistogramExtent => [lowerBound - 0.5, upperBound + 0.5],\n identity,\n)\n\nconst getManualDomain = (thresholds: Thresholds): HistogramExtent => [\n withNumberDefault(0)(thresholds[0]),\n withNumberDefault(1)(last([...thresholds])),\n]\n\nconst getInteriorThresholds = (thresholds: Thresholds): readonly number[] =>\n init(tail([...thresholds]))\n\nconst fullyCoversDataset = (dataset: ValidatedDataset, thresholds: Thresholds) => {\n const [datasetMin, datasetMax] = getExtent(dataset)\n const [thresholdMin, thresholdMax] = getManualDomain(thresholds)\n\n return all(identity, [\n thresholdMin <= datasetMin,\n thresholdMax >= datasetMax,\n ])\n}\n\ntype DatasetValidator = [\n (data: readonly unknown[]) => boolean,\n (data: readonly unknown[]) => DatasetResult,\n]\n\nconst datasetValidators: DatasetValidator[] = [\n [isEmpty, () => err(histogramRules.emptyDataset())],\n [\n complement(hasOnlyFiniteNumbers),\n (data: readonly unknown[]) => err(histogramRules.nonNumericValue(findInvalidNumberIndex(data))),\n ],\n [() => true, (data: readonly unknown[]) => ok(toValidatedDataset(data))],\n]\n\nconst validateDataset: (data: readonly unknown[]) => DatasetResult = cond(datasetValidators)\n\nconst createValidatedAutoStrategy = (binCount: number): ValidatedAutoBinStrategy => ({\n kind: 'auto',\n binCount,\n})\n\nconst createValidatedManualStrategy = (thresholds: Thresholds): ValidatedManualBinStrategy => ({\n kind: 'manual',\n thresholds,\n})\n\nconst validateAutoBinStrategy = (binStrategy: AutoBinStrategy): BinStrategyResult =>\n ifElse(\n isPositiveInteger,\n (binCount: number) => ok(createValidatedAutoStrategy(binCount)),\n (binCount: number) => err(histogramRules.invalidBinCount(binCount)),\n )(binStrategy.binCount)\n\nconst hasInvalidManualThresholds = anyPass([\n complement(hasEnoughThresholds),\n complement(hasOnlyFiniteNumbers),\n complement(areStrictlyAscending),\n])\n\nconst validateManualCoverage = (dataset: ValidatedDataset) => (\n binStrategy: ManualBinStrategy,\n): BinStrategyResult => {\n const thresholds = toThresholds(binStrategy.thresholds)\n\n return ifElse(\n (candidate: Thresholds) => fullyCoversDataset(dataset, candidate),\n (candidate: Thresholds) => ok(createValidatedManualStrategy(candidate)),\n () => err(histogramRules.boundariesOutsideDatasetRange()),\n )(thresholds)\n}\n\nconst validateManualBinStrategy = (\n binStrategy: ManualBinStrategy,\n dataset: ValidatedDataset,\n): BinStrategyResult =>\n ifElse(\n (strategy: ManualBinStrategy) => hasInvalidManualThresholds(strategy.thresholds),\n () => err(histogramRules.invalidBinBoundaries()),\n validateManualCoverage(dataset),\n )(binStrategy)\n\nconst isAutoStrategy = (strategy: BinStrategy): strategy is AutoBinStrategy => strategy.kind === 'auto'\n\nconst isValidatedAutoStrategy = (\n strategy: ValidatedBinStrategy,\n): strategy is ValidatedAutoBinStrategy => strategy.kind === 'auto'\n\nconst matchBinStrategy = <TOutput>(\n binStrategy: BinStrategy,\n matcher: StrategyMatcher<TOutput>,\n) => ifElse(isAutoStrategy, matcher.auto, matcher.manual)(binStrategy)\n\nconst matchValidatedBinStrategy = <TOutput>(\n binStrategy: ValidatedBinStrategy,\n matcher: ValidatedStrategyMatcher<TOutput>,\n) => ifElse(isValidatedAutoStrategy, matcher.auto, matcher.manual)(binStrategy)\n\nfunction validateBinStrategy(\n binStrategy: BinStrategy,\n dataset: ValidatedDataset,\n): BinStrategyResult {\n return matchBinStrategy(binStrategy, {\n auto: validateAutoBinStrategy,\n manual: (strategy) => validateManualBinStrategy(strategy, dataset),\n })\n}\n\nexport function validateHistogramInput(input: HistogramInput): HistogramInputResult {\n return bindResult<\n { readonly dataset: ValidatedDataset },\n ValidatedBinStrategy,\n ValidatedHistogramInput,\n HistogramError\n >(\n ({ dataset }) => validateBinStrategy(input.binStrategy, dataset),\n (context, binStrategy) => ({ ...context, binStrategy }),\n )(\n bindResult<object, ValidatedDataset, { readonly dataset: ValidatedDataset }, HistogramError>(\n () => validateDataset(input.data),\n (_, dataset) => ({ dataset }),\n )(ok({})),\n )\n}\n\nconst isValidD3Bin = (bin: Bin<number, number>) =>\n allPass([\n (candidate: Bin<number, number>) => Number.isFinite(candidate.x0),\n (candidate: Bin<number, number>) => Number.isFinite(candidate.x1),\n (candidate: Bin<number, number>) => Number(candidate.x0) < Number(candidate.x1),\n ])(bin)\n\nconst createHistogramBin = (bin: Bin<number, number>): HistogramBin => ({\n lowerBound: Number(bin.x0),\n upperBound: Number(bin.x1),\n count: bin.length,\n})\n\nconst hasZeroWidthDataset = (dataset: ValidatedDataset) => isZeroWidthExtent(getExtent(dataset))\n\nconst computeZeroWidthAutoBins = (dataset: ValidatedDataset) =>\n createD3Bin<number, number>()\n .domain(expandZeroWidthExtent(getExtent(dataset)))\n .thresholds([])([...dataset])\n\nconst computeRegularAutoBins = (\n dataset: ValidatedDataset,\n binStrategy: ValidatedAutoBinStrategy,\n) =>\n createD3Bin<number, number>()\n .domain(expandZeroWidthExtent(getExtent(dataset)))\n .thresholds(binStrategy.binCount)([...dataset])\n\nconst computeAutoBins = (\n dataset: ValidatedDataset,\n binStrategy: ValidatedAutoBinStrategy,\n) =>\n ifElse(\n hasZeroWidthDataset,\n computeZeroWidthAutoBins,\n (validDataset: ValidatedDataset) => computeRegularAutoBins(validDataset, binStrategy),\n )(dataset)\n\nconst computeManualBins = (\n dataset: ValidatedDataset,\n binStrategy: ValidatedManualBinStrategy,\n) =>\n createD3Bin<number, number>()\n .domain(getManualDomain(binStrategy.thresholds))\n .thresholds(getInteriorThresholds(binStrategy.thresholds))([...dataset])\n\nconst computeD3Bins = (input: ValidatedHistogramInput) =>\n matchValidatedBinStrategy(input.binStrategy, {\n auto: (strategy) => computeAutoBins(input.dataset, strategy),\n manual: (strategy) => computeManualBins(input.dataset, strategy),\n })\n\nconst computeBins = (input: ValidatedHistogramInput) =>\n map(createHistogramBin, filter(isValidD3Bin, computeD3Bins(input)))\n\nexport function computeHistogram(input: HistogramInput): HistogramResult {\n return mapResult<ValidatedHistogramInput, readonly HistogramBin[], HistogramError>(computeBins)(\n validateHistogramInput(input),\n )\n}\n","import { max, scaleLinear } from 'd3'\n\nimport { withNumberDefault } from '../shared'\nimport { head, last, map, prop } from '../shared/fp'\n\nimport type { HistogramBin } from './HistogramChart.types'\n\nexport const HISTOGRAM_CHART_MARGIN = {\n top: 20,\n right: 16,\n bottom: 32,\n left: 32,\n}\n\nexport type RenderedHistogramBin = HistogramBin & {\n readonly x: number\n readonly y: number\n readonly width: number\n readonly height: number\n readonly label: string\n}\n\nexport type HistogramChartModel = {\n readonly plotBottom: number\n readonly xTicks: readonly number[]\n readonly yTicks: readonly number[]\n readonly bars: readonly RenderedHistogramBin[]\n readonly xScale: (value: number) => number\n readonly yScale: (value: number) => number\n}\n\nconst getFirstLowerBound = (bins: readonly HistogramBin[]) =>\n withNumberDefault(0)(head([...bins])?.lowerBound)\n\nconst getLastUpperBound = (bins: readonly HistogramBin[]) =>\n withNumberDefault(1)(last([...bins])?.upperBound)\n\nconst getMaxCount = (bins: readonly HistogramBin[]) =>\n withNumberDefault(0)(max(map(prop('count'), [...bins])))\n\nexport const buildHistogramChartModel = (\n bins: readonly HistogramBin[],\n width: number,\n height: number,\n formatBinLabel: (bin: HistogramBin) => string,\n): HistogramChartModel => {\n const plotBottom = height - HISTOGRAM_CHART_MARGIN.bottom\n const xScale = scaleLinear()\n .domain([getFirstLowerBound(bins), getLastUpperBound(bins)])\n .range([HISTOGRAM_CHART_MARGIN.left, width - HISTOGRAM_CHART_MARGIN.right])\n const yScale = scaleLinear()\n .domain([0, getMaxCount(bins)])\n .nice()\n .range([plotBottom, HISTOGRAM_CHART_MARGIN.top])\n const toBar = (bin: HistogramBin): RenderedHistogramBin => {\n const x = xScale(bin.lowerBound)\n const barWidth = Math.max(0, xScale(bin.upperBound) - x)\n const y = yScale(bin.count)\n\n return {\n ...bin,\n x,\n y,\n width: barWidth,\n height: plotBottom - y,\n label: formatBinLabel(bin),\n }\n }\n\n return {\n plotBottom,\n xTicks: xScale.ticks(Math.min(6, bins.length + 1)),\n yTicks: yScale.ticks(4),\n bars: map(toBar, [...bins]),\n xScale,\n yScale,\n }\n}\n","import { matchOption } from '@/shared'\n\nimport type { HistogramChartProps } from '../HistogramChart.types'\n\nexport function HistogramChartCaption({ caption }: Pick<HistogramChartProps, 'caption'>) {\n return matchOption(caption, {\n none: () => null,\n some: (value) => (\n <figcaption className=\"pristine-histogram-chart__caption\">{value}</figcaption>\n ),\n })\n}\n","import { HISTOGRAM_CHART_MARGIN } from '../HistogramChart.model'\nimport type { HistogramChartModel } from '../HistogramChart.model'\n\ntype HistogramChartAxesProps = {\n readonly chart: HistogramChartModel\n readonly width: number\n}\n\nexport function HistogramChartAxes({ chart, width }: HistogramChartAxesProps) {\n return (\n <>\n <line\n className=\"pristine-histogram-chart__axis\"\n x1={HISTOGRAM_CHART_MARGIN.left}\n x2={width - HISTOGRAM_CHART_MARGIN.right}\n y1={chart.plotBottom}\n y2={chart.plotBottom}\n />\n <line\n className=\"pristine-histogram-chart__axis\"\n x1={HISTOGRAM_CHART_MARGIN.left}\n x2={HISTOGRAM_CHART_MARGIN.left}\n y1={HISTOGRAM_CHART_MARGIN.top}\n y2={chart.plotBottom}\n />\n </>\n )\n}\n","import { ifElse } from '@/shared/fp'\n\nimport type { RenderedHistogramBin } from '../HistogramChart.model'\n\ntype HistogramChartBarProps = {\n readonly bar: RenderedHistogramBin\n}\n\nconst getHitAreaY = ifElse(\n (bar: RenderedHistogramBin) => bar.height > 0,\n (bar: RenderedHistogramBin) => bar.y,\n (bar: RenderedHistogramBin) => bar.y - 8,\n)\n\nexport function HistogramChartBar({ bar }: HistogramChartBarProps) {\n return (\n <>\n <rect\n className=\"pristine-histogram-chart__bar\"\n x={bar.x}\n y={bar.y}\n width={bar.width}\n height={bar.height}\n aria-hidden=\"true\"\n />\n <rect\n className=\"pristine-histogram-chart__bar-hit-area\"\n x={bar.x}\n y={getHitAreaY(bar)}\n width={bar.width}\n height={Math.max(bar.height, 8)}\n aria-hidden=\"true\"\n />\n </>\n )\n}\n","import { HISTOGRAM_CHART_MARGIN } from '../HistogramChart.model'\nimport type { RenderedHistogramBin } from '../HistogramChart.model'\n\ntype HistogramChartCountLabelProps = {\n readonly bar: RenderedHistogramBin\n}\n\nexport function HistogramChartCountLabel({ bar }: HistogramChartCountLabelProps) {\n return (\n <text\n className=\"pristine-histogram-chart__count\"\n x={bar.x + bar.width / 2}\n y={Math.max(HISTOGRAM_CHART_MARGIN.top + 10, bar.y - 6)}\n textAnchor=\"middle\"\n >\n {bar.count}\n </text>\n )\n}\n","import type { KeyboardEvent } from 'react'\n\nimport { classNames } from '@/shared'\nimport type { RenderedHistogramBin } from '../HistogramChart.model'\nimport { always, ifElse } from '@/shared/fp'\n\nimport { HistogramChartBar } from './HistogramChartBar'\nimport { HistogramChartCountLabel } from './HistogramChartCountLabel'\n\ntype HistogramChartBinProps = {\n readonly active: boolean\n readonly bar: RenderedHistogramBin\n readonly onActivate: () => void\n readonly onDeactivate: () => void\n readonly showCounts: boolean\n}\n\nexport function HistogramChartBin({\n active,\n bar,\n onActivate,\n onDeactivate,\n showCounts,\n}: HistogramChartBinProps) {\n const renderCountLabel = ifElse(\n always(showCounts),\n () => <HistogramChartCountLabel bar={bar} />,\n always(null),\n )\n const activeClassName = ifElse(\n always(active),\n always('pristine-histogram-chart__bin--active'),\n always(''),\n )(active)\n const accessibleLabel = `${bar.label}: ${bar.count}`\n const handleKeyDown = (event: KeyboardEvent<SVGGElement>) =>\n ifElse(\n (candidate: KeyboardEvent<SVGGElement>) => candidate.key === 'Escape',\n () => onDeactivate(),\n always(undefined),\n )(event)\n\n return (\n <g\n className={classNames([\n 'pristine-histogram-chart__bin',\n activeClassName,\n ])}\n role=\"img\"\n aria-label={accessibleLabel}\n tabIndex={0}\n onBlur={onDeactivate}\n onClick={onActivate}\n onFocus={onActivate}\n onKeyDown={handleKeyDown}\n onMouseEnter={onActivate}\n onMouseLeave={onDeactivate}\n >\n <HistogramChartBar bar={bar} />\n {renderCountLabel()}\n </g>\n )\n}\n","import type { HistogramChartModel } from '../HistogramChart.model'\n\nimport { HistogramChartBin } from './HistogramChartBin'\n\ntype HistogramChartBinsProps = {\n readonly activeBin: string | null\n readonly chart: HistogramChartModel\n readonly onActivate: (bin: string) => void\n readonly onDeactivate: () => void\n readonly showCounts: boolean\n}\n\nconst getBinKey = (bar: HistogramChartModel['bars'][number]) =>\n `${bar.lowerBound}:${bar.upperBound}`\n\nexport function HistogramChartBins({\n activeBin,\n chart,\n onActivate,\n onDeactivate,\n showCounts,\n}: HistogramChartBinsProps) {\n return chart.bars.map((bar) => {\n const binKey = getBinKey(bar)\n\n return (\n <HistogramChartBin\n active={activeBin === binKey}\n bar={bar}\n key={binKey}\n onActivate={() => onActivate(binKey)}\n onDeactivate={onDeactivate}\n showCounts={showCounts}\n />\n )\n })\n}\n","import { HISTOGRAM_CHART_MARGIN } from '../HistogramChart.model'\nimport type { HistogramChartModel } from '../HistogramChart.model'\n\ntype HistogramChartGridLinesProps = {\n readonly chart: HistogramChartModel\n readonly width: number\n}\n\nexport function HistogramChartGridLines({ chart, width }: HistogramChartGridLinesProps) {\n return chart.yTicks.map((tick) => (\n <g className=\"pristine-histogram-chart__grid-line\" key={tick}>\n <line\n x1={HISTOGRAM_CHART_MARGIN.left}\n x2={width - HISTOGRAM_CHART_MARGIN.right}\n y1={chart.yScale(tick)}\n y2={chart.yScale(tick)}\n />\n <text x={HISTOGRAM_CHART_MARGIN.left - 8} y={chart.yScale(tick)} textAnchor=\"end\">\n {tick}\n </text>\n </g>\n ))\n}\n","import { HISTOGRAM_CHART_MARGIN } from '../HistogramChart.model'\nimport type { HistogramChartModel } from '../HistogramChart.model'\n\ntype HistogramChartPlotAreaProps = {\n readonly chart: HistogramChartModel\n readonly width: number\n}\n\nexport function HistogramChartPlotArea({ chart, width }: HistogramChartPlotAreaProps) {\n return (\n <rect\n className=\"pristine-histogram-chart__plot\"\n x={HISTOGRAM_CHART_MARGIN.left}\n y={HISTOGRAM_CHART_MARGIN.top}\n width={width - HISTOGRAM_CHART_MARGIN.left - HISTOGRAM_CHART_MARGIN.right}\n height={chart.plotBottom - HISTOGRAM_CHART_MARGIN.top}\n />\n )\n}\n","import { HISTOGRAM_CHART_MARGIN } from '../HistogramChart.model'\nimport type { RenderedHistogramBin } from '../HistogramChart.model'\n\ntype HistogramChartTooltipProps = {\n readonly bar: RenderedHistogramBin\n readonly height: number\n readonly width: number\n}\n\nconst TOOLTIP_HEIGHT = 22\nconst TOOLTIP_MIN_WIDTH = 30\nconst TOOLTIP_PADDING_X = 8\nconst TOOLTIP_CHAR_WIDTH = 7\nconst VIEWBOX_PADDING = 4\n\nconst getTooltipWidth = (label: string) =>\n Math.max(TOOLTIP_MIN_WIDTH, label.length * TOOLTIP_CHAR_WIDTH + TOOLTIP_PADDING_X * 2)\n\nconst clamp = (minimum: number, maximum: number, value: number) =>\n Math.min(Math.max(value, minimum), maximum)\n\nexport function HistogramChartTooltip({\n bar,\n height,\n width,\n}: HistogramChartTooltipProps) {\n const label = String(bar.count)\n const tooltipWidth = getTooltipWidth(label)\n const labelY = Math.max(HISTOGRAM_CHART_MARGIN.top + 10, bar.y - 6)\n const x = clamp(\n VIEWBOX_PADDING,\n width - tooltipWidth - VIEWBOX_PADDING,\n bar.x + bar.width / 2 - tooltipWidth / 2,\n )\n const y = clamp(\n VIEWBOX_PADDING,\n height - TOOLTIP_HEIGHT - VIEWBOX_PADDING,\n labelY - TOOLTIP_HEIGHT / 2,\n )\n\n return (\n <g className=\"pristine-histogram-chart__tooltip\" aria-hidden=\"true\">\n <rect\n className=\"pristine-histogram-chart__tooltip-background\"\n x={x}\n y={y}\n width={tooltipWidth}\n height={TOOLTIP_HEIGHT}\n rx={4}\n />\n <text\n className=\"pristine-histogram-chart__tooltip-text\"\n x={x + tooltipWidth / 2}\n y={y + TOOLTIP_HEIGHT / 2}\n textAnchor=\"middle\"\n >\n {label}\n </text>\n </g>\n )\n}\n","import { none } from '../shared'\nimport { ifElse } from '../shared/fp'\n\nimport { DEFAULT_HISTOGRAM_BIN_STRATEGY } from './HistogramChart.domain'\nimport type { HistogramBin, HistogramChartProps } from './HistogramChart.types'\n\nexport const formatIntegerOrDecimal = ifElse(\n Number.isInteger,\n String,\n (value: number) => value.toFixed(2).replace(/\\.?0+$/, ''),\n)\n\nexport const formatDefaultBinLabel = (bin: HistogramBin) =>\n `${formatIntegerOrDecimal(bin.lowerBound)}-${formatIntegerOrDecimal(bin.upperBound)}`\n\nexport const DEFAULT_HISTOGRAM_CHART_VIEW_PROPS = {\n binStrategy: DEFAULT_HISTOGRAM_BIN_STRATEGY,\n width: 480,\n height: 260,\n ariaLabel: 'Histogram chart',\n className: '',\n caption: none,\n showCounts: false,\n formatBinLabel: formatDefaultBinLabel,\n} satisfies Omit<HistogramChartProps, 'data'>\n","import { formatIntegerOrDecimal } from '../HistogramChart.defaults'\nimport type { HistogramChartModel } from '../HistogramChart.model'\n\ntype HistogramChartXTicksProps = {\n readonly chart: HistogramChartModel\n readonly height: number\n}\n\nexport function HistogramChartXTicks({ chart, height }: HistogramChartXTicksProps) {\n return chart.xTicks.map((tick) => (\n <g className=\"pristine-histogram-chart__tick\" key={tick}>\n <line\n x1={chart.xScale(tick)}\n x2={chart.xScale(tick)}\n y1={chart.plotBottom}\n y2={chart.plotBottom + 4}\n />\n <text x={chart.xScale(tick)} y={height - 10} textAnchor=\"middle\">\n {formatIntegerOrDecimal(tick)}\n </text>\n </g>\n ))\n}\n","import { useState } from 'react'\n\nimport type { HistogramChartModel } from '../HistogramChart.model'\nimport type { HistogramChartProps } from '../HistogramChart.types'\n\nimport { HistogramChartAxes } from './HistogramChartAxes'\nimport { HistogramChartBins } from './HistogramChartBins'\nimport { HistogramChartGridLines } from './HistogramChartGridLines'\nimport { HistogramChartPlotArea } from './HistogramChartPlotArea'\nimport { HistogramChartTooltip } from './HistogramChartTooltip'\nimport { HistogramChartXTicks } from './HistogramChartXTicks'\n\ntype HistogramChartSvgProps = Pick<HistogramChartProps, 'ariaLabel' | 'height' | 'showCounts' | 'width'> & {\n readonly chart: HistogramChartModel\n}\n\nconst getBinKey = (bar: HistogramChartModel['bars'][number]) =>\n `${bar.lowerBound}:${bar.upperBound}`\n\nexport function HistogramChartSvg({\n ariaLabel,\n chart,\n height,\n showCounts,\n width,\n}: HistogramChartSvgProps) {\n const [activeBin, setActiveBin] = useState<string | null>(null)\n const activeBars = chart.bars.filter((bar) => getBinKey(bar) === activeBin)\n\n return (\n <svg\n className=\"pristine-histogram-chart__svg\"\n viewBox={`0 0 ${width} ${height}`}\n role=\"img\"\n aria-label={ariaLabel}\n >\n <HistogramChartPlotArea chart={chart} width={width} />\n <HistogramChartGridLines chart={chart} width={width} />\n <HistogramChartAxes chart={chart} width={width} />\n <HistogramChartBins\n activeBin={activeBin}\n chart={chart}\n onActivate={setActiveBin}\n onDeactivate={() => setActiveBin(null)}\n showCounts={showCounts}\n />\n <HistogramChartXTicks chart={chart} height={height} />\n {activeBars.map((bar) => (\n <HistogramChartTooltip\n key={getBinKey(bar)}\n bar={bar}\n height={height}\n width={width}\n />\n ))}\n </svg>\n )\n}\n","import { classNames } from '@/shared'\n\nimport type { HistogramChartModel } from '../HistogramChart.model'\nimport type { HistogramChartProps } from '../HistogramChart.types'\n\nimport { HistogramChartCaption } from './HistogramChartCaption'\nimport { HistogramChartSvg } from './HistogramChartSvg'\n\ntype HistogramChartFigureProps = Pick<\n HistogramChartProps,\n 'ariaLabel' | 'caption' | 'className' | 'height' | 'showCounts' | 'width'\n> & {\n readonly chart: HistogramChartModel\n}\n\nexport function HistogramChartFigure({\n ariaLabel,\n caption,\n chart,\n className,\n height,\n showCounts,\n width,\n}: HistogramChartFigureProps) {\n return (\n <figure className={classNames(['pristine-histogram-chart', className])} aria-label={ariaLabel}>\n <HistogramChartSvg\n ariaLabel={ariaLabel}\n chart={chart}\n height={height}\n showCounts={showCounts}\n width={width}\n />\n <HistogramChartCaption caption={caption} />\n </figure>\n )\n}\n","import { useMemo } from 'react'\n\nimport { ChartError } from '../chart-error'\nimport { classNames, matchResult } from '../shared'\n\nimport { computeHistogram } from './HistogramChart.domain'\nimport { buildHistogramChartModel } from './HistogramChart.model'\nimport { HistogramChartFigure } from './components/HistogramChartFigure'\nimport type { HistogramChartProps } from './HistogramChart.types'\n\nexport function HistogramChart({\n data,\n binStrategy,\n width,\n height,\n ariaLabel,\n className,\n caption,\n showCounts,\n formatBinLabel,\n}: HistogramChartProps) {\n const result = useMemo(\n () => computeHistogram({ data, binStrategy }),\n [binStrategy, data],\n )\n\n return matchResult(result, {\n error: (error) => (\n <ChartError\n className={classNames(['pristine-histogram-chart__error', className])}\n title=\"Chart unavailable\"\n message={error.message}\n details={error.details}\n role=\"alert\"\n />\n ),\n ok: (bins) => {\n const chart = buildHistogramChartModel(bins, width, height, formatBinLabel)\n\n return (\n <HistogramChartFigure\n ariaLabel={ariaLabel}\n caption={caption}\n chart={chart}\n className={className}\n height={height}\n showCounts={showCounts}\n width={width}\n />\n )\n },\n })\n}\n"]}