/** @jsx React.DOM */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* jshint newcap:false */ /* global loop:true, React */ (function() { "use strict"; // 1. Desktop components // 1.1 Panel var PanelView = loop.panel.PanelView; // 1.2. Conversation Window var IncomingCallView = loop.conversation.IncomingCallView; // 2. Standalone webapp var CallUrlExpiredView = loop.webapp.CallUrlExpiredView; // 3. Shared components var ConversationToolbar = loop.shared.views.ConversationToolbar; var ConversationView = loop.shared.views.ConversationView; // Local helpers function returnTrue() { return true; } function returnFalse() { return false; } var Example = React.createClass({displayName: 'Example', render: function() { var cx = React.addons.classSet; return ( React.DOM.div({className: "example"}, React.DOM.h3(null, this.props.summary), React.DOM.div({className: cx({comp: true, dashed: this.props.dashed}), style: this.props.style || {}}, this.props.children ) ) ); } }); var Section = React.createClass({displayName: 'Section', render: function() { return ( React.DOM.section({id: this.props.name}, React.DOM.h1(null, this.props.name), this.props.children ) ); } }); var ShowCase = React.createClass({displayName: 'ShowCase', render: function() { return ( React.DOM.div({className: "showcase"}, React.DOM.header(null, React.DOM.h1(null, "Loop UI Components Showcase"), React.DOM.nav({className: "menu"}, React.Children.map(this.props.children, function(section) { return ( React.DOM.a({className: "btn btn-info", href: "#" + section.props.name}, section.props.name ) ); }) ) ), this.props.children ) ); } }); var App = React.createClass({displayName: 'App', render: function() { return ( ShowCase(null, Section({name: "PanelView"}, Example({summary: "332px wide", dashed: "true", style: {width: "332px"}}, PanelView(null) ) ), Section({name: "IncomingCallView"}, Example({summary: "Default", dashed: "true", style: {width: "280px"}}, IncomingCallView(null) ) ), Section({name: "ConversationToolbar"}, Example({summary: "Default"}, ConversationToolbar({video: {enabled: true}, audio: {enabled: true}}) ), Example({summary: "Video muted"}, ConversationToolbar({video: {enabled: false}, audio: {enabled: true}}) ), Example({summary: "Audio muted"}, ConversationToolbar({video: {enabled: true}, audio: {enabled: false}}) ) ), Section({name: "ConversationView"}, Example({summary: "Default"}, ConversationView({video: {enabled: true}, audio: {enabled: true}}) ) ), Section({name: "CallUrlExpiredView"}, Example({summary: "Firefox User"}, CallUrlExpiredView({helper: {isFirefox: returnTrue}}) ), Example({summary: "Non-Firefox User"}, CallUrlExpiredView({helper: {isFirefox: returnFalse}}) ) ) ) ); } }); window.addEventListener("DOMContentLoaded", function() { React.renderComponent(App(null), document.body); }); })();