Source: setting-slider/setting-slider.js

'use strict';

  new ExceptionHandler();

  /**
   * Polymer element to select a value with a slider
   * @namespace SettingSlider
   */
  Polymer({
    is: 'setting-slider',

    properties: {
      /**
       * Local storage key
       * @memberOf SettingSlider
       */
      name: {
        type: String,
        value: 'store',
      },

      /**
       * Slider description
       * @memberOf SettingSlider
       */
      label: {
        type: String,
        value: '',
      },

      /**
       * Object containing slider value and display unit index
       * @memberOf SettingSlider
       */
      value: {
        type: Object,
        notify: true,
        value: function() {
          return {'base': 10, 'display': 10, 'unit': 0};
        },
      },

      /**
       * Array of unit labels
       * @memberOf SettingSlider
       */
      units: {
        type: Array,
        value: function() {
          return [];
        },
      },

      /**
       * Optional group title
       * @memberOf SettingSlider
       */
      sectionTitle: {
        type: String,
        value: '',
      },

      /**
       * Disabled state of element
       * @memberOf SettingSlider
       */
      disabled: {
        type: Boolean,
        value: false,
      },

      /**
       * Visibility state of optional divider
       * @memberOf SettingSlider
       */
      noseparator: {
        type: Boolean,
        value: false,
      },
    },

    /**
     * Event: User changed slider value
     * @private
     * @memberOf SettingSlider
     */
    _onSliderValueChanged: function() {
      Chrome.GA.event(Chrome.GA.EVENT.SLIDER_VALUE, this.name);
      this._setBase();
    },

    /**
     * Event: Display unit was changed
     * @private
     * @memberOf SettingSlider
     */
    _onUnitChanged: function() {
      if (this.$.selector.selectedItem) {
        // skip logging of initial selection
        Chrome.GA.event(Chrome.GA.EVENT.SLIDER_UNITS, this.name);
      }
      this.$.selector.select(this.units[this.value.unit]);
      this._setBase();
    },

    /**
     * Set the base value
     * @private
     * @memberOf SettingSlider
     */
    _setBase: function() {
      this.set('value.base', this.unit.mult * this.value.display);
    },

    /**
     * Initialize value if it is not in localstorage
     * @private
     * @memberOf SettingSlider
     */
    _initValue: function() {
      this.value = {
        base: 10,
        display: 10,
        unit: 0,
      };
    },
  });