Example #1
0
const React = require('react');
import LabelDescriptionPanel from './LabelDescriptionPanel'
import NotificationPanel from './NotificationPanel'
import PublicLinkTemplate from './PublicLinkTemplate'
import VisibilityPanel from './VisibilityPanel'
import ShareContextConsumer from '../ShareContextConsumer'
const ShareModel = require('pydio').requireLib('ReactModelShare');
const {Divider} = require('material-ui')
import Card from '../main/Card'

let Panel =  React.createClass({

    propTypes:{
        pydio:React.PropTypes.instanceOf(Pydio),
        shareModel:React.PropTypes.instanceOf(ShareModel)
    },

    render: function(){

        const layoutData = ShareModel.compileLayoutData(this.props.pydio, this.props.shareModel.getNode());
        let layoutPane, visibilityPanel;
        let {style, ...props} = this.props;
        if(!this.props.shareModel.getNode().isLeaf() && layoutData.length > 1 && this.props.shareModel.hasPublicLink()){
            layoutPane = <PublicLinkTemplate {...props} linkData={this.props.shareModel.getPublicLinks()[0]} layoutData={layoutData}/>;
        }
        if(!this.props.shareModel.currentRepoIsUserScope()){
            visibilityPanel = <VisibilityPanel  {...props}  style={{paddingBottom: 16}}/>;
        }
        return (
            <div>
                <Card style={this.props.style} title={this.props.getMessage('486', '')}>
Example #2
0
/* @flow */

import { PropTypes } from 'react';
import { Animated } from 'react-native';

export const NavigationRoutePropType = PropTypes.shape({
  title: PropTypes.string,
  key: PropTypes.string.isRequired,
});

export const NavigationStatePropType = PropTypes.shape({
  routes: PropTypes.arrayOf(NavigationRoutePropType).isRequired,
  index: PropTypes.number.isRequired,
});

export const SceneRendererPropType = {
  layout: PropTypes.shape({
    measured: PropTypes.bool.isRequired,
    height: PropTypes.number.isRequired,
    width: PropTypes.number.isRequired,
  }).isRequired,
  navigationState: NavigationStatePropType.isRequired,
  position: PropTypes.instanceOf(Animated.Value).isRequired,
  jumpToIndex: PropTypes.func.isRequired,
  getLastPosition: PropTypes.func.isRequired,
};
Example #3
0
}

export const TechCategoryList = ({ techList }) => {
  const categories = techList.groupBy(tech => tech.get('categoryId'))
  return (
    <div style={listStyle}>
      {categories.keySeq().map(c =>
        <TechCategory
          key={`category-${c}`}
          categoryName={c}
          techList={categories.get(c)}
        />
      )}
    </div>
  )
}

TechCategoryList.propTypes = {
  techList: React.PropTypes.instanceOf(List).isRequired,
}

function mapStateToProps(state) {
  return {
    techList: state.get('tech'),
  }
}

export const TechCategoryListContainer = connect(
  mapStateToProps
)(TechCategoryList)
                    lastError: '',
                    showDialog: false,
                    toEdit: false,
                    currentCollab: {}
                  }
                );
              }
            }} /> : null}
      </Fieldset>

    )
  }
}

Collaborators.contextTypes = {
  currentApp: React.PropTypes.instanceOf(ParseApp)
};

Collaborators.propTypes = {
  legend: PropTypes.string.isRequired.describe(
    'Title of this section'
  ),
  description: PropTypes.string.isRequired.describe(
    'Description fo this section (shows below title)'
  ),
  collaborators: PropTypes.arrayOf(PropTypes.any).isRequired.describe('An array of current collaborators of this app'),
  owner_email: PropTypes.string.describe('The email of the owner, to be displayed if the viewer is a collaborator.'),
  viewer_email: PropTypes.string.describe('The email of the viewer, if the viewer is a collaborator, they will not be able to remove collaborators except themselves.'),
  onAdd: PropTypes.func.isRequired.describe(
    'A function that will be called whenever a user adds a valid collaborator email. It receives the new email and an updated array of all collaborators for this app.'
  ),
  Dimensions,
  Component
} from 'react-native';

// Utilities
import Color from 'color';
import moment from 'moment';
import Icon from 'react-native-vector-icons/FontAwesome';
import variables from '../variables/CaregiverGlobalVariables';
import icons from 'Cami/src/icons-fa';

import ActivityEntry from './components/ActivityEntry';

