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', '')}>
/* @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, };
} 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));
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;
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 }; },
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; }
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');
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) }
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;
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; }
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;
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"
}]); 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
{ 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;
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,
}; } 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} } ];
}; 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);
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) {
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'}}>