hunk.code_window: <?xml version="1.0" encoding="UTF-8"?>
   <Scheme
      LastUpgradeVersion = "0800"
      version = "1.3">
      <BuildAction
         parallelizeBuildables = "YES"
  
hunk.labels: keep keep replace keep keep keep
hunk.after_edit:    LastUpgradeVersion = "0810"
  
hunk.file_path: exponent-view-template/ios/exponent-view-template.xcodeproj/xcshareddata/xcschemes/exponent-view-template.xcscheme
hunk.type: replace
file: /**
   * Copyright (c) 2015-present, Facebook, Inc.
   * All rights reserved.
   *
   * This source code is licensed under the BSD-style license found in the
   * LICENSE file in the root directory of this source tree. An additional grant
   * of patent rights can be found in the PATENTS file in the same directory.
   *
   * @providesModule Subscribable
   * @flow
   */
  'use strict';
  
  import type EventEmitter from 'EventEmitter';
  
  /**
   * Subscribable provides a mixin for safely subscribing a component to an
   * eventEmitter
   *
   * This will be replaced with the observe interface that will be coming soon to
   * React Core
   */
  
  var Subscribable = {};
  
  Subscribable.Mixin = {
  
    componentWillMount: function() {
      this._subscribableSubscriptions = [];
    },
  
    componentWillUnmount: function() {
      this._subscribableSubscriptions.forEach(
        (subscription) => subscription.remove()
      );
      this._subscribableSubscriptions = null;
    },
  
    /**
     * Special form of calling `addListener` that *guarantees* that a
     * subscription *must* be tied to a component instance, and therefore will
     * be cleaned up when the component is unmounted. It is impossible to create
     * the subscription and pass it in - this method must be the one to create
     * the subscription and therefore can guarantee it is retained in a way that
     * will be cleaned up.
     *
     * @param {EventEmitter} eventEmitter emitter to subscribe to.
     * @param {string} eventType Type of event to listen to.
     * @param {function} listener Function to invoke when event occurs.
     * @param {object} context Object to use as listener context.
     */
    addListenerOn: function(
      eventEmitter: EventEmitter,
      eventType: string,
      listener: Function,
      context: Object
    ) {
      this._subscribableSubscriptions.push(
        eventEmitter.addListener(eventType, listener, context)
      );
    }
  };
  
  module.exports = Subscribable;
  