const ActivitiesView = React.createClass({
  propTypes: {
    events: PropTypes.instanceOf(List).isRequired,
    username: PropTypes.string.isRequired,
  },

  componentDidMount() {
    if(this.props.events.size > 0) {
      const _scrollView = this.scrollView;
      // we need the nextEventId to calculate scrolling distance
      const nextEventId = this.findNextEventId(this.props.events, moment().utc());
      // scroll offset to get last event in view
      // - used when there aren't enough future events to justify nextEvent hidden under header
      const scrollToEndOffset = ((this.props.events.size * 127) - (variables.dimensions.height - 140 - 49 - 20));
      // scroll offset to get next event hidden under header
      // - only applies if there are a sufficient amount of future events (~4)
      const scrollToEventOffset = (127 * (nextEventId + 1));
Example #6
0
const iconStyle = {
  float: 'right',
  marginLeft: spacing
};

const dividerStyle = {
  marginBottom: spacing,
  clear: 'both'
};

const SelectedDataSources = ({ dataSources, deselectDataSource }) => {
  return <div>
    {dataSources.map(dataSource =>
      <Paper style={dataSourceStyle} key={dataSource.id}>
        {dataSource.name}
        <IconButton icon="remove_circle" tooltip="Remove data source" style={iconStyle}
                    onTouchTap={() => deselectDataSource(dataSource.id)}/>
      </Paper>
    )}
    <Divider style={dividerStyle}/>
  </div>
};

SelectedDataSources.propTypes = {
  dataSources: PropTypes.instanceOf(List).isRequired,
  deselectDataSource: PropTypes.func.isRequired
};

export default SelectedDataSources;
Example #7
0
        AppElement = ariaAppHider.setElement(element);
    },
    injectCSS: function() {
      "production" !== process.env.NODE_ENV
        && console.warn('React-Modal: injectCSS has been deprecated ' +
                        'and no longer has any effect. It will be removed in a later version');
    }
  },

  propTypes: {
    isOpen: React.PropTypes.bool.isRequired,
    style: React.PropTypes.shape({
      content: React.PropTypes.object,
      overlay: React.PropTypes.object
    }),
    appElement: React.PropTypes.instanceOf(SafeHTMLElement),
    onAfterOpen: React.PropTypes.func,
    onRequestClose: React.PropTypes.func,
    closeTimeoutMS: React.PropTypes.number,
    ariaHideApp: React.PropTypes.bool,
    shouldCloseOnOverlayClick: React.PropTypes.bool
  },

  getDefaultProps: function () {
    return {
      isOpen: false,
      ariaHideApp: true,
      closeTimeoutMS: 0,
      shouldCloseOnOverlayClick: true
    };
  },
Example #8
0
  return _MULTIPLIER;
})();

var VIEW_FORMATS = (function () {
  var _VIEW_FORMATS = {};
  _VIEW_FORMATS[views.MONTH] = "dateFormat";
  _VIEW_FORMATS[views.YEAR] = "monthFormat";
  _VIEW_FORMATS[views.DECADE] = "yearFormat";
  _VIEW_FORMATS[views.CENTURY] = "decadeFormat";
  return _VIEW_FORMATS;
})();

