UNPKG

@visactor/vscale

Version:

Scales for visual encoding, used in VGrammar, VTable

41 lines (35 loc) 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.stepTicks = exports.ticks = void 0; const vutils_1 = require("@visactor/vutils"); function generateTicks(start, stop, step, reverse) { const ticks = []; let ptr = start; for (;ptr <= stop; ) ticks.push(ptr), ptr += step; return reverse && ticks.reverse(), ticks; } function ticks(start, stop, count, allowExcessive) { let reverse, step; if (stop = Math.floor(+stop), start = Math.floor(+start), !(count = Math.floor(+count))) return []; if (start === stop) return [ start ]; if (reverse = stop < start) { const n = start; start = stop, stop = n; } let expectedCount = (0, vutils_1.clamper)(1, stop - start + 1)(count); if (step = Math.floor((stop - start + 1) / expectedCount), !allowExcessive) for (;Math.ceil((stop - start + 1) / step) > count && expectedCount > 1; ) expectedCount -= 1, step = Math.floor((stop - start) / expectedCount); return generateTicks(start, stop, step, reverse); } function stepTicks(start, stop, step) { let reverse; if (stop = Math.floor(+stop), start = Math.floor(+start), step = (0, vutils_1.clamper)(1, stop - start + 1)(Math.floor(+step)), reverse = stop < start) { const n = start; start = stop, stop = n; } return generateTicks(start, stop, step, reverse); } exports.ticks = ticks, exports.stepTicks = stepTicks; //# sourceMappingURL=tick-sample-int.js.map