Skip to content
React components and Redux modules for embedded Webex Teams
JavaScript HTML Shell
Branch: master
Clone or download
Webex Publisher
Latest commit f36e580 Feb 21, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci chore(circleci): use npm ci instead of restore_cache + npm i Jan 30, 2020
.vscode chore(jest): enable jest debugging in vs code Jan 3, 2020
__mocks__ chore: use identity-obj-proxy for jest css styles Jun 13, 2017
packages/node_modules feat(adaptive-card):Added condition if submission failed Feb 21, 2020
samples feat(samples): added momentum style changes May 21, 2019
scripts chore(env): rename `REACT_CISCOSPARK_VERSION` to `REACT_WEBEX_VERSION` Feb 3, 2020
test/journeys chore(wdio): use env var to check browser instead of desiredCapabilities Feb 21, 2020
.editorconfig feat(tooling): Add jest, stylelint and initial circle config Jan 4, 2017
.env.default chore(env): append u2c url to env vars Oct 8, 2019
.eslintignore chore(tooling): Add es and cjs builds to correct scripts Jun 28, 2017
.eslintrc.js chore(eslint): use babel-eslint + fix all new eslint errors Jan 23, 2020
.gitattributes feat(react-component-utils): Add sdk version to metrics Mar 22, 2017
.gitignore chore(jest): update jest for babel v7 Jan 23, 2020
.npmrc chore(tooling): add package-lock.json Jul 31, 2018
.nvmrc chore(node): use node lts/dubnium v10 Dec 18, 2019
CHANGELOG.md chore(release): 0.2.86 [skip ci] Feb 21, 2020
CONTRIBUTING.md docs: update Webex for Developers links Oct 9, 2019
LICENSE docs(general): update README and LICENSE May 16, 2017
README.md docs: update to @webex names Jan 21, 2020
SCRIPTS.md docs: update to @webex names Jan 21, 2020
UPGRADING.md docs: add UPGRADING guide for env var changes Jul 11, 2019
babel.config.js refactor(babel-hmr): temporary fix for current hmr implementation and… Jan 28, 2020
export.sh chore: upgrade to node v8.15.0 Feb 19, 2019
jest.config.json chore(webex-widget-base): rename `spark-widget-base` to `webex-widget… Feb 5, 2020
package-lock.json chore(release): 0.2.86 [skip ci] Feb 21, 2020
package.json chore(release): 0.2.86 [skip ci] Feb 21, 2020
postcss.config.js chore(eslint): Enable eslint on all js files and fix errors Dec 5, 2017
rollup.config.js refactor(rollup): fix rollup for babel v7 Jan 28, 2020
tsconfig.json chore(tsconfig): add ignores for es and cjs compiled directories Oct 17, 2018
wdio.conf.js chore(babel): babel-pollyfill, babel-polyfill --> @babel/polyfill, @b… Jan 22, 2020
webpack.config.babel.js refactor(babel): convert from import to require in webpack configs an… Jan 22, 2020
widget-key.pub chore: use new name for public key Oct 31, 2019

README.md

react-widgets

CircleCI license Conventional Commits

Webex Widgets for React

The Webex Widgets for React library allows developers to easily incorporate Webex functionality into an application.

Table of Contents

Background

This library allows React developers to quickly and easily create a Webex experience within their apps. Here we provide basic components (e.g. buttons, text fields, icons) that reflect the styles and aesthetics of Webex Teams, along with more complex, complete widgets, such as the Webex Space Widget.

The basic components are just presentational React https://github.com/facebook/react components, while our widgets leverage Redux https://github.com/reactjs/redux and the Webex Javascript SDK https://github.com/webex/webex-js-sdk.

Widgets

While many of our components are purely presentational, some have extended functionality that provide a piece of the full Webex experience. These fully self contained elements are called Widgets and are available here:

Usage

A functional demo of both Space and Recents widgets can be loaded by simply running:

$ npm start

Install

Serve From Source

  1. Clone this repo using a git client (e.g. git clone https://github.com/webex/react-widgets.git)
  2. Run npm install from the root of the repo. You will want to run this every time you pull down any new updates.
  3. From the root of the repo, run the following to serve the widgets demo:
    npm start
  4. The widget demo will be running on http://localhost:8000

Version

When a widget is bundled and loaded via script tag, the version number is available in the following ways:

  • A comment at the top of each bundled file
  • Programmatic access after a widget has been registered: window.webex.widgetFn.{widgetName}.version (e.g. window.webex.widgetFn.spaceWidget.version)
  • Access after a widget has been instantiated: window.webex.widget({widgetEl}).version (e.g. window.webex.widget(document.getElementById('myWidget')).version)

Coding Style

We follow our Webex Web Styleguide when developing any web based libraries and tools. Please check it out and do your best to follow our norms when contributing to this codebase.

Code Verification

As a best practice, we provide a Sub-resource Integrity (SRI) hash for all of our CDN hosted distributable files. A manifest listing all of the files with associated integrity hashes can be found for the latest build, where {NAME} is the name of the widget at https://code.s4d.io/widget-{NAME}/production/manifest.json.

Manifest Example

{
  "version": "0.1.215",
  "files": [
     {
       "name": "bundle.js",
       "url": "https://code.s4d.io/widget-space/archives/0.1.120/bundle.js",
       "signature": "kfVRBKftbb3OQ4VmYOqstb9V0abqXJzY1L0Ww/zsbiF+bGaDkgiLWqztTCh43uMsUtzEgpF0M29pr67gSlZLSOq6iUgBg9zGhiVoVqlxEUGqxdOXkeDLRTOr16KkBtAObBidWauyNOvA+6FAC71UP2yFTXIadV7z1W7tIwt+wOfGqqaBwzMCuXl1bS4Va5Fj+s2SLsRfuDrSG0gPbG499bl0v6QkWKvkYPjW4v/BffyJNFJsu2rubkPXSCEk5yU4UpOJqsQPJ+sx4s9QFgMtWbNZ+cqnBuPFPBrr5E31lOS3eJwR9Jx139ZTpcBxP19qM6zV9ategsil7w1dIN1HVbU6H/byLHTLjf39kCOsNJk6yo+B9FiD2By8wSDi4ykD6MJEH7OqOxsb49/FsgALSmJB1iIexU4xQWE3HhupEtlvv+YCQtUE0IBMVEmjauhLzJ0gBemOvzo7eMeWEsrTSSMtePS+wp9UT7uvmz7l/UIBeIuhT87YKAt0AHgE3C0pE/JOh3JofshVZ++mC1A+bjSl/+Y41mU8BclWYnGfXDwkYevzi5SxklS77eD1J/4Q+DXUkDNAR9DQe/UHZ8nrnW+GlUATwHaqhW4883p/j9zGuGEzcEQeUDHBMl23c0z3hUIXfYfhn7dExyHzTzMZQaKFD5Dl7+CgmL5V6FHY3Iw=",
       "integrity": "sha384-3bMDdbkrYdS5m4SA7/gzkh7/G9ppEV0BVyPs2TZqbny/z9aPaw4D3DHS1+Wg9phW"
    }
  ]
}

To find the SRI hash for a specific build of the widgets, you can use the following URL, replacing {VERSION} with the specific version you are looking for: https://code.s4d.io/widget-space/archives/{VERSION}/manifest.json.

Additionally, for those who want an additional layer of verification, a signature has been provided that is signed by a private key. You can use our public key to verify this signature. Here is example of the verification process using the nodeJS built-in crypto library:

const crypto = require('crypto');
function verifySignature({
  data,
  signature,
  publicKey
}) {
  // Verify that we signed correctly using public key
  const verify = crypto.createVerify('RSA-SHA384');
  verify.write(data);
  verify.end();

  // True if signature is verified
  return verify.verify(publicKey, signature, 'base64');
}

Contributing

See CONTRIBUTING for details.

License

© 2017 Cisco Systems, Inc. and/or its affiliates. All Rights Reserved.

See LICENSE for details.

You can’t perform that action at this time.