var propTypes = {

  onChange: React.PropTypes.func,
  value: React.PropTypes.instanceOf(Date),

  min: React.PropTypes.instanceOf(Date),
  max: React.PropTypes.instanceOf(Date),

  initialView: React.PropTypes.oneOf(VIEW_OPTIONS),

  finalView: function (props, propname, componentName) {
    var err = React.PropTypes.oneOf(VIEW_OPTIONS)(props, propname, componentName);

    if (err) return err;
    if (VIEW_OPTIONS.indexOf(props[propname]) < VIEW_OPTIONS.indexOf(props.initialView)) return new Error(("The `" + propname + "` prop: `" + props[propname] + "` cannot be 'lower' than the `initialView` \n                        prop. This creates a range that cannot be rendered.").replace(/\n\t/g, ""));
  },

  disabled: React.PropTypes.oneOfType([React.PropTypes.bool, React.PropTypes.oneOf(["disabled"])]),
import React from 'react';
import Backbone from 'backbone';
import stores from 'stores';
import moment from 'moment';
import actions from 'actions';
import _ from 'underscore';


export default React.createClass({
    displayName: "ProviderMachineEditItem",

    propTypes: {
        allow_edits: React.PropTypes.bool,
        provider_machine: React.PropTypes.object.isRequired,
        version: React.PropTypes.instanceOf(Backbone.Model).isRequired
    },

    getDefaultProps: function () {
        return {
            allow_edits: true,
        };
    },
    getInitialState: function() {
        let enabled,
        end_date = this.props.provider_machine.get('end_date');

        if (end_date && end_date.isValid()) {
            enabled = false;
        } else {
            enabled = true;
        }
Example #10
0
import React from 'react';

import _ from 'lodash';
import moment from 'moment';
import classSet from 'class-set';
import Immutable from 'immutable';

import * as timeUtils from '../../../../common/timeUtils';

import styles from './less/DatePicker.less';

export default React.createClass({
    propTypes: {
        activeMonth: React.PropTypes.object.isRequired,
        months: React.PropTypes.instanceOf(Immutable.List).isRequired,
        onChangeDate: React.PropTypes.func.isRequired
    },
    selectMonth: function (month) {
        let date = this.props.activeMonth.clone().month(month.format('MMMM'));
        this.props.onChangeDate(date);
    },
    renderMonthItem: function (month, index) {
        let className = classSet('col-xs-1',
            month.isSame(this.props.activeMonth, 'month') ? styles.active : null,
            month.isSame(this.today, 'month') ? styles.today : null,
            month.isAfter(this.today, 'month') ? styles.future : null
        );

        let monthNumber = month.format('M');
        let monthShort = month.format('MMM');
Example #11
0
      feature: this.feature
    }
  }
  
  componentDidMount() {
    this.context.source.addFeature(this.feature);
  }

  componentWillReceiveProps(newProps) {
    this.updateFromProps(newProps);
  }

  componentWillUnmount() {
    this.context.source.removeFeature(this.feature);
  }
}

Feature.propTypes = {
  style: React.PropTypes.object,
  children: React.PropTypes.element,
  id: React.PropTypes.any.isRequired
}

Feature.contextTypes = {
  source: React.PropTypes.instanceOf(ol.source.Source)
}

Feature.childContextTypes = {
  feature: React.PropTypes.instanceOf(ol.Feature)
}
Example #12
0
import React, { PropTypes } from 'react';
import Redbox from 'redbox-react';

const propTypes = {
  error: PropTypes.instanceOf(Error).isRequired,
};

const ConsoleErrorReporter = ({
  error,
}) => (
  <Redbox error={error} />
);

ConsoleErrorReporter.propTypes = propTypes;

export default ConsoleErrorReporter;
import React, { PropTypes } from "react";
import { Input, Alert } from "react-bootstrap";

import Application from "../Application";

const ApplyToEventSelector = React.createClass({
  displayName: "ApplyToEventSelector",

  propTypes: {
    eventList: PropTypes.arrayOf(
      PropTypes.shape({
        id: PropTypes.string.isRequired,
        name: PropTypes.string.isRequired,
        startDate: PropTypes.instanceOf(Date).isRequired,
        endDate: PropTypes.instanceOf(Date).isRequired,
        obligatoryHours: PropTypes.number,
        tasks: PropTypes.arrayOf(PropTypes.string).isRequired,
      })
    ).isRequired,
    onFormSubmit: PropTypes.func.isRequired,
    onAlertDismiss: PropTypes.func.isRequired,
  },

  getInitialState() {
    return {
      selectedEventIndex: 0,
      isFormValid: false,
    };
  },

  isValid() {
import React, { PropTypes } from 'react';
import { List } from 'immutable';
import VerticalContent from './VerticalContent';

export const VerticalContainer = ({ verticalContent }) => {
  return (
    <div className="landing-page__vertical-container">
      {verticalContent.map((pageContent, index) =>
        <div className="landing-page__vertical-content" key={index}>
          <VerticalContent
            key={index}
            imageContent={pageContent.image}
            textContent={pageContent.text}
          />
        </div>
      )}
    </div>
  );
};

VerticalContainer.propTypes = {
  verticalContent: PropTypes.instanceOf(List)
};

export default VerticalContainer;
Example #15
0
export default function enhanceWithRadium(
  configOrComposedComponent: Class<any> | constructor | Function | Object,
  config?: Object = {},
): constructor {
  if (typeof configOrComposedComponent !== 'function') {
    const newConfig = {...config, ...configOrComposedComponent};
    return function(configOrComponent) {
      return enhanceWithRadium(configOrComponent, newConfig);
    };
  }

  const component: Function = configOrComposedComponent;
  let ComposedComponent: constructor = component;

  // Handle stateless components
  if (isStateless(ComposedComponent)) {
    ComposedComponent = class extends Component {
      render() {
        return component(this.props, this.context);
      }
    };
    ComposedComponent.displayName = component.displayName || component.name;
  }

  class RadiumEnhancer extends ComposedComponent {
    _radiumMediaQueryListenersByQuery: {[query: string]: {remove: () => void}};
    _radiumMouseUpListener: {remove: () => void};
    _radiumIsMounted: bool;

    static _isRadiumEnhanced = true;

    constructor() {
      super(...arguments);

      this.state = this.state || {};
      this.state._radiumStyleState = {};
      this._radiumIsMounted = true;
    }

    componentWillUnmount() {
      if (super.componentWillUnmount) {
        super.componentWillUnmount();
      }

      this._radiumIsMounted = false;

      if (this._radiumMouseUpListener) {
        this._radiumMouseUpListener.remove();
      }

      if (this._radiumMediaQueryListenersByQuery) {
        Object.keys(this._radiumMediaQueryListenersByQuery).forEach(
          function(query) {
            this._radiumMediaQueryListenersByQuery[query].remove();
          },
          this
        );
      }
    }

    getChildContext() {
      const superChildContext = super.getChildContext ?
        super.getChildContext() :
        {};

      if (!this.props.radiumConfig) {
        return superChildContext;
      }

      const newContext = {...superChildContext};

      if (this.props.radiumConfig) {
        newContext._radiumConfig = this.props.radiumConfig;
      }

      return newContext;
    }

    render() {
      const renderedElement = super.render();
      let currentConfig = this.props.radiumConfig ||
        this.context._radiumConfig || config;

      if (config && currentConfig !== config) {
        currentConfig = {
          ...config,
          ...currentConfig
        };
      }

      return resolveStyles(this, renderedElement, currentConfig);
    }
  }

  // Class inheritance uses Object.create and because of __proto__ issues
  // with IE <10 any static properties of the superclass aren't inherited and
  // so need to be manually populated.
  // See http://babeljs.io/docs/advanced/caveats/#classes-10-and-below-
  copyProperties(component, RadiumEnhancer);

  if (process.env.NODE_ENV !== 'production') {
    // This also fixes React Hot Loader by exposing the original components top
    // level prototype methods on the Radium enhanced prototype as discussed in
    // https://github.com/FormidableLabs/radium/issues/219.
    copyProperties(ComposedComponent.prototype, RadiumEnhancer.prototype);
  }

  if (RadiumEnhancer.propTypes && RadiumEnhancer.propTypes.style) {
    RadiumEnhancer.propTypes = {
      ...RadiumEnhancer.propTypes,
      style: PropTypes.oneOfType([
        PropTypes.array,
        PropTypes.object
      ])
    };
  }

  RadiumEnhancer.displayName =
    component.displayName ||
    component.name ||
    'Component';

  RadiumEnhancer.contextTypes = {
    ...RadiumEnhancer.contextTypes,
    _radiumConfig: PropTypes.object,
    _radiumStyleKeeper: PropTypes.instanceOf(StyleKeeper)
  };

  RadiumEnhancer.childContextTypes = {
    ...RadiumEnhancer.childContextTypes,
    _radiumConfig: PropTypes.object,
    _radiumStyleKeeper: PropTypes.instanceOf(StyleKeeper)
  };

  return RadiumEnhancer;
}
Example #16
0
import React, { PropTypes } from 'react'
import TableRow from 'material-ui/Table/TableRow';
import TableRowColumn from 'material-ui/Table/TableRowColumn';
import { Lens, ResourceThroughLens } from '../models'
import LocalizedValue from '../../../app/containers/LocalizedValue'
import AddToListButtons from '../containers/AddToListButtons'

const SearchResultRow = ({ searchableLens, resource }) => {
  return (
    <TableRow>
      {searchableLens.showProperties.map(propertyUri =>
        <TableRowColumn key={propertyUri}>
          <LocalizedValue localizedValue={resource.properties.get(propertyUri)} silent />
        </TableRowColumn>
      )}
      <TableRowColumn style={{width: '35%'}}>
        <AddToListButtons uri={resource.uri} />
      </TableRowColumn>
    </TableRow>
  );
};

SearchResultRow.propTypes = {
  searchableLens: PropTypes.instanceOf(Lens).isRequired,
  resource: PropTypes.instanceOf(ResourceThroughLens).isRequired
};

export default SearchResultRow;
Example #17
0
TimeAgo.displayName = 'TimeAgo';
TimeAgo.propTypes = {
    /** If the component should update itself over time */
    live: _react.PropTypes.bool.isRequired,
    /** minimum amount of time in seceonds between re-renders */
    minPeriod: _react.PropTypes.number.isRequired,
    /** Maximum time between re-renders in seconds. The component should update at least once every `x` seconds */
    maxPeriod: _react.PropTypes.number.isRequired,
    /** The container to render the string into. You could use a string like `span` or a custom component */
    component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.func]).isRequired,
    /** A function to decide how to format the date.
    * If you use this, `react-timeago` is basically acting like a glorified `setInterval`.
    */
    formatter: _react.PropTypes.func.isRequired,
    /** The Date to display. An actual Date object or something that can be fed to new Date */
    date: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number, _react.PropTypes.instanceOf(Date)]).isRequired,
    /** unit strings for locale
    * ago: "ago"
    * fromNow: "from now"
    * second: "second"
    * seconds: "seconds"
    * minute: "minute"
    * minutes: "minutes"
    * hour: "hour"
    * hours: "hours"
    * day: "day"
    * days: "days"
    * week: "week"
    * weeks: "weeks"
    * month: "month"
    * months: "months"
Example #18
0
  }]);

  return ChoroplethOverlay;
}(_react.Component), _class.propTypes = {
  width: _react.PropTypes.number.isRequired,
  height: _react.PropTypes.number.isRequired,
  latitude: _react.PropTypes.number.isRequired,
  longitude: _react.PropTypes.number.isRequired,
  zoom: _react.PropTypes.number.isRequired,
  isDragging: _react.PropTypes.bool.isRequired,
  renderWhileDragging: _react.PropTypes.bool.isRequired,
  globalOpacity: _react.PropTypes.number.isRequired,
  /**
    * An Immutable List of feature objects.
    */
  features: _react.PropTypes.instanceOf(_immutable2.default.List),
  /* eslint-disable react/forbid-prop-types */
  colorDomain: _react.PropTypes.array,
  colorRange: _react.PropTypes.array.isRequired,
  valueAccessor: _react.PropTypes.func.isRequired
}, _class.defaultProps = {
  renderWhileDragging: true,
  globalOpacity: 1,
  colorDomain: null,
  colorRange: ['#FFFFFF', '#1FBAD6'],
  valueAccessor: function valueAccessor(feature) {
    return feature.get('properties').get('value');
  }
}, _temp);
exports.default = ChoroplethOverlay;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vdmVybGF5cy9jaG9yb3BsZXRoLnJlYWN0LmpzIl0sIm5hbWVzIjpbIkNob3JvcGxldGhPdmVybGF5IiwiX3JlZHJhdyIsInBpeGVsUmF0aW8iLCJkZXZpY2VQaXhlbFJhdGlvIiwiY2FudmFzIiwicmVmcyIsIm92ZXJsYXkiLCJjdHgiLCJnZXRDb250ZXh0IiwibWVyY2F0b3IiLCJwcm9wcyIsInNhdmUiLCJzY2FsZSIsImNsZWFyUmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwicHJvamVjdFBvaW50IiwibG9uIiwibGF0IiwicG9pbnQiLCJwcm9qZWN0Iiwic3RyZWFtIiwicmVuZGVyV2hpbGVEcmFnZ2luZyIsImlzRHJhZ2dpbmciLCJ0cmFuc2Zvcm0iLCJwYXRoIiwicHJvamVjdGlvbiIsImNvbnRleHQiLCJfZHJhd0ZlYXR1cmVzIiwicmVzdG9yZSIsImZlYXR1cmVzIiwiY29sb3JEb21haW4iLCJ0b0FycmF5IiwidmFsdWVBY2Nlc3NvciIsImNvbG9yU2NhbGUiLCJkb21haW4iLCJyYW5nZSIsImNvbG9yUmFuZ2UiLCJjbGFtcCIsImZlYXR1cmUiLCJiZWdpblBhdGgiLCJzdHJva2VTdHlsZSIsImxpbmVXaWR0aCIsImZpbGxTdHlsZSIsImdlb21ldHJ5IiwiZ2V0IiwidHlwZSIsImNvb3JkaW5hdGVzIiwidG9KUyIsImZpbGwiLCJzdHJva2UiLCJwb3NpdGlvbiIsInBvaW50ZXJFdmVudHMiLCJvcGFjaXR5IiwiZ2xvYmFsT3BhY2l0eSIsImxlZnQiLCJ0b3AiLCJwcm9wVHlwZXMiLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJ6b29tIiwiYm9vbCIsImluc3RhbmNlT2YiLCJMaXN0IiwiYXJyYXkiLCJmdW5jIiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7bUJBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FB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Rks7QUFHcEJ2QixlQUFhLElBSE87QUFJcEJNLGNBQVksQ0FBQyxTQUFELEVBQVksU0FBWixDQUpRO0FBS3BCSixpQkFBZTtBQUFBLFdBQVdNLFFBQVFNLEdBQVIsQ0FBWSxZQUFaLEVBQTBCQSxHQUExQixDQUE4QixPQUE5QixDQUFYO0FBQUE7QUFMSyxDO2tCQXJCSDdDLGlCIiwiZmlsZSI6ImNob3JvcGxldGgucmVhY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cblxuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzLCBDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBWaWV3cG9ydE1lcmNhdG9yIGZyb20gJ3ZpZXdwb3J0LW1lcmNhdG9yLXByb2plY3QnO1xuaW1wb3J0IHdpbmRvdyBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCB7ZXh0ZW50fSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQge3NjYWxlTGluZWFyfSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge2dlb1BhdGgsIGdlb1RyYW5zZm9ybX0gZnJvbSAnZDMtZ2VvJztcbmltcG9ydCBJbW11dGFibGUgZnJvbSAnaW1tdXRhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hvcm9wbGV0aE92ZXJsYXkgZXh0ZW5kcyBDb21wb25lbnQge1xuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBoZWlnaHQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBsYXRpdHVkZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIGxvbmdpdHVkZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIHpvb206IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBpc0RyYWdnaW5nOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIHJlbmRlcldoaWxlRHJhZ2dpbmc6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgZ2xvYmFsT3BhY2l0eTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIC8qKlxuICAgICAgKiBBbiBJbW11dGFibGUgTGlzdCBvZiBmZWF0dXJlIG9iamVjdHMuXG4gICAgICAqL1xuICAgIGZlYXR1cmVzOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihJbW11dGFibGUuTGlzdCksXG4gICAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZm9yYmlkLXByb3AtdHlwZXMgKi9cbiAgICBjb2xvckRvbWFpbjogUHJvcFR5cGVzLmFycmF5LFxuICAgIGNvbG9yUmFuZ2U6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAgIHZhbHVlQWNjZXNzb3I6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHJlbmRlcldoaWxlRHJhZ2dpbmc6IHRydWUsXG4gICAgZ2xvYmFsT3BhY2l0eTogMSxcbiAgICBjb2xvckRvbWFpbjogbnVsbCxcbiAgICBjb2xvclJhbmdlOiBbJyNGRkZGRkYnLCAnIzFGQkFENiddLFxuICAgIHZhbHVlQWNjZXNzb3I6IGZlYXR1cmUgPT4gZmVhdHVyZS5nZXQoJ3Byb3BlcnRpZXMnKS5nZXQoJ3ZhbHVlJylcbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLl9yZWRyYXcoKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICB0aGlzLl9yZWRyYXcoKTtcbiAgfVxuXG4gIF9yZWRyYXcoKSB7XG4gICAgY29uc3QgcGl4ZWxSYXRpbyA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMucmVmcy5vdmVybGF5O1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNvbnN0IG1lcmNhdG9yID0gVmlld3BvcnRNZXJjYXRvcih0aGlzLnByb3BzKTtcblxuICAgIGN0eC5zYXZlKCk7XG4gICAgY3R4LnNjYWxlKHBpeGVsUmF0aW8sIHBpeGVsUmF0aW8pO1xuICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgdGhpcy5wcm9wcy53aWR0aCwgdGhpcy5wcm9wcy5oZWlnaHQpO1xuXG4gICAgZnVuY3Rpb24gcHJvamVjdFBvaW50KGxvbiwgbGF0KSB7XG4gICAgICBjb25zdCBwb2ludCA9IG1lcmNhdG9yLnByb2plY3QoW2xvbiwgbGF0XSk7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1pbnZhbGlkLXRoaXMgKi9cbiAgICAgIHRoaXMuc3RyZWFtLnBvaW50KHBvaW50WzBdLCBwb2ludFsxXSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWludmFsaWQtdGhpcyAqL1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLnJlbmRlcldoaWxlRHJhZ2dpbmcgfHwgIXRoaXMucHJvcHMuaXNEcmFnZ2luZykge1xuICAgICAgY29uc3QgdHJhbnNmb3JtID0gZ2VvVHJhbnNmb3JtKHtwb2ludDogcHJvamVjdFBvaW50fSk7XG4gICAgICBjb25zdCBwYXRoID0gZ2VvUGF0aCgpLnByb2plY3Rpb24odHJhbnNmb3JtKS5jb250ZXh0KGN0eCk7XG4gICAgICB0aGlzLl9kcmF3RmVhdHVyZXMoY3R4LCBwYXRoKTtcbiAgICB9XG4gICAgY3R4LnJlc3RvcmUoKTtcbiAgfVxuXG4gIF9kcmF3RmVhdHVyZXMoY3R4LCBwYXRoKSB7XG4gICAgY29uc3Qge2ZlYXR1cmVzfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFmZWF0dXJlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb2xvckRvbWFpbiA9IHRoaXMucHJvcHMuY29sb3JEb21haW4gfHxcbiAgICAgIGV4dGVudChmZWF0dXJlcy50b0FycmF5KCksIHRoaXMucHJvcHMudmFsdWVBY2Nlc3Nvcik7XG5cbiAgICBjb25zdCBjb2xvclNjYWxlID0gc2NhbGVMaW5lYXIoKVxuICAgICAgLmRvbWFpbihjb2xvckRvbWFpbilcbiAgICAgIC5yYW5nZSh0aGlzLnByb3BzLmNvbG9yUmFuZ2UpXG4gICAgICAuY2xhbXAodHJ1ZSk7XG5cbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcbiAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknO1xuICAgICAgY3R4LmxpbmVXaWR0aCA9ICcxJztcbiAgICAgIGN0eC5maWxsU3R5bGUgPSBjb2xvclNjYWxlKHRoaXMucHJvcHMudmFsdWVBY2Nlc3NvcihmZWF0dXJlKSk7XG4gICAgICBjb25zdCBnZW9tZXRyeSA9IGZlYXR1cmUuZ2V0KCdnZW9tZXRyeScpO1xuICAgICAgcGF0aCh7XG4gICAgICAgIHR5cGU6IGdlb21ldHJ5LmdldCgndHlwZScpLFxuICAgICAgICBjb29yZGluYXRlczogZ2VvbWV0cnkuZ2V0KCdjb29yZGluYXRlcycpLnRvSlMoKVxuICAgICAgfSk7XG4gICAgICBjdHguZmlsbCgpO1xuICAgICAgY3R4LnN0cm9rZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBwaXhlbFJhdGlvID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgICByZXR1cm4gKFxuICAgICAgPGNhbnZhc1xuICAgICAgICByZWY9XCJvdmVybGF5XCJcbiAgICAgICAgd2lkdGg9eyB0aGlzLnByb3BzLndpZHRoICogcGl4ZWxSYXRpbyB9XG4gICAgICAgIGhlaWdodD17IHRoaXMucHJvcHMuaGVpZ2h0ICogcGl4ZWxSYXRpbyB9XG4gICAgICAgIHN0eWxlPXsge1xuICAgICAgICAgIHdpZHRoOiBgJHt0aGlzLnByb3BzLndpZHRofXB4YCxcbiAgICAgICAgICBoZWlnaHQ6IGAke3RoaXMucHJvcHMuaGVpZ2h0fXB4YCxcbiAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgb3BhY2l0eTogdGhpcy5wcm9wcy5nbG9iYWxPcGFjaXR5LFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgdG9wOiAwXG4gICAgICAgIH0gfS8+XG4gICAgKTtcbiAgfVxufVxuIl19
Example #19
0
                    { className: buttonClassNames, onClick: this.handleMute.bind(this) },
                    isMuted ? _react2.default.createElement(_Icons.VolumeIconMuteSVG, null) : _react2.default.createElement(_Icons.VolumeIconLoudSVG, null)
                ),
                _react2.default.createElement(
                    'div',
                    null,
                    _react2.default.createElement('input', { className: rangeClassNames, type: 'range', min: '0', max: '100', step: '1', value: value, onChange: this.handleVolumeChange.bind(this) })
                )
            );
        }
    }]);

    return VolumeControl;
}(_react.Component);

