--- custom position docs/tests ---
src/helpers/helpers.extras.js:64: * Converts 'start' to 'left', 'end' to 'right' and others to 'center'
src/helpers/helpers.extras.js:65: * @param {string} align start, end, center
src/helpers/helpers.extras.js:68:export const _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';
src/helpers/helpers.extras.js:71: * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`
src/helpers/helpers.extras.js:72: * @param {string} align start, end, center
src/helpers/helpers.extras.js:81: * @param {string} align start, end, center
src/helpers/helpers.extras.js:86:export const _textX = (align, left, right) => align === 'right' ? right : align === 'center' ? (left + right) / 2 : left;
src/helpers/helpers.rtl.js:10:      if (align === 'center') {
src/scales/scale.radialLinear.js:157:    } else if (textAlign === 'center') {
src/scales/scale.radialLinear.js:184:    return 'center';
src/scales/scale.radialLinear.js:194:    position.y -= (textSize.h / 2);
src/scales/scale.radialLinear.js:196:    position.y -= textSize.h;
src/scales/scale.radialLinear.js:345:    * Set radius reductions and determine new radius and center point
src/scales/scale.radialLinear.js:501:        ctx.lineTo(position.x, position.y);
src/scales/scale.radialLinear.js:528:    ctx.textAlign = 'center';
src/controllers/controller.polarArea.js:46:    const centerX = scale.xCenter;
src/controllers/controller.polarArea.js:47:    const centerY = scale.yCenter;
src/controllers/controller.polarArea.js:74:        x: centerX,
src/controllers/controller.polarArea.js:75:        y: centerY,
src/controllers/controller.doughnut.js:161:    const centerX = (chartArea.left + chartArea.right) / 2;
src/controllers/controller.doughnut.js:162:    const centerY = (chartArea.top + chartArea.bottom) / 2;
src/controllers/controller.doughnut.js:180:        x: centerX + me.offsetX,
src/controllers/controller.doughnut.js:181:        y: centerY + me.offsetY,
src/controllers/controller.bar.js:275:        x: horizontal ? vpixels.head : ipixels.center,
src/controllers/controller.bar.js:276:        y: horizontal ? ipixels.center : vpixels.head,
src/controllers/controller.bar.js:466:      center: head + size / 2
src/controllers/controller.bar.js:478:    let center, size;
src/controllers/controller.bar.js:486:      center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);
src/controllers/controller.bar.js:490:      center = scale.getPixelForValue(me.getParsed(index)[scale.axis], index);
src/controllers/controller.bar.js:495:      base: center - size / 2,
src/controllers/controller.bar.js:496:      head: center + size / 2,
src/controllers/controller.bar.js:497:      center,
src/plugins/plugin.legend.js:328:        // x and y to be center of figure (instead of top left)
src/plugins/plugin.legend.js:335:        const centerX = rtlHelper.xPlus(x, boxWidth / 2);
src/plugins/plugin.legend.js:336:        const centerY = y + halfFontSize;
src/plugins/plugin.legend.js:339:        drawPoint(ctx, drawOptions, centerX, centerY);
src/plugins/plugin.legend.js:342:        // Adjust position when boxHeight < fontSize (want it centered)
src/plugins/plugin.legend.js:464:    const x = _alignStartEnd(position, left, left + maxWidth);
src/plugins/plugin.legend.js:598:    align: 'center',
src/plugins/plugin.legend.js:667:      position: 'center',
src/plugins/plugin.title.js:148:    align: 'center',
src/plugins/plugin.filler.js:139:  let i, center, value;
src/plugins/plugin.filler.js:152:    center = scale.getPointPositionForValue(0, start);
src/plugins/plugin.filler.js:154:      x: center.x,
src/plugins/plugin.filler.js:155:      y: center.y,
src/plugins/plugin.tooltip.js:62:        const center = el.getCenterPoint();
src/plugins/plugin.tooltip.js:63:        const d = distanceBetweenPoints(eventPosition, center);
src/plugins/plugin.tooltip.js:222:  return 'center';
src/plugins/plugin.tooltip.js:240:  let xAlign = 'center';
src/plugins/plugin.tooltip.js:242:  if (yAlign === 'center') {
src/plugins/plugin.tooltip.js:251:    xAlign = 'center';
src/plugins/plugin.tooltip.js:273:  } else if (xAlign === 'center') {
src/plugins/plugin.tooltip.js:304:  if (yAlign === 'center') {
src/plugins/plugin.tooltip.js:325:  return align === 'center'
src/plugins/plugin.tooltip.js:564:        caretX: position.x,
src/plugins/plugin.tooltip.js:565:        caretY: position.y
src/plugins/plugin.tooltip.js:596:    if (yAlign === 'center') {
src/plugins/plugin.tooltip.js:698:      // x and y to be center of figure (instead of top left)
src/plugins/plugin.tooltip.js:699:      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;
src/plugins/plugin.tooltip.js:700:      const centerY = colorY + boxHeight / 2;
src/plugins/plugin.tooltip.js:705:      drawPoint(ctx, drawOptions, centerX, centerY);
src/plugins/plugin.tooltip.js:710:      drawPoint(ctx, drawOptions, centerX, centerY);
src/plugins/plugin.tooltip.js:759:      ? bodyAlign === 'center' ? (boxWidth / 2 + 1) : (boxWidth + 2)
src/plugins/plugin.tooltip.js:839:    if (yAlign === 'center' && xAlign === 'right') {
src/plugins/plugin.tooltip.js:849:    if (yAlign === 'center' && xAlign === 'left') {
src/plugins/plugin.tooltip.js:887:        me.caretX = position.x;
src/plugins/plugin.tooltip.js:888:        me.caretY = position.y;
src/plugins/plugin.tooltip.js:1009:    // an update may need to be made because our position may have changed even though
src/plugins/plugin.tooltip.js:1043:    return me.caretX !== position.x || me.caretY !== position.y;
src/core/core.ticks.js:24:   * @param index {number} the position of the tickValue parameter in the ticks array
src/core/core.ticks.js:61:   * @param index {number} the position of the tickValue parameter in the ticks array
src/core/core.layouts.js:68:  const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');
src/core/core.layouts.js:69:  const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');
src/core/core.layouts.js:74:    rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),
src/core/core.layouts.js:76:    vertical: left.concat(right).concat(centerVertical),
src/core/core.layouts.js:77:    horizontal: top.concat(bottom).concat(centerHorizontal)
src/core/core.layouts.js:226: * @prop {string} position - The position of the item in the chart layout. Possible values are
src/core/core.controller.js:21:function positionIsHorizontal(position, axis) {
src/core/core.controller.js:22:  return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');
src/core/core.controller.js:320:      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {
src/core/core.interaction.js:91:  const value = position[axis];
src/core/core.interaction.js:128:function getIntersectItems(chart, position, axis, useFinalPosition) {
src/core/core.interaction.js:136:    if (element.inRange(position.x, position.y, useFinalPosition)) {
src/core/core.interaction.js:154:function getNearestItems(chart, position, axis, intersect, useFinalPosition) {
src/core/core.interaction.js:164:    if (intersect && !element.inRange(position.x, position.y, useFinalPosition)) {
src/core/core.interaction.js:168:    const center = element.getCenterPoint(useFinalPosition);
src/core/core.interaction.js:169:    const distance = distanceMetric(position, center);
src/core/core.interaction.js:191:    if (element[rangeMethod](position[axis], useFinalPosition)) {
src/core/core.interaction.js:195:    if (element.inRange(position.x, position.y, useFinalPosition)) {
src/core/core.interaction.js:231:        ? getIntersectItems(chart, position, axis, useFinalPosition)
src/core/core.interaction.js:232:        : getNearestItems(chart, position, axis, false, useFinalPosition);
src/core/core.interaction.js:266:        ? getIntersectItems(chart, position, axis, useFinalPosition) :
src/core/core.interaction.js:267:        getNearestItems(chart, position, axis, false, useFinalPosition);
src/core/core.interaction.js:294:      return getIntersectItems(chart, position, axis, useFinalPosition);
src/core/core.interaction.js:309:      return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);
src/core/core.scale.defaults.js:72:    align: 'center',
src/core/core.scale.js:420:    // Here we haven't been positioned yet, but dimensions are correct.
src/core/core.scale.js:671:    const labelsBelowTicks = position !== 'top' && me.axis === 'x';
src/core/core.scale.js:742:    return position === 'top' || position === 'bottom' || axis === 'x';
src/core/core.scale.js:1034:      if (position === 'center') {
src/core/core.scale.js:1037:        const positionAxisID = Object.keys(position)[0];
src/core/core.scale.js:1038:        const value = position[positionAxisID];
src/core/core.scale.js:1039:        borderValue = alignBorderValue(me.chart.scales[positionAxisID].getPixelForValue(value));
src/core/core.scale.js:1047:      if (position === 'center') {
src/core/core.scale.js:1050:        const positionAxisID = Object.keys(position)[0];
src/core/core.scale.js:1051:        const value = position[positionAxisID];
src/core/core.scale.js:1052:        borderValue = alignBorderValue(me.chart.scales[positionAxisID].getPixelForValue(value));
src/core/core.scale.js:1135:      textAlign = me._getXAxisLabelAlignment();
src/core/core.scale.js:1138:      textAlign = me._getXAxisLabelAlignment();
src/core/core.scale.js:1140:      const ret = this._getYAxisLabelAlignment(tl);
src/core/core.scale.js:1144:      const ret = this._getYAxisLabelAlignment(tl);
src/core/core.scale.js:1148:      if (position === 'center') {
src/core/core.scale.js:1151:        const positionAxisID = Object.keys(position)[0];
src/core/core.scale.js:1152:        const value = position[positionAxisID];
src/core/core.scale.js:1153:        y = me.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;
src/core/core.scale.js:1155:      textAlign = me._getXAxisLabelAlignment();
src/core/core.scale.js:1157:      if (position === 'center') {
src/core/core.scale.js:1160:        const positionAxisID = Object.keys(position)[0];
src/core/core.scale.js:1161:        const value = position[positionAxisID];
src/core/core.scale.js:1162:        x = me.chart.scales[positionAxisID].getPixelForValue(value);
src/core/core.scale.js:1164:      textAlign = this._getYAxisLabelAlignment(tl).textAlign;
src/core/core.scale.js:1195:          } else if (crossAlign === 'center') {
src/core/core.scale.js:1204:          } else if (crossAlign === 'center') {
src/core/core.scale.js:1232:  _getXAxisLabelAlignment() {
src/core/core.scale.js:1241:    let align = 'center';
src/core/core.scale.js:1252:  _getYAxisLabelAlignment(tl) {
src/core/core.scale.js:1271:        } else if (crossAlign === 'center') {
src/core/core.scale.js:1272:          textAlign = 'center';
src/core/core.scale.js:1288:        } else if (crossAlign === 'center') {
src/core/core.scale.js:1289:          textAlign = 'center';
src/elements/element.line.js:161:      // Draw line to next x-position, using the first (or only)
src/elements/element.arc.js:43:  // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.
src/elements/element.arc.js:63: * @param {number} r Radius from center point
src/elements/element.arc.js:332:  borderAlign: 'center',
test/fixtures/controller.doughnut/event-replay.js:1:function drawMousePoint(ctx, center) {
test/fixtures/controller.doughnut/event-replay.js:3:  ctx.arc(center.x, center.y, 8, 0, Math.PI * 2);
test/fixtures/controller.doughnut/event-replay.js:33:      const center = arc.getCenterPoint();
test/fixtures/controller.doughnut/event-replay.js:35:      drawMousePoint(chart.ctx, center);
test/fixtures/controller.doughnut/event-replay.js:40:      drawMousePoint(chart.ctx, center);
test/fixtures/controller.doughnut/borderAlign/indexable.js:11:            'center',
test/fixtures/controller.doughnut/borderAlign/indexable.js:13:            'center',
test/fixtures/controller.doughnut/borderAlign/indexable.js:15:            'center',
test/fixtures/controller.doughnut/borderAlign/indexable.js:33:            'center',
test/fixtures/controller.doughnut/borderAlign/indexable.js:35:            'center',
test/fixtures/controller.doughnut/borderAlign/indexable.js:37:            'center',
test/fixtures/controller.doughnut/borderAlign/scriptable.js:12:            return value > 4 ? 'inner' : 'center';
test/fixtures/controller.doughnut/borderAlign/scriptable.js:30:            return value > 4 ? 'center' : 'inner';
test/fixtures/controller.doughnut/borderAlign/value.js:23:          borderAlign: 'center',
test/fixtures/plugin.legend/legend-doughnut-left-center-single.json:16:                                 "align": "center"
test/fixtures/plugin.legend/legend-doughnut-top-center-mulitiline.json:16:                                      "align": "center"
test/fixtures/plugin.legend/label-textAlign/center.js:17:            textAlign: 'center'
test/fixtures/plugin.legend/label-textAlign/rtl-center.js:18:            textAlign: 'center'
test/fixtures/plugin.legend/legend-doughnut-right-center-single.json:16:                                        "align": "center"
test/fixtures/plugin.legend/legend-doughnut-top-center-single.json:16:                                  "align": "center"
test/fixtures/plugin.legend/title/top-center-center.js:15:          align: 'center',
test/fixtures/plugin.legend/title/top-center-center.js:18:            position: 'center',
test/fixtures/plugin.legend/title/right-center-center.js:15:          align: 'center',
test/fixtures/plugin.legend/title/right-center-center.js:18:            position: 'center',
test/fixtures/plugin.legend/title/left-center-center.js:15:          align: 'center',
test/fixtures/plugin.legend/title/left-center-center.js:18:            position: 'center',
test/fixtures/plugin.legend/title/bottom-center-center.js:15:          align: 'center',
test/fixtures/plugin.legend/title/bottom-center-center.js:18:            position: 'center',
test/fixtures/plugin.legend/legend-doughnut-bottom-center-mulitiline.json:16:                                   "align": "center"
test/fixtures/plugin.legend/legend-doughnut-bottom-center-single.json:16:                                       "align": "center"
test/fixtures/plugin.legend/legend-doughnut-right-center-mulitiline.json:16:                                    "align": "center"
test/fixtures/plugin.legend/legend-doughnut-left-center-mulitiline.json:16:                                     "align": "center"
test/fixtures/controller.polarArea/borderAlign/scriptable-element-options.js:21:            return value > 4 ? 'center' : 'inner';
test/fixtures/controller.polarArea/borderAlign/indexable-da<response clipped><NOTE>Due to the max output limit, only part of the full response has been shown to you.</NOTE>nt.size / 2 - padding.top,
src/scales/scale.radialLinear.js:548:          width + padding.width,
src/scales/scale.radialLinear.js:549:          tickFont.size + padding.height
src/scales/scale.radialLinear.js:564:  drawTitle() {}
src/scales/scale.radialLinear.js:600:    // Number/Object - The backdrop padding of the label in pixels
src/scales/scale.radialLinear.js:609:    // Number - The backdrop padding above & below the label in pixels
src/scales/scale.radialLinear.js:625:    // Number - Additionl padding between scale and pointLabel
src/scales/scale.radialLinear.js:626:    padding: 5
src/controllers/controller.bar.js:3:  clipArea, unclipArea, _arrayUnique, isArray, isNullOrUndef,
src/controllers/controller.bar.js:39:    curr = scale.getPixelForTick(i);
src/controllers/controller.bar.js:260:    const horizontal = vScale.isHorizontal();
src/controllers/controller.bar.js:511:    clipArea(chart.ctx, chart.chartArea);
src/controllers/controller.bar.js:519:    unclipArea(chart.ctx);
src/plugins/plugin.legend.js:8:  clipArea, unclipArea
src/plugins/plugin.legend.js:82:    me.fit();
src/plugins/plugin.legend.js:88:    if (me.isHorizontal()) {
src/plugins/plugin.legend.js:119:  fit() {
src/plugins/plugin.legend.js:142:    if (me.isHorizontal()) {
src/plugins/plugin.legend.js:159:    const {ctx, maxWidth, options: {labels: {padding}}} = me;
src/plugins/plugin.legend.js:163:    const lineHeight = itemHeight + padding;
src/plugins/plugin.legend.js:174:      if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {
src/plugins/plugin.legend.js:183:      lineWidths[lineWidths.length - 1] += itemWidth + padding;
src/plugins/plugin.legend.js:191:    const {ctx, maxHeight, options: {labels: {padding}}} = me;
src/plugins/plugin.legend.js:196:    let totalWidth = padding;
src/plugins/plugin.legend.js:208:      if (i > 0 && currentColHeight + fontSize + 2 * padding > heightLimit) {
src/plugins/plugin.legend.js:209:        totalWidth += currentColWidth + padding;
src/plugins/plugin.legend.js:211:        left += currentColWidth + padding;
src/plugins/plugin.legend.js:219:      currentColHeight += fontSize + padding;
src/plugins/plugin.legend.js:223:      top += itemHeight + padding;
src/plugins/plugin.legend.js:238:    const {legendHitBoxes: hitboxes, options: {align, labels: {padding}}} = me;
src/plugins/plugin.legend.js:239:    if (this.isHorizontal()) {
src/plugins/plugin.legend.js:241:      let left = _alignStartEnd(align, me.left + padding, me.right - me.lineWidths[row]);
src/plugins/plugin.legend.js:245:          left = _alignStartEnd(align, me.left + padding, me.right - me.lineWidths[row]);
src/plugins/plugin.legend.js:247:        hitbox.top += me.top + titleHeight + padding;
src/plugins/plugin.legend.js:249:        left += hitbox.width + padding;
src/plugins/plugin.legend.js:253:      let top = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - me.columnSizes[col].height);
src/plugins/plugin.legend.js:257:          top = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - me.columnSizes[col].height);
src/plugins/plugin.legend.js:260:        hitbox.left += me.left + padding;
src/plugins/plugin.legend.js:261:        top += hitbox.height + padding;
src/plugins/plugin.legend.js:266:  isHorizontal() {
src/plugins/plugin.legend.js:274:      clipArea(ctx, me);
src/plugins/plugin.legend.js:278:      unclipArea(ctx);
src/plugins/plugin.legend.js:292:    const {color: fontColor, padding} = labelOpts;
src/plugins/plugin.legend.js:297:    me.drawTitle();
src/plugins/plugin.legend.js:362:    const isHorizontal = me.isHorizontal();
src/plugins/plugin.legend.js:364:    if (isHorizontal) {
src/plugins/plugin.legend.js:366:        x: _alignStartEnd(align, me.left + padding, me.right - lineWidths[0]),
src/plugins/plugin.legend.js:367:        y: me.top + padding + titleHeight,
src/plugins/plugin.legend.js:372:        x: me.left + padding,
src/plugins/plugin.legend.js:373:        y: _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - columnSizes[0].height),
src/plugins/plugin.legend.js:380:    const lineHeight = itemHeight + padding;
src/plugins/plugin.legend.js:394:      if (isHorizontal) {
src/plugins/plugin.legend.js:395:        if (i > 0 && x + width + padding > me.right) {
src/plugins/plugin.legend.js:398:          x = cursor.x = _alignStartEnd(align, me.left + padding, me.right - lineWidths[cursor.line]);
src/plugins/plugin.legend.js:401:        x = cursor.x = x + columnSizes[cursor.line].width + padding;
src/plugins/plugin.legend.js:403:        y = cursor.y = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - columnSizes[cursor.line].height);
src/plugins/plugin.legend.js:415:      if (isHorizontal) {
src/plugins/plugin.legend.js:416:        cursor.x += width + padding;
src/plugins/plugin.legend.js:428:  drawTitle() {
src/plugins/plugin.legend.js:433:    const titlePadding = toPadding(titleOpts.padding);
src/plugins/plugin.legend.js:451:    if (this.isHorizontal()) {
src/plugins/plugin.legend.js:459:      y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, me.top, me.bottom - maxHeight - opts.labels.padding - me._computeTitleHeight());
src/plugins/plugin.legend.js:482:    const titlePadding = toPadding(titleOpts.padding);
src/plugins/plugin.legend.js:622:      padding: 10,
src/plugins/plugin.title.js:17:    this._padding = undefined;
src/plugins/plugin.title.js:45:    me._padding = toPadding(opts.padding);
src/plugins/plugin.title.js:46:    const textSize = lineCount * toFont(opts.font).lineHeight + me._padding.height;
src/plugins/plugin.title.js:48:    if (me.isHorizontal()) {
src/plugins/plugin.title.js:55:  isHorizontal() {
src/plugins/plugin.title.js:66:    if (this.isHorizontal()) {
src/plugins/plugin.title.js:96:    const offset = lineHeight / 2 + me._padding.top;
src/plugins/plugin.title.js:154:    padding: 10,
src/plugins/plugin.filler.js:9:import {clipArea, unclipArea} from '../helpers/helpers.canvas';
src/plugins/plugin.filler.js:96:    horizontal = scale.isHorizontal();
src/plugins/plugin.filler.js:372:function _clip(ctx, target, clipY) {
src/plugins/plugin.filler.js:375:  ctx.lineTo(target.last().x, clipY);
src/plugins/plugin.filler.js:376:  ctx.lineTo(target.first().x, clipY);
src/plugins/plugin.filler.js:378:  ctx.clip();
src/plugins/plugin.filler.js:447:function clipBounds(ctx, scale, bounds) {
src/plugins/plugin.filler.js:453:    ctx.clip();
src/plugins/plugin.filler.js:473:    clipBounds(ctx, scale, getBounds(property, start, end));
src/plugins/plugin.filler.js:504:    _clip(ctx, target, area.top);
src/plugins/plugin.filler.js:508:    _clip(ctx, target, area.bottom);
src/plugins/plugin.filler.js:523:    clipArea(ctx, area);
src/plugins/plugin.filler.js:525:    unclipArea(ctx);
src/plugins/plugin.tooltip.js:150:  const padding = toPadding(options.padding);
src/plugins/plugin.tooltip.js:151:  let height = padding.height;
src/plugins/plugin.tooltip.js:208:  // Add padding
src/plugins/plugin.tooltip.js:209:  width += padding.width;
src/plugins/plugin.tooltip.js:279:function alignY(size, yAlign, paddingAndSize) {
src/plugins/plugin.tooltip.js:283:    y += paddingAndSize;
src/plugins/plugin.tooltip.js:285:    y -= height + paddingAndSize;
src/plugins/plugin.tooltip.js:298:  const paddingAndSize = caretSize + caretPadding;
src/plugins/plugin.tooltip.js:302:  const y = alignY(size, yAlign, paddingAndSize);
src/plugins/plugin.tooltip.js:306:      x += paddingAndSize;
src/plugins/plugin.tooltip.js:308:      x -= paddingAndSize;
src/plugins/plugin.tooltip.js:323:  const padding = toPadding(options.padding);
src/plugins/plugin.tooltip.js:328:      ? tooltip.x + tooltip.width - padding.right
src/plugins/plugin.tooltip.js:329:      : tooltip.x + padding.left;
src/plugins/plugin.tooltip.js:645:  drawTitle(pt, ctx, options) {
src/plugins/plugin.tooltip.js:917:    const padding = toPadding(options.padding);
src/plugins/plugin.tooltip.js:931:      pt.y += padding.top;
src/plugins/plugin.tooltip.js:934:      me.drawTitle(pt, ctx, options);
src/plugins/plugin.tooltip.js:1128:    padding: 6,
src/core/core.layouts.js:39:      horizontal: box.isHorizontal(),
src/core/core.layouts.js:185:  const userPadding = params.padding;
src/core/core.layouts.js:215:  padding: {
src/core/core.layouts.js:230: * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)
src/core/core.layouts.js:233: * @prop {function} [getPadding] -  Returns an object with padding on the edges
src/core/core.layouts.js:305:   * @param {number} minPadding - minimum padding required for each side of chart area
src/core/core.layouts.js:312:    const padding = toPadding(chart.options.layout.padding);
src/core/core.layouts.js:313:    const availableWidth = width - padding.width;
src/core/core.layouts.js:314:    const availableHeight = height - padding.height;
src/core/core.layouts.js:360:      padding,
src/core/core.layouts.js:366:    const maxPadding = Object.assign({}, padding);
src/core/core.layouts.js:372:      x: padding.left,
src/core/core.layouts.js:373:      y: padding.top
src/core/core.layouts.js:374:    }, padding);
src/core/core.controller.js:11:import {clearCanvas, clipArea, unclipArea, _isPointInArea} from '../helpers/helpers.canvas';
src/core/core.controller.js:304:          const isHorizontal = axis === 'x';
src/core/core.controller.js:307:            dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',
src/core/core.controller.js:308:            dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'
src/core/core.controller.js:719:    const clip = meta._clip;
src/core/core.controller.js:731:    clipArea(ctx, {
src/core/core.controller.js:732:      left: clip.left === false ? 0 : area.left - clip.left,
src/core/core.controller.js:733:      right: clip.right === false ? me.width : area.right + clip.right,
src/core/core.controller.js:734:      top: clip.top === false ? 0 : area.top - clip.top,
src/core/core.controller.js:735:      bottom: clip.bottom === false ? me.height : area.bottom + clip.bottom
src/core/core.controller.js:740:    unclipArea(ctx);
src/core/core.scale.defaults.js:29:    drawBorder: true,
src/core/core.scale.defaults.js:49:    // top/bottom padding
src/core/core.scale.defaults.js:50:    padding: {
src/core/core.scale.defaults.js:63:    padding: 3,
src/core/core.datasetController.js:645:    meta._clip = toClip(valueOrDefault(me.options.clip, defaultClip(meta.xScale, meta.yScale, me.getMaxOverflow())));
src/core/core.scale.js:2:import {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas';
src/core/core.scale.js:50:  let lineValue = scale.getPixelForTick(validIndex);
src/core/core.scale.js:57:      offset = (scale.getPixelForTick(1) - lineValue) / 2;
src/core/core.scale.js:59:      offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;
src/core/core.scale.js:105:  const padding = toPadding(options.padding);
src/core/core.scale.js:108:  return (lines * font.lineHeight) + padding.height;
src/core/core.scale.js:139:  if (scale.isHorizontal()) {
src/core/core.scale.js:192:    this.paddingTop = undefined;
src/core/core.scale.js:194:    this.paddingBottom = undefined;
src/core/core.scale.js:196:    this.paddingLeft = undefined;
src/core/core.scale.js:198:    this.paddingRight = undefined;
src/core/core.scale.js:204:    this.labelRotation = undefined;
src/core/core.scale.js:314:      * Get the padding needed for the scale
src/core/core.scale.js:315:      * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding
src/core/core.scale.js:321:      left: me.paddingLeft || 0,
src/core/core.scale.js:322:      top: me.paddingTop || 0,
src/core/core.scale.js:323:      right: me.paddingRight || 0,
src/core/core.scale.js:324:      bottom: me.paddingBottom || 0
src/core/core.scale.js:342:    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];
src/core/core.scale.js:364:      *     - padding - space that's required to show the labels at the edges of the scale
src/core/core.scale.js:395:    me._maxLength = me.isHorizontal()
src/core/core.scale.js:442:    me.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand
src/core/core.scale.js:458:    if (me.isHorizontal()) {
src/core/core.scale.js:486:    if (me.isHorizontal()) {
src/core/core.scale.js:499:    // Reset padding
src/core/core.scale.js:500:    me.paddingLeft = 0;
src/core/core.scale.js:501:    me.paddingTop = 0;
src/core/core.scale.js:502:    me.paddingRight = 0;
src/core/core.scale.js:503:    me.paddingBottom = 0;
src/core/core.scale.js:570:    let labelRotation = minRotation;
src/core/core.scale.js:573:    if (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {
src/core/core.scale.js:574:      me.labelRotation = minRotation;
src/core/core.scale.js:578:    const labelSizes = me._getLabelSizes();
src/core/core.scale.js:587:    // Allow 3 pixels x2 padding either side for label readability
src/core/core.scale.js:591:                             - tickOpts.padding - getTitleHeight(options.title, me.chart.options.font);
src/core/core.scale.js:593:      labelRotation = toDegrees(Math.min(
src/core/core.scale.js:597:      labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));
src/core/core.scale.js:600:    me.labelRotation = labelRotation;
src/core/core.scale.js:611:  fit() {
src/core/core.scale.js:621:    const isHorizontal = me.isHorizontal();
src/core/core.scale.js:625:      if (isHorizontal) {
src/core/core.scale.js:635:        const {first, last, widest, highest} = me._getLabelSizes();
src/core/core.scale.js:636:        const tickPadding = tickOpts.padding * 2;
src/core/core.scale.js:637:        const angleRadians = toRadians(me.labelRotation);
src/core/core.scale.js:641:        if (isHorizontal) {
src/core/core.scale.js:647:        // dominant factor here, so get that length first and account for padding
src/core/core.scale.js:656:    me._handleMargins();
src/core/core.scale.js:658:    if (isHorizontal) {
src/core/core.scale.js:669:    const {ticks: {align, padding}, position} = me.options;
src/core/core.scale.js:670:    const isRotated = me.labelRotation !== 0;
src/core/core.scale.js:673:    if (me.isHorizontal()) {
src/core/core.scale.js:674:      const offsetLeft = me.getPixelForTick(0) - me.left;
src/core/core.scale.js:675:      const offsetRight = me.right - me.getPixelForTick(me.ticks.length - 1);
src/core/core.scale.js:676:      let paddingLeft = 0;
src/core/core.scale.js:677:      let paddingRight = 0;
src/core/core.scale.js:680:      // which means that the right padding is dominated by the font height
src/core/core.scale.js:683:          paddingLeft = cos * first.width;
src/core/core.scale.js:684:          paddingRight = sin * last.height;
[The command completed with exit code 0.]
[Current working directory: /workspace/Chart.js]
[Python interpreter: /usr/bin/python]
[Command finished with exit code 0]