text: /**
   * Specifies whether the object casts or receives shadows from light sources when
   * shadows are enabled.
   *
   * @enum {Number}
   */
  const ShadowMode = {
    /**
     * The object does not cast or receive shadows.
     *
     * @type {Number}
     * @constant
     */
    DISABLED: 0,
  
    /**
     * The object casts and receives shadows.
     *
     * @type {Number}
     * @constant
     */
    ENABLED: 1,
  
    /**
     * The object casts shadows only.
     *
     * @type {Number}
     * @constant
     */
    CAST_ONLY: 2,
  
    /**
     * The object receives shadows only.
     *
     * @type {Number}
     * @constant
     */
    RECEIVE_ONLY: 3,
  };
  
  /**
   * @private
   */
  ShadowMode.NUMBER_OF_SHADOW_MODES = 4;
  
  /**
   * @private
   */
  ShadowMode.castShadows = function (shadowMode) {
    return (
      shadowMode === ShadowMode.ENABLED || shadowMode === ShadowMode.CAST_ONLY
    );
  };
  
  /**
   * @private
   */
  ShadowMode.receiveShadows = function (shadowMode) {
    return (
      shadowMode === ShadowMode.ENABLED || shadowMode === ShadowMode.RECEIVE_ONLY
    );
  };
  
  /**
   * @private
   */
  ShadowMode.fromCastReceive = function (castShadows, receiveShadows) {
    if (castShadows && receiveShadows) {
      return ShadowMode.ENABLED;
    } else if (castShadows) {
      return ShadowMode.CAST_ONLY;
    } else if (receiveShadows) {
      return ShadowMode.RECEIVE_ONLY;
    }
    return ShadowMode.DISABLED;
  };
  
  export default Object.freeze(ShadowMode);
  