VolumeControl.propTypes = {
    className: _react.PropTypes.string,
    buttonClassName: _react.PropTypes.string,
    rangeClassName: _react.PropTypes.string,
    volume: _react.PropTypes.number,
    onVolumeChange: _react.PropTypes.func,
    onToggleMute: _react.PropTypes.func,
    soundCloudAudio: _react.PropTypes.instanceOf(_soundcloudAudio2.default)
};

VolumeControl.defaultProps = {
    volume: 1,
    isMuted: 0
};

exports.default = VolumeControl;
Example #20
0
import PureRenderMixin from 'react-addons-pure-render-mixin';

class Main extends Component {
    constructor(props) {
        super(props);
    }

    componentDidMount() {
        const {dispatch} = this.props;
        dispatch(fetchPostsIfNeeded());
    }

    render() {
        const { issues } = this.props;
        return (
            <section>
                <Issues issues={issues}/>
            </section>
        )
    }
}

Object.assign(Main.prototype, PureRenderMixin);

Main.propTypes = {
    issues: PropTypes.instanceOf(Immutable.List),
    dispatch: PropTypes.func.isRequired
}

export default Main;
var deviceWidth = Dimensions.get('window').width;
var ViewPagerDataSource = require('./ViewPagerDataSource');

// If there is no seeet default interval set default to 5 seconds
var autoPlayInterval = 5000;

