shobhitsharma / embedo

Embeds third party content to DOM with perks 🧙‍♀️ (7kb gzip / standalone)
https://shobhitsharma.github.io/embedo
MIT License
347 stars 32 forks source link
embed-content embeds iframe oembed social-media video-embed

embedo npm

Embedo adds a layer on top of third party embed APIs while ensuring best practices and native guidelines for each component. It takes cares of resizing the container, emitting necessary events and with support for native and external options to be pass along.

Docs: Options / API / Events / Usage / Changelog

What's currently supported?


Installation

NPM / Yarn

$ npm install embedo --save
$ yarn add embedo

Bower

$ bower install embedo

CDN

Alternatively, import using CDN while updating version as per requirements from any script below:

<script type="text/javascript" src="https://unpkg.com/embedo/embedo.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/embedo[@VERSION]/embedo.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/embedo[@VERSION]/plugins/[@PLUGIN_NAME]/[@PLUGIN_NAME].embedo.min.js"></script>

Setup

CommonJS / AMD

import Embedo from '/path/to/vendor';

// Initialize Embedo class object
const embedo = new Embedo({
 facebook: {
    appId: 'my_app_id', // Enable facebook SDK
    version: 'v8.0',
    access_token: 'app_id_with_client_token_here'
  },
  twitter: true,  // Enable twitter SDK
  instagram: { access_token: 'app_id_with_client_token_here' } // Enable instagram SDK
  pinterest: true  // Enable pinterest SDK,
  googlemaps: {
    key: 'my_api_key' // Enables google maps API
  }
});

// Then call .load() method from anywhere
embedo.load(<HTMLElement[object]>, <URL[string]>, <options[object]*optional>);

// OR Chaining methods and callback
embedo
  .load(HTMLElement, URL, options)
  .done(Function)
  .fail(Function)

// OR storing in a variable
let my_embedo = embedo.load(HTMLElement, URL)
my_embedo.done(Function);
my_embedo.fail(Function);

Also, an example can be found here.

HTML

...

<body>
  <div data-embedo-url="[@URL_TO_EMBED]"></div>
  <div data-embedo-url="[@URL_TO_EMBED]" data-embedo-[@OPTION_KEY]]="[@OPTION_VALUE]"></div>
</body>

...

<script>
  new Embedo({
    facebook: {
      appId: 'my_app_id_here', // Enable facebook SDK
      access_token: 'app_id_with_client_token_here', // Client-side token via Graph API
      version: 'v8.10'
    },
    twitter: true,  // Enable twitter SDK
    instagram: {
      access_token: 'app_id_with_client_token_here', // Client-side token via Graph API
    },  // Enable instagram SDK
    pinterest: true  // Enable pinterest SDK,
    googlemaps: {
      key: 'my_api_key' // Enables google maps API
    }
  });
</script>

Also, an example can be found here.