/**
 * @license
 * Copyright 2019 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

/**
 * @fileoverview An object that provides constants for rendering blocks in Geras
 * mode.
 * @author kozbial@google.com (Monica Kozbial)
 */
'use strict';

goog.provide('Blockly.geras.ConstantProvider');

goog.require('Blockly.blockRendering.ConstantProvider');
goog.require('Blockly.utils.object');


/**
 * An object that provides constants for rendering blocks in Geras mode.
 * @constructor
 * @package
 * @extends {Blockly.blockRendering.ConstantProvider}
 */
Blockly.geras.ConstantProvider = function() {
  Blockly.geras.ConstantProvider.superClass_.constructor.call(this);

  /**
   * @override
   */
  this.FIELD_TEXT_BASELINE_CENTER = false;

  // The dark/shadow path in classic rendering is the same as the normal block
  // path, but translated down one and right one.
  this.DARK_PATH_OFFSET = 1;

  /**
   * The maximum width of a bottom row that follows a statement input and has
   * inputs inline.
   * @type {number}
   */
  this.MAX_BOTTOM_WIDTH = 30;
};
Blockly.utils.object.inherits(Blockly.geras.ConstantProvider,
    Blockly.blockRendering.ConstantProvider);


/**
 * @override
 */
Blockly.geras.ConstantProvider.prototype.getCSS_ = function(selector) {
  return Blockly.geras.ConstantProvider.superClass_.getCSS_.call(this, selector)
      .concat([
        /* eslint-disable indent */
        // Insertion marker.
        selector + ' .blocklyInsertionMarker>.blocklyPathLight,',
        selector + ' .blocklyInsertionMarker>.blocklyPathDark {',
          'fill-opacity: ' + this.INSERTION_MARKER_OPACITY + ';',
          'stroke: none;',
        '}',
        /* eslint-enable indent */
      ]);
};