var ViewPager = React.createClass({
    mixins: [TimerMixin],

    statics: {
        DataSource: ViewPagerDataSource,
    },

    propTypes: {
        ...View.propTypes,
        dataSource: PropTypes.instanceOf(ViewPagerDataSource).isRequired,
        renderPage: PropTypes.func.isRequired,
        onChangePage: PropTypes.func,
        renderPageIndicator: PropTypes.oneOfType([
            PropTypes.func,
            PropTypes.bool
        ]),
        isLoop: PropTypes.bool,
        locked: PropTypes.bool,
        autoPlay: PropTypes.bool,
        autoPlayInterval: PropTypes.number,
        animation: PropTypes.func,
    },

    fling: false,
Example #22
0
        };
    }

    render() {
        const styles = this.getStyles();
        const connectorStyle = this.props.connectorStyle.merge(styles.connector).toJS();
        const parentConStyle = this.props.parentConStyle.merge(styles.connectorParent).toJS();
        const rowConStyle = this.props.rowConStyle.merge(styles.connectorRow).toJS();
        return (
            <div style={connectorStyle}>
                <div style={parentConStyle} />
                <div style={rowConStyle}>
                    {this.props.children.map((c) => {
                        const childrenConStyle = c.get("style").merge(styles.connectorChildren).toJS();
                        return (<div key={c.get("key")} style={childrenConStyle} />);
                    })}
                </div>
            </div>
        );
    }
}

Connector.propTypes = {
    children: React.PropTypes.instanceOf(immutable.List).isRequired,
    connectorStyle: React.PropTypes.instanceOf(immutable.Map).isRequired,
    parentConStyle: React.PropTypes.instanceOf(immutable.Map).isRequired,
    rowConStyle: React.PropTypes.instanceOf(immutable.Map).isRequired
};

export default Connector;
import React from 'react';
import Backbone from 'backbone';
import ExternalLinkInfoSection from './sections/ExternalLinkInfoSection.react';
import ExternalLinkActions from './sections/ExternalLinkActions.react';
import BreadcrumbBar from 'components/projects/common/BreadcrumbBar.react';

export default React.createClass({
    displayName: "ExternalLinkDetailsView",

    propTypes: {
      project: React.PropTypes.instanceOf(Backbone.Model).isRequired,
      link: React.PropTypes.instanceOf(Backbone.Model).isRequired
    },

    render: function () {
      var project = this.props.project,
        link = this.props.link;

      var breadcrumbs = [
        {
          name: "Resources",
          linksTo: "project-resources",
          params: {projectId: project.id}
        },
        {
          name: link.get('title'),
          linksTo: "project-link-details",
          params: {projectId: project.id, linkId: link.id}
        }
      ];
Example #24
0
  };

  return (
    <PaperCard title="Sign in" subtitle="Enter your account credentials">
      <div>
        Don't have an account yet? <Link to={routes.signUpUrl()}>Sign up!</Link>
      </div>
      <SignInForm onSubmit={signIn} disabled={status.isLoading} /><br />
      <GoogleSignInButton
        clientId={getGoogleClientId()}
        onSuccess={googleSignInSuccess}
        onFailure={googleSignInFailure}
        disabled={status.isLoading}
      />
    </PaperCard>
  )
};

SignIn.propTypes = {
  dispatch: PropTypes.func.isRequired,
  status: PropTypes.instanceOf(PromiseStatus).isRequired
};

const statusSelector = createAggregatedPromiseStatusSelector([ user.googleSignInStatusSelector ]);

const selector = createStructuredSelector({
  status: statusSelector
});

export default connect(selector)(SignIn);
Example #25
0
  getDefaultProps: function(): DefaultProps {
    return {
      bufferDelay: 100,
    };
  },

  getInitialState: function() {
    return {
      mostRecentEventCounter: 0,
      bufferedValue: this.props.value,
    };
  },

  contextTypes: {
    onFocusRequested: React.PropTypes.func,
    focusEmitter: React.PropTypes.instanceOf(EventEmitter),
  },

  _focusSubscription: (undefined: ?Function),

  componentDidMount: function() {
    if (!this.context.focusEmitter) {
      if (this.props.autoFocus) {
        this.requestAnimationFrame(this.focus);
      }
      return;
    }
    this._focusSubscription = this.context.focusEmitter.addListener(
      'focus',
      (el) => {
        if (this === el) {
Example #26
0
    fontSize: 12,
    fontWeight: 'bold',
    color: variables.colors.gray.neutral,
    lineHeight: 24
  },
  description: {
    fontSize: 12,
    color: variables.colors.gray.darker,
    lineHeight: 12
  }
});

const StatusChart = React.createClass({
  propTypes: {
    icon: PropTypes.string.isRequired,
    data: PropTypes.instanceOf(List).isRequired,
    unit: PropTypes.string.isRequired,
    text: PropTypes.string.isRequired,
    status: PropTypes.string.isRequired,
    decimals: PropTypes.number,
    currentValue: PropTypes.any
  },

  render() {
    const arrayData = [];
    this.props.data.forEach((value, index) => arrayData.push([index, value]));
    const currentValue = this.props.currentValue ? this.props.currentValue : this.props.data.get(this.props.data.size - 1);

    return (
      <View style={chartStyles.container}>
        <View style={{flexDirection: 'row'